Falsehoods programmers believe about video - <AUTHOR> https://haasn.xyz/posts/2016-12-25-falsehoods-programmers-believe-about-%5Bvideo-stuff%5D.html <comment><USER2> > rendering subtitles at the output resolution is better than rendering them > at the video resolution

I would like to know what's wrong with this approach. I watch a lot of commentated speed-run videos: that's often something like ~244p video, plus soft subtitles. The subtitles get rendered at the source resolution (presumably, into the video framebuffer) and then upscaled along with the image, forcing them to be a tiny blurry mess instead of the crisp, readable text they could be.

<comment><USER3> It's also missing the most common error I see: conflating subtitles with closed captions.

Closed captions are positioned on the screen to indicate who's talking, have descriptive audio for sound effects, and should be in a high contrast easy to read font (most people with hearing deficiencies also have problems seeing, ie: out of date prescriptions for both hearing aids and eye glasses).

As far as I know, QuickTime does it right but the Apple TV, Netflix, and YouTube fuck it up, but that's because I helped write the QuickTime one way back.

<comment><USER4> AFAIK, The YouTube implementation does all of those.

Here is a demo: [https://www.youtube.com/watch?v=BbqPe- IceP4](https://www.youtube.com/watch?v=BbqPe-IceP4)

Please do not spread falsehoods.

Disclamer: I work at YouTube.

<comment><USER5> [http://take.ms/fwwhx](http://take.ms/fwwhx)

That is frustratingly poor contrast.

<comment><USER4> This might be because you might have changed your settings for CC in the past.

Here is what mine look like [http://imgur.com/HLIVXQ6](http://imgur.com/HLIVXQ6)

You can click settings again to change font sizes, font family, colors, etc.

<comment><USER6> I have to change my CC settings every damn couple of days because they revert to the same white-on-white 400% bullshit. So thanks for that.

<comment><USER4> I am not sure, but the screenshot I submitted seems to be the default settings.

However, software that is 100% perfect is pretty much impossible to write, and if you think there's a systematic issue, please file a bug, so it can help others in same situation.

<comment><USER7> I am absolutely sure I never changed my settings, and that they have changed over time without me doing anything. Why would anyone want 50% font size at 25% opacity on a yellow then green background? I didn't ask for that. Yes, this is most definitely a systematic issue.

The bug reports I've submitted to google have been ignored, and that's a frustrating distraction from what I'm paid to do. Maybe if you submit one yourself, somebody will pay attention, because google is paying you to work on youtube, and hopefully they will take you more seriously than their users.

<comment><USER8> > Maybe if you submit one yourself, somebody will pay attention, because > google is paying you to work on youtube, and hopefully they will take you > more seriously than their users.

FWIW, I always read "file a bug report", when not used to mean "I need more detail" but to mean "talk to the hand" and when spoken by someone working close to a project, as "fuck off", particularly if the person never even bothered to determine whether or not you've used their bug tracker in the past (or even filed a bug already for this specific issue).

When I find someone on a forum with a bug that I haven't heard about, I sit around and talk to them until they either get tired of wanting to talk to me or I get the information I need to fix the problem. The alternative would essentially translate to "I don't actually care about this bug", as that's the only way you are going to get certain classes of bug report. I have shown people at Apple bugs that they were absolutely fascinated by momentarily and then told "File a Radar". I clearly wasn't in a position to do at the moment and which of course I forgot to do it when I got home... they should know this happens, because this assuredly happens to almost every single person they tell that to (and no, "well, we do see a large number of bugs filed" is not evidence against "people you tell to file a bug using your arcane system, particularly if they have to do it days later, probably won't"), and yet even when a potentially rare and real and critical bug is shown to them in person (this was even at an event where the whole point was to work with customers on their issues), their response is easentially "engh, I don't care if this doesn't work unless it affects a ton of people". As someone who works in security, I'm going to assert "do you want vulnerabilities? because this attitude is how you get vulnerabilities": every bug is precious as it is a mistake in your mental model of the software, and who knows how far down the rabbit hole that mistake will take you.

Sure: I realize that the engineer isn't always the best person to do this, and even in my tiny company I had to solve that, but the solution isn't to tell people to "go use the bug tracker", a comment which shunts annoying work learning a new system, one which is all too likely to demoralize them (Apple's Radar is a great example of this), but instead to have someone whose job is to talk to people to follow up with credible bugs: I'd go "hey Xyz, there's a guy on this forum who's complaining about something I hadn't heard of before; can you try to get more details from them?" (where Xyz has changed over the years, but has always been one of the few key positions). I couldn't begin to count the number of times I have debugged an issue with someone on reddit.

<comment><USER7> The rule of thumb I used was: if Google is paying someone enough to go online and post defenses of youtube like "Please do not spread falsehoods", and tell me things I already know like "software that is 100% perfect is pretty much impossible to write," then part of his paid job should also be filing bug reports using the bug tracking system he uses every day, and probably already has an account logged in and a tab opened on, when the falsehoods turn out to be true.

If YouTube were open source, and I could look at the source code of the keyboard handler to find the cause of the problem myself, prove my bad experience was not just a falsehood to be brushed off, and possibly even suggest a fix, then maybe I would have been more motivated to put my own time into filing a bug report.

But Google is a huge well funded advertising company that payed billions of dollars for YouTube and makes billions of dollars off of it, has a huge complex system set up for digital rights management, promoting and paying for advertisements, enabling copyright holders to report violations, paying many employees for actively pursuing and resolving those copyright violations, removing inappropriate content, hiring conservative lobbyists and sending executives to kiss Donald Trump's ring [1], etc.

So I would expect YouTube employees to put at least as much time and effort into reporting bugs about their own product to their employer, as they put into monetizing YouTube while defending its reputation from people they perceive as spreading falsehoods about it.

[1] [http://www.reuters.com/article/us-usa-trump-google- idUSKBN14...](http://www.reuters.com/article/us-usa-trump-google- idUSKBN1430G6)

<comment><USER4> I am not getting paid to do this, and actually am taking some time to be with the family for holidays. I just saw the original comment saying that YT "fuck(s) it up" when it comes to CC, and it looked OK to me. So, I just wanted to share my results so that people do not assume "it's screwed up everywhere". I do know that the engineers I have met at work really want to try to do the right thing for users.

I don't have access to file a bug through a work account for the next few days, and if you come across any issues (like CC broken by default), please file a bug with a lot of details. People do look at that stuff. I am glad that you found the source of the issue, and I hope you can agree that it would've been impossible to find it if I had just filed a bug. I do not work anywhere close to the team that implemented the CC, and when people have said "file a bug" to me in a work context, they have meant it as a way to "let's keep track of this so it's not forgotten". Luckily, the people I have met at work have been good about this. I do not speak for Google or anyone else there, just sharing my own personal experience.

<comment><USER7> Thanks for responding. I'll submit a bug if I can, now that I know the cause the problem. But I need to know where best to submit it.

It's a design and documentation bug, that needs to be addressed at a higher level by re-evaluating the decisions and justifications behind all the keyboard accelerators, removing the ones that nobody actually uses and that cause more problems than they solve (like making closed captioned text transparent and changing its colors), implementing full and immediate "?" keyboard help, and writing some online documentation.

So should I simply click "send feedback" on any random youtube video and write up my suggestions, as this page tells me to? [1] I've done that now, so let's see what happens.

Do you really sincerely think my suggestion will actually make it back to the designers through that channel and that changes will happen as a result? Is there a way for me to track it?

Or is there a better accountable bug tracking system that I can actually submit a real trackable bug into and watch the progress and see if it gets marked "will not fix", like [https://bugs.chromium.org](https://bugs.chromium.org) but for youtube? Do you have access to a better bug tracking system for youtube that's not public?

[1] [https://support.google.com/youtube/answer/4347644?hl=en](https://support.google.com/youtube/answer/4347644?hl=en)

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> The original one ( [http://www.kalzumeus.com/2010/06/17/falsehoods- programmers-b...](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers- believe-about-names/) ) left me bafled. Then I realized you have to strike a balance; otherwise you cannot deal with names at all. The point where drawing the line depends on your industry/customers, but I'd safely say that it's too restrictive nowadays so these lists are useful somewhat and of course they are interesting.

<comment><USER10> It's true that you have to draw a line somewhere based on technical and business constraints, but an important takeaway of the names article is that you almost certainly don't need to do anything with a name other than treat it as an opaque string that can be displayed back to the user. For example, I'm struggling to think of a good reason why user registration would require separate first name and last name fields, and yet this practice is overwhelmingly common. For that matter, why do you want my real name at all, considering that it can't be used as a unique ID anyway?

<comment><USER11> But sometimes your government expects names to be broken into given and family names (the US, Japan, and China all seem to make this assumption -- every government form I've seen from those countries wants your name fully broken out).

I've no direct experience with, say, Russian or Latin American governments, but cultures that use explicit patronymic or matronymic names might expect that broken out as well.

If you ever need to submit user data to the government (e.g. for tax reasons), and you don't ask your user to break the name apart, then you will necessarily be guessing, which seems strictly worse than just asking them how their name might split.

At the end of the day, if you operate in a given culture, then you need to address those cultural norms. Bending over backwards to support every possible edge case seems unwise if they also happen to disagree with those norms.

<comment><USER10> I'm explicitly disregarding government websites here, since the government has a legitimate reason to care about my full name (and gets to define what a "legal" name means), and also 99% of the websites that I sign up for are unrelated to the government. There's no reason for a social network to report the names of all its users to a government agency automatically, and I'm skeptical that even my bank would have such a requirement.

<comment><USER11> I don't mean reporting all the names, but for example if you ever transmit payments there is a KYC process, and if you are a bank you must report any suspicious money laundering activity.

At the end of the day there are cultural conventions around names, and various agencies use them. I don't see why software should be explicitly culturally neutral, unless your audience is explicitly a global one (and even then, I think localization is preferable to just sticking names into a single field).

<comment><USER12> There is significant engineering cost to implement localization correctly. If you're a bank or in another market where you interact with a government, then you must bear those costs. If not, why not just use an opaque string and spend your engineering dollars on your actual product?

</comment></comment></comment></comment></comment></comment><comment><USER13> This is a good list, but it would be so much better with some (brief) pointers to counter-examples to the beliefs.

<comment><USER14> This unfortunately follows the conventions of the genre called "Falsehood programmers believe about X": [http://spaceninja.com/2015/12/08/falsehoods- programmers-beli...](http://spaceninja.com/2015/12/08/falsehoods-programmers- believe/)

I honestly think this genre is horrible and counterproductive, even though the writer's intentions are good. It gives no examples, no explanations, no guidelines for proper implementations - just a list of condescending gotchas, showing off the superior intellect and perception of the author.

<comment><USER15> Perhaps there is scope for a list of Falsehoods Programmers Believe About Falsehoods Programmers Believe.

<comment><USER16> Let's start then:

1\. Everything said in every "Falsehoods Programmers Believe..." list is true.

The Falsehoods sound like ultimate truths only because of the literary genre. They sound like they were written by an expert who not only knows what's true, but also knows what we think we know, which kind of automatically takes him/her to the next level of expertise.

<comment><USER14> 3\. Every falsehood that is true should be accounted for.

4\. Every falsehood that is true CAN be accounted for.

5\. Making your code compatible with a falsehood doesn't come with a price.

6\. There are no falsehoods which are mutually exclusive.

<comment><USER17> > Every falsehood that is true

Hmm.

</comment></comment></comment></comment></comment></comment><comment><USER18> \- "all subtitle files are UTF-8 encoded"

Hah, this strikes really close to home. I've had to work with so so many subtile files in Eastern European and Turkish Windows codepages mostly but not entirely compatible with Win-1252. There's no way to tell them apart programmatically, so you check that the extended characters make sense. It's a bit of a nightmare.

</comment><comment><USER11> This article would be infinitely better if it any provided counterexamples.

</comment><comment><USER19> > my hardware contexts will survive the user's coffee break

hell, they don't survive alt-tabbing into a game that has a different resolution than the monitor

<comment><USER20> Heh... for some reason youtube can't survive when I start a video on my monitor and then I switch outputs to TV using an xrandr script by closing one output and opening the other. I thought it was possible to continue the video that way but once I noticed it doesn't work, it made sense immediately.

Mplayer and co, on the other hand can cope with it but my window manager can mess it up so I don't bother.

</comment></comment><comment><USER21> This list makes me not want to program any [video stuff]

</comment><comment><USER22> From the article:

> I can exclusively use the video clock for timing

Heh. I just finished writing up a design doc to address problems I had with this, and I referenced "Falsehoods programmers believe about time". Then I opened Hacker News and saw this article. So this is very timely for me.

(My doc: [https://github.com/scottlamb/moonfire-nvr/blob/new- schema/de...](https://github.com/scottlamb/moonfire-nvr/blob/new- schema/design/time.md))

</comment><comment><USER23> it is true, video is a nightmare mess littered with weird functionality nobody needs. (limited range only just disappeared in rec 2100, optionally??? really??? i'm not worried about my electron gun in my CRT from 1975 these days...nor do i want to know what a Y or a Cb or a Cr means because everything is RGB and B&W TV is long dead... and 4:2:2 is not exactly compression so much as computational overhead etc.. etc.)

its a nightmare, but the reason for these observations is precisely that it shouldn't be a nightmare. this area of programming is a wasteland ... nobody that good wants to solve these trivial problems :/

<comment><USER24> Chroma subsampling isn't going anywhere. You'll usually get subjectively better quality with 4:2:0 chroma compared to 4:4:4 at the same bitrate. And this means you can't have everything in RGB, so all the colorspace conversion complexity can't be ignored.

Try experimenting with chroma subsampling in JPGs, but note that not all image viewers have good chroma upscaling. MPV can display still images as well as video and you can choose the chroma scaling algorithm.

<comment><USER25> > Chroma subsampling isn't going anywhere. You'll usually get subjectively > better quality with 4:2:0 chroma compared to 4:4:4 at the same bitrate. And > this means you can't have everything in RGB, so all the colorspace > conversion complexity can't be ignored.

What's more, YCbCr is more efficiently compressed than RGB even if you don't subsample, for the same reason that a DCT saves bits even if you don't quantize: Linearly dependent or redundant information is moved into fewer components, in this case most of the information moves into the Y channel with the Cb and Cr both being very flat in comparison. (Just look at a typical YCbCr image reinterpreted as grayscale to see what I meant)

<comment><USER23> isn't it the case that amount of data required to store the result of a lossless DCT is bounded below by the size of the data, and this is why lossless JPG compression does not use such a scheme?

<comment><USER25> I'm not actually sure. In retrospect, I'm not sure what 'DCT without quantizing' really means, since the output of the cosines are probably real numbers? I guess the interpretation would be quantized to however many steps to reproduce the original result when inverted (and rounded).

In lossless JPEG it seems they omitted the DCT primarily for this reason: It not being a lossless operation to begin with, if you actually want to store the result. What other lossless codecs often do is store a lossy version such as that produced by a DCT, alongside a compressed residual stream coding the difference (error).

In either case, it's important to note the distinction between reordering and compressing; reordering tricks like DCT can reorder entropy without affecting the number of bits required to store them, but the simple fact of having reordered data can make the resultant stream much easier to predict.

For example, compare an input signal like this one:

FF 00 FF 01 FF 02 FF 03 FF 04 ...

By applying a reordering transformation to move all of the low and high bytes together, you turn it into

FF FF FF FF FF .. 00 01 02 03 04 ..

which is much more easily compressed. As for whether that's the case for (some suitable definition of) lossless DCT, I'm not sure.

</comment></comment></comment></comment></comment><comment><USER26> And this is why I don't do video. (And have lots of respect for the people who write the libraries I use.)

</comment><comment><USER27> Could write an entire page just on subtitles.

</comment><comment><USER28> There is a lot of potential information in such a list. But in this form is quite a "trust me" thing that does not really add to the reader knowledge.

</comment><comment><USER29> Nice one! Now I would like to see article like this, but about ciphers, hashes, digital signitures, etc.

</comment><comment><USER30> An explanation for each 'falsehood' would have been nice

</comment><comment><USER31> Well video programming just sounds delightful.

/sarcasm

</comment><comment><USER32> > a H.264 hardware decoder can decode all H.264 files

and

> video decoding is easily parallelizable

At a previous job, I don't know if it was just the field I was in or just bad luck, but having to explain this over and over again was kind of a personal nightmare.

That being said, this is an excellent list!

<comment><USER33> Curious - Why is this? Does this assume streaming video, and you can't look ahead in the stream?

If you can jump ahead, it would seem to be easy to have multiple threads, starting at key frames to decode the content. You'd have to splice them together, but this seems possible.

<comment><USER8> 1) You are now assuming that "seeking to a position will produce the same output as decoding to a position"; even if the video is well-formed (and you don't end up with massive issues where the key frames just don't work correctly) you are likely going to end up with subtle discontinuities between every segment. 2) You are now going to have to be buffering a couple seconds worth of uncompressed video somewhere, probably not on the GPU, leading to a much higher I/O bandwidth requirement somewhere that isn't good at that, so this is only probably going to be sort of parallel (FWIW, I believe most people who try to do parallel video decoding are assuming that they can have different parts of the encoder concentrate on different sections of the screen, which sounds good until you see how non-local video decoding can be).

<comment><USER34> > 1) You are now assuming that "seeking to a position will produce the same > output as decoding to a position"; even if the video is well-formed (and you > don't end up with massive issues where the key frames just don't work > correctly) you are likely going to end up with subtle discontinuities > between every segment.

Wouldn't "the keyframes just don't work correctly" result in corrupted output anyway?

If we're worrying about already-broken situations then it is quite obvious that additional breakage may occur in related features.

<comment><USER35> I think the point is that video definitely is that broken and the only reason video does work is because everyone has work-arounds for everyone else's bugs. At least that's my experience with video. It's all a disaster.

<comment><USER36> I believe[1] this isn't necessarily about broken files. There is a _lot_ of variation allowed by the spec. One example that I've seen in the wild is extra-long (> 60 seconds) periods between I-frames. Seeking to an arbitrary point either requires searching backwards from the seek-point for an I-frame and storing a _massive_ amount of RAM. As this usually isn't possible and would require decoding _hundreds_ of frames, decoding may cheat and make do with as many P and B frames as it can handle.

[1] I haven't actually read most of the h.265 spec. It's possible these are technically invalid files.

<comment><USER34> a 1-minute span for I-frames would not be prohibitive for parallel processing that the quotes part was referring to, with a 60-minute video it would still give you 60 segments to process in parallel.

<comment><USER37> A single uncompressed frame of 1080p video occupies 28MB in RAM, so 1 minute of 24fps video will take up 40GB. If you want to be able to run 4 cores at once it's 3 times that. You won't be doing that any time soon on your laptop or smartphone.

<comment><USER38> Curious as to your math? My naive thinking is 1920 * 1080 * 8 (generous) bytes is around 16MB.

<comment><USER37> I forgot where I got 28 from but it's indeed a mistake. For normal display you could get away with 1920 * 1080 * 8bit = 6MB. For a 10bit display it would be around 8MB. You do indeed often use 32bit float for high-quality processing but since what we're storing here is the output frame you would finish all that processing and then go down to 8 or 10bit per channel. So recalculating the math that's 8GB for 1 minute of video, still way too impractical.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER39> I don't think programmers believe any of the video decoding falsehoods; not because they know any better, but because they know they don't know.

Also, none of these unfounded preconceptions make intuitive sense, so I don't see why people would believe them.

</comment><comment><USER40> > _interlaced video files no longer exist_

Interlaced video files should no longer exist.

Seriously, f __k interlaced video.

> _upscaling algorithms can invent information that doesn't exist in the > image_

That's not a falsehood. Upscaling _does_ invent information that doesn't exist in the image.

<comment><USER41> Perhaps that author was being pendantic, but from an information theroetic perspective it is correct that you cannot invent information with upscaling.

The upscaled image does not have more information than what was in the original image; you can reconstruct the upscaled image given only the information available in the original image, the output resolution dimensions, and upscaling algorithm.

<comment><USER40> That's like saying fractal images are not information. Just because something is generated by a formula, doesn't mean it's not new information.

</comment></comment></comment><comment><USER42> can we have falsehoods programmers believe besides video that are more common? this list probably is relevant for 1% of programmers here.

<comment><USER43> Just type "falsehoods programmers believe" into the search box at the bottom of the page and you'll get a ton of previous articles on falsehoods in various domains that have been posted here over the years:

[https://hn.algolia.com/?query=falsehoods%20programmers%20bel...](https://hn.algolia.com/?query=falsehoods%20programmers%20believe&sort=byPopularity&prefix&page=0&dateRange=all&type=story)

And while this topic is not personally relevant to me since I don't work with video decoding, I do find learning about different technologies interesting. Reading this gives me an appreciation for how much effort goes into making video, something we all take for granted, work.

If people only posted articles that were relevant to a majority of readers, HN would be a much less interesting place.</comment></comment>


Fabrix – A strongly-typed Node.js ecosystem - scott-b https://github.com/fabrix-app <comment><AUTHOR> This seems...fine, in that I guess it's better that this is out there than not, but:

\- Nest.js already _kills_ in this role and I'm not seeing a lot of justification for "use this instead." That team, too, has a really impressive set of integrations and their stuff does a really good job of playing nice with each other.

\- Sequelize over TypeORM when you're using TypeScript is a bold (read: IMO, foolish) decision. TypeORM is the least awful ORM I've seen in any language other than Ruby and Sequelize wasn't very good _for JavaScript_ ; it's all kinds of clunky for TypeScript.

\- Is manual routing, instead of something like attribute discovery, really what people want these days when they're using a convention-over-configuration framework? Rails had to do it; NodeJS frameworks have other alternatives.

Anybody who's used this have any thoughts on why one would go with it over Nest.js or Koa?

<comment><USER2> I'm paying attention to this ORM [https://github.com/B4nan/mikro- orm](https://github.com/B4nan/mikro-orm) as a typeorm alternative, but still using typeorm for now.

<comment><USER3> Mammoth [https://github.com/Ff00ff/mammoth](https://github.com/Ff00ff/mammoth) is also worth paying attention to. Still early, but a promising approach.

</comment></comment></comment><comment><USER4> Lots of `any` in the code kind of defeats the claim that this is "strongly typed".

</comment><comment><USER5> Sounds promising but I have JS framework fatigue.

I am going to have to spend some time comparing this with [https://koajs.com/](https://koajs.com/)

I still haven't seen Koa out in the wild and I like the sound of TypeScript being used here... the FAQ says it's not compatible with Sails which I would consider a Good Thing(tm).

<comment><USER6> A spool-koa could be a potential spool in the fabrix ecosystem. Fabrix builds on top of other node web frameworks using a plugin system called spools. Currently you could either use spool-express or spool-hapi in your fabrix app.

<comment><USER5> Ah that was not obvious to me.

I saw that it had the other spool repos but I got my hot takes from the info on [https://github.com/fabrix-app/fabrix](https://github.com/fabrix- app/fabrix) and it didn't really click that a Koa spool would be one of the options — thanks for taking the time to point that out.

</comment></comment></comment><comment><USER7> Why is it great for serverless?</comment>


Out of a Rare Super Bowl I Recording, a Clash with the N.F.L. Unspools - <AUTHOR> http://www.nytimes.com/2016/02/03/sports/football/super-bowl-i-recording-broadcast-nfl-troy-haupt.html?_r=2 <comment><USER2> FWIW, there were about 70 comments about this yesterday, at [https://news.ycombinator.com/item?id=11021463](https://news.ycombinator.com/item?id=11021463) .

<comment><USER3> Why isn't HN more proactive about removing duplicate posts? The reposting here seems very excessive.

<comment><USER2> Perhaps [https://news.ycombinator.com/item?id=10223645](https://news.ycombinator.com/item?id=10223645) might give some idea of what the moderators are thinking?

</comment></comment></comment><comment><USER3> Why doesn't he just post it on youtube?

<comment><USER2> He can have, watch, and archive copies because the Supreme Court in Sony Corp. of America v. Universal City Studios established that time shifting is covered under fair use.

Posting a copy to YouTube, without permission of the copyright holders, is in general not covered under fair use, which means he could be sued for copyright violation.</comment></comment>


SF Muni LED Sign at Home with Raspberry Pi - <AUTHOR> http://coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-bar/posts/98 <comment><USER2> Somewhat related, the recently launched Bay Area Bike Share system has a not- too-well-publicized API at [http://bayareabikeshare.com/stations/json](http://bayareabikeshare.com/stations/json)

</comment><comment><USER3> Re. the implementation of weather prediction: the api that powers the dark sky iphone app is free for >1000 requests a day: [https://developer.forecast.io/](https://developer.forecast.io/) -in sf this kind of data is doubly useful too (weather that changes quickly)

<comment><USER4> You meant to say "free for < 1000 requests a day"

</comment></comment><comment><USER5> Next step is to go down to the Embarcadero station and replace your working sign with the broken ones :).

</comment><comment><USER6> That sign alone is pretty neat. I could put build health and statistics on it. Hmm..

</comment><comment><USER7> The project is very cool. But for the life of me, I don't understand the "taking my phone out and checking is too inconvenient/time consuming" mentality. I stopped wearing a wristwatch, b/c I could just look at my phone, heck, I've shed as much stuff as possible since it can all go on the phone. Then out comes the pebble, and other "smart" watches. Seriously, I just don't get it. Isn't there a point beyond which such things just become frivolous?

<comment><USER8> I bet if you a/b tested this sign vs a smartphone app, people using the sign would miss fewer buses.

If you want to know when the next train is with the app:

1\. Where's my phone? It's not in my pocket, so maybe I left it on the table over there. Ugh, but I'm sitting down comfortably with a blanket and a book.

2\. Fine, I'll stand up and walk over to get my phone.

3\. Hrm, my phone isn't on the table. Maybe the kitchen?

4\. Walk to the kitchen.

5\. Good, here's my phone.

6\. Unlock phone.

7\. Unlock phone, this time with the right unlock key.

8\. Scroll to find app.

9\. Tap to launch it.

10\. Read data.

11\. Wait, is that up-to-date?

12\. Tap to reload data from server.

13\. Wait for data to reload from server.

14\. Read data.

With this sign:

1\. Turn head to the left.

2\. Read data.

It's all about making it incredibly simple to do the task. Whenever someone posts a "Show HN" here, there's a dozen people complaining they can't try out the site without signing up, so they bounce. Yes, giving a way to try out a site with a guest account is frivolous -- just sign up, dammit! -- but it _works better_. And so does this sign: the data is just there for you to read.

<comment><USER9> I use "Muni Alerts," which is always synced and has alarms that can be set for particular lines approaching within arbitrary time frames. Works great.

[https://play.google.com/store/apps/details?id=com.neces](https://play.google.com/store/apps/details?id=com.neces)

</comment></comment></comment><comment><USER10> I was keen to do something similar, but there's no tracker on the Phoenix Light Rail.

<comment><USER11> I am not from/in Phoenix so I don't know... but isn't this what you're looking for? [http://www.valleymetro.org/nextride](http://www.valleymetro.org/nextride)

      The NextRide electronic service provides quick access to
      next bus and train schedule information.  All you need is
      a phone or access to the Internet, your route number and
      your STOP# (located at every bus stop and light rail
      station).

      Valley Metro bus and train vehicles are equipped with GPS
      technology allowing you to access real-time scheduled
      arrival times.

      ...

      1-15 minutes before the scheduled arrival time, real-time
      departure times are supplied... 16-90 minutes in advance,
      scheduled times are supplied.

<comment><USER10> Thank you!

Before making the comment I searched around but failed to turn up that info. I knew that the bus stops all have those STOP#'s but had never spotted one for the light rail.

</comment></comment></comment><comment><USER12> Cool! A sign guaranteed to be wrong 24/7!!

:)

</comment><comment><USER13> Does it announce the line letter twice when the train is four cars long?

<comment><USER14> So he's using the muni gem[1], which uses the nextmuni/nextbus api. To my knowledge, NextBus is unaware of the length of trains. The announcements in subway stations here are sourced from the Automatic Train Control (ATC) system present in the subway. If you're in a subway station, it's the screen sometimes next to the nextmuni screen -- the one with the terrible mspaint graphical style showing the length of the ATC system.

[1] [https://github.com/jeffremer/muni](https://github.com/jeffremer/muni)

</comment></comment><comment><USER15> Neat!</comment>


Bloodhound's 461-mph speed is big but team eyes bigger record ahead - <AUTHOR> https://techxplore.com/news/2019-11-bloodhound-mph-big-team-eyes.html <comment><USER2> They managed 491 mph this morning, but again some minor damage: [https://twitter.com/Bloodhound_LSR/status/119162873835993907...](https://twitter.com/Bloodhound_LSR/status/1191628738359939072)

This year's campaign is not trying to set any records, but just prove out much of the technology using just the jet engine. Next year, all being well, they'll add the rocket and aim towards 1000 mph.

For those interested in the technology, there's an interesting writeup by Ron Ayers (Bloodhound aerodynamicist) and Andy Green on the stability of transonic and supersonic cars here: [https://www.bloodhoundlsr.com/the-stability-of- transonic-and...](https://www.bloodhoundlsr.com/the-stability-of-transonic- and-supersonic-cars/)

Wishing them luck: my sons' names are on the fin!

<comment><USER3> Why is it a big deal to achieve 491mph when others have achieved 750mph+? Is the technology substantially different, or is there some other reason that being viable at this speed means they have a good chance of breaking the record or hitting 1000mph?

Not trying to be rude, just trying to understand whether the article is reporting anything noteworthy at all (other than that the Bloodhound project exists).

<comment><USER4> It's like SpaceX having a successful starhopper launch.

<comment><USER5> What are the practical applications of a car that drives 450 mph in a dried up lake bed? The practical applications of SpaceX are obvious.

<comment><USER6> It's a project aimed at increasing children's interest in engineering the UK. It's not designed to evolve into a commercial product.

</comment></comment></comment></comment></comment><comment><USER7> The city I hail from (Coventry) is the final resting place of Thrust 2 and Thrust SSC, they are truly fascinating machines. It's hard to get a sense of the size or scope of these machines until you see them in person. They are housed in the transport museum in the city center and many school children are probably incredibly tired of seeing them.

They are truly more 'aircraft' than 'car', in all respects. (even down to the RAF pilot who "drove" it).

Incidentally the creator of the turbojet engine hails from Coventry also; I would recommend checking out the museum, since it is good one, and British museums are free to enter.

However Coventry is/was an absurdly crime ridden city when I was growing up so I'm not sure I should endorse visiting.

<comment><USER8> > They are truly more 'aircraft' than 'car', in all respects. (even down to > the RAF pilot who "drove" it).

And when you're moving well above take-off speeds anything that makes the body lift will make it do just that. Serious aerodynamic challenges here, which makes the Thrust all the more impressive given the time it was designed. No easy access to CFD back then.

<comment><USER9> How much less than 1g of downforce can you apply, and still be considered a ground vehicle? I feel like once the power is no longer being applied through the wheels that's a sign you may have crossed over! Still insanely cool, in any case.

<comment><USER10> It's a jet car. It has crossed the "power is no longer applied through the wheels" threshold a long time ago.

</comment></comment></comment></comment><comment><USER11> It seems increasingly unwise to actually have a human 'driving' these things but I guess the human needs to be there for the world record to count.

edit: video from inside while driving [https://youtu.be/kZQBUt3ST4Q?t=253](https://youtu.be/kZQBUt3ST4Q?t=253)

</comment><comment><USER12> I wasn't aware that the project was bought out of the skip!

[https://www.topgear.com/car-news/meet-man-who- saved-1000mph-...](https://www.topgear.com/car-news/meet-man-who- saved-1000mph-bloodhound-lsr-car)

</comment><comment><USER8> It's very nice progress but the difference between 500 and 750 mph is very large and not just a matter of adding more thrust, keeping it from flying will be a big challenge.

<comment><USER2> Here's how they're tackling that challenge: [https://www.bloodhoundlsr.com/the-stability-of-transonic- and...](https://www.bloodhoundlsr.com/the-stability-of-transonic-and- supersonic-cars/)

<comment><USER8> Fantastic read. I took a regular production car once up to 200 mph, it was an experience I would not care to repeat. These guys are aiming for _way_ above that and are not only good at engineering but also at communicating, this article is really very nice. Thank you for the link.

</comment></comment></comment><comment> ur-whale I'm a big fan of things like this, but a part of me can't help wondering who finances this, and more importantly why?

</comment><comment><USER13> For any people interested in this and also considering going to uni in the near future, Swansea Uni have a close research collaboration with Bloodhound which you get involved with! [https://www.swansea.ac.uk/bloodhoundssc/](https://www.swansea.ac.uk/bloodhoundssc/)

</comment><comment><USER14> What happened to the Bloodhound SSC project? I remember checking on their progress reports for a few years and the last time was over a year back. They were sounding confident of an actual attempt this year. I guess they could not sustain and have been taken over by a different management?

</comment><comment><USER15> As the article states, the current record is 763mph set back in 1997. Wikipedia has the full record progression.

[https://en.wikipedia.org/wiki/Land_speed_record](https://en.wikipedia.org/wiki/Land_speed_record)</comment>


What happened to NASA Stirling car engine? Anybody? - <AUTHOR> http://www.youtube.com/watch?feature=player_embedded&v=H_Vnxapd5fs

<comment><USER2> All I know off the top of my head is that Stirling engines have pretty terrible weight to thrust ratios--they're heavy.</comment>


Amazon: What are you hiding? (Kindle a failure?) - <AUTHOR> http://blogs.computerworld.com/amazon_what_are_you_hiding <comment><USER2> I have a Kindle and love it. It took a month to arrive, but works perfectly. I buy everything on the Kindle now, with the exception of technical books. I've lost count of the number of people who have seen me reading it, played with it, and walked away saying they were going to buy one.

Amazon is not hiding a failure--it's a huge success and this marks the turning point for e-books.

<comment><USER3> Hmm, interesting. My boyfriend has a kindle and I've occasionally played around with it. I love books, so I've also checked out the sony reader, cybook, etc., and I've owned a couple of ancient ebook readers as well. I really love the idea of ebooks and so a physical reader only makes sense to me. The problem I've always encountered is that it's not really something I'd want to carry around with me all the time or that I'd probably end up using that often so I haven't even bothered to think about ordering one.

I think the ultimate reason why is that I have a jailbroken iPhone with (among other apps) Books.app and unlike the kindle, it can do a lot more and it fits in my pocket and my purse for when I'm not lugging around my laptop. I obviously take it everywhere to make calls, to check email, to play Solitaire, to hang out in IRC. As a result, I have it with me all the time so I can read too - for example, I read most when I'm at a restaurant waiting for a takeout order that's taking forever or when I'm in line for some event or another. Sure, I can't get the latest books and magazines on there to read, but there are plenty of free ebooks to read and download e.g. from manybooks.net and textonphone.com. It's definitely not a dedicated device for ebooks, but that is exactly why I think it's so great for them.

Finally, in just over half a year of having Books.app on my phone, I've read over 200 ebooks (well, some of those were short stories, but the vast majority weren't). Surprisingly enough that's more than I've read in the previous couple years, textbooks included. I suspect I wouldn't have even come close to that number with a kindle (etc.) just because the convenience is not there.

<comment><USER2> The Kindle is roughly the size of a paperback, and comes with a nice leather case so it's not awkward to carry. But it's the integration with Amazon that really does it for me. You can select books online, and have them sent to the Kindle. You can also browse a Kindle-only Amazon site directly from the Kindle over the wireless.

With any book, you can download the first 5 chapters or so as a free sample. I have about 30 samples on the Kindle right now that I browse through when I'm ready for my next book. Plus, about 80% of new books I'm interested in have Kindle versions. I expect that number will be 100% soon.

<comment><USER3> The thing is, I know how small the Kindle is. In theory, it's pretty cool. But it is definitely not something that fits in my purse or in my pocket like the iPhone does..and even if it did it doesn't do everything the phone can (especially with the just-released sdk).

The integration is the only reason why I would contemplate a Kindle purchase..and yet..isn't a very compelling reason for me to do so. There aren't many new books I am truly interested in that I don't want a dead tree version of (easier to share with family/friends) or that I can't find an online version of (e.g. safari books, books24x7).

I suppose it's really a personal preference thing. If the cost were slightly lower than it is right now I may consider it for home use. Or maybe if more of my textbooks were available..I would definitely purchase it in a split second. But as-is..nah.

</comment></comment></comment></comment><comment><USER4> I've seen more Macbook Airs than Kindles, despite the fact that the Air only came out a few weeks ago.

<comment><USER5> Maybe because Kindle is constantly out of stock?

[http://www.amazon.com/Kindle-Amazons-Wireless-Reading- Device...](http://www.amazon.com/Kindle-Amazons-Wireless-Reading- Device/dp/B000FI73MA/ref=pd_bbs_1?ie=UTF8&s=fiona- hardware&qid=1205095341&sr=8-1)

<comment><USER3> <http://www.apple.com/retail/macbookair/>

In the beginning MBAs were also constantly out of stock and the quoted ship times from the online store weren't pretty. Not so much nowadays. The iPhone release was a lot uglier in terms of availability (and popularity).

</comment></comment></comment><comment><USER6> Just a single data point but I've had a Kindle since the first week it came out and it rocks. It is VERY usable, books are almost always cheaper for the Kindle and being able to buy books with 1 click doesn't hurt (Amazon..certainly hurts my wallet :)

</comment><comment><USER7> I'm disappointed with the waiting list, and more importantly with the fact that there is no estimate upfront for how it's going to take. I can't live with "we have no clue whatsoever when we can ship you one."

I've ordered a Kindle in December and canceled my order after two weeks since I didn't get any emails with an update on how long it's going to take during those 2 weeks. I don't care if it takes 3 months, just be honest and tell me that before I place my order (or at least within a week of placing my order).</comment>


Ask HN: Best way to send out large-scale emailers? - <AUTHOR>

A friend of mine has been running a fairly successful e-commerce operation for the last 3 years, and he's been having trouble with sending emails to a mailing list of between 700 and 800k email addresses. Basically, the volume of emails is starting to bog down his servers and T1 lines.  Does anyone have suggestions for 1) balancing he load when sending the emailers out to minimize the impedance of email campaigns on the servers and connection or 2) a cost-effective alternative to which the email campaigns can be outsourced.<p>Thanks! <comment><USER2> It seems like Unix tools could be used to chop this up fairly effectively. For example, if you had a single text file with all target addresses in it, one per line...

\- "split" could be used to cut the list into chunks (separate files)

\- delays could be set up in tools such as "at" or "crontab", so that E-mails of each sub-file are attempted at entirely different times (e.g. an hour apart)

\- a script written in shell or almost anything else could iterate over a given file's addresses and send messages

</comment><comment><USER3> Er, there are 86400 seconds in a day (not considering leap seconds, etc) so just sending 10 per second should get them all out in a day. That doesn't sound too many, or too much.

Where is the bottleneck? Has he profiled the process?

<comment><AUTHOR> I think a big factor that's hurting the process is the emails that bounce or must wait to be received by the server on the receiving end. The server keeps retrying sending emails to those addresses, and eventually it just accumulates.

</comment></comment><comment><USER4> Dada mail lets you specify a max per hour for batch sends. Never tried it with huge mailing lists however!</comment>


How we hash our Javascript for better caching and less breakage on updates - <AUTHOR> http://blog.greenfelt.net/2009/09/01/caching-javascript-safely/

<comment><USER2> The hashing approach is fine, but I don't get why they do this at runtime instead of at site push time. There are so many other things you want to do before making the content live like run regression tests and validators, get a commit message that explains the change, etc.

It seems like you will always have a script in there somewhere. Why not have it do the hash tag replacement at the same time and then the content is static?

I may just be a curmudgeon. I go to extremes to turn any runtime code into periodically-generated static code. I once started a mini project that was email-based blogging software. To post a comment, each page and existing comment had a mailto: link with an embedded ID string. Replies would hit procmail, which would pull out the ID and embed the comment in the HTML of the original page at the right place. No Javascript or CGI present, only procmail and static HTML. I wonder if Posterous does some of this?

<comment><USER3> Yes. You're doing it right.

Run-time works fine if you're loading all your JS and CSS from the same machine as your markup. But that's not an approach that scales quite as well.

<comment><USER4> I would assume the files would be in both places, but you just happen to point to the cdn for speed, so at least the frontend could still use the same scheme.

</comment></comment></comment><comment><USER5> I have seen some success in controlling caching of JS files by appending a query-string ( including something such as a timestamp of the JS file ) to the end of the URL.

script src="/whatever.js?x=09_02_2009_08_15_AM

Various versions of IE and Mozilla Firefox seem to treat this as a unique URL because of the query-string, even if whatever.js is in the cache. The caching proxies that I've dealt with seem to handle this, but I'm not sure that all of them would ... so the author's approach is much more reliable.

<comment><USER6> I've had similar success by appending the site version to the query string. src="/foo.js?v=2.1" This has worked for me across all major browsers and required extremely little work for setup and maintenance.

<comment><USER4> This requires all api changes to touch the version (to be pedantic) which then becomes a major source of version control conflicts (in my experience).

</comment></comment></comment><comment><USER7> what I don't like is that their solution is still dependent of the file date of the script and all its dependencies. While usually accurate, file dates can be misleading, not to mention the performance hit of doing stat() on all the related files.

I'm using quite the same thing here, but I'm doing the compilation step manually, but also combining all the JS files into one big minified one.

The templating engine always uses that combined file if it's available (one stat call). If not, it uses the non-combined versions (useful for development)

<comment><AUTHOR> > what I don't like is that their solution is still dependent of the file date > of the script and all its dependencies. While usually accurate, file dates > can be misleading

I'm curious what you mean by that. File dates are what "make" and all the other builders are built upon. If they weren't to be trusted then you could never compile programs correctly...

> not to mention the performance hit of doing stat() on all the related files.

The thing is stats are really really fast. Check onedognight's benchmark above (<http://news.ycombinator.com/item?id=800778>). On my server I get 1.6 million stats per second.

</comment></comment><comment><USER8> What goes for .js goes for any content type, static html, png, jpeg, gif files, videos and so on. If there is a caching issue then you will not see updates on the client side.

I can see this method has advantages but it is a band-aid over a non- functioning caching system in the first place.

Makes you wonder what caused the original problem!

This system has advantages, there is no doubt about that, but what caused the original issue (some browsers not fetching updated javascript files) remains unsolved.

<comment><USER9> Caching is Hard (TM). If you take the time to fully understand the HTTP caching system, it will make sense, and it will become clear that problems with stale content are because you are using it wrong, usually because you set an expires time in the future for content that will change. It's really easy to not understand the caching system, or default to using a framework, and that's where the problem usually lies.

A framework will often choose to default to setting some expires time, often because the framework authors don't really get caching either and don't fully understand why that's not really going to work. (It is natural that they end up here. E-Tags is a much safer default, but to make it efficient requires more work from the framework user; why that is is a bit more than I'd like to get into in this message.)

If content is going to change, you should be using E-Tags, not expiration times. This includes content that you may not think is going to change, like Javascript files, but in fact do sometimes. The best solution in this case is actually to keep creating new URLs and set Expires into the far future, so that if the browser needs "something_8ef38b.js" which had its expires set in 2030, it knows it doesn't even have to hit the server, and if you "change" the file, your new web pages will actually reference "something_f32190.js", a new file. The timestamp-on-the-end trick is the same. I wish more frameworks built this idea in better, it's generally useful.

(Drawing parallels with functional programming's idea of "value" is left as an exercise for the reader.)

<comment><USER4> Funny, your best solution is exactly what the post described with the addition of creating the filenames and cache on the fly for ease of use.

<comment><USER9> I didn't pretend it was new. I was wrapping more context around it, so that it was less "follow this magical recipe" and more "here's why you should do this" (and also "here's a bit on why so many people end up doing this wrong thing"), though a full accounting of HTTP caching would be much longer. I also pointed out similar other things in the comments made by other people.

</comment></comment></comment></comment><comment><USER10> I have also used this method for some time. An advantage the author does not mention is that this method is required if you want to host your files on a CDN like Amazon's CloudFront. Another point is that you should host your CSS and image files using this technique (like the author also notes... because you don't have to rely on a browser's cache expiration and because you can cache stuff aggressively [like setting an expiration date 10 years from now]).

</comment><comment><USER11> Why bother with hashing? Why not just append 'version numbers' to the JavaScript files? (e.g. sht.1.js sht.2.js sht.3.js )

This way you have a 'better' history because the numbers are in order and you can immediately tell which JS file was the previous one. While you're at it, why not just make this a commit/push hook rather than needing to generate it on the first page load? It would still be automatic for you.

</comment><comment><USER12> You should really read Isaac's comments on the blog:

[http://blog.greenfelt.net/2009/09/01/caching-javascript- safe...](http://blog.greenfelt.net/2009/09/01/caching-javascript- safely/#comments)

They are really insightful and expose the knowledge gained from a lot of work he's done at Yahoo! on this subject.

</comment><comment><USER13> Interestingly, this is the same solution that is used in GWT - for all the same reasons given in this post.

</comment><comment><USER14> Django-compress does most of this.</comment>


Show HN: A Python Script to Download Thousands of Wallpapers at Once - <AUTHOR> https://github.com/GeekSpin/Wallhaven-dl <comment><USER2> Side question - are there any websites like wallhaven, but with less people and anime? I'm thinking the type of content Chromecast uses, or /r/TechnologyPorn?

<comment><USER3> Have you seen [http://interfacelift.com/](http://interfacelift.com/) ?

</comment></comment><comment><USER4> You might want to async the downloading part. It is often faster to download 5 images at once than to download them one after another.

In the choices section you use input("text") properly one place but not others. You use a couple different ways of decoding codes, and the dict way is nicer, but also consistency is nice. Also, I am not sure you handle bad input (default all?)...

Personally, I'd pull the meat out of the loops in main() into functions - GetImageList() and GetImage(). Relatively complex there so it would be easier to read and spot errors in those bits of code in isolation.

<comment><USER5> Unless you're in dire need of thousands of wallpapers (most of them you are going to delete anyway) it's better not to hammer the website. I'd even limit the download rate.

</comment></comment><comment><USER6> Using i and j in loops makes code much less self-explanatory, especially when you could use "page_index" and "image_index" instead.

<comment><USER7> Even better, replacing

         for i in range(len(imgid)):

and similar lines with:

        for i, img in enumerate(imgid):

would allow one to get rid of all these list accessors.

</comment></comment><comment><USER8> It looks like this downloads them one-by-one instead of downloading at the same time.

Is there a simple Python equivalent to Java's .parallelStream().forEach() that would allow these calls to easily be run in parallel?

<comment><USER9> Sure thing...

        from multiprocessing import Pool
        with Pool(8) as p:
            p.map(function, sequence))

<comment><USER8> Neat.

I see that you explicitly specify 8 as the number of processes here. In Java, parallelStream() will pick a sane default for you if you haven't previously specified (based on the number of available processors, I believe). Is something like that possible in Python?

<comment><USER10> The ThreadPool class picks a sane default (number of cores), but I believe it uses Python threads instead of processes.

</comment></comment></comment></comment><comment><USER11> Every function has side effects. Could've written the whole thing in one function. Also, PEP8.

<comment><USER12> One function? Could've written the whole thing in one `wget` call.

<comment><USER13> teach me how.

<comment><USER12> Here's a start:

      for x in $(curl -s https://alpha.wallhaven.cc/random | pcregrep -o1 "https://alpha.wallhaven.cc/wallpaper/(\d+)" | sort | uniq) ; do wget "https://wallpapers.wallhaven.cc/wallpapers/full/wallhaven-$x.jpg" ; done

<comment><USER14> bash, curl, pcregrep, sort, uniq and wget is not what I'd call "one wget call".

<comment><USER2> To the hardcore bash users, I think they call that 'easy'. I have someone like that on my team - holy crap some of the bash stuff they can come up with

<comment><USER7> Hardcore bash sure sounds like fun, but when things start getting too big or messy I usually find a Python script with some `subprocess` [0] tricks to be way easier on the eye.

[0]: [https://docs.python.org/3/library/subprocess.html](https://docs.python.org/3/library/subprocess.html)</comment></comment></comment></comment></comment></comment></comment>


Most-Positive-Bignum - <AUTHOR> http://jwz.livejournal.com/854482.html

<comment><USER2> now something that random, pointless and fun is what hacking is all about. :-)

</comment><comment><USER3> Don't you just love purposefully breaking stuff?

<comment><USER4> Its good to know where the limits are.

</comment></comment><comment><USER5> Best comment:

 _One minor addition to that: Cloak (the JVM in CL) also runs ABCL, for maximum silly recursiveness:_ <http://paste.lisp.org/display/2096>

</comment><comment><USER6> The jwz initials seemed familiar. There was an earlier post linked to the same author about the early days at Netscape: <http://news.ycombinator.com/item?id=100176> (or directly <http://www.jwz.org/gruntle/nscpdorm.html?old_title_sucked> ).

<comment><USER7> On a site called Hacker News, jwz _should_ seem familiar.

<http://en.wikipedia.org/wiki/Jwz>

(see also rms, esr, dmr, gvr, dhh, etc.)

<comment><USER8> Is this why your handle is jcl? Getting ready for fame and fortune? ;)

<comment><USER7> I wish. :) It's a former login, as I'm sure is true of the above list. But not all famous logins are monograms; billg comes to mind...

Monogram logins seem to be an artifact of some computer science departments (and other small, unix-y operations), which may be why so many hackers are known by them.</comment></comment></comment></comment>


Sexism in tech reporting - <AUTHOR> http://scripting.com/stories/2011/12/09/sexismInTechReporting.html <comment><USER2> The author specifically mentions watching _his sister_ trying to use Twitter. This isn't some broad-brushed sexism leveled against all middle aged, female Internet users.

His evaluation of the new interface is that it makes sense for people that are confounded by the fundamental rituals of Twitter. People _like his sister_. The article would have made just as much sense if he had written it about his computer illiterate brother.

Sexism abounds in this industry, there are plenty of real offenses to complain about. This just sounds like sour grapes for not getting an invite to the beta.

<comment><USER3> > This just sounds like sour grapes for not getting an invite to the beta.

That is another issue I had with this article. "I hate that large tech companies manage to completely control the initial discussion of their products by controlling who can see it." How is this unlike any other large company? Car manufacturers allow selected press to test drive new vehicles. Movie studios have showings for movie reviewers well before a general audience. This is a well established business model and calling out a single industry to "grow up" reads as someone who is not in touch with the reality of how a lot of businesses operate and why they do. PR is an established field.

I agree there is sexism in the field. The saying of making software for your mom, however, is not a bad thing. If anything I consider this good, even great. Traditionally technology was considered even more of a man's field than today, with little training or encouragement for women. The trend in older generations is more prevalent, which gives rise to the saying. Yet this idea of targeting that demographic explicitly is wonderful, and why the colloquialism is attempting to fight _against_ the long held technological sexism of older generations. Making software for your mom or grandmother is a realistic attempt at solving the problem of lack of technical training for a gender that was largely ignored by technology a few years ago. People are doing something about the situation and bringing in new users to the latest in tech, opening windows into the rest of the tech world.

However, in the long run, this saying should be phased out as it will soon become more sexist with everyone of any gender having full access and encouragement into technology from a young age.

</comment></comment><comment><USER4> When people talk about writing software for their mom, it's not sexism. It's age-ism. They're talking about software for their moms because their moms are older, not because their moms are women. I've seen reviewers talk about their dads and grandfathers in the same way.</comment>


A list of startups funded in 2017 - <AUTHOR> https://drive.google.com/open?id=1Y4Ffm5JUolOEbuYuPMpISeF1xzbU0o5XxCR1mjRJGkQ <comment><USER2> I'd love to see an analysis (could do some nice nlp) of industry, geo, and amount raised. For example:

7 out 67 (11%) of the companies in Colorado are cannabis related, raising over $25MM. The highest amount raised was Dish Network at $1,000,000,000.

</comment><comment><USER3> GDrive on Android said "protected file" and didn't display anything.

</comment><comment><USER4> Comprehensive in which way?

<comment><USER5> We took "comprehensive" and also "Show HN" out of the title.

<comment><USER6> It still says protected file and won't open

</comment></comment></comment><comment><USER7> Awesome thanks! Where did you get the data?

</comment><comment><USER8> Missing tons of companies but still nice!

</comment><comment><USER9> gold :) thanks</comment>


Why Startups Fail - <AUTHOR> http://www.vcdave.com/2008/05/22/why-startups-fail/ <comment><USER2> I've worked for three well-funded startups that failed for another reason, though all of them ended up making the same mistake: they couldn't develop software.

All three made some of the most common mistakes in software development, and tried to hide those mistakes behind a sweatshop.

1) Hire lots of people. Silly... hiring people doesn't get work done if you can't actually tell those people what you want their product to do.

2) Assume that hours = productivity. In every case, the competent folks among us spent a lot of time cleaning up problems caused by the folks working the extremely long hours. That contributed to my departure in every case... I hate cleaning up other people's messes, as it prevents me from doing worthwhile work. Firing those folks would have gotten us to market MORE quickly rather than less.

3) Deadlines set in stone... that just doesn't work. If you can't adjust your scope, you'll never actually hit the deadline.

4) Marketing based on the deadline... duh.

5) Perpetual crisis mode... when the requirements are poorly defined (if they're defined at all) as well as late, you have to be willing to delay launch or trim scope, or both. If instead you go into crisis mode and assume that your sweatshop will churn out a working product, you've already failed, and most of your best people will start jumping ship, leaving you with your burnouts who's primary contribution ends up being technical debt rather than working products.

I could go on, of course; I'm sure most people here have had similar experiences. So far, what I've seen of startups that made it big, they succeeded because they were either smart and did things well (e.g. 37signals), or because their software wasn't what they made their money on. Where I work now, we have hundreds of developers whose job is to pay the technical debt of the sweatshop, and one side effect of this is high turnover and low tribal knowledge. Most of our systems are in perpetual triage, and it's pretty obvious that if they were the source of our revenue, we'd be history. Fortunately, they only support the core business, so we're still around and profitable... but very inefficient.

Several government contractors I've worked for clearly survive based on the contacts within the government, because their software in many cases doesn't even meet the requirements it was developed for.

That's quite a bit more than I'd intended :)

</comment><comment><USER3> We get a lot of good advice from VCs across this site; I'd like to give some back: Talk to the "staff." You will never hear about many of the problems illustrated by Tamerlin, for instance, or even the lowdown on edw519's "is the product any good?" from the CEO if the startup is in the early, rapidly evolving phase (where the product is still fluid and trying to fit the market).

The CEO will give the reports filtered through management, and a major underlying reason why startups fail is that they fail to see what (or who) is important.

Take the technical folks to lunch. If outside consultants are involved in, say, non-technical aspects (content development, design, etc.), take them also, but separately. Don't bring management. Let them talk freely and you'll get a much clearer picture of what and who is important to the company's success than you will if you only look through the CEO's eyes.

<comment><USER4> Any employee/consultant who takes that lunch should be willing to have it be the "goodbye lunch".

<comment><USER3> If the employee/consultant is the star and the company/investor can't see it, he or she is better off elsewhere.

</comment></comment></comment><comment><USER5> This article may apply to those who are building the next "killer app", but for the other 99% of us, it never mentions the two most important questions:

\- Is the product any good?

\- Does anyone want it?

If you can't answer "yes" to both of these, all the money in the world probably won't help you.

<comment><USER6> Amen, brother. You took the words right out of my mouth. Many, many startups fail for precisely this reason: they don't have a product people want.

<comment><USER7> Corollary: Make a product people want AND are willing to pay for it.

That last part is incredibly important.

<comment><USER8> Amazing thought! Having a business model outside of "exit" is really important but does not receive enough emphasis.

</comment></comment></comment></comment><comment><USER9> Interesting article. My own experience is that over reliance on money and over reliance on technology can also lead to failure. Having been an entrepreneur for the past fifteen years, I believe this is the best time for startups since we now have the luxury to bootstrap (until there is a workable business model) and also the ability to build business around off-the-shelf technology. Startup failure is sort of an old topic on this forum but my humble opinion is that there is never too much information.

</comment><comment><USER8> The emphasis on speed could also be detrimental to startups not building the next "killer app." Growing too fast too soon can result in some debilitating growing pains.

<comment><USER10> I can't help but blurt it out with the current blog coverage, but Twitter comes to mind as an example of this.</comment></comment>


Show HN: A curated directory of podcasts for software developers - <AUTHOR> https://programmingpodcasts.com <comment><AUTHOR> Hi everyone, developer of ProgrammingPodcasts.com here. I started listening to some developer-related podcasts last year and was surprised with how difficult it was to discover more podcasts using iTunes and other platforms. Hence I built this site. Feedback/questions much appreciated.</comment>


Scientific data analysis on a high-performance cluster using Free Pascal - <AUTHOR> http://ziotom78.blogspot.com/2015/01/lfi-data-analysis-with-fpc.html <comment><USER2> >Both make an heavy use of templates, so that they cannot be compiled separately but instead literally copied into each of my source file by the C++ preprocessor (the details are not exact, but this should provide a fair representation of what's really happening)

it really doesn't. Template resolution and preprocessing step are separate, both performed by different binaries in your toolchain.

<comment><USER3> If you wanna nitpick, at least GCC doesn't use a separate preprocessor binary anymore, the preprocessor is integrated into the compiler binary.

You're of course correct in that preprocessing and template resolution are separate steps in the compilation process, but his underlying point still stands, namely that a large reason why C++ compilation is slow is the need to include reams and reams of code.</comment></comment>


Show HN: Proxyblock – an interactive content-blocking proxy written in golang - <AUTHOR> https://github.com/jcuga/proxyblock <comment><USER2> I built something similar as a node module a while ago : [https://github.com/thibauts/node-host-filtering- proxy](https://github.com/thibauts/node-host-filtering-proxy)

</comment><comment><USER3> Is it possible to have an admin user v/s normal user where normal users simply get blocked/unblocked without the "page control" or any ability to blocked/unblock, etc.

<comment><AUTHOR> Not yet, but that feature has occurred to me. Since it looks like there's some interest, I may do another round of feature development.

</comment></comment><comment><AUTHOR> It's an alternative approach to a browser plugin to block ads and other stuff.

<comment><USER4> Fantastic work! What's the license?

<comment><AUTHOR> I need to add one (tonight perhaps), but its basically: do what you want, but if it breaks it's not my fault. I'm just flattered if anyone finds it useful.

</comment></comment></comment><comment><USER3> Running

If you have a go workspace set up, simply build and run out of the box

But what if you don't?

<comment><AUTHOR> Pre-built binaries are now available for mac/win/linux 32/64 bit:

[https://github.com/jcuga/proxyblock/releases/tag/v0.1-alpha](https://github.com/jcuga/proxyblock/releases/tag/v0.1-alpha)

</comment></comment><comment><USER5> Nice work, I'll keep an eye on this project.</comment>


Facebook to liquid cool servers in order to aid overclocking - <AUTHOR> http://www.theregister.co.uk/2013/10/14/facebook_liquid_cooling/

<comment><USER2> So can we expect intel to pull the same stunts that they did in the consumer marked to prevent the buyers from extracting additional value out of their processors?

</comment><comment><USER3> Not just liquid cool the cpu, but the entire server, which would make a better headline.</comment>


Video: Man 'trying to take selfie with bear' mauled to death - <AUTHOR> https://www.independent.co.uk/news/world/asia/man-bear-selfie-video-mauled-death-selfies-india-odisha-asia-a8335806.html <comment><USER2> Please read the [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html) again. Videos of pratfalls are off-topic.

I personally see the recent submitted "water beetle named after actor Leonardo DiCaprio, "Railway fined for using water from toilet to make tea", "Serial killer caught after 40 Years" similar off-topic for HN.</comment>


3-year small study shows promising results from MS patient immune system reboot - <AUTHOR> http://archneur.jamanetwork.com/article.aspx?articleid=2084840

<comment><AUTHOR> This url looks sketchy but it's actually a reliable journal and an interesting study. The patients involved had failed prior treatment attempts, underwent full immune system destruction, then had their own cells injected to rebuild. 3 years in and most patients are still showing good results.</comment>


The best and simple way to find remote work - <AUTHOR> http://talentboard.me/candidate

<comment><AUTHOR> Hello.My name is Artem. I'm the founder of remote work search service Talentboard.me Last time we introduced interface for employers which allows for subscription to receive CVs of specialists seeking remote work. Over 300 companies subscribed to our service after that. Today we launch candidate interface, which allows any specialist to mail their CV to the listed companies free of charge.

How it works Fill in the form and attach your CV We mail your CV to the listed companies. Track mailing efficiency status from your account page and get feedback from employers.

How the mailing efficiency is calculated Our algorithm takes into account the number of downloads and views of your CV. Employers can also rate CVs according to a 5-point scale. You end up with good feedback. If you think that mailing efficiency isn't high enough, you can alter your CV and see how employers react to the changes.

Thank you. And good luck with finding a new job.</comment>


Ask HN: What do you think about the design of my website? - <AUTHOR> http://nej.cc/

<comment><AUTHOR> Here's the design for my new website. The stars fade in one by one in a and they continue to fade in and out in a subtle fashion. The clouds also go left to right continuously. All animations, the stars and clouds are done using CSS, the only JavaScript used is starting the position of the clouds and the number of stars, which is dynamic per your screens resolution + random positions throughout the screen. Thanks!

<comment><USER2> >"The stars fade in one by one in a and they continue to fade in and out in a subtle fashion. The clouds also go left to right continuously."

Until I read your description I didn't even notice it.

Your homepage has a lot of scrolling and too little (and too vague) information. Looking at it I don't know who you are, what you do, and what you are offering.

Your website is certainly nice and modern looking, but it doesn't tell me what I want, as a visitor, to know. Consider answering the following questions on your homepage:

       Who are you?
       What do you do?
       Why would I want what you're offering?
       How do I contact you?

P.S. I'm sorry if I come across as overly negative (or rude). That was not my intention.

<comment><AUTHOR> Thanks for the suggestions Vukmir. I'll see how I can incorporate some of the mentioned ideas on the website.

</comment></comment></comment><comment><USER3> As a total stranger hitting your landing page I have no idea what you do — so I had to go first scroll down the homepage, realize there was nothing there and the go one click to your about page. Also the description "consulting" is a bit generic and makes me think of straight business consulting.

One last thing: You should have a call to action above the fold as well even if it's just a phone number.

<comment><AUTHOR> Thank you for your feedback Michael. I will definetely implement the improvements you've mentioned.</comment></comment>


Ask HN: How much more expensive is it to live in Silicon Valley? - <AUTHOR>

I live in Boca Raton, FL now and am contemplating a move to the Santa Clara Valley. All the cost-of-living calculators are assuming that I am going to rent a posh place right in the valley and so I feel like I cannot trust their percentage difference.
I mean, if I lived in Nebraska and was contemplating a job in Boca I would freak at the average rent in the area. But having lived here I know that Delray represents a huge cost savings and a 10 min commute.
Can I trust these cost-of-living calculators? <comment><USER2> Having just moved to CO after living in Silicon Valley for 3-4 years, here is my cost experience. Most things are about the same price as everywhere else (food, clothes, etc). However two things are not: taxes and housing. If you are single, the only way to get a nice apartment at a reasonable price is to live with roommates. If you have a family, you will be living in an apartment/condo/small house unless you are super rich or you buy a house so far away that your commute sucks. However salaries are usually $100K+ for good, experienced engineers. There is a lot of low-income housing too which may be helpful if you qualify, and it is usually mixed in with nice housing so we are not talking the ghetto.

The above is true for most of the Bay Area, not just Silicon Valley, unless you are willing to live in bad neighbourhoods.

</comment><comment><USER3> It is expensive to live in SV.

Check sfbay.craigslist.org to see what apartments are going for.

If you live in the Valley you're going to spend quite a bit of money (and time) commuting anywhere useful. If you live in SF your rent will be higher, but lower transportation costs.

<comment><USER4> A lot of places on CL advertise with 'section 8 OK'. I'm from The Netherlands, where we have a vaguely similar program. Some neighbourhoods are okay, some not so. How is this in Silicon Valley?

<comment><USER5> Read this before you consider renting in Section 8 neighborhoods: [http://www.theatlantic.com/magazine/archive/2008/07/american...](http://www.theatlantic.com/magazine/archive/2008/07/american- murder-mystery/306872/)

</comment></comment></comment><comment><USER6> "Can I trust these cost-of-living calculators?" I wouldn't.

As people have already mentioned, taxes and housing will likely be your largest increased expenses when compared to an area like Boca Raton. I would go onto some home-search sites and start looking around at actual places for rent. You'll quickly get an idea of exactly what you would be paying if you moved out today. To give you a general idea, lots of very non-posh 3 bedroom, 2 bath single family homes in Santa Clara go for $3-5k/month. However, that number can differ wildly by moving even a few blocks in any direction.

Feel free to email me if you want to discuss specific areas further.

<comment><AUTHOR> very cool; thx

</comment></comment><comment><USER7> If you have a family and are thinking of living in a house, you are in for a world of hurt. Houses are for people who have already gone through an IPO and gotten lucky.

I recently had an offer from a well-known SV company. It seemed really good, and was maybe 80% more than I was making in the sticks. But I also have a family, and in my case want to put the kids in reasonable public schools. After long study, I realized that this just wasn't possible, even on the generous salary.

Some people say that the Bay Area is simply full. For people with families, that might almost be true. Certainly it's a major challenge. Good luck!

</comment><comment><USER8> > having lived here I know that Delray represents a huge cost savings and a 10 > min commute.

If you work in Palo Alto or Mountain View, you can live in Santa Clara or San Jose and significantly lower cost. Additional commute is 10-30 minutes

If you work in SF you can live in Oakland or most of the East Bay (think El Cerrito, San Leandro, Hayward, etc)

</comment><comment><USER9> I now live in Palo Alto. Being from Broward County (45 min from Boca), I can definitely relate to your concern. There is a significant difference in cost of living between So. Fla and here, often beyond what's visible on 'cost calculators'. Use multiple data points and average things out. If you have any specific questions, ping me at my email in my profile.

<comment><AUTHOR> helpful; thanks

</comment></comment><comment><USER10> If you are single, you can probably live there with minimal life adjustments. The rule of thumb with housing is that you spend twice as much for half as much space as compared to most parts of the country.

If you have a family with school age kids, the situation is far worse as the family friendly housing costs are closer to 3x-4x compared to other areas.

<comment><AUTHOR> We home-school...

<comment><USER10> That helps a little. A good school district would mean paying 3x more for housing. A bad one means paying 2x. Either way it's going to be a small place.

I'd recommend looking at Sunnyvale if you want something reasonable and schools don't matter.

</comment></comment></comment><comment><AUTHOR> Also: I know the state sales/income tax is higher; that's a fixed cost that's easy to calculate.

</comment><comment><USER11> Yes. (disclaimer I don't live there, but have been a number of times)

Highest cost of living in the country in my opinion. There are ways to beat the system, but half the population are looking for those exceptions.</comment>


The Schizophrenic and the Psychocrat - <AUTHOR> http://expressiveegg.org/2017/03/07/schizophrenic-psychocrat/ <comment><USER2> I'm so very confused by this long rambling

<comment><USER3> I have enough experience with schizophrenia and mental illness to take a stab at this.

This is written by a schizophrenic, or someone in psychosis, or someone attempting to mimic that.

Schizophrenics are experiencing a very different reality than us, and psychiatry is inherently trying to tease them out of that reality-- which many of them reject. They are prone to paranoid delusions as well, so the combination of these things is very bad.

I once knew a schizophrenic person who told me about the "bad men in the white coats who gave him the pills that made the voice of Jesus go away."

He's figured out something that's partially true, many of the things we define as mental illness, are not. Our society causes some mental illness with the chronic and unnecessary stress is places on people. But he's incorrectly extrapolated that to "there is no such thing as mental illness."</comment></comment>