How I made money podcasting and why you probably don't want to - <AUTHOR> https://blog.usejournal.com/how-i-made-8-000-per-month-podcasting-and-why-you-probably-dont-want-to-855966a557aa <comment><USER2> A hidden threat in this, is that podcasting can look like journalism to many economies. If you "report" on current affairs in any way, you can fall into the trap.

Mainstream broadcasters are always super-careful when staff are _sent_ to the USA, to get the right visa. If the staffer just _goes_ to the USA, they have to make damn sure they don't return to work, even if they take that call about some story, there is a risk: If you entered the US on a tourist visa but always intended interviewing somebody, you're working as a journalist.

They can, and do, chuck you out of the country. And returns get hard once you have to say YES on the forms about "...have you ever...."

I don't think the USA is unique in this regard. Lots of economies, western, democratic, and otherwise do not want people to casually "just do it" -you need to front up about what you do sometimes.

<comment><USER3> I always thought that a "tourist" visa allows you to do "work" for your non-US company, it just prevents you to from "working" for a US company, or being paid by a US company for work done during your visit.

I entered the US dozens of times on an ESTA for work reasons, I always declare I'm there for "business", offering detail if needed, and never had any issue.

<comment><USER4> As you'll find if you dig into visa regulations in many countries, the definition of "business" (activities usually permitted on business visas or visa waiver programs) is typically a lot more detailed than just whether the company paying you is in or out of the jurisdiction.

For example, in the US case, check out [https://en.wikipedia.org/wiki/B_visa#Acceptable_and_prohibit...](https://en.wikipedia.org/wiki/B_visa#Acceptable_and_prohibited_uses_of_a_B-1_or_B-2_visa). The rules for B visas apply to ESTA as well. Journalism is explicitly prohibited on B visas.

This is why my employer's internal immigration processes, even for short-term visits like conferences or whatever, present you with a comprehensive list of different categories of activity you might be undertaking to determine whether you need a work permit or not. It's annoying, and our internal immigration systems are very, very much imperfect, but I can see how it came to be.

<comment><USER3> That's great information, thanks.

To be honest, the range of activities allowed it's fairly reasonable.

</comment></comment></comment></comment><comment><USER5> I appreciate what Tim has done and continues to accomplish to raise the profile and acceptance of startups as a viable career choice in Japan.

I've first-hand experience with the many challenges of startups in Japan. Finding talent who understand how startups are different. Convincing larger partners you're not simply another "supplier" they can grind margin out of. Explaining to potential investors the tradeoffs of quality, speed, and confirming product fit.

Educational platforms like what Tim has built through podcasting are needed to help close these gaps.

Thanks to Tim for the insightful post on "how the sausage was made" and looking forward to seeing good things coming out of Tepco's innovation platform.

<comment><USER6> Wow. Thank you for that. I love putting the podcast together, and I enjoy it more now that I've taken the show non-commercial.

I like to think I'm having an impact on the ecosystem here, and as I mentioned in the article, four Japanese startup founders have told me that listening to the guests on Disrupting Japan is a big part of what gave them the courage to start their own companies. I kind of teared up when they told me that. I'm not sure exactly why.

These open, personal episodes are emotionally draining to publish. I'm a nervous wreck right up until the moment they go live. The feedback is almost always wonderful, so I don't know why it's still so hard to share, but it is.

I guess I'm fine with that.

Maybe part of connecting is just accepting that we are all kind of basket cases on the inside. And that's perfectly OK.

<comment><USER7> Indeed, thank you very much. I listen to a _lot_ of podcasts while commuting and exercising, and I'd wondered about how the business end worked. I receive an extraordinary amount of great content for nothing more than the price of ads (which I skip a lot of; sorry but it's true).

I have gone out of my way to purchase products that advertise on podcasts: I'm typing this as I eat a lunch flavored with hot sauce from FuegoBox.

I don't know how well most podcasters do from that. You had a wonderfully lucrative target audience; most of what I listen to has a larger market but with less money. I don't know how many Casper mattresses and MeUndies they can possibly buy. The impression I get from the IHeartRadio-branded ones hint that by the time the marketers and support get their cut, it's poverty-level wages.

Again, thanks for the look behind the scenes. That was incredibly informative and very well written.

<comment><USER6> I think the same basic strategy could work for any true niche podcast. But "niche" is different than "small."

Two guys talking about the NFL to 3,000 listeners would be very hard to monetize, but a sports podcast that focused on local HS sports teams, or one that talked about MLB from the LGBTQ perspective? Those would be pretty easy to monetize using the same basic strategy I used.

I think the biggest advantage I had was not my specific audience, but the decades I've spent selling new products and starting companies. Of course, that _is_ also my audience, so I can't be completely sure.

</comment></comment></comment></comment><comment><USER8> This author really practices what he preaches with regards to being vulnerable himself to get others to open up. Check out the about page [0] of his site. It's an honest reckoning of his entire life, not just a list of the highlights, as so many other people's bios are.

[0] [https://www.disruptingjapan.com/tim/](https://www.disruptingjapan.com/tim/)

</comment><comment><USER9> Great post

Is there a general ratio for how much audio you record per session vs how long your average podcast episode is? Do you cut, say, 25% or something like that? They seem to run 40-50 minutes, from checking your site.

Would going the Patreon route (since your podcast is ad-free now) be viable?

<comment><USER10> I'm interested in this, too.

Also, it seems like there are still ways to receive some revenue from creating useful content that thousands of people are interested in. Not because the money is so important, but because there are parts of community engagement that are fun to do and feel rewarding, and there are other parts that can be contracted.

I didn't understand the "make a media company" or nothing aspect considering he is still podcasting as a fun hobby anyway.

<comment><USER11>
      I didn't understand the "make a
      media company" or nothing aspect

If I quit my BigCo job to bootstrap a business from my savings, I'd want to recognise if the business was failing _well before_ it lead me to personal bankruptcy. So I'd have a deadline and success criteria.

Presumably his success criteria for the become-a-pro-podcaster experiment wasn't being met selling his ad inventory alone, and selling extra inventory to his existing sales prospects got him closer.

</comment></comment></comment><comment><USER12> Loved the ending. Self-disclosure is a big part of humanistic psychology. Sidney Jourard[0] explored this in depth:

 _You cannot collaborate with another person toward some common end unless you know him. How can you know him, and he you, unless you have engaged in enough mutual disclosure of self to be able anticipate how he will react and what part he will play?_

 _If we want to be loved, we must disclose ourselves. If we want to love someone, he must permit us to know him. This would seem to be obvious. Yet most of us spend a great part of our lives thinking up ways to avoid becoming known. Indeed, much of human life is best described as impersonation. We are role players, every one of us._

[0] [https://en.wikipedia.org/wiki/Sidney_Jourard](https://en.wikipedia.org/wiki/Sidney_Jourard)

<comment><USER13> What a fantastic quote.

</comment></comment><comment><USER14> Trying to create a market is like being stuck in a sailing boat in the dead calm. Easier to just sail with existing market winds.

</comment><comment><USER15> The end bit about parties is so true. That's the best when you meet someone and get them to really open up and tell you about some crazy thing they are working on or they had happen to them.

</comment><comment><USER16> This was an honest, down to earth look at realities of podcasting.

Well written and sincere, great stuff.

<comment><USER6> Thanks! It was great to see my article posted. I'm glad you enjoyed it. It took me about six months to get ready emotionally to write that article.

Podcasting was one of the best (non-financial) decisions I ever made.

</comment></comment><comment><USER17> It's behind a sign in wall for me because I've read too many medium articles, apparently.

Bring back blogspot!

<comment><USER6> Here is a link to the original. I posted on Medium because it seems more people will visit Medium than a blog they've never heard of before.

[https://www.disruptingjapan.com/how-i-made-8000-per-month- po...](https://www.disruptingjapan.com/how-i-made-8000-per-month-podcasting- and-why-you-probably-dont-want-to/)

I wish it weren't so.

<comment><USER18> Among the Hacker News crowd the sentiment is going the other way.

</comment></comment></comment><comment><USER19> As an aside, when I landed on this page, I had a sticky sign-in bar from Medium, a sticky menu from Noteworthy, and a sticky bottom bar asking me to sign-up.

The text - what I came to the page for - occupied just 60% of the screen.

What a horrible UI!

<comment><USER20> That much? I only see the first two lines, and that's with a 16:10 monitor. From the "use a bookmarking system that only works on our website" to the astonishingly poorly-framed author photo to the "clap for this story" social media button which is a term I've never heard before in my life, the poor page layout choices are really dragging down an excellent article.

<comment><USER21> [https://i.imgur.com/Kz5JHuJ.png](https://i.imgur.com/Kz5JHuJ.png)

I get only 2/3rds of the headline on mobile.

I guess it's nice that the Medium app is made for readers, cause their website sure as heck isn't ...

<comment><USER22> Is it recursive day? This is what I get when I click on your link.

[https://tmp.shroom.party/joy.jpg](https://tmp.shroom.party/joy.jpg)

<comment><USER23> imgur seems to have this weird and annoying habit of detecting you're browsing from a mobile device even on links direct to the image, and then redirecting you to their site _and_ lowering quality of the image you're looking at. At this point I just don't open imgur links when browsing from my phone.

<comment><USER20> Imgur has become actively hostile to anyone who browses the mobile website instead of using the app. They've spent years slowly pruning functionality out of the mobile site and just recently announced that in August users won't be able to log into the mobile site at all.

</comment></comment></comment></comment></comment></comment><comment><USER24> There are many uses for podcasting for the classroom. They can be used to convey instructional information from the teacher or trainer, motivational stories, and auditory case studies. Podcasts can also be used by the learners as artifacts and evidence of learning; for example, a student might prepare a brief podcast as a summary of a concept in lieu of writing an essay. Podcasts can also be used as a means of self-reflection on the learning processes or products.[11] Podcasts can help keep students on the same page, including those that are absent. Absent students can use podcasts to see class lectures, daily activities, homework assignments, handouts, and more.[citation needed] A review of literature that reports the use of audio podcasts in K-12 and higher education found that individuals (1) use existing podcasts and/or (2) create their own podcasts. Students can create their own podcast to share their learning experiences with each other and also with other students from other schools.

</comment><comment><USER20> There's usually a distinct change in tone when podcast hosts start keeping "revenue stream" at, if not the front, at least the back of their mind. I'm certain there are exceptions and I certainly don't begrudge anyone the desire to make money, but at the same time there are no podcasts I listen to whose best episodes weren't at the beginning of their run before the advertisers came.

</comment><comment><USER25> Great post Tim! Crazy to see how far things have come since the Venture Generation days :)

<comment><USER6> Thanks! It's amazing how fast things change.

</comment></comment><comment><USER26> Reads way more humble then what the podcast name would suggest.

</comment><comment><USER27> The title doesn't mention it, but this only applies to Japan where podcasting isn't nearly as popular or economically viable as it is in other countries.

<comment><USER28> My view is actually the opposite - that this likely applies to _most_ countries except the ones with a large and established podcasting ecosystem, of which I only know one (the US, with UK scene piggybacking on it).

</comment></comment><comment><USER29> Superb piece, really well written, and a great underlying story about personal change. Brilliant.

</comment><comment><USER30> If you are looking for a TLDR, I've got it summarized here.

[https://smashnotes.com/p/disrupting-japan-startups-and- innov...](https://smashnotes.com/p/disrupting-japan-startups-and-innovation- in-japan/e/how-i-made-8-000-per-month-podcasting-and-why-you-probably-don-t- want-to)</comment>


Ask HN: How well do you think your team handled the start of lockdown? - <AUTHOR> Did your team take it easy in the face of all the uncertainty? Or did they pivot to covid-19 related work and double down on productivity? Now that you have hindsight do you wish they had done anything differently? <comment><USER2> I informed my supervisor that a lockdown was imminent and that we should prepare for it, e.g. set up users' VPNs, do a test run to identify needs, etc. My supervisor told me to mind my own business and not encroach on her authority, in writing.

The stay at home orders came in two days later.

She violated the order a number of times because she had no readiness for remote working. She forced a number of staff to violate it as well.

My employer is not an essential business.

</comment><comment><USER3> Caring for children is an issue for those having them (basically slashing productivity in half). Also too many calls that could be async communication.

Other than that it works amazingly well.

</comment><comment><USER4> Pretty well. Half a dozen guys from IT went into the office on March 16 to prep laptops and a printer or two for staff requiring them. The building shortly went into lockdown, with only an engineer visiting a couple of days a week. I'm not sure that anyone from IT has been back.

I don't do much support, but I know our guys have been doing a lot of Zoom training and support.

</comment><comment><USER5> Our department was already 100% remote for the past two years since corporate shut down our office... so yeah, things haven't felt too different, except our clients have pushed back some of their campaigns (not cancelled them though, at least not yet) because of the virus, so work is somewhat light.

Good thing, too, since it's been harder to focus with everything else going on.

</comment><comment><USER6> Fair enough I guess, we already had people working from home once or twice a week. So it was pretty easy to adapt to the lockdown overall.

Actually having enough to do has been a tad challenging though, since quite a few customers have pulled funding for digital marketing and web development work in the pandemic, especially those struggling in the events industry.

</comment><comment><USER7> It's been a complete disaster. Email and phone response times have quadrupled, if anyone bothers to answer at all. I think everybody is playing video games for a living now. Most conference calls involve someone's dog barking in the background. I'm extremely introverted though, so I couldn't be happier.

</comment><comment><USER8> We were fully remote before quarantine so there was no difference, but we've had to change our marketing strategy.

Also shameless plug but we released fun side project to make us all take breaks in timed video chats: [http://hallway.chat](http://hallway.chat)

</comment><comment><USER9> \-- did they pivot to covid-19 related work and double down on productivity?

This kind of expectation from my employer is what pisses me off. This is pure MBA type manager talk that normally expects that an employee working from home is going to be more productive and in thinking so builds undue pressure on employees who are already uncertain about their family, health and future.

I reject this question.</comment>


Computer Spacegames (1982) [pdf] - <AUTHOR> https://drive.google.com/file/d/0Bxv0SsvibDMTNlMwTi1PTlVxc2M/view <comment><USER3> Here is an extremely influential game, from 1985:

00.ИПА 01.ПА 02.ИП7 03.- 04.Fx<0 05.12 06.ИПВ 07./-/ 08.÷ 09.П2 10.БП 11.36 12.ИП4 13.ИПА 14.÷ 15.F√ 16.ИП7 17.× 18.XY 19.С/П 20.П9 21.П8 22.П2 23.÷ 24.ИПД 25.ИП8 26.- 27.Fx≥0 28.00 29.ПД 30.ИП5 31.+ 32.÷ 33.ИП6 34.× 35.П8 36.ИП0 37.ИП8 38.ИП9 39.Fsin 40.× 41.ИПВ 42./-/ 43.ПП 44.89 45.+ 46.П0 47.ПП 48.93 49.9 50.0 51.× 52.Fπ 53.÷ 54.ИПА 55.÷ 56.ИПС 57.+ 58.ПС 59.Fcos 60.Fx<0 61.61 62.Fx≥0 63.63 64.С/П 65.ИПВ 66.ИП8 67.ИП9 68.Fcos 69.× 70.ИП7 71.ИПА 72.÷ 73.Fx2 74.ИП4 75.× 76.- 77.ИП0 78.ПП 79.89 80.+ 81.ПВ 82.ПП 83.93 84.2 85.÷ 86.ИПА 87.+ 88.В/О 89.ИП0 90.× 91.ИПА 92.÷ 93.+ 94.ИП2 95.× 96.В/О

And a story which tells what it's about:

[https://spectrum.ieee.org/tech-history/silicon- revolution/ho...](https://spectrum.ieee.org/tech-history/silicon- revolution/how-programmable-calculators-and-a-scifi-story-brought-soviet- teens-into-the-digital-age)

<comment><USER4> What calc needed for this game?

<comment><USER3> The article explains the details; basically, B3-34 family - like B3-34, MK-54, MK-56, MK-61, MK-52 will all work.

There are some emulators. A good hardware one is here: [https://github.com/sergev/mk-61](https://github.com/sergev/mk-61) .

</comment></comment></comment><comment><USER5> This book and others also found here, for those who prefer reading without PDF download:

[https://archive.org/details/Computer_Space_Games](https://archive.org/details/Computer_Space_Games)

[https://archive.org/details/folkscanomy_computer?and%5B%5D=l...](https://archive.org/details/folkscanomy_computer?and%5B%5D=languageSorter%3A%22English%22&sort=-publicdate)

If using a smaller screen, be sure to try out the full screen, single page, and zoom controls.

</comment><comment><USER6> During the 80's there was a great weekly magazine series published the UK called Input Magazine. It's browsable via archive.org -

[https://archive.org/details/inputmagazine](https://archive.org/details/inputmagazine)

<comment><USER7> +1 to Input. I learned programming from the Brazilian version of Input, a straight translation from the original AFAIK, which you could bind in a branded Input hard cover (for a fee) and create a mini programming encyclopedia.

</comment></comment><comment><USER8> These Usbourne books were great, and they really got me started. They've released most of them for free now, see the bottom of this page:

[https://usborne.com/browse-books/features/computer-and- codin...](https://usborne.com/browse-books/features/computer-and-coding- books/)

e.g. Introduction co Computer Programming

[https://drive.google.com/file/d/0Bxv0SsvibDMTUXdYTnRaTy1LLVE...](https://drive.google.com/file/d/0Bxv0SsvibDMTUXdYTnRaTy1LLVE/view)

</comment><comment><USER9> I've actually been collecting the Usbourne books for the past couple years! For my research on providing typing exercises to CS students, I like to use the books as a physical prop to point out how "this was how they used to do it" [1]. This is actually one of the issues in modern CS learning resources - it's too easy for novices to simply copy and paste the code, so they never really refine the mistakes made from simple syntax errors. By forcing students to retype code, you are making them more comfortable with the keyboard and they don't have to worry about juggling technical literacy with problem- solving skills.

[1] [https://www.researchgate.net/publication/338659877_Typing_Ex...](https://www.researchgate.net/publication/338659877_Typing_Exercises_as_Interactive_Worked_Examples_for_Deliberate_Practice_in_CS_Courses)

<comment><USER10> > NB these programs don't work on modern computers.

BBC BASIC runs on most modern computers, notably the Raspberry Pi running RISC OS (which includes BBC BASIC)

or Linux/BSD/Windows running Brandy BASIC and derivatives

or Linux/Windows/macOS/Android running the free BBC BASIC for SDL 2.0: [http://www.bbcbasic.co.uk/bbcsdl/](http://www.bbcbasic.co.uk/bbcsdl/)

or in a web browser: [https://bbc.godbolt.org](https://bbc.godbolt.org)

<comment><USER11> And also on Twitter:

[https://twitter.com/bbcmicrobot](https://twitter.com/bbcmicrobot)

</comment></comment></comment><comment><USER12> And kids, this is how I learned to program.

<comment><USER13> And just look at how much simpler it is compared to modern kids programming materials. The code is denser but there's less of it, and far far less bootstrapping.

I think that is the killer right now, the amount of barriers to moving pixels on the screen is very high relative to how it was for us on the 8bits.

<comment><USER14> Another killer is that kids expect much more from a computer nowadays. Being able to move around a block on the screen was something that you could impress your nerd friends with, but today, what can you possibly program in a few lines of code to impress kids?

<comment><USER15> Actually kids can be pretty impressed if they did the program themselves. They think it's all magic until they try it on their own, also makes them more understanding for others work and bugs. Less acidic when it comes to judging others work on the play-store.

</comment></comment></comment></comment><comment><USER16> I sure would have loved this as a kid! It's even more fun and colorful than Creative Computing (although it's not a monthly publication). I really used to look forward to every issue of CC each month.

</comment><comment><USER17> I also loved these books as a kid. A while ago I started making a game - <USER2> Instincts - that was going to be about type-in listings and modifying your world with code ([https://www.youtube.com/watch?v=GwBiJR_rj_w](https://www.youtube.com/watch?v=GwBiJR_rj_w))

I got the interpreter working and started creating the world... then the game Else Heart.Break() came out and took the wind out of my sails - it did what I was planning to do, only much better. Though it might be time to revisit it now!

</comment><comment><USER18> One of my favourite programming books for its anyone-can-get-into-programming optimism and for including the timeless advice "Remember, when you are trying to work out a game, not to include anything which your computer won't be able to do" (p38).

It's also amazing that this short volume supports (at least) 8 dialects of BASIC. Much respect to the authors for writing mostly-portable code and then tweaking and testing it 8 times.

</comment><comment><USER19> I had an Oric-1 in those days and cut my teeth porting the games in this book to the Oric. The cassette tape with my work is long since perished, but I do still have the drawings from those books burned in my brain, like a searing brand. ;)

If I recall, the same artist also illustrated a kids "Spy" book, which was also another favourite .. although in hindsight, a bit spookier now than it should be.

</comment><comment><USER20> I really wish they would release as free PDFs the Usborne Book of the Future series. I'd also love to get my hands on PDFs of the Neil Ardley 'World of Tomorrow' series as well!

</comment><comment><USER21> I remember the commodore blue book christmas. I went through that book in a weekend. I could never get the sprite/gaming stuff working as they were laid out in the book, though. Very frustrating as an 11 year old.

</comment><comment><USER22> This looks super familiar, I think I used the french edition back in '83!

Thanks for sharing, brings back lots of good memories!

<comment><AUTHOR> If you want to read more check out this post [https://www.zapread.com/Post/Detail/6204/space-retro- gaming/](https://www.zapread.com/Post/Detail/6204/space-retro-gaming/) (That's where I stole the link.)

</comment></comment><comment><USER23> There was a book on computers I found in my childhood that inspired me to get into programming, and I'm really interested in finding it again. I'm convinced it was either an Usborne book or was somehow related to the Usborne books, and there's a lot of fans of those books around here, so I figure this thread is probably a good place to ask around to see if anyone recognizes it.

The book had qualities in common with the books "The Usborne Young Scientist: Computers (1992)"/"Usborne Guide to Computers (1981)" (near-identical span and even order of topics, but this book was much less cartoony and was more technically in-depth) and "The Usborne Book of the Future" (it contained some pages like [https://miro.medium.com/max/1920/1*M9yzYC6k154ODT0k0SiYMg.jp...](https://miro.medium.com/max/1920/1*M9yzYC6k154ODT0k0SiYMg.jpeg) with same style of illustration and lots of descriptions about the items in the illustration) but the book was none of those. The book wasn't dedicated to showing off program code, but it did have a bit of BASIC on one page, it contained descriptions of logic gates, and it even had a half-adder circuit, which I remember copying each of into my notebook and simulating on paper. I think the book was either based on or was a precursor to "Usborne Guide to Computers (1981)", but I haven't been able to get any further than that. I've written a lot more of a description from what I remember at [https://tildes.net/~talk/is4/whats_one_thing_you_havent_been...](https://tildes.net/~talk/is4/whats_one_thing_you_havent_been_able_to_find_online_no_matter_how_hard_you_tried#comment-446k).

</comment><comment><USER24> Look at all the art in that book. It makes programming look so exciting and fun!

</comment><comment><USER25> I had this exact book; remember typing some of these in on my Spectrum!

</comment><comment><USER26> Hmm, I think I own this book. _rummages_ Indeed, here it is.

</comment><comment><USER27> Great book, Thank you..</comment>


AWS announces DeepComposer, a machine-learning keyboard for developers - <AUTHOR> https://techcrunch.com/2019/12/02/aws-announces-deepcomposer-a-machine-learning-keyboard-for-developers/ <comment><AUTHOR> This is probably a toy at the beginning (albeit a super cool one). Really interested to hear HN thinks..</comment>


How a single PostgreSQL config change improved slow query performance by 50x - <AUTHOR> https://amplitude.engineering/how-a-single-postgresql-config-change-improved-slow-query-performance-by-50x-85593b8991b0 <comment><USER3> The prescription of changing sequential_page_cost to equal random_page_cost is certainly reasonable for SSD, but I wonder if the underlying issues aren't somewhat deeper and more interesting. One difference between a sequential scan and an index scan is the amount of data being scanned. PostgreSQL stores information horizontally as rows and a sequential scan will have to read in all column values of all rows. An index scan will read through all values of a _single_ column. The 50x performance difference _might_ be just that the whole row is 50x wider than the width of the indexed join column.

An interesting second factor relates to the nature of the SSD storage. With SSDs a read request will pull back a 4K page, even if the read request was smaller. So it's not quite right to say that a sequential read and a random read cost the same on SSD, particularly if the same 4K page must be read multiple times. I suspect that the particular index technique used by PostgreSQL tends to organize data such that successive indexed values reside in the same 4K SSD page. IOW, it's not so much that the cost of random SSD access is the same as sequential SSD access (though that's true), as it is that the PostgreSQL index mechanism doesn't require multiple reads of the same 4K page.

if a Hash-based index was used instead of a Btree-based index, and if the table width was narrower, the sequential scan might have outperformed the index scan.

<comment><USER4> You're saying that during sequential scans, the time it takes per row is O(n) where n is the number of columns? I find that hard to believe. Can anyone confirm / deny this?

<comment><USER5> The number of columns in PostgreSQL is limited to 250-1600 [1] since a tuple (a row) can't span more than one page of memory. Since O-notation talks about asymptotic behavior, it doesn't really apply here.

But yes, tables with more columns normally take more time to scan sequentially. The complete tuple is always loaded (excluding the data of TOAST [2] attributes), there is no way to only load one column. This is one of the reasons that column-oriented databases can be faster than row-oriented databases [3].

[1] [https://www.postgresql.org/message- id/42C3C382.5020108@cinec...](https://www.postgresql.org/message- firstname.lastname@example.com) [2] [https://www.postgresql.org/docs/9.5/static/storage- toast.htm...](https://www.postgresql.org/docs/9.5/static/storage-toast.html) [3] [https://en.wikipedia.org/wiki/Column- oriented_DBMS](https://en.wikipedia.org/wiki/Column-oriented_DBMS)

</comment></comment></comment><comment><USER6> For those interested in postgresql.conf tuning, I did a recent presentation at two conferences recently, hope it's interesting. Slides: [https://speakerdeck.com/ongres/postgresql-configuration- for-...](https://speakerdeck.com/ongres/postgresql-configuration-for-humans)

[shamless plug]

<comment><USER7> There's a link to postgresqlco.nf in the description. Do you run the service? It doesn't accept a file being dropped. In fact, it doesn't seem to do anything (I looked at the HTML).

<comment><USER6> It's a WIP. It's coming, stay tuned... (yo may subscribe to get noticed).

</comment></comment></comment><comment><USER8> Thanks for the tip. This probably affects more people than there are people who realize it. It would be really interesting if PG would use machine learning to discover this sort of tuning on its own.

<comment><USER3> +1 for the idea of tuning query optimization based on ML. I don't know of any DBMSs that take this advice, and that's remarkable in this day and age.

<comment><USER9> Postgres has a query optimizer that uses Genetic Algorithms: [https://www.postgresql.org/docs/current/static/geqo.html](https://www.postgresql.org/docs/current/static/geqo.html)

Clarification: this is for planning how to execute a query, not for tuning the db settings

<comment><USER10> Wow, did not know that. TIL!

</comment></comment></comment></comment><comment><USER11> I always increase the seq scan cost, but another thing that helped me more was updating the table statistics. In that way you can make the planner better aware of your indexes.

In my case I increased STATISTICS to 5000 and the planner immediately start using the index instead of full table scan.

[https://blog.pgaddict.com/posts/common-issues-with- planner-s...](https://blog.pgaddict.com/posts/common-issues-with-planner- statistics)

<comment><USER12> Please don't mess with the seq_page_cost. It's considered a reference value, so leave it set to 1.0 and tweak the other values.

</comment></comment><comment><USER12> Unfortunately the author does not say some pretty basic things - <USER2> PostgreSQL version, how much data, how much of it fits into RAM, what storage (and hardware in general) ...

If I understand it correctly, PostgreSQL was using the default configuration. Which is rather inefficient, and is more about "must start everywhere".

Decreasing random_page_cost makes sense if you have storage that can handle random I/O well (although I wouldn't go to 1 even if it's an SSD). But who knows if the data was read from storage at all? Maybe it'd fit into RAM (and just increasing effective_cache_size would be enough for the planner to realize that).

<comment><USER13> Setting random_page_cost = 1 is pretty common advice for SSD and works well in my experience. Typical advice for HDD RAID or SCSI is random_page_cost = 2 and SSDs are faster than them.

<comment><USER12> I don't know who recommends random_page_cost=1, but IMNSHO it's a bit silly. Even SSDs handle sequential I/O better than random I/O. Values between 1.5 and 2.0 are more appropriate. I wouldn't really recommend 1.0 except when you know the data fits into RAM. There are other options that affect costs of random I/O, e.g. effective_cache_size.

</comment></comment></comment><comment><USER14> Hmm... The author is filling a combo-box (probably just one column), yet the query is selecting all columns (SELECT *).

I would have tried selecting just the needed column (let's call it "foo"), with following indexes:

event_types (app, id)

prop_keys (event_id, foo)

This should cover the entire query with indexes (i.e. allow for index-only scan).

</comment><comment><USER15> You also get good results tweaking this particular knob if you have large amounts of RAM. If your blocks are almost always in OS cache, you are almost never going to make random seeks even if the PostgreSQL planner thinks you are.

<comment><USER16> That feels like something the database could do for itself - checking whether a range of mmap()ed blocks are actually in memory or not is a single syscall.

I guess for large indexes the overhead of walking the page tables is going to be large though, so it's not necessarily going to be a net win.

<comment><USER12> But you don't know which blocks you'll need at planning time, so you can't really check that.

You could of course check if the total database size is within RAM, but it's much more common to have database much larger than RAM (say 1TB on a machine with 128GB of RAM), but the actual working set (recent data processed by queries) is much smaller.

<comment><USER16> _But you don 't know which blocks you'll need at planning time, so you can't really check that._

Really? Postgres doesn't know which blocks are part of which tables / indexes? That seems ... suboptimal if so.

<comment><USER17> I guess one could implement a job which samples the pages of tables and indexes to check what percentage is typically in RAM and use that for an estimate, but to get which actual pages will be hit by a query you need to start executing it (you need to do an index lookup to see which index pages and table pages which will be accessed) which would defeat the purpose of query planning.

<comment><USER16> Granted, but (AFAICT) in this case the database was doing a full table scan because it didn't think the index was in memory. Checking to see whether the index itself is already loaded seems like something the query planner in principle ought to be able to do efficiently. (Obviously the existing codebase might make it difficult.)

</comment></comment></comment></comment></comment></comment><comment><USER18> This seems like something that should be measured at startup?

<comment><USER17> Sadly that is not (at least easily) possible because random_page_cost vs. sequential_page_cost is not just about the IO system but about all factors which can affect the cost of reading pages randomly vs reading pages sequentially. E.g. how often PostgreSQL's tables are in the file cache. So how much RAM your machine has available for PostgreSQL and your access patterns matter too.

Also I imagine the some expensive SAN solutions would be pretty tricky to measure given how smart they try to be with caching and moving between different kinds of disks.

</comment></comment><comment><USER19> Why aren't these tuned automatically? Should be pretty easy.

<comment><USER12> It sounds simple until you actually try doing that. The thing is, reducing the costing to these two parameters is a significantly simplified model of what happens in practice. So you can't just run some I/O benchmark to measure random vs. sequential requests. For example the defaults that worked fine for a long time (seq_page_cost=1 and random_page_cost=4) certainly do not reflect the difference between random and sequential I/O on rotational devices (where the device can easily do 100MB/s in sequential access, but less than 1MB/s in random).

<comment><USER20> > For example the defaults that worked fine for a long time (seq_page_cost=1 > and random_page_cost=4) certainly do not reflect the difference between > random and sequential I/O on rotational devices (where the device can easily > do 100MB/s in sequential access, but less than 1MB/s in random)

The postresql documentation explains why. They assume HDD random access is 40x slower than seq access but that you'll have a 90% cache hit rate, so random_page_cost=4 reflects 10% of 40x slower.

<comment><USER12> Not entirely. The documentation says you can _interpret_ it that way, not that it's how the numbers were determined.

AFAIK it's much more "We're using those numbers as defaults because they seem to be working well," rather than "We did extensive benchmarking and these are the right values!"

You can measure how much slower random I/O is fairly easily. But the question is how to derive PostgreSQL cost parameters from that. Should you use the same assumption about 90% cache hit ratio (why?) or should you use some different value?</comment></comment></comment></comment>


"Zionist" Intel & IBM Blacklisted By Iran - <AUTHOR> http://www.itproportal.com/portal/news/article/2010/7/2/zionist-intel-ibm-blacklisted-iran/

<comment><USER2> Nobody can accuse Mr. Ahmadinejad of being a boring person. Quite the contrary. He was born to be an entertainer.</comment>


Microsoft Makes It Easier to Bring Android and iOS Apps to Windows 10 - <AUTHOR> http://techcrunch.com/2015/04/29/microsoft-makes-it-easier-for-developers-to-bring-their-android-and-ios-apps-to-windows-10/ <comment><USER2> It's weird that this isn't the biggest news out of all the announcements today. Seems like an Electron fork is more interesting.

Having Android APKs work unmodified (minus Google APIs) is pretty neat, but has been done before (BB, Jola).

The real interesting part is the the Objective-C toolchain. Seems like they have an emulation layer for UIKit, Foundation and other frameworks. Probably hard for them to keep up with changes and I expect a lot of growing pains for early adopters.

Great news overall, I can finally add a proper Windows Phone/10 target for libGDX. Makes RoboVM more versatile as well :D

<comment><USER3> A windows universal app target for libgdx would indeed be awesome

<comment><USER2> This is gonna happen as soon as the tools are publically available :)

</comment></comment></comment><comment><USER4> This is the same strategy Blackberry tried, more or less, and I'm skeptical that it'll work out any better for Microsoft.

It's nice enough in the short term, maybe -- Windows Phone users can get some subset of quickly-ported things -- but in the long-term it seems to doom Windows Phone to second-class status; why would you write a real, native Windows Phone app when you can just do a quick half-assed port of your Android/iOS version? And if Windows Phone is just a platform that has a bunch of outdated, bad versions of some Android/iOS apps, there's not a lot of reason to buy it.

<comment><USER5> This isn't the strategy Blackberry tried. This is about making code portable, not compiled binaries.

<comment><USER6> Can you explain how that would help?

Also, it appears that it is indeed about allowing compiled binaries to run unmodified.

> _Specifically, Windows Mobile (and yes, that 's now officially the name for > Windows on phones and sub-8 inch tablets) will include an Android runtime > layer that'll let them run existing Android apps (both Java and C++) > unmodified.... Astoria will in principle work with any old APK, without > requiring the developer to do anything but publish the app in the store—as > long as the APK sticks to the APIs that Astoria will provide._

[http://arstechnica.com/information- technology/2015/04/29/mic...](http://arstechnica.com/information- technology/2015/04/29/microsoft-brings-android-ios-apps-to-windows-10/)

<comment><USER5> Apps get full access to Windows APIs. They don't get full access to Google Play APIs.

<comment><USER6> Except they are building the Play Services APIs on top of the Windows APIs.

> _When we spoke to Microsoft about Astoria, the company would not tell us > what proportion of the AOSP and GMS APIs would be supported, but it did > confirm that it wouldn 't be 100 percent; there will be APIs that Astoria > does not provide, and accordingly, APKs that use those APIs will not run._

> _On the flip side, Astoria will offer some integration points with Windows > so that Android devs can, with minor alterations, support features like > Cortana in their apps._

</comment></comment></comment></comment></comment><comment><USER7> This is a brilliant move to make Windows 10 much more relevant. I really like some of my Android apps, but I want a Windows phone. Hopefully this will encourage apps like Automatic to move to Windows phone.

I also wonder if this will affect Xamarin in a negative way.

<comment><USER8> >but I want a Windows phone

Why?

<comment><USER9> I just switched to one. The interface feels polished, in a way that I've never experienced on a smartphone before. I've used ios and android devices, and I always found them clumsy and icon-heavy; lots of looking at little pictures, when it's so much easier for me to read text.

All of the widgets "feel" better to me, too, than Android or ios.

I realize it's largely personal preference, but I hope windows phone sticks around. I'd hate to have to go back to one of the others some day.

</comment></comment></comment><comment><USER10> That's one very interesting move.

We already have BlackBerry and Amazon AppStore flavors for our apps (without google login, cast, or anything else from the play services lib). So it should be trivial to add one more for Windows.

I wonder about the UX of such a port though. Windows apps don't really look like android ones (or iOS's for that matter). Sure, it should bring more app but I can't help but worry for the general experience of the platform.

</comment><comment><USER11> It is inevitable, they are going where the apps are. Android apps will run in isolated mode on Windows 10 and you can develop Andriod apps using VS. iOS was a surprise but that would make porting more apps easier. I hope this would finally give the enough apps for Windows phone.

<comment><USER12> > I hope this would finally give the enough apps for Windows phone.

I agree; I bought a cheap-o Windows Phone to test and do development with. I'd love to use a Windows phone as my primary phone but 90% of the apps I use and need are nowhere to be found. If this can get them to bring them over, even if they don't tailer the experience it will hopefully still be good.

<comment><USER13> Especially anything made by or interacting with Google.

</comment></comment></comment><comment><USER14> I'm disappointed to see Microsoft give up the UX control on their platform. I bought a Windows Phone because I like the WP UX better than Android or iOS. I'm also skeptical of the returns for Microsoft. How many users want the apps on Android or iOS but don't want an Android or iOS phone?

I can see how Microsoft wants to make the software play. They want to have all the apps available on their phone so they turn away as few people as possible. However, I think phones are still too focused on platform for this to work. The experience already varies widely across devices on the same OS (low end v.s. high end), I have difficulty seeing how it would be acceptable cross- compiled to windows phone.

<comment><USER15> It is the platform not the device. It is also about having our data securely hosted in the cloud for use on all of our devices. I think this is a brilliant strategy.

Off topic: I am volunteering to help with computer classes at the library in my small town. This morning we talked about training people to view devices as not being so important, instead keeping their digital lives on one of the two cloud platforms we will probably support: Google (drive, docs, pictures) and Microsoft Office 365. I think that we are suggesting the right choice for people who are just learning to use computers and the Internet.

</comment></comment><comment><USER16> What I read in the article is the following:

"Developers will also be able to recycle their Objective-C apps for iOS using new _tools_ in Visual Studio."

Notice "... tools in Visual Studio".

To me this sounds more like conversion/porting tools, not so much like support for compiling ObjC and a runtime. Is there information elsewhere that sheds more light on this?

</comment><comment><USER17> Maybe we could add in the title the support for objective-c compilation. It's really important.

<comment><USER18> I'd guess that obj-c compilation is just done with clang (as they're already using clang for Android). The fact that they've apparently reimplemented UIKit/Foundation/etc. is the more surprising part to me.

<comment><USER19> Unfortunately, many developers are going to be writing code in Swift. Xcode and Swift are baked and there's plenty of Swift information (e.g. [http://www.h4labs.com/dev/ios/swift.html](http://www.h4labs.com/dev/ios/swift.html))

At this point, it's probably not worth writing in ObjC just to be compatible with Windows.

<comment><USER20> Swift probably still won't be used in production for some time due to the editor (Xcode) being extremely buggy. Error messages aren't great and with each new release of Xcode, there are syntax changes.

<comment><USER19> People are already using Swift in production. In fact, they suffered through the slow compiles, etc of the older Xcodes.

[http://making.duolingo.com/real-world-swift](http://making.duolingo.com/real- world-swift)

I wouldn't write any new code in Objective C. Swift is just a better language to work with. 12 months from now, you'll be much happier that you wrote 25k lines of Swift in 2015 instead of Objective C.

<comment><USER21> I use Swift for small applications, but the language is clearly incomplete, and and its tools are not ready for large, complex projects. You can use it, but it's painful. Just today, I had to write dozens of lines of RawOptionSetType code to mimic a C bitmask.

<comment><USER22> I've been developing for iOS since 2008, so much this! Swift is just not ready, I constantly run into "WTF" moments when I find something that's standard in most languages "has not been implemented yet" in Swift.

<comment><USER19> No examples? Swift is already much richer than Objective C.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> I can't wrap my head around how apps with any kind of advanced animation could work. I mean Windows Phone 8.1 has decent animations, you can do translations, scales, rotates etc but it has no kind of transition effects or bitmap effects at all. At least ios seems to rely quite heavily on that kind of stuff...

</comment><comment><USER24> I wonder how do they manage Cocoa Touch, OpenGL ES, etc.

<comment><USER25> For OpenGL ES: [https://code.google.com/p/angleproject/](https://code.google.com/p/angleproject/)

</comment></comment><comment><USER26> However exciting this is, I wonder how the support and future development will be accounted for. Porting an application is probably easy but the moment android adds a feature that is not supported by the Microsoft abstraction, you are either opting to choose the least common feature set or are maintaining two separate code bases. Both very unfavorable outcomes.

I love windows phone and don't really miss many applications on it but I know many people do. Hope this fixes it.

<comment><USER27> Usually you can't really use cutting edge features anyway as the devices run older OS version (at least that's common in the case of Android)

<comment><USER28> Actually, Google Play Services dynamically adds or updates new features on older OS versions too (Maps etc). So this is not an issue now.

</comment></comment></comment><comment><USER12> This is amazing. I'm very curious how it works under the hood with the Android and iOS platforms. It wouldn't surprise me if it gets translated into MSIL. That's how I would do it at least.

Also curious what the limitations are. If this works as advertised the Windows Mobile store could go from mediocre to pretty awesome as long as they get tailored for the platform.

<comment><USER29> I know devs for BB10 felt burned when BBRY announced the Amazon app store is coming preloaded on BB 10.3 OS for "entertainment" apps. Where the native BB World app store remained for "productivity" apps. Speaking from experience, the momentum for top tier AAA apps has all but shriveled up and died

</comment></comment><comment><USER30> So they said that King has already used that to port Candy Crush Saga. That means that the tool is already available. Where?!

<comment><USER31> More likely it means Microsoft approached King privately, to have them work on the port in secret, so that Microsoft would have something to show off.

</comment></comment><comment><USER32> I like how the graphic has "Web" and ".NET/Win32" in the wrong lanes, sending you to a sure death in the face of massive oncoming Android and iOS traffic as you try to cross that bridge to a cross-platform nirvana.

</comment><comment><USER33> I wonder how it works.

As you need to recompile the app instead of directly running it I guess they have made wrappers that implement the native Android and IOS APIs on top of the APIs for Universal Windows apps? That would be a massive effort.

The other question is whether they recompile Java/ObjectiveC to something else (C++ or .NET) or whether they are running these languages natively and providing interop to their native SDKs.

<comment><USER34> For Android they are just using LLVM to generate the binary and deploying it to their emulator (hyperv based I believe).

When delivering to Windows they use an android subsystem and a container to run it. It is a quick and dirty approach, you still would need to put some Windows specific code to access to Windows only SDK such as inking API or Cortana.

If you are creating an app from scratch it seems like an universal app with c++ shared code is the way to go

</comment></comment><comment><USER35> I wonder how UI accessibility for people with disabilities, e.g. blind people, is going to work for these ported apps. That is, will the UI of an ANdroid app ported to Windows Phone be as accessible as it was on Android, or as accessible as a native Windows Phone equivalent would be? Hopefully they didn't do this half-assed and ignore accessibility altogether.

</comment><comment><USER36> In honor of "Where's the Beef", there is no info about this and you can't try it. Buried on an MSDN page is a signup form for a "limited number" or beta slots.

I classify this announcement as: currently vaporware.

</comment><comment><USER37> I'm a full-time iOS developer and want to share my perspective on this news. The developers who create those amazing apps on iOS are not going to fall for this. I'm one of those developers, who pays very close attention to detail to make pixel perfect apps that I'm proud to put my signature on. I will not accept my brand being introduced on Windows or any other platform using a glorified code generator. If I want to bring an app to Windows, I would learn the platform, go "all in" and make my app as perfect on Windows as it is on iOS. This would require me to dig into all the SDK docs, understand the platform capabilities, learn the native APIs, deal with the challenges of supporting different form factors, and a lot more. There is simply no shortcut to a great app, and a developer who is proud of his app would not release something that a machine generates. A great app is not one that has been thrown together using abstracted APIs and a code generator. A great app is one in which the developer has written and/or analyzed every line of code to maximize the aesthetics and performance on the platform it is running on. Windows' code conversion isn't going to encourage the really good apps to migrate, although it might entice some cheap knockoffs or poorly designed apps to ship an equally poorly designed experience on Windows. So bottomline, I don't expect apps like Instagram to suddenly appear on Windows because of this.

Also, developers don't avoid Windows because it lacked a code conversion tool. If all it involved was learning a new language or porting some code, developers would do it, just like they learned to go from Objective C to Swift, or all the evolution of Cocoa Touch through the years.

Developers avoid Windows for far more complex, intangible reasons that go way beyond a code converter. There are all kinds of perceptions about Windows and Windows users that simply will not change because of this tool. The iOS developers I know will shrug off this announcement, and continue shipping their apps on iOS. I admire Microsoft for overcoming the technical challenges of creating this tool, but sadly they have not overcome the perception and mindset challenges of a dieing platform.

<comment><USER38> > Developers avoid Windows for far more complex, intangible reasons that go > way beyond a code converter. There are all kinds of perceptions about > Windows and Windows users that simply will not change because of this tool.

More developers use Windows than any other platform. Your entire comment epitomises the cultish bubble that many HN developers seem to live in, completely oblivious to the rest of the world.

<comment><USER21> They were referring to iOS developers and others who avoid Windows.

</comment></comment></comment><comment><USER39> > Developers will also be able to recycle their Objective-C apps for iOS using > new tools in Visual Studio.

Why am I suspecting that Apple had an additional agenda with Swift?

<comment><USER40> That was my first big ? as they were rolling on this set of features. But, in terms of languages, the uptake for MS with another language seems like merely a bandwidth issue at this point. Build 2016 could feasibly include Swift? What if they could bring the quality of Visual Studio on OSX to Swift and have the easy hooks to get those apps running on Windows?

</comment></comment><comment><USER41> I wonder if Google will realize it's now going to be _forced_ to push "Android laptops" for "native performance" on the market instead of doing it on top of Chrome OS (like Microsoft is doing here) which is a battle it's going to lose.

Android laptops = all 1.5 million apps work by default (although might have some UI issues at first, depending how Google implements them - I think they should just put them in "windows") - unlike ChromeOS/Windows 10 approach which will require devs to add every single app to those stores.

<comment><USER42> My guess is that they'll just add Chrome (through ARC) as an install target in the play store once ARC has been available for a bit longer.

</comment></comment><comment><USER43> As a lumia user, this is a very good news. As a windows phone developer, i have to find a new job!

</comment><comment><USER44> If mohammed won't come to the mountain, we will bring the mountain to mohammed.

</comment><comment><USER45> If this makes more people ignore Windows phone as a platform and just develop Android apps I'm all for it. Anything that hurts MS and their platforms gets a plus in my book. This looks like a nice step in the right (non-ms) direction.

<comment><USER46> As GNU lover I cannot understand this much of hate toward Microsoft , Why ? Microsoft is the only not spying on you , Google and NSA and every other big name does too.So if you want blame someone there is more name's applicable to blame ( like NSA , Government , Google and etc ) to blame than Microsoft.

<comment><USER47> [http://www.hanselman.com/blog/MicrosoftKilledMyPappy.aspx](http://www.hanselman.com/blog/MicrosoftKilledMyPappy.aspx)

<comment><USER45> Maybe. But, for me, they did too much wrong for too long to ever be able to repair that in my lifetime..</comment></comment></comment></comment>


Ask HN: What can I use to power two form fields on landing page? - <AUTHOR>

I am about to launch a landing page for my soon to be released web app - and will be collecting emails from interested potential customers.
I was thinking of using Mail Chimp's free account, but they only allow 500 subscribers. I also can't use Wufoo for the same reason - limited to 100 entries.
Is there something else that I can easily use to just collect this information in a secure way?
I will have two fields, email + URL. <comment><USER2> I'm in the process of creating a landing page as well for my web app (Facebook game). Along the way I've done a quick research on newsletter services like MailChimp, Campaign Monitor & Newsberry.

After playing around with them I found that Campaign Monitor best suits me. My ranking is Campaign Monitor > Newsberry > MailChimp.

<comment><AUTHOR> That looks good.

But it seems they charge every time you send an email.

So does that mean that I can register and include their form on my landing page and they will store as many users that register for my service?

There is no upper limit or no point at which I will get charged (e.g. 500 subscribers) ?

<comment><USER2> No limit. You can check out the pricing here: <http://www.campaignmonitor.com/pricing/>

They charge you 1 cent per email + a fee of $5 each time you send. Simple.

</comment></comment></comment><comment><USER3> If you don't mind the Google branding that shows up, and all you want to do is collect emails and URLs, you can embed a Google Form in your document and have it collect the info for you. After you create the form in Google Docs, go to the Form menu and choose "Embed form in a webpage". Copy the link into your landing page, and you're done.

<comment><AUTHOR> I had thought about that...but I DEFINITELY hate that Google branding.

I tried Campaign Monitor though, like matthewphiong suggested and it seems to be working out really nicely.

We'll see how things go.

<comment><USER3> Agreed on the branding. When I saw your post I knew it had been done before but didn't know how to do it, so I threw the link into a bare HTML page to see what it would look like.

What about doing your own form and data store, via Heroku or something similar?

Good luck with your launch!

<comment><AUTHOR> I had thought about all of that pedoh...but to be quite honest, I have so many other stuff on my head - just trying to finish up everything for the launch - that I really wanted to at least get that onto a service that does it full- time.

I have dealt with forms before, and they can be a real PAIN. I also don't want to have to deal with any issues of mishandling data because it wasn't done properly, etc.

So it looks like Campaign Monitor might be the way to go.

</comment></comment></comment></comment><comment><USER4> Hey, it looks like you've found a solution, but if you need something else (or want to try out something else), I'd be happy to have you as a beta user of my own web app, AppRabbit.com. Let me know if you want to give it a try and I'll send you a link to sign up for a beta account.</comment>


Photo Tampering Throughout History - <AUTHOR> http://www.cs.dartmouth.edu/farid/research/digitaltampering/

<comment><USER2> The Stalin photo 4 from the top is also part of a museum exhibition about the endemic editing of history during his regime: The Commissar Vanishes

<http://www.newseum.org/berlinwall/commissar_vanishes/>

</comment><comment><USER3> Here's a recent post on a NY Times blog regarding a cropped photgraph of Dick Cheney:

<http://lens.blogs.nytimes.com/2009/09/17/essay-9/></comment>


China says war with U.S. would be a disaster as tensions mount - <AUTHOR> https://www.reuters.com/article/us-asia-security/china-says-war-with-us-would-be-a-disaster-as-tensions-mount-idUSKCN1T300X <comment><AUTHOR> "disaster to the world", "fight to the end", "at all costs" ("at all costs" solemnly repeated twice in the actual speech); there is some very concerning signaling in this speech by China's Defense Minister.

Full speech here: [https://m.youtube.com/watch?v=OSoQ0_Grauk](https://m.youtube.com/watch?v=OSoQ0_Grauk)

<comment><USER2> China will not start a war with the US. Of course everybody knows that a war is unthinkable.

The message is that China will not be bullied and will fight its corner whatever it takes.

I feel that the US still have an imperial and frankly sometimes racist view of the world with them at the top and everyone else underneath. I think that has to change for everyone's benefit.</comment></comment>


Digital Ocean promo code (~2 months of free hosting) - <AUTHOR>

Need a SSD VPS server for side projects/blog/app ? Here is a promo code for $10 credit : SSDMAY10 (Worth two months hosting for free).<p>You can use my referral link if you prefer : http://bit.ly/12666Dj <comment><USER2> You can use my referral link for $30 credit [http://bit.ly/digitaldrops](http://bit.ly/digitaldrops)

</comment><comment><AUTHOR> Clickable link : [http://bit.ly/12666Dj](http://bit.ly/12666Dj)</comment>


Show HN: I Published a Book "Choose Your First Product" - <AUTHOR> https://yourfirstproduct.com/ <comment><AUTHOR> Hi. I wrote a book for first-time product creators. It gives a straightforward technique for finding a product idea that will sell.

Book writing is... hard!

<comment><USER2> Great news! Have been waiting for this book for a long time. I think I even signed up for email notifications, to not miss release, however didn't receive any email about this. Will definitely check this book.</comment></comment>


Xeround discontinuing cloud DB service - <AUTHOR>

Dear Sir/Madam,
We are deeply sorry to inform you that Xeround's public cloud offering will be discontinued as of May 15th, 2013.
Xeround's leadership forum has recently decided to re-focus the company's effort. This means we will no longer be able to support our service over public clouds.
It is with genuine sadness that we inform you that Xeround's service will be terminated in 2 weeks, across all of our currently active data centers.
What this means for your database? We ask you to please export your database instance and migrate your database to another service of your choosing.
Important: Your DB instance will be automatically dropped on May 15th, 00:00 EST. So that your application doesn't experience any downtime, it is crucial that you migrate your database before that time.
We sincerely appreciate the support you, along with our thousands of customers, have shown us over the last couple of years. We regret the inconvenience this causes you, and hope your migration to a new DB solution goes smoothly.
We thank you for your business and for the overwhelming support of our users.
If you have any questions or need assistance exporting your database instance, please contact our Support team at email@example.com
With the deepest respect,
Xeround Team <comment><USER2> I was given only 7 days to back up my (free) databases. Sucks. Especially sucks that according to Twitter, people have been charged (and in some cases double and triple charged) for this month already. Sucks further that they haven't put this on their Twitter, Facebook, Company Blog, or even had the decency to update their website to not allow sign ups.

<comment><AUTHOR> Mine are paid for, so I will need to pay for another provider to take them over - not to mention the migration/testing time. They are still listed as a provider on Heroku too.

</comment></comment><comment><USER3> Same here. Just paid my bill yesterday, and was told today I have 2 weeks to pack up and move elsewhere. I wish I would've gotten more notice.

On a related note, any suggestions for DBaaS?

<comment><AUTHOR> I am considering switching to Amazon RDS, but would welcome hearing other suggestions too</comment></comment>


The Evolution Of The Honda Accord - <AUTHOR> http://paul.kedrosky.com/archives/2009/07/the_honda_accor.html

<comment><USER2> There seems to be a trend of introducing new cars at the low end vs. high end. Few people want to buy the same car as last time if it's slightly more cramped. But paying a little extra in a few years for a slight upgrade probably seems like a great idea.

I think the other interesting trend would be looking at the Accord, Civic, and Fit in their first model years.

</comment><comment><USER3> This is mostly in reference to the US-market Honda Accord.

Really, go anywhere outside the US for a while, come back, and you instantly realize how much of an absolute mess the US auto market is. Really, we're largely given substandard products below the $25,000 pricepoint and we have a poorly educated driving public.

1) Cheap = junk. This is largely because... cheap has been junk in the US market. You end up with these featureless, plasticky buckets of bolts with half-cocked engines mated to the world's worst transmissions.

That's not to say this doesn't happen in the European or Japanese markets either, because cheap junk exists there as well, but you do have some very nice small cars (b-segment and city cars) over there like the Ford Fiesta and the Fiat 500.

Of course, the majority of the US consumers look at price as the most important thing. Cheap wins. Look at cars like the Corolla and the Civic and you'll notice their prices haven't budged much over the years... but the quality has taken a noticeable hit. No more soft-touch interior materials. Torsion beam suspensions. More gadgets like power seats, gewgaws, and space, but they're not nice places to be anymore, and with all the weight, they handle like rubbish.

2) Want versus need. Everyone seems to think they need a "mid-size" sedan with 4 doors. I had an argument with my sister about this, who's been driving for 13 years now. When's the last time she's used the back seats in her cars for passengers? NEVER. Last time she folded down the rear seats for extra stowage? Twice. When moving. Why would you buy something that you might use once or twice in the lifetime of the vehicle? Considering most Americans finance their cars, you're paying extra every month for 60 months for something you might use ONCE. For that one time, go rent something. It's a lot cheaper and it does the job better than what you bought.

The big argument for SUVs? Higher driving position, and ingress/egress issues (real or perceived) in smaller cars. Particularly people with kids. They have one child, and they suddenly feel they need a Tahoe to put in the child seat.

Lack of research as well. A huge tendency for folks to walk into a dealership and take the first car they test drive (inadequately), because it's better than what they have simply because it's new. It's terrifying. For most people, it's the 2nd most expensive purchase they'll make in their life and they don't do their due diligence.

3) Horrible preconceived notions as the result of poor product. I'm an enthusiast, so I tend to drive... "spirited". Granted, I have cars suitable for it, and for track days. However, I was in a conversation with someone who felt he needed 300HP "in an emergency", and thought that going over 80mph was "really fast".

No. 80mph is pretty... well, boring in a car with a decent suspension. It's like doing 40mph in a different gear. Yes, a high-margin SUV or a low-rent budget box (I'm looking at you specifically, Cobalt) with crappy tires will absolutely feel terrifying at 80mph because the tires don't communicate anything predictably and the car is generating significant lift because there's no attention to aerodynamics. In those kinds of cars, yes, 80 is "interesting" due to the lack of communication you get from crappy all-season tires up the steering column.

Then there's terrible engines with terrible transmissions, and people who don't understand how they work. Why does the US market Golf (Rabbit) have a 2.5L naturally aspirated 4-cylinder? Because the average American doesn't understand that to get the power out of the smaller displacement engines you have to put your foot down and rev the nuts off of it. So they just throw this half-assed larger displacement engine up-front because people are afraid to put their foot down... the same people who think they need 300HP... in a FWD, 3600lb sedan that will violently torque-steer, and probably end up in a guardrail when they brake mid-corner because they took it way too hot.</comment>


Hyperscan: A Fast Multi-Pattern Regex Matcher for Modern CPUs - <AUTHOR> https://branchfree.org/2019/02/28/paper-hyperscan-a-fast-multi-pattern-regex-matcher-for-modern-cpus/ <comment><USER2> One of the most interesting ways to handle regex and general parsing IMO is by using derivitives. I'm not sure if this uses any of the ideas from that area, but with derivitive based regex parsing instead of constructing some specific program to parse some language, you parse by instead transforming the original language to be the language of the union of the old language as well as the character just seen.

In addition to being incredibly simple to implement compared to traditional regex and parser generators, I think it is also interesting in that while it is really simple and looks like you are interpreting a language, it is actually powerful enough to parse arbitrary CFGs in O(n^3) with some help from memoization and fixpoints. See [http://matt.might.net/articles/parsing-with- derivatives/](http://matt.might.net/articles/parsing-with-derivatives/) for more details.

I think the interesting aspect in terms of performance with something like this is that the derivitive based parsing system is explicitly streaming since it only stores the remaining input string and a regex string. Also, I think you can get around some of the performance issues with constructing these strings by replacing certain parts of the regex with more traditional NFAs/DFAs. In particular, I think this method provides an easy way to use simple equality matching for constant strings, DFAs for Kleene star, NFAs for the rest of the typical NFA features like the or operator and negation, then finally using the derivitive for very complicated features like capturing groups and backreferences.

<comment><USER3> Derivatives are simple to explain, but not entirely straightforward to implement efficiently. I personally prefer the Glushkov construction.

The Glushkov construction (which Hyperscan uses among other things) is a similarly straightforward translation from a regular expression to an epsilon- free NFA with nice properties. There's a very neat paper explaining the construction in the form of a play: [https://sebfisch.github.io/haskell- regexp/regexp-play.pdf](https://sebfisch.github.io/haskell-regexp/regexp- play.pdf)

On the CFG side, I like to think of Early parsing as analogous to the Glushkov construction. At the very least they have similar properties.

</comment></comment><comment><AUTHOR> Author here, in case anyone wants to question, abuse, argue, etc.

<comment><USER4> Thank you! I' m very excited to test in my projects ( I found a working Python extension here [https://github.com/shenfe/python- hyperscan](https://github.com/shenfe/python-hyperscan))

Let me seize the opportunity. I have a problem where I need to match multiple person names (hundreds of thousands) in huge texts. Aho-Corasick works good for exact matches. Could HyperScan works for approximated matches?

<comment><USER5> Have you tried some existing Python libraries which support fuzzy searching, such as regex and fuzzysearch?

<comment><USER4> Yes. Both grow the complexity linearly/exponentially based on the number of patterns to be searched.

<comment><USER5> Ah. You should likely use a different algorithmic approach.

If you add contact details to your user info I'll be happy to get in touch and help.

</comment></comment></comment></comment></comment><comment><USER6> This appears to be the same algorithm used by ripgrep ([https://github.com/BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep)) for searching when SIMD/AVX is enabled. Specifically, it uses the algorithm Teddy from the library that's derived from this paper.

<comment><USER7> ripgrep author here. Yes, the Teddy algorithm was originally extracted from Hyperscan. But this is a teeny tiny piece of Hyperscan. And AFAIK, ripgrep's implementation (which is actually in the underlying regex library) doesn't carry over the full Teddy algorithm. Or so I've been told. :-)

<comment><AUTHOR> Imma keep telling you until you grab my merge logic. :-)

</comment></comment></comment><comment><USER8> This seems tailor-made for deep packet inspection.

<comment><USER9> Well, it kinda is. AFAIK, that's exactly what this was made for, and Intel/McAfee was going to create a DPI device using this tech. That never happened, and now Snort uses/will use hyperscan for its pattern matcher

<comment><USER10> Hello, fellow Sensory employee!

<comment><AUTHOR> We are everywhere...

</comment></comment></comment></comment><comment><USER11> Hyperscan is also used for scanning repos at Github: [https://github.blog/2018-10-17-behind-the-scenes-of- github-t...](https://github.blog/2018-10-17-behind-the-scenes-of-github-token- scanning/). I have a similar project for scanning repos, [https://github.com/zricethezav/gitleaks](https://github.com/zricethezav/gitleaks) and plan on adding hyperscan functionality in a future release. Really speeds up scans when trying to match many regexes.

</comment><comment><USER12> I'm drawn to hairy parsers for implementing DSL-rich syntactically-extensible programming languages. Hairy, as in, extensible and scoped; full-ish Perl- compatible RE, including parse-influencing code execution; n-ary multifix operator precedence; backtrack/operator-precedence/regex sandwiches. Subengines can be used to variously strength reduce parts of the grammar, and to dynamically prune search. It's been some years, so I'm out of date...

Does anyone have experience with MNCaRT? [1] I've long wished for a toolkit for doing grammar analysis and building assemblages of specialized high- performance engines into relatively performant parsers.

Has there been work on using multiple-pattern RE engines (like RE2::Set or Hyperscan) in some context similar to language parsing? Or as subengines of a larger parser?

Thanks.

[1] [https://web.eecs.umich.edu/~weimerw/p/weimer- mncart.pdf](https://web.eecs.umich.edu/~weimerw/p/weimer-mncart.pdf) [https://github.com/kevinaangstadt/MNCaRT](https://github.com/kevinaangstadt/MNCaRT)

<comment><AUTHOR> I like the UVa guys, but MNCaRT isn't very mature and was mostly there to support the Automata Processor. Since Micron kicked that product out the door (into a startup that might be charitably described as 'moribund', Natural Intelligence Semiconductor) there's not much point in starting with that codebase.

Some customers used Hyperscan as a primary matching engine with a secondary state machine / parser behind, but I'm not at liberty to discuss specifics. In any case these guys were interested in network threat detection, not generalized parsing.

I wouldn't use RE2::Set for language parsing, as it can only tell you that certain patterns occurred, but won't give you offsets, just a single bit.

The problem with the charmingly described 'hairy parser' is that it will just be 'one damn thing after another' \- a lot of code, a lot of weird semantic corners, etc. Why not just use a parser that's intended for generality - something like ANTLR? What will taping all that stuff together accomplish?

We didn't set out to create a huge codebase with weird corners with Hyperscan _either_ , and we still got one. If you go out with the intent of building something hairy from the start.... :-/

<comment><USER12> Ah, ok, thanks.

Let's see... I'm coming at this with objectives around programming experience, rather than around parser implementation. I want to be able to do grammar design that is tightly tied to problem domain expression, rather than to parser tech. The usual dance, of adapting a pretty problem-domain grammar to available parsers, by grammar uglification, transformation, and kludgery... I'd like that to be optional - a thing of optimization, not of minimum viable effort. I'd ideally like parser design choices to escape the parser only as performance variance.

So yes, I'd love a general parser generator, that accepts any grammar, and ideally does some reasonable best-effort transformation and compilation to subengines given the mess you've handed it. I've not seen that. But since I'd not seen RE2::Set, it's perhaps been a decade since I seriously looked around, so maybe there's new niftyness?

I've tried ANTLR a couple of times over the years, at least for toys, maybe a no-templates C++ parser. (It was weird - I never figured it out, and it's not a happened with anything else, but I just viscerally disliked working with it.) Others... None were without sacrifices that required them being wrapped in hair.

So I dreamed of someone creating a parser generator toolkit, a library of engines, reusable rather than inextricably tangled in yet another parser silo. I saw Hyperscan and thought, hmm... might a toolkit come with a regexp api? :)

A rich parser doesn't have to be complex, if you sacrifice speed. A Perl 5 compatible (some old version) regexp engine can be done in a page or two of prolog. So I used to focus on expressivity, and then scramble to get back to minimally tolerable performance.

Minimum-viable compiler performance is arguably dropping dramatically now. With cloud-parallel deterministic compilation, and community-scale caching. So maybe something simple could now have viable pragmatics.

I saw Hyperscan, and was hit by old dreams of speed. Multiple wizzy subengines woven together. I'd woven in GLRs before, but multiple patterns... oooh, what leverage might might be found there?! :)

> What will taping all that stuff together accomplish?

Extensible and scoped parsing... the _immensely_ expensive Python 2 to 3 transition was in part a design choice to avoid scoped method dispatch and file-scoped parsing of both languages. I suggest it was the wrong call.

PCRE with parse-affecting code... say rather, each time you lose a feature, some set of problems gets harder. I'd prefer that to be the harder-slower of falling back to a less-specialized engine (which sometimes isn't a problem), to the harder-go-back-and-rewrite of nonimplementation (which always is). Grammar restriction as premature optimization.

N-ary multifix operators... lets you easily parse expressions of rich operators, from Smalltalk to math. Modern IDEs seem sufficient to address puzzlement over "how and why did this (not)parse".

A "sandwich" of regexp for tokens, operator precedence parser for extensible expressions, and something backtracking for an extensible list of statements, is one way to get a somewhat traditional language parser that's more nicely extensible and expressive.

> a lot of weird semantic corners

Yes, but... I'd like the choice to avoid semantic weirdness, or not, to happen at the application level, not at the parser api level. Because it's a tradeoff. I accept the PEG argument that often simplicity and composability is the right design choice, is worth the expressive cost. But not the argument that anything PEGs can't handle is a "legacy language" which people shouldn't be using anyway (fun conversation with a PEG person).

So yes, I'd like to see programming language parsing become far richer than currently, and thus somewhat hairier. Because avoiding that is, I suggest, inflicting far greater costs elsewhere.

</comment></comment></comment><comment><USER13> "Hyperscan Things That Didn't Make It Into Open Source Hyperscan ... Ports to non-x86 platforms."

This is a big shame, and undercuts the title. Is there any way to release the older stuff so that interested folks can work on it to bring the other arches up to parity? I'm a Power ISA bigot in particular but not having an ARM port seems like a big gap.

<comment><AUTHOR> I suppose "Some Modern CPUs" was too long-winded a title?

As I said, it doesn't take a genius to understand Intel's motivations. They _bought_ the project, after all.

Not being @ Intel anymore, I don't have access to the older stuff, and even if I did, the codebase has diverged significantly since.

Without going on too much of a tirade - the experience of developing for all those platforms _really sucked_. Almost all the non-x86 platforms had significant bugs in their toolchains. One of the MIPS variants (particular architecture elided to spare the guilty) had bugs in their gcc intrinsics in a way that suggested that no-one had ever done any significant third-party dev on the platform.

Big-endian was also a huge PITA.

It was a ton of work to keep all those systems alive, and our machine rack looked like a zoo of dev boards and weirdo devices.

In the "ure3" system I mention, I would make retargetability/portability to other systems a first-class goal.

One way of achieving this is not having such a huge profusion of methods and complexity. Hyperscan is over-engineered for many use cases if you aren't a network company looking to scan 5,000 complex regexes in streaming mode at hopefully maximal performance.

</comment></comment><comment><USER14> I'm curious how Hyperscan compares to the venerable re2c, which is used for compiling SpamAssassin's rules.

<comment><USER7> glangdale can probably say more, but I think the high level answer is pretty easy: re2c is intensely focused on building state machines, in their entirety, ahead of time. There's also some cool stuff that lets you integrate the state machine with the rest of your code. AFAIK, re2c sticks fairly strictly to state machines and doesn't do sophisticated optimizations like Hyperscan, particularly with respect to literals. To me, they are fundamentally solving different problems. re2c is only viable if you can actually deal with the full size of the DFAs you build.

re2c is also notable for, AIUI, having a very principled solution to the problem of submatch extraction using tagged DFAs. They wrote a paper about it: [http://re2c.org/2017_trofimovich_tagged_deterministic_finite...](http://re2c.org/2017_trofimovich_tagged_deterministic_finite_automata_with_lookahead.pdf)

<comment><AUTHOR> For what it's worth at this late stage:

Yes, this is an accurate summary. re2c works when it works, and there's clearly a good niche for "pattern matching stuff that determinizes cleanly". However, in the general case, DFAs catch fire (combinatorial explosion in # of states), especially when handling multiple regular expressions.

IIRC SpamAssassin has lots of quite hard patterns and re2c can only handle a subset. I forget what the fallback position is (libpcre?).</comment></comment></comment>


20 reasons why PHP function names are inconsistent - <AUTHOR> http://blog.roshambo.org/20-possible-reasons-why-php-function-names-and-parameters-are-weird/

<comment><USER2> only 20? Now, that's a lazy blogger</comment>


Why the poor can have "things" but can't escape poverty - <AUTHOR> http://moorewr.tumblr.com/post/121516007260/monkeymancheeks-antigovernmentextremist

<comment><USER2> New/used vehicle costs have certainly not decreased (although the gap has shrunk a lot). Anyone with even casual knowledge of the used car market should be able to tell you that.

Cell phone service has not gotten less expensive (maybe in terms of bytes/$, but certainly not in cost/time).

Cars and education share the common problem of easy money (via loans) creates a situation where there is too much money chasing too few goods. It's easy for prices to climb when there is no immediate impact on the buyer, if they want the product (in this case both of which are near essentials for a typical white-collar existence) they just take on more debt.

In short, there's two lines on that graph I 100% call BS on, either for being straight up false or the product of number crunching "creativity". Do I trust the rest of them? Hell no.

<comment><USER3> You've gotten more data now than 10 years ago - to the central bank that counts as a price decrease after hedonic adjustment due to the quality increase. Used cars now have more electronics and are safer and, so, the same thing applies.

</comment></comment><comment><USER3> The currency will be set to inflate at 0-3%, hedonically adjusted, by central banks. This rate is determined by averaging out costs of a consumer basket of goods, as determined by a central bank. The bank might determine a family only needs to spend 6% budget on college and 20% TVs. The currency will inflate accordingly. This policy benefits those who hold assets that increase in nominal value, as well as those who can access near 0% interest loans.

<comment><USER4> It's even worse when you take into account that technological goods are naturally subject to strong price deflation, so the explicit policy is for everything else in the average to rise. And that's still ignoring that slight price deflation is the inherent to market competition itself.

We're getting ever more productive, but the debt puppeteers insist on turning up the treadmill ever higher.

</comment></comment><comment><USER5> Source: [https://twitter.com/markmellman/status/462951610042564608](https://twitter.com/markmellman/status/462951610042564608)

Note that the x-axis spans the years 2005-2014, and that the y-axis is somewhat misleading ("changes in prices relative to a 23% increase").</comment>


Kim Schmitz trolling in the German CCC newsgroup, 1996-2000 - <AUTHOR> http://arnold.babsi.de/KIMBLE.txt <comment><USER2> Wow, this is a great insight into the character of this guy. It would be hilarious if he meant to be satirical, but I guess he didn't (at least not entirely). Just a quick translation of the first two:

      This is Kimble at the keyboard...
      Send me your opinions, questions and suggestions regarding:
      Should Kimble start a religion and become a god?!

(after some groaning responses)

      To all who didn't get it the first time, I'm Kimble.
      I turn poor, <sexually> unsatisfied, boring me-too pseudo hackers......
      into rich, <sexually> successful, interesting SUPER-HACKERS.

      Buy my new book "how can I become a very super hacker" <intentionally
      poor grammar> or "meat loaf with potatoes"

      <in english> Join DATA PROTECT now.... BUSINESS RULEZ....
      feel free to call any time

Wow, as entertaining as this guy is, I think we might be spending too much time with this. And by "we" I clearly mean myself. It's just that he reminds me of those "hacking" bullshitters I used to know in high school, only he probably never grew out of it...

</comment><comment><AUTHOR> This is pretty much all in German but I still decided to post it because it gives an insight into Kim Schmitz's ("kimble", recently in the news because of megaupload) past and this collection must not be lost.

It is pretty much nothing but trolling on his part and spreading PR for his back-then company "dataprotect" and talking down on other people - and all that in the German newsgroup of the legendary CCC.

It is way too much to translate the whole thing but I am glad to help with phrases or words.

</comment><comment><AUTHOR> Also, this: <http://www.hackerland.de/hackertales/kimble.htm> (in German)

Especially interesting to see how what he did with megaupload was 100% the exactly same thing he did back in the BBS days.</comment>