Tips for how to decouple your HTML, CSS, and JavaScript - <AUTHOR> http://philipwalton.com/articles/decoupling-html-css-and-javascript/

<comment><USER2> Why promote the (ab)use of the class attribute for binding user interface behavior?

It's 2013, people that write blogposts should be directing their readers (imo) to using the (html5) data-* attributes (which works equally simple) and actually removes the declaration and mixture of behavior and styling from your css.

For instance your button example:

        <button data-behavior='addtocart' data-somespecialparameter='iamspecial' class="add-item">Add to Cart</button>

Would behave on some javascript:

jQuery:

        $(document.body).on('click' 'button[data-behavior="addtocart"]', myHandlerFunction);

MooTools

        document.body.addEvent('click:relay(button[data-behavior="addtocart"])', myHandlerFunction);

Handler:

        function myHandlerFunction(ev) {
          console.log("I just got clicked. ", this.getAttribute('data-somespecialparameter'), this);
        }

Also, using observers on a container element makes sure that you can dynamically add and remove html elements without having to worry about cleaning up the even handlers. (binding it all on document.body or the nearest container can be debatable for speed reasons, but this is up to you)

<comment><AUTHOR> I tend to be pretty picky in following the spec and only use HTML data-* attributes for actually passing data. That being said, I think it's mainly a matter of personal preference. If the data-* attributes method makes more sense to you and your team, by all means use it.

I should note, though, that if performance is a concern, traversing the DOM for classes is significantly faster than for attributes. Here's a jsperf example I put together a while back comparing the two: [http://jsperf.com/class-vs-data-attribute-selector- performan...](http://jsperf.com/class-vs-data-attribute-selector-performance)

Lastly, it's worth pointing out that it is still possible to style elements with attributes in CSS, so the data-* attribute approach doesn't actually prevent coupling between style and behavior, it's just another convention (like js-* prefixed classes). In both cases it's still up to you to enforce the convention.</comment></comment>


Ken Thompson flies a MiG-29 (1999) - <AUTHOR> http://cm.bell-labs.com/cm/cs/who/ken/mig.html

<comment><USER3> Interesting figures about L-39 jet trainers. The US currently has 242 in private ownership ("N" tail number), involved in 14 fatal accidents since 1998. So a private L-39 would have had a >5% risk of killing its pilot to date, or about 0.4%/year.

[http://www.l39.com/content/incidents](http://www.l39.com/content/incidents)

For comparison, the motorcycle fatality rate is about 0.1% per registered motorcycle per year,

[http://www.rita.dot.gov/bts/sites/rita.dot.gov.bts/files/pub...](http://www.rita.dot.gov/bts/sites/rita.dot.gov.bts/files/publications/special_reports_and_issue_briefs/special_report/2009_05_14/html/entire.html)

<comment><USER4> Does the L-39 not have an ejection seat standard?

After skimming a few of the reports, at least 2 of the accidents were due to racing or aerobatics. I imagine that carries somewhat of a risk regardless of aircraft.

I've always dreamed of owning an L-39 since that can be had for around $200K [http://www.internationaljets.com/jetaircraft.html](http://www.internationaljets.com/jetaircraft.html)

<comment><AUTHOR> I believe that it's not uncommon for the ejection seats in private L-39's to be inop, my guess would be due to the cost to keep them maintained and/or that the consequences of a poorly maintained system ejecting spontaneously or accidentally is worse than just having them disabled. I know that when I had the chance to fly the second seat in one, I had to wear a parachute and was instructed on how to pop the canopy and bail out in an emergency situation.

<comment><AUTHOR> Here's a picture of the exact L-39 that I got to fly in! [https://flic.kr/p/21HC4V](https://flic.kr/p/21HC4V)

</comment></comment></comment></comment><comment><USER5>
      At 8000 meters, Vladimir took over and performed a cobra
      maneuver. He flew level and pulled up so fast that the
      plane stalled. The plane continued to move horizontally
      in a flat stall while pointing up. At some point Vladimir
      performed some magic and the plane leaned over horizontal
      and flew normally. The result was a loss of 300 kmph in
      seconds. This was described to me as a courtesy maneuver
      to allow tailgating traffic to pass.

Which year was this? I thought 'cobra' was a post Sukhoi-27 thing. I didnt even know a MiG-29 could do that. Can all of them do it, or some later versions ?

@quickpost Thanks you answered my question.

<comment><USER6> One of the most iconic scenes in the Top Gun as well :)

<comment><USER7> The movie didn't have any real Russian planes though right? IIRC, they used F-5's and pretended they were MIGs.

<comment><USER6> Correct.

</comment></comment></comment></comment><comment><USER8> About 7 years ago I was fortunate enough to receive a ride in an F-16. I passed out that night and got up to write about it the next morning while it was still fresh in my head.

[http://blahg.res0l.net/2008/10/viper-ride- october-12-2007/](http://blahg.res0l.net/2008/10/viper-ride-october-12-2007/)

</comment><comment><USER9> View the source of this page. Older web pages do a good job of reminding me that the most important part of a website is information dissemination, not flashy bits.

<comment><USER10> Indeed. The page is refreshingly free of JS and CSS and weighs in at a measly 18.8 kb.

But it would have been helpful to have included a full date. Somewhere? Anywhere. Even (especially!) the URL? Sheesh!

A quick google indicates this took place in 1994, as indicated by this usenet post to rec.aviation.stories:

[https://groups.google.com/forum/#!topic/rec.aviation.stories...](https://groups.google.com/forum/#!topic/rec.aviation.stories/_Ohb4-f-H38)

</comment></comment><comment><USER11> In case anyone is wondering, this occurred Dec. 11 - 17, 1999. (The year is missing in the article).

<comment><USER10> 1994, based on this usenet post:

[https://groups.google.com/forum/#!topic/rec.aviation.stories...](https://groups.google.com/forum/#!topic/rec.aviation.stories/_Ohb4-f-H38)

<comment><USER11> Good catch. Thanks! I was referencing this source:

[http://bbs.hitechcreations.com/smf/index.php?topic=16574.0](http://bbs.hitechcreations.com/smf/index.php?topic=16574.0)

And "cal 1999" where it looked like Dec. 11 - 17 was a traditional week.

</comment></comment></comment><comment><USER12> I loved this quote:

      Then came the acrobatics. It was the same as the L39 but six G's instead of
     four G's and 4000 meters altitude instead of 2000 meters. At this time I realized
     that the ground crew had not connected my G suit to the pneumatics in the
     plane. At the bottom of every loop, my vision went from color to
     black-and-white. It happened in about a second like someone pulled down a
     no-color shade in front of my face. Shortly after that, the
     black-and-white
     faded into grey-and-grey and finally just grey. Very strange feeling.
     I didn't black out but I was able to know exactly what it would feel like.
     After the G's subsided, my vision returned in reverse sequence.

</comment><comment><USER13> The last line was great:

> Was it worth it? Yes. Would I do it again? No.

</comment><comment><USER14> Really enjoyed the read, but I don't understand the line about going from 500km/h - 1000km/h in 5 seconds... treetop level or otherwise. Is that really possible? I think my math is off if so.

Mass with a 900kg fuel load looks to be around 12,000kg Max thrust is 162kN for both with afterburner.

500km/h = 139m/s 1000km/h = 278m/s Going from one to the other in 5s means an average acceleration of 27.8m/s^2... or almost 3 g, which is monstrous!

But how does this work? Solving F=ma for a gives a=F/m = 162000/12000 = 13.5m/s^2

And that's before accounting for the not insignificant thrust required just to overcome the aerodynamic drag.

Is it just an understandable overestimation of the acceleration due to the direct experience of it? Or am I missing something?

Either way, awesome.

</comment><comment><USER15> this is pretty nice: "If you have been to Moscow during Soviet times, you will probably remember paying almost nothing to be ignored by a waiter in a restaurant. Now you pay a fortune to be ignored by ten waiters."

</comment><comment><USER16> Wow he know how to fly a plane! Why he went to Russia? Whether there is similar service offered in US?

MiG-29 recently made headlines in India, the first and one of the largest export user, when one crashed

[http://www.thehindu.com/news/national/other- states/mig29-cra...](http://www.thehindu.com/news/national/other- states/mig29-crashes-near-jamnagar-air-base/article5329357.ece)

<comment><USER17> I don't believe there is any equivalent here. People race planes, but military planes are forbidden I believe.

here's the kind of thing offered here : [http://aircombat.com/about/our- aircraft/](http://aircombat.com/about/our-aircraft/)

fast and aerobatic planes, but not fighters.

<comment><USER18> There isn't any specific prohibition against owning US jets AFAIK, but not many ever hit the market. WWII era stuff is common. Some of the early jets (e.g. F-86, F-100s, F-5/T-38) exist in private hands.

In general, the Russian stuff translates better to private ownership because there is much less specialized support equipment or maintaince required - <USER2> general the soviet's built stuff for a real SHTF scenario, where-as the US was much more willing to complicate the design to gain a small edge.

</comment></comment></comment><comment><USER19> wow awesome report. I'm not a pilot but i still found the account thrilling.

<comment><USER20> Walking up on the high moors in the Dales in Yorkshire you see the shadows first, moving up the valley floor. If you are quick, and look _below_ your ridge, you can spot the two grey isosceles triangles as they disappear out of the head of the valley.

A few seconds later, you hear the _sound_

Treetop training looks fun (they are always in pairs and I'm sure they are playing tag) but I imagine can be a bit tense...

<comment><USER21> I remember watching a Hercules flying along Glencoe from one of the mountain tops - it seemed rather weird looking _down_ on such a large aircraft nimbly maneuvering along the narrow glen.

Mind you - nothing beats the time as a kid when I got to watch a Vulcan doing low level aerobatics above the village I grew up in - an amazing sight and quite a remarkable sound!

<comment><USER22> I fully agree about the Vulcan. I still remember the time as a kid on holiday in Anglesea - we were driving past the end of the runway at RAF Valley when a Vulcan took off right over us. It must be nearly 40 years ago now. The sound of those four Rolls Royce Olympus engines at full whack just over your head isn't something you ever forget.

<comment><USER23> I was in the Royal Canadian Air Cadets when I was younger and took the Survival Instructor Course. We were only on base one night out of the week (Saturday night for Sunday morning review, then back inna woods) I remember one of the weeks the CF-18s were paying us a visit and doing flights at all hours. It was pretty awful at the time because that was your one guaranteed good night of sleep a week but I do remember being enchanted by the whine of the engines spooling.

Shame I was colour blind and didn't get told till I was 15 (at which point my career choices were Astronaut, Fighter Pilot, SAR helicopter pilot).

<comment><USER24> That's depressing, that is. I was in the Forces when the 18s came online; Voodoos, 104s and 5s were current when I joined, and there were still a few Clunks in special trim doing real work. I suddenly feel _old_. And the Sea Kings I worked on are still in service. We got them when I was 3.

<comment><USER23> That's interesting! I worked at the CSA for awhile as one of my co-op internships and my supervisor would tell stories (mostly horror) about the big purchase of CF-18s and vetting all the code in the flight computer and such.

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> Incredible. I can't imagine taking 6G without the benefit of a suit, never mind repeatedly. This story very much reminds me of another account by Hans Krohn [0], though he flew the MiG-21 (in a full motion simulator).

[0] [http://www.hanskrohn.com/FlightSimStories/Mig/Mig.htm](http://www.hanskrohn.com/FlightSimStories/Mig/Mig.htm)

</comment><comment><USER26> What a thrilling read! Thanks to OP and Ken.</comment>


Breakfast Skipping Is Associated with Increased Risk of Type 2 Diabetes - <AUTHOR> https://www.ncbi.nlm.nih.gov/m/pubmed/30418612/ <comment><AUTHOR> I was unsuccessful in finding articles that offered a counterpoint. I'm curious if anyone in the HN community has insight to share given the preponderance of studies arguing the opposite of this meta study's conclusion.</comment>


Ask HN: SCRYPT or BCRYPT? - <AUTHOR>

I've known about Colin Percival's scrypt library for a while now but I don't have the cryptographic background to validate his research/implementation. Is there anyone with such a background or a reference to someone that's written up a validation of Colin's work?<p>Should I even bother? I gather from Colin's writings that he wrote scrypt to replace bcrypt and that it is, from him, stronger. <comment><USER2> This page [http://programmers.stackexchange.com/questions/46716/what- sh...](http://programmers.stackexchange.com/questions/46716/what-should-a- developer-know-before-building-a-public-web-site) suggests that both bcrypt and scrypt can be used (4th bullet under 'Security'). Disclosure: I added the scrypt part alongwith the references which the mods haven't deleted yet (so I am guessing it is ok).

I just went with bcrypt in my project for now because postgresql has it as a built-in function. I couldn't find for scrypt that was readily usable.

Here is a good argument on why scrypt is better: [http://it.slashdot.org/comments.pl?sid=1987632&cid=35149...](http://it.slashdot.org/comments.pl?sid=1987632&cid=35149842) (the second ref link for bcrypt on the above stackexchange page)</comment>


An Introduction to Geometric Algebra - <AUTHOR> https://bitworking.org/news/ga/2d <comment><USER2> I LOVE Clifford algebra. It has been a gateway for me into multilinear algebra and abstract algebra, among other topics.

If a computer were able to do Clifford multiplication in a single process, it'd be able to do some NP tasks in polynomial time. Clifford algebras are a sweet intersection of combinatoric and geometric thinking.

Edit: didn't even read the article, just upvoted because of the topic.

<comment><USER3> Which NP tasks? ("Some" NP tasks are already possible in polynomial time)

<comment><USER4> Seconding the question because I want to see the encodings.

Intuitively this makes sense: in the GA formalism a "single" term requires 2^n fields (where n is the spatial dimension), and "simple" operations like addition and multiplication thus require 2^n (or more) operations to evaluate.

If you could instead somehow do those operations in O(1) time you would clearly pick up a rather nice speedup, but again I'm curious what the problems and encodings (as GA) actually look like.

<comment><USER4> Actually easy to find, for example here: [https://members.loria.fr/RSchott/staceyredujanv08.pdf](https://members.loria.fr/RSchott/staceyredujanv08.pdf) .

<comment><USER2> Yup, that's what I was thinking of.

</comment></comment></comment></comment></comment><comment><USER5> There's a library called versor that might be handy for folks that want to use geometric algebra in programs.

[https://github.com/wolftype/versor](https://github.com/wolftype/versor)

[https://github.com/weshoke/versor.js/](https://github.com/weshoke/versor.js/)

<comment><USER6> Perl 6 users should also check out my library inspired from versor.

[https://github.com/grondilu/clifford](https://github.com/grondilu/clifford)

It's not as well optimized but it's much easier to use.

</comment></comment><comment><USER7> > Similarly, to rotate vectors you have to create matrices, which don't exist > in ℝ2, and apply them to vectors through matrix multiplication.

You don't "need" matrices, they're just one way to represent linear functions that map vectors, and the complex field is another (for R^2).

Coincidentally, most of the concrete implementation described for operations in G^2 here are applications of Euler's formula.

This article drops off in extending the lessons from R^2 to R^3. Comparatively, matrices excel for comprehensibility in this regard -- if you know how to apply matrices in R^N, you can apply the same knowledge to R^N+1.

<comment><USER8> > _You don 't "need" matrices, they're just one way to represent linear > functions_

Is there another way?

<comment><USER9> As vectors, as algebraic formulae, as a graph, etc

</comment></comment></comment><comment><USER10> Please don't conflate sets with algebras. Strictly speaking the tuple (R^2, +, ·) (where · is multiplication by a scalar) is a linear algebra over R, R^2 is just a set.

Now I know mathematicians often refer to spaces by their underlying set, but the notation G^2 doesn't really make sense (for starters R^2 = R x R, what is G?). Calling it the Geometric Algebra over R^2 would be fine. You can even refer to it as just R^2, as long it's clear that you're using the geometric product (and what metric you're using).

<comment><USER7> You're right, it's not really the product of some set "G" with itself but hooooo boy a programming/hacker forum is probably the wrong place to be defending the syntax of mathematical notation

<comment><USER11> If anything, programmers should (and often do!) complain that mathematical notation and terminology _isn 't_ defined rigorously enough, and that the main justification for many design decisions is "hysterical raisins". By comparison, even the wackiest programming languages are the parangon of consistency - after all, they have to be interpreted by machines that can only follow rules.

<comment><USER7> I'm reading a disagreement in your phrasing, but I think we're saying the same thing: Math notation is the wild west, dressed in the veneer of consistency but indignant at any untoward implication.

Programming languages are praised by their elegance and economy, even when they're wacky. Any theory (programmatic, mathematical, scientific) benefits from those qualities, because theories like to be axiomatic and terse. But any primer or intro or lesson is made MUCH better through repetition and redundancy. Computers don't need the rule of three, people do, and there's an mismatch.

<comment><USER11> Yes, there's a disagreement. contravariant's complaint about the notation G^2 is completely justified.

<comment><USER7> I would object too, but I don't see how that could be confusing moreso than any whiteboard "you get what I mean" pseudocode.

The reader's walking in with knowledge of the product-based construction of N-dimensional space, and we readily admit that "R^2" is (a set literally, but) taken to mean the space equipped with whatever operations appropriate for whatever algebra.

I'm being kinda sophist on this. "G^2" isn't meaningful. I agree. But given the convention of naming a set with the implication of whatever topology/metric/norm, the notation is already under harsh torture, right..?

<comment><USER11> In my reply to contravariant, I explain why I don't think R^2 constitutes abuse of notation: [https://news.ycombinator.com/item?id=13241874](https://news.ycombinator.com/item?id=13241874) .

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Read it first as algebraic geometry, was confused that I understood some of the words.

</comment><comment><USER13> It's hard to understand why he complains about vector operations that require stepping outside of R^2 but then introduces a 4 dimensional vector space. The justification needs to be reworded in my opinion.

<comment><USER14> It really doesn't help that in 2D you can't do much that you can't do with complex numbers.

I'm not a mathematician and I really struggle with just accepting the mathematical definition. I've found it helpful to think of the geometric algebra as an extension of the R^2 to contain scalars and geometrically well- defined imaginary numbers. In R^2, the dot product maps to R. You can't store this in R^2. You can store this in the corresponding geometric algebra.

For R^3, the corresponding geometric algebra forms an 8-dimensional space: 1 for the scalars, 3 for the vectors, 3 for the bi-vectors (planes formed by the 3 basis vectors) and 1 as the geometrically meaningful imaginary part. And yet in 3D and beyond, geometric algebra provides a really elegant framework for rotations in a way that is consistent, self-contained, and readily extends to higher dimensions.

</comment></comment><comment><USER15> Thanks for the clear and concise exposition. It was quite useful.</comment>


Open-source Microsoft protocol aims to be a programming standard - <AUTHOR> http://www.zdnet.com/article/open-source-microsoft-protocol-aims-to-be-a-programming-standard/ <comment><USER2> More detailed information:

Microsoft/language-server-protocol on GitHub: [https://github.com/Microsoft/language-server- protocol](https://github.com/Microsoft/language-server-protocol)

Red Hat's announcement: [https://www.redhat.com/en/about/press-releases/red- hat-coden...](https://www.redhat.com/en/about/press-releases/red-hat-codenvy- and-microsoft-collaborate-language-server-protocol)

VS Code Team blog post: [http://code.visualstudio.com/blogs](http://code.visualstudio.com/blogs)

FAQ: [https://docs.google.com/document/d/1CD_reMcSYBpUxt6PrrUZBkHM...](https://docs.google.com/document/d/1CD_reMcSYBpUxt6PrrUZBkHMr- clLxSGHNv7k8OUKqY/edit)

</comment><comment><USER3> Another one of those cases where LISP was 20+ years ahead of it's time!</comment>


Can I use vodka to clean my keyboard? - <AUTHOR> http://superuser.com/questions/742295/can-i-use-vodka-to-clean-my-keyboard

<comment><USER2> probably better using a microfiber cloth (aka e-cloth), without any form of surfactant.</comment>


Ask HN: What font do you use while programming? - <AUTHOR> <comment><USER2> I use Tamsyn (6x12 on lower res screens, 7x14 on 4k monitors), [http://www.fial.com/~scott/tamsyn-font/](http://www.fial.com/~scott/tamsyn- font/) but it's getting more and more difficult to use bitmap fonts these days. Firefox recently dropped support for them, gtk support is hit and miss.

Where I can't use Tamsyn I use [https://github.com/rbanffy/3270font](https://github.com/rbanffy/3270font)

I like fonts that are easily readable when small so I can get more screen realestate, and bitmaps are the best for that, but 3270 is pretty good as well.

<comment><USER3> Same here. All those fonts looked same until I found Tamsyn. If anyone reading here want to try it, you have to use it at the exact size it is made for, or else it will look ugly. So if you are using Tamsyn6x12 font, you can only use it at 12px font size..or it will look ugly.

</comment></comment><comment><USER4> I've spent so much time picking a font for my sumlimetext. The one I use and love is Pragmata Pro: [http://www.fsd.it/shop/fonts/pragmatapro/](http://www.fsd.it/shop/fonts/pragmatapro/)

</comment><comment><USER5> Take a look here:

[http://programmingfonts.org/](http://programmingfonts.org/)

Lately I'm in love with Office Code Pro (Dotted Zero version):

[https://github.com/nathco/Office-Code-Pro](https://github.com/nathco/Office- Code-Pro)

<comment><USER6> Your first link seems to not work.

</comment></comment><comment><USER7> PR#3 from <[http://www.kreativekorp.com/software/fonts/apple2.shtml>](http://www.kreativekorp.com/software/fonts/apple2.shtml>), with green text on a black background for maximum nostalgia. Very narrow & effective on my laptop screen. Considering switching to Input Condensed or Compressed though.

</comment><comment><USER8> All my computers are Macs. I use Inconsolata (version that supports Hellenic letters by Cosmix) patched with devicons. My editor of choice is VIM on iTerm 13 pt, see sshot[1].

[1] [https://www.dropbox.com/s/s3s165lgha1ci01/vim- sshot.png?dl=0](https://www.dropbox.com/s/s3s165lgha1ci01/vim-sshot.png?dl=0)

</comment><comment><USER9> Fira Code in my IDE, Menlo in my debug log (so it's the same as Chrome's devtools console), something else in an SSH session, and whatever the default is in Google Docs when I'm writing documentation.

</comment><comment><USER10> Fantasque Sans Mono by Jany Belluz.

[https://github.com/belluzj/fantasque- sans](https://github.com/belluzj/fantasque-sans)

</comment><comment><USER11> Inconsolata [http://levien.com/type/myfonts/inconsolata.html](http://levien.com/type/myfonts/inconsolata.html)

<comment><USER12> Inconsolata is my choice too. It's legible at small sizes and has clear distinctions between all the easy-to-confuse characters like 0 vs O, l vs I vs 1, etc.

And unlike many programmer-friendly fixed width fonts, it's also almost as comfortable to read as a good variable-width screen font when reading/writing/editing large blocks of text such as comments, personal notes, READMEs, etc.

</comment></comment><comment><USER13> Input Mono Compressed from [http://input.fontbureau.com/](http://input.fontbureau.com/) . Before, I used Envy Code R

</comment><comment><USER14> Source Code Pro

</comment><comment><USER15> Input Mono with settings:

        --asterisk=height
        --i=serifs_round
        --l=serifs_round
        --zero=slash
        --lineHeight=1.4

</comment><comment><USER16> Monaco, with Infinality on Linux so it thinner.

</comment><comment><USER17> Fira Code

<comment><AUTHOR> Likewise

</comment></comment><comment><USER18> Lucida Console</comment>


Fuzzing the OpenBSD Kernel [pdf] - <AUTHOR> https://www.openbsd.org/papers/fuzz-slides.pdf <comment><USER2> This seems to be slides from a recent OpenBSD meetup where they were discussing the implementation of syzkaller[1], an open source tool from Google written in Go, to fuzz C kernels.

Then it lists 9 issues found in the OpenBSD kernel, including two[2][3] issues with kqueue.

Pretty cool stuff!

[1] [https://github.com/google/syzkaller](https://github.com/google/syzkaller)

[2] [https://marc.info/?l=openbsd- cvs&m=153364550327224&w=2](https://marc.info/?l=openbsd- cvs&m=153364550327224&w=2)

[3] [https://marc.info/?l=openbsd- cvs&m=152930020005260&w=2](https://marc.info/?l=openbsd- cvs&m=152930020005260&w=2)

</comment><comment><USER3> How long was syzkaller ran and on what kind of hardware to find the 9 bugs?

</comment><comment><USER4> Is there any video of this meeting? That would be great.

<comment><USER5> I was at the meetup here in Stockholm this past Wednesday where Anton presented these slides and there was no video made. I'm not sure if he's presented the same slides elsewhere though so you might still have some luck.

It was a nice talk by the way.</comment></comment>


SimpleCDN thinks its providers conspire to put it out of business - <AUTHOR> https://admin.simplecdn.com/

<comment><USER2> Looks like they've been down for about 14.5 hours currently: <http://reports.panopta.com/cloudharmony/server/57551>

MaxCDN and HDDN are offering discounts to existing customers looking to migrate. <http://admin.simplecdn.com>

</comment><comment><USER3> I've had them do the same to me, it seems that if you come close to making use of your allocated resources, they'll come up with any excuse to terminate your contract.

<comment><USER4> They being SimpleCDN, not its (ex-)providers?

Hmmm, UK2 Group bought my DNS registrar some time ago. No complaints about the service they've provided to me, but....

</comment></comment><comment><USER5> Looks like they shouldn't have outsourced their entire infrastructure.</comment>


John Dvorak: The Death of Windows - <AUTHOR> http://www.pcmag.com/article2/0,2817,2421922,00.asp

<comment><AUTHOR> (Or Everything That's Wrong With a PC person)

I found this article from John Dvorak is hilarious - while reading it on my phone in an app. I used to read him a lot while young when PC mag is still in print version. But in this article John even denies Android as a _computing platform_ :

"All it can do is run rudimentary programs (apps) and open a browser. This is a platform?"

Really?

<comment><USER2> Minor nuances aside, I found his argument quite strong. To me they _are_ different markets. Windows isn't dead any more than COBOL, it's not just not where the growth is.

Whether or not some individuals live exclusively in an Apple/Android ecosystem doesn't change the fact that many others do not, and live with Windows for their working, and perhaps leisure, lives.</comment></comment>


Study: Up to 27 seconds of inattention after talking to your car or smartphone - <AUTHOR> http://unews.utah.edu/up-to-27-seconds-of-inattention-after-talking-to-your-car-or-smart-phone/ <comment><USER2> Link to the final report: [https://www.aaafoundation.org/sites/default/files/strayerIII...](https://www.aaafoundation.org/sites/default/files/strayerIII_FINALREPORT.pdf)

One obvious thing that I'm not seeing addressed is the fact that the IVIS / voice control is probably better than the alternative (manually using the phone to dial numbers and type in messages). It's useful that the study points out that distraction is still happening and quantifies it, but I would have liked it if the authors measured distraction levels with doing the activity without voice control as well.</comment>


The engineer's engineer: Computer industry luminaries salute Dave Cutler - <AUTHOR> http://news.microsoft.com/features/the-engineers-engineer-computer-industry-luminaries-salute-dave-cutlers-five-decade-long-quest-for-quality/ <comment><USER2> Dave Cutler is a legend, but he keeps a relatively low profile, so it was nice to watch the rare new video interview with him at the bottom. I especially liked what he said at the end:

"I have this little saying that the successful people in the world are the people that do the things that the unsuccessful ones won't. So I've always been this person that, you know.. I will build the system, I will fix the bugs, I will fix other people's bugs, I will fix build breaks. It's all part of getting the job done."

When I was a kid, I enjoyed reading "Show Stopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft" that chronicled his move from DEC to build NT. Jeff Atwood has a quick review of it at [http://blog.codinghorror.com/showstopper/](http://blog.codinghorror.com/showstopper/)

<comment><USER3> After reading this, I have so much I would give my right arm to ask him (similar to my sentiments on other luminaries). His focus on quality is a trait that often seems to go unrewarded in his very institution, and I often struggle to reconcile the success I see achieved with the merit based success often insinuated, and the act of "getting things done" often seems blocked with politics and bureaucracy.

Clearly however he's found success through this, I can only hope he sticks around long enough that I may selfishly brush shoulders and share some of his wisdom, I find there to be far too few who have managed to succeed to that level of notoriety/accomplishment while maintaining the principles he seems to uphold, and would love to learn more from those who have on how they approached surmounting their environment. (on that note, thanks for the showstopper link, the review was more than sufficient to motivate a longer read)

<comment><USER4> > His focus on quality is a trait that often seems to go unrewarded

In most companies focus on quality is something you're precluded from having, and usually it's in the same category as security and maintainability (refactoring). I've been in various planning meetings where I wasn't able to convince the dev team manager to allow time for such things, because they stubbornly wouldn't accept that these things will pay dividends sooner than they believe. As a result in most code bases it's: prototype -> production -> patch, patch, patch. This is the norm but there are also places that know better and you don't have to convince anyone of the benefits.

<comment><USER5> Refactoring can be its own source of problems. I've seen far too many refactorings that merely exchanged one mess for another. I'm a bit sympathetic to a manager who is skeptical of refactorings.

<comment><USER4> Definitely, I've seen those kind of refactorings too, but what I mean is that one isn't allowed to fix the architectural problems that make it hard or impossible to implement what's requested. The existing design didn't anticipate certain things which are now impossible to implement without compromising the architecture.

</comment></comment></comment></comment></comment><comment><USER6> I worked on a project (while a Microsoft employee) where we were told that the coding standard was CNF (Cutler Normal Form). Naively I asked what this was, whether there was a document etc. The answer was to read Dave's code and write in the same style.

<comment><USER2> Do you remember any details from Cutler Normal Form? I'd love to learn more about this.

From a quick search I see that it uses braces at the end. I'd be curious if CNF encouraged subsystem prefixes (e.g. the "Ke" in "KeBugCheck").

I wonder if CNF had any influence on "Systems Hungarian" (e.g. "dwCreationFlags") that dominates the Win32 API or if that came as an accidental offshoot of Simonyi's "Application Hungarian"

<comment><USER6> I don't remember much hungarian in CNF, I do remember a lot of whitespace...

      //
      // Comments are always surrounded both by empty comment lines
      // And by whitespace
      //

      //
      // The return type is always on its own line.
      // The function name always starts at column 0 and is whitespace delimited,
      // this (allegedly) was a consequence of search macros that Cutler used
      //

      int
      main (
          int argc,
          char **argv)
      {
          //
          // Even a one line comment ends up taking up at least 4 lines
          //

          printf("Hello, World!\n");

          if (argc == 2)
          {
              //
              // All blocks always use braces
              //
          }

          return 0;
      }

<comment><USER2> Thanks for the example! I especially found the commenting style and return type on its own line to be interesting.

Regarding placement of curly braces, did you see them on their own line or at the end? This article seems to imply that CNF had braces at the end: [https://blogs.msdn.microsoft.com/peterwie/2008/02/04/pedanti...](https://blogs.msdn.microsoft.com/peterwie/2008/02/04/pedantic- coder-where-do-braces-go/)

I'm interested because it seems that lower-level systems programming at Microsoft put braces at the end (early .NET BCL, maybe even the first C# compiler's C++ code, TypeScript compiler source, etc), but that Microsoft documentation tended to put braces on their own line and then _that_ became the more de-facto style that shows up in their open source code.

<comment><USER7> I also used to work at Microsoft. CNF was primarily used in the kernel and driver code but rarely in userland code, with the exception of certain tools that were developed and maintained by the kernel team (such as powercfg.exe). CNF was one of the few coding styles at Microsoft that I really enjoyed using due to how clean and disciplined it made the code. I felt that the style really reflected Dave Cutler's attention to detail and quality.

You can see more examples of CNF in the now open-sourced Windows-Driver- Frameworks: [https://github.com/Microsoft/Windows-Driver- Frameworks](https://github.com/Microsoft/Windows-Driver-Frameworks)

<comment><USER8> I've recently adopted CNF for Windows-based C work and I absolutely love it.

</comment></comment></comment></comment></comment></comment><comment><USER9> Bell believes Cutler is the only engineer with the confidence to pull off NT as he did. "Almost anyone who would have been good enough to do NT would have insisted on a blank sheet for the spec," Bell said. "Dave appreciates legacy and compatibility."

That seems to be what is missing most with modern software development. Everyone thinks they can do it better, and in the end repeats the same mistakes while creating new ones.

<comment><USER10> Hmmm, I still wonder what Windows would look like today and Microsoft had chosen the same path as Apple: create an emulation box for old 'Classic' apps, create a clean new system for new style apps.

<comment><USER11> That's pretty much what they did, but as a fundamental architecture of the OS. The "emulation box" is the win32 subsystem. Applications interact with the API in the subsystem, which translates, for example, win32 calls to the native NT API. They also created a POSIX subsystem and an OS/2 subsystem.

<comment><USER12> You just jogged my memory about WoW (Windows on Windows) :)

</comment></comment></comment></comment><comment><USER13> When I was working on Xbox One, I got all the checkin mails. Whenever I had time, I'd look for Dave's changes and see what he did. Nearly all of them were over my head because they were so deep in the OS. The ones I understood were usually fixing other people's bugs or build breaks like he mentions in the video. It was definitely a highlight to see the actual work of someone so disciplined and dedicated to their craft.

</comment><comment><USER14> I happened to come across this article recently, an article which I think demonstrates how competitive Dave was in his youth: [http://www.lansingstatejournal.com/story/sports/2015/07/23/d...](http://www.lansingstatejournal.com/story/sports/2015/07/23/dave- cutler-dewitt-athletic-hall-fame/30582389/)

</comment><comment><USER15> Little known factoid:

When Cutler came to MS, and worked on NT, he added a cool VMS easter egg in the name WinNT:

W --> -1 --> V

N --> -1 --> M

T --> -1 --> S

VMS is/was a great OS. I was fortunate enough to work on it on a satellite communication system straight out of college. I recall adding the the TCP/IP drivers and achieving connectivity across large Wide Area Networks and setting up one of the first wireless ISDN video conference systems, in this case between former east and west berlin and moscow. There were many similar projects around the world and VMS was a lot of fun/stable to work with.

<comment><USER16> The Wikipedia article for Windows NT references this, but also references a statement from Mark Lucovsky stating that the original target for NT, the i860 processor, was codenamed "N-Ten" and that the "NT" name came from the target processor.

It would mildly be interesting to get confirmation of the real source.

</comment></comment><comment><USER17> I can only imagine the hate this guys going to get here for NT...but I'm a huge fan.

One of mt first jobs was running a VMS cluster...then went on to work with Windows. Enjoyed it all. Dave Cutler is brilliant.

Thanks Dave!

<comment><USER18> Core NT is, or at least was, prior to NT 4 putting graphics in the kernel, very very nice. It's mostly what Microsoft did on top of it, and their general stewardship of it that I have a problem with.

For the latter, I noticed a serious drop in quality starting with 3.51 SP2, which to the best of my ability on Google seems to have come out 9 months before NT 4.

<comment><USER4> Exactly. Windows 8 and 10 include substantial improvements to the underpinnings that would be worth the switch from Windows 7 if Microsoft didn't basically kill the UI. This stupid desire to change stuff for a new version, as done with cars, does nobody good.

\- 3D widgets serve a purpose and make it much easier to see what's a widget and what's not

\- Windows XP theme engine was great and it got killed in Windows 7

\- Windows XP and Windows 2000 UI was to the point and didn't waste screen real estate like 7, 8, 10 do as well as current OS X and GNOME or KDE. First we complained open source desktops had no designers, now we should curse the day we wished for designers to get involved.

\- all Windows tools and subsystems got much better and featureful and there's new filesystems and subsystems, but you cannot take the core and slap on a different desktop environment like you can with Unixes. Back in the day you could use a different Windows Shell, but I don't know if that's still possible.

I have this suspicion that Cutler has a private build of Windows on his machine which still has Classic UI, but the product managers would never allow that to get published, or else they would be wrong to have killed it off in the first place. This constant desire to change the UI is unbelievable and hard to explain. Imagine if new knives would follow the same mantra. Many things work best the way they are with no need to change, and if change is wanted, something like Windows XP's theme engine is more than sufficient.

<comment><USER19> Having switched to windows 10 after using OSX and Linux primarily for the past 10 years or so, I have to say its been fine for me. The UI is simple: hit the windows key and type the name of the program you want to launch. Switch virtual desktops with ctrl+win left/right. Snap windows to the left or right with win+left/right. And now, its actually usable for dev with the subsystem for linux feature.

Oh and by the way games just work, chrome just works, spotify just works, intellij just works and all of this can be installed from the cli with chocolatey.

<comment><USER4> Yeah, like I said, many things have been improved, but they come with as many regressions in the UI which are mostly done to chase wrong goals (tablet unification) or misguided design (go back to Windows 1 flat UI). In some ways Microsoft's Core Server variant might be a better Windows for development as was Windows Server 2003 back in the day, but I doubt it'd be fully functional on the desktop. These are just a few things that will hold back Microsoft compared to Linux and BSD, when you want to do more than just Visual Studio and Steam Games.

<comment><USER20> Holding back in what sense?

Personally, after a decade of dual booting between Windows and GNU/Linux, I have focused again in just Windows with GNU/Linux on VMs.

At work, I seldom see anyone using anything else other than Windows on the desktop, except for a few Macs that are shared across the company for the occasional iOS project.

At customer sites there is always a mixture of UNIX and Windows deployments on their server farms.

</comment></comment></comment></comment></comment></comment><comment><USER21> > The small, high-powered team of former DEC engineers and one existing > Microsoft employee (Steve Wood) began by spending six months creating a > specification for the operating system – the specification that now > resides in the Smithsonian Institute.

I _had_ to look for this, information is available here [1] but not an electronic copy. Some Googling turned up this [2] but I'm not sure how authentic it is.

[1] [http://americanhistory.si.edu/collections/search/object/nmah...](http://americanhistory.si.edu/collections/search/object/nmah_742559)

[2] [http://gate.upm.ro/os/LABs/Windows_OS_Internals_Curriculum_R...](http://gate.upm.ro/os/LABs/Windows_OS_Internals_Curriculum_Resource_Kit- ACADEMIC/WindowsResearchKernel-WRK/NT_Design_Workbook/Get_Workbook/)

</comment><comment><USER22> Wait a minute, rozzie? You mean, Ray Ozzie is posting about Dave Cutler? Wow.

</comment><comment><USER23> I just noticed who the OP is. Kind of cool to see Ray active on HN!

<comment><USER24> One of Ray's last comments was about Dave:

[https://news.ycombinator.com/item?id=7540544](https://news.ycombinator.com/item?id=7540544)

</comment></comment><comment><USER25> The article mentions that the original spec for NT is in the Smithsonian, and indeed it is so:

[http://americanhistory.si.edu/collections/search/object/nmah...](http://americanhistory.si.edu/collections/search/object/nmah_742559)

I'd pay good money for a digitized copy. I wonder if there are any legal or Microsoft barriers to that happening someday.

</comment><comment><USER26> One of my neatest hardware acquisitions back in the day was a MIPS Magnum R4000 workstation - running NT 4.0.

It was great, stable, and ran Windows and DOS apps in emulation (sort of like DEC's FX!32 for NT/Alpha).

Per Microsoft: "On RISC-based computers, Windows NT provides a 486 emulator that runs applications designed for 286, 386, or higher processors."

</comment><comment><USER27> I audited a security course at UW a few years back, and one evening Cutler stopped by as a guest lecturer.

</comment><comment><USER28> Sadly, it appears that Dave Cutler has not had much influence on the worldwide community of software engineers and programmers. I assume this is because his work is proprietary and he can't discuss it in public.

</comment><comment><USER29> Dave Cutler is my personal aspirational model. When I am 70, I want to still be writing production code, rather than languishing in middle management.

Engineers who choose to "trade up" to management will always baffle me.

<comment><USER30> Would you prefer to have a manager who wasn't an engineer previously?

<comment><USER4> A manager has to have the right skills to manage a project and lead people. This is usually not something you find in engineers, so like teachers, it's not the expert knowledge (e.g. tech) but soft skills that count most for a manager. Therefore, a great manager doesn't have to know to code, at all. I haven't seen a single dev lead who got promoted from developer to manager who actually managed to manage the team/project reasonably.

</comment></comment></comment><comment><USER31> Say what you will but I still prefer the VAX to Windows.

</comment><comment><USER32> Cutler is by far my favorite engineer. Great story and amazing accomplishments.

</comment><comment><USER33> I don't really feel competent to judge all of this, but my feeling is that that Unix crowd respects Dave for his competence... they just disagree fundamentally in his design choices. I think this is fair - there is more than one way to skin a cat.</comment>


Text Understanding from Scratch [pdf] - bra-ket http://arxiv.org/pdf/1502.01710v1.pdf <comment><AUTHOR> My usual plea for abstracts over PDFs: [http://arxiv.org/abs/1502.01710](http://arxiv.org/abs/1502.01710) .

<comment><USER2> I find it useful to be able to read the paper as a PDF. Many times it is hard to find the PDF for the paper if you only have the abstract for a paper.

<comment><AUTHOR> > Many times it is hard to find the PDF for the paper if you only have the > abstract for a paper.

I agree in general, but it is not so on the arXiv, where one of the most prominent links on the abstract page is "Download: PDF" (assuming that PDF is available). By contrast, if you have the PDF, there is no way automatically to get to the abstract (although a minor bit of URL-fiddling does do the job).

</comment></comment></comment><comment><USER3> What conference that paper is submitted for ?</comment>


Open-Source Phishing Framework - <AUTHOR> https://getgophish.com/ <comment><AUTHOR> Context: this was used by Gitlab to conduct the phishing attempt against their own employee: [https://news.ycombinator.com/item?id=23269661](https://news.ycombinator.com/item?id=23269661)</comment>


The Gulf Oil Spill vs. Home Energy Retrofits - <AUTHOR> http://www.energysavvy.com/blog/2010/06/15/the-gulf-oil-spill-vs-home-energy-retrofits/

<comment><USER3> This is a bizarre comparison. The problem with the oil spill isn't the lost energy, it's the destruction and the cost of clean-up.

The implication of this article is that retrofitting 75k homes somehow cancels out or equals an oil spill. At best, this amount of retrofitting reduces the risk of an oil spill slightly because one fewer rig would be built.

When a carpenter drops a beam on his foot, we can't say that the architect should have used one fewer beam to prevent the accident. Energy efficiency is great, but by itself, the amount of oil lost in the oil spill isn't really relevant to any cost-benefit analysis.

<comment><USER4> You miss the point of the article. The article isn't saying that retrofitting 75,000 homes would "cancel out" the spill. The article is saying that the that would have been produced by that well could be saved by retrofitting 75,000 homes. I.e., it wouldn't have been necessary to drill that well if we had retrofitted 75,000 homes instead. Which is also a shaky argument, because proponents of oil would argue that extra oil would help to bring down the overall costs of energy, so we should drill even if we don't strictly "need" to. But I agree with the authors that investments in increased energy efficiency would be preferable to investments in oil drilling.

<comment><USER5> It's even shakier than that because what does the amount of energy currently spilled have to do with anything? Presumably they have planned to extract several orders of magnitude more oil from this well than what has spilled.

</comment></comment></comment><comment><USER6> All this comparison did for me was emphasize how TINY the amount of oil is that has been spilled vs. overall US consumption. Googling around indicates that US oil consumption is on the order of 20MM BBL/Day, so the 60K BBL/Day spewing into the gulf is about .3% of oil used per day. Shocking to think about.

<comment><USER7> With the oil spilled in the Gulf, the US could be powered for approximately 4 minutes.

<comment><USER8> but how much oil will be needed to collect the oil that was spilled in the Gulf?

</comment></comment></comment><comment><USER9> Don't forget, you're not off the hook if your home is heated with natural gas or electricity. This post makes the great point that energy is energy... No matter what it's made from (at least among the fossil fuels). The less coal and gas we use, the lower the demand for oil there will be.

<comment><USER8> I think you wanted to say "the more coal, and, preferably gas, nuclear, solar, wind and geothermal we use, the lower the demand for oil there will be"?

</comment></comment><comment><USER10> It doen't seem like energy effeciency and the oil spill have anything to do with each other. It just seems as if the global warming crowd are trying to use it to advance an agenda. The fact is you can look around your house and come to find out that most of the stuff you use is affected by oil..not just the energy. The problem is: this article is right to a point, we didn't need to drill that far off the coast. There is oil on land and in shallower water but the "environmentally friendly" people deemed it necessary that in order to get the oil we need and still be more energy independent, we must take more risk and drill in deep water. For people who like statistics, you should keep digging for more articles that deal with how much oil per water is actually there and how much the people in the gulf coast depend on the jobs that are directly effected by the oil companies.

</comment><comment><USER11> What is really cool is that the $10k can often reduce a home's POWER demand by 30%.

Pricing varies, but this gets to around $0.12-$0.5/kW. BUT. That's kW not kWH (e.g power, not energy). So the power demand reduction translates to energy savings for the lifetime of the building or systems in it..

</comment><comment><USER12> So essentially, my little corner of Seattle is wasting the equivalent of a gulf oil spill EVERY YEAR!. Ugh. At least there's no damage to the environment from our waste... oh wait... :(

</comment><comment><USER13> Yes, that's one of the disturbing things about the oil industry. The oil companies have done their best to make sure usage of oil is as inefficient as possible, since that is in their medium-term economic interest... They go to tremendous lengths and expend (and destroy) significant resources to extract oil, and then they are actually hoping we'll waste a major portion of it.

<comment><USER14> It always confuses me when the energy company promotes energy efficiency. It seems like economic incentives exist for both promoting efficiency, reducing it, and greenwashing (doing one while promoting the other). It would be really interesting for someone to do an economic analysis and figure out what the bottom line is for the oil companies with regards to energy efficiency.

<comment><USER11> Ha. How would consultants make their money if this was easier to figure out?

It's natural for any smart person to ask "Why would someone who sells energy want to drive energy efficiency?."

The short version is utility spending on energy efficiency is largely driven by 2 key factors - one is regulation and the other is capital deferral.

On the regulation side, it's 31 flavors... E.g. you have decoupling, renewable portfolio standards which have efficiency components, efficiency portfolio standards, mandates to target all cost effective savings (e.g. WA), etc... Some flavor of this applies to about 35 of the 50 states.

On the capital deferral side, it's more about a utility getting more rate payers on the same capital assets. Turns out it's not easy to permit a new coal based power plant. So more users on existing plant may mean less revenue but more profit depending on the circumstances. In some markets (e.g. FL) the utility commission lets the utility charge consumers for conservation programs. So in these case, the utility has effectively marginal CGS/OPEX on a program which drives up profitability.

</comment></comment></comment><comment><USER15> What's the market value of all that oil, or the impact to the market the immediate shut down of new oil exploration could incure? There has to be a reason ecomonically that this hasn't been solved naturally already - <USER2> it's a no brainer. Maybe the coming rise in oil prices will push more attention to alternative energy and energy efficiencies like 2 years ago.

</comment><comment><USER16> According to your math, homes in the US waste the energy equivalent of over 1,300 gulf oil spills _every year_. Ouch...

<comment><USER17> And for bonus points, although I haven't verified, he's probably measuring total energy content of that oil, not the amount we can successfully harness using mechanical means.

<comment><USER9> Yep - fun with math! Gallons of oil to barrels of oil to MMBTU's per barrel to MMBTU's per house per year (source energy vs. site energy). We totally geeked out on this. Minus points though for skipping the energy content in the natural gas that's leaking out of the well (apparently it's half and half). But our algebra skills reached a limit at some point once we felt like the point was made...

</comment></comment></comment><comment><USER18> If nothing else, this article does a good job of drawing attention to enhancing home energy efficiency which is something we can all DO something about unlike closing loopholes in permitting processes for oil wells. It also made us think. Thanks, EnergySavvy!

</comment><comment><USER19> Amazing how much energy and resources we can save just by living our lives more efficiently.

</comment><comment><USER20> very timely! the one positive that can come out of this mess is awareness of what we can improve and how bad the direction we are headed is. hopefully we'll take the hint before it's too late...</comment>


Ask HN: Best Books read in 2013 - <AUTHOR>

Inspired by https://news.ycombinator.com/item?id=6898191<p>Let's share what are best books you have read in 2013 <comment><USER2> Susan Cains' "Quiet", about the psychology of introversion and introverted people, was very good indeed.

</comment><comment><USER3> [https://news.ycombinator.com/item?id=6898606](https://news.ycombinator.com/item?id=6898606)

</comment><comment><USER4> Moonwalking with Einstein: The Art and Science of Remembering Everything - Joshua Foer

</comment><comment><USER5> Flow: The Psychology of Optimal Experience by Mihaly Csikszentmihalyi

</comment><comment><USER6> Easily "Fooled by Randomness"

</comment><comment><USER7> The Dispossessed, Ursula K. Le Guin.</comment>


My tutorial How to Write a Book with Python and Sphinx is published at medium - <AUTHOR> https://medium.com/@ezzeddinabdullah/how-to-write-a-book-with-python-and-sphinx-66dabb814288 <comment><AUTHOR> This is originally posted here: [https://www.ezzeddinabdullah.com/posts/how- to-write-a-book-w...](https://www.ezzeddinabdullah.com/posts/how-to-write-a- book-with-python-and-sphinx)

</comment><comment><AUTHOR> Please give it some claps if you like it and share it if you REALLY like it</comment>


Dissection of a viral launch - <AUTHOR> http://www.iubenda.com/blog/2011/10/25/dissection-of-a-viral-launch/ <comment><USER2> This seems an awfully risky way to get this sort of business off the ground.

Privacy policies are one of those convenience things. If you don't have to write one yourself and outsourcing it saves precious time and money, great. However, if you do, it's hardly the end of the world: it's going to take you a few hours to write at most and not a huge amount of money for a lawyer to review it.

You're hardly going to wait around to launch your entire project because someone didn't want to let you use their pet social experiment^W^Wprivacy policy generator tool. Moreover, there are plenty of free alternatives from reputable sources already available[1] if you just want something to make sure you're covered legally and need it Right Now. And of course, once you've done one, chances are you know enough to do any future ones yourself anyway.

My guess is that if these guys really do only have 200 or so active users but 2,700 or so on their waiting list, they are blowing a massive opportunity and going to waste most of those 2,700 by missing the train. Their service is a quick-and-easy thing, and they are making it hard. I notice that the one thing obviously missing from their "Launch by the numbers" summary is an indication of whether all those numbers are worth any real money.

[1] For example, in the UK, Business Link provide this sample:

[http://www.businesslink.gov.uk/bdotg/action/detail?itemId=10...](http://www.businesslink.gov.uk/bdotg/action/detail?itemId=1076142085&type=RESOURCES)

<comment><AUTHOR> Thank you for this comment.

I wrote a comment on HN before, about privacy policies and why current solutions suck. Here's the link: <http://news.ycombinator.com/item?id=2911830>

The reason why we didn't launch the product yet, is that we are not ready. We are working _really_ hard with our beta testers to improve it, and to solve some of the problems you mentioned too.

Now, instead of a bunch of useless words, can I ask you to watch a demo of what we're about to launch? Skip if you want, but take a look at the real product and tell me what you think:

[http://f.cl.ly/items/3Q2600072w2w3a0V3B3B/Screeny%20Video%20...](http://f.cl.ly/items/3Q2600072w2w3a0V3B3B/Screeny%20Video%2025-ott-2011%2015.18.08.mov)

<comment><USER2> I did read your post and watch your video. It's an interesting idea.

FWIW, if you had an interface like that to generate a quick template as a _starting point_ for a privacy policy, which I could then download to customise for my own business needs, and it was available for a modest fee per use, then that would be interesting.

However, I wouldn't be interested in any sort of ongoing relationship/subscription deal. I'd see this as a one-off job. If the service were cheap/easy enough, it's a one-off job I might come back to do again for any new sites or policy updates later, though.

The result would absolutely have to be some sort of text document or HTML+CSS package that I could download and modify myself, not a link back to your site. This policy has legal implications in Europe, as I'm sure you're aware, and having it hosted by third parties so my users are seeing something beyond my direct control would be a deal-breaker.

The UI itself looks very clean and easy to use, if you could only fix the lag/endless spinners that seem to come up all the time. To me, those would make it painful to come back and use over and over again, even if I used it once to get a starting point for my first privacy policy.

I stand by my earlier view of your launch process, though: This sort of service could have value I would pay for if it were relatively cheap (compared to my time and any legal fees it saves) and something I could just use instantly when I needed it. However, there's no way I would mess around waiting for it, and all that silliness with forced viral marketing looks like a social experiment rather than a service that's there to benefit me as a paying customer. Perhaps you've decided that this doesn't matter if you're not planning to continue with that approach once you've launched and are open to everyone?

<comment><AUTHOR> Thanks again for replying.

About "embedding vs template", templates just suck. Our product is about giving users a far better privacy policy, which is a piece of design, usability and information architecture. You can't achieve this without embedding.

Moreover, embedding is better because: \- It's faster to integrate \- No maintenance needed \- The policy can be updated remotely (both by us and by the user) \- The result is just beautiful, opens as a lightbox, has icons :)

There are also business-related reasons why embedding is better than template.

About the UI, the lags are caused by my development local machine, on the production server there's instant feedback on every action. Sorry for that.

On the rest, I get your point, and again: the reason for the private beta wall is that we're not ready. About the product itself, I can assure that our users are crazy about it :)

<comment><USER2> > The policy can be updated remotely ( _both by us_ and by the user) [Emphasis > added]

Exactly. That's why it would be difficult to use your service in most of Europe without risking legal trouble.

I wish you luck. I'm sure you'll launch with a very elegant solution to a problem. I just hope it's the problem that most of your potential customers actually have.

<comment><AUTHOR> We are based in Italy, and we know European laws very well, so you're in good hands. One of the team members is a lawyer, of course :)

About the problem, it's weak if you own a personal website, but relevant if you sell websites to other people, for example if you are a freelance web designer or a web agency.

One of the goals of this first period of MVP was to test the need, and now we have _many, many_ people praising for the product :)

I think that the problem is if the market is big enough for this product. Since the market is 'every website in the world', we can afford that part of it doesn't care of the problem, and still keep having millions and millions of potential customers.

</comment></comment></comment></comment></comment></comment><comment><USER3> Very impressed by the launch page. It actually got me to go through the whole process of Tweeting, Facebooking(?), and sharing. I'll definitely look into the privacy policy service when I get in, myself and some of my clients might have use for it. On another note, have you thought about commercializing the Viral Launch software? Seems you did a much better job than Launchrock, and I know I'd pay for it...

<comment><AUTHOR> lol, you're not the first to ask it ^^

</comment></comment><comment><USER4> Yuck! I really don't like these kinds of schemes. People should share/follow because they actually like a product, not because they want to get early access to a product.

If your product is truly viral within its core user base those users will tweet and talk about the product anyway.

<comment><USER5> You're right, it's hard here to tell if their product is driving the growth or if it's their marketing.

It would be nice if iubenda does something similar a few months after they exit private beta to show us what numbers are real and what is just success theater.

<comment><AUTHOR> I will surely disclose more in the next future, granted.

About what's real, I think that it's mostly the need. I read every tweet that comes on the "iubenda" search, and frequently look to the profile of the user behind. Most of the times the user is a web designer, which proves that people subscribe because they feel the need. Moreover, I interview almost every beta tester that we invite, and again I get people really passionate about the product.

I think that the marketing-driven risk is mitigated by the fact that the product is explained very well on the website, and people signup _only_ if in need of the product.

</comment></comment></comment><comment><AUTHOR> Something quite interesting that I forgot to disclose is how Facebook and Twitter performed, one compared to the other. I expected Facebook to be more effective, and it was, but the percentage of users coming from FB was just slightly greater.

</comment><comment><USER6> Really nice post, and a great product idea. Looks like you're off to a great start.

One thing though - the name. It means nothing to me, I can't spell it, and I'm going to forget it. Perhaps something more direct like YourPrivacyPolicy.com would be better?

<comment><AUTHOR> YourPrivacyPolicy.com will never ever be a brand :)

<comment><USER6> Touche.

Still, I think you can do better on the name. :)

</comment></comment></comment><comment><AUTHOR> Another point is that Online wins on Offline, definitely. Offline events or press can lead to social proof, but they don't drive subscriptions.</comment>


Roger Ebert: The Essential Man - <AUTHOR> http://www.esquire.com/print-this/roger-ebert-0310 <comment><USER2> THIS is why I help build the web:

 _he began writing an online journal... It has become his life's work, building and maintaining this massive monument to written debate... Out there, his voice is still his voice — not a reasonable facsimile of it, but his.

"It is saving me," he says through his speakers._

</comment><comment><USER3> I actually found Ebert's online reviews more compelling than the TV show ever was. He could take his time in them and explore little facets of the films, relate them to obscure references and dote a bit on things he just plain liked.

[http://rogerebert.suntimes.com/apps/pbcs.dll/section?categor...](http://rogerebert.suntimes.com/apps/pbcs.dll/section?category=REVIEWS)

</comment><comment><USER4> My recent favorite, Ebert's discussion of what it's like never to eat nor drink:

<http://blogs.suntimes.com/ebert/2010/01/nil_by_mouth.html>

</comment><comment><USER5> _I believe that if, at the end of it all, according to our abilities, we have done something to make others a little happier, and something to make ourselves a little happier, that is about the best we can do. To make others less happy is a crime. To make ourselves unhappy is where all crime starts. We must try to contribute joy to the world. That is true no matter what our problems, our health, our circumstances. We must try. I didn't always know this, and am happy I lived long enough to find it out._

Interesting that he says making yourself unhappy is where crime starts. I agree and I've often thought that the root of anxiety if selfishness.

</comment><comment><USER6> Touching and beautifully written. :)

<comment><USER7> If by beautifully written, you mean incredibly ham-handed and melodramatic and full of bathos:

> Roger Ebert can't remember the last thing he ate. He can't remember the last > thing he drank, either, or the last thing he said. Of course, those things > existed; those lasts happened. They just didn't happen with enough warning > for him to have bothered committing them to memory — it wasn't as though he > sat down, knowingly, to his last supper or last cup of coffee or to whisper > a last word into Chaz's ear. The doctors told him they were going to give > him back his ability to eat, drink, and talk. But the doctors were wrong, > weren't they? On some morning or afternoon or evening, sometime in 2006, > Ebert took his last bite and sip, and he spoke his last word.

> Ebert's lasts almost certainly took place in a hospital. That much he can > guess. His last food was probably nothing special, except that it was: hot > soup in a brown plastic bowl; maybe some oatmeal; perhaps a saltine or some > canned peaches. His last drink? Water, most likely, but maybe juice, again > slurped out of plastic with the tinfoil lid peeled back. The last thing he > said? Ebert thinks about it for a few moments, and then his eyes go wide > behind his glasses, and he looks out into space in case the answer is > floating in the air somewhere. It isn't. He looks surprised that he can't > remember. He knows the last words Studs Terkel's wife, Ida, muttered when > she was wheeled into the operating room ("Louis, what have you gotten me > into now?"), but Ebert doesn't know what his own last words were. He thinks > he probably said goodbye to Chaz before one of his own trips into the > operating room, perhaps when he had parts of his salivary glands taken out — > but that can't be right. He was back on TV after that operation. Whenever it > was, the moment wasn't cinematic. His last words weren't recorded. There was > just his voice, and then there wasn't.

<comment><USER8> This undeserved downvoting I keep seeing might make me just vomit HN out of my life.

I agree with you, it was a bit melodramatic. And slow. I don't know if I should bother reading it.

</comment></comment></comment><comment><USER9> In an effort to find the YouTube videos (that were taken down) mentioned in the article I stumbled across this video [1] that seems to sum up Siskel and Ebert's great relationship. Just to warn you there is some foul language.

[1] <http://www.youtube.com/watch?v=xUMZjy8rXE4>

Edited to add this is great too: <http://www.youtube.com/watch?v=OkwVz_jK3gA>

</comment><comment><USER10> he is one of my favorite twitterers also: <http://twitter.com/ebertchicago>

hilarious, insightful and prolific

</comment><comment><USER11> Damn.</comment>


The time spent on practising white board test may not be worthy - <AUTHOR> http://nanxiao.me/en/the-time-spent-on-practising-white-board-test-may-not-be-worthy/ <comment><USER2> Of course it isn't. An interview process that requires/rewards cramming for months ahead of time is fundamentally broken.

I just gave up on getting hired at any tech company that uses whiteboard interviewing. It seems like, just as in college where there's always that _one kid_ who aces every test and wrecks the curve for everyone else, in any candidate pool there is always one demigod of algorithms (and it isn't you, you're merely great) that spends every waking hour of his/her life on hackerrank and topcoder.

Whatever, I spend my time on side projects, learning new things, family, and the occasional bit of fun and relaxation. And I still manage to stay employed (so far).

<comment><USER3> I think this is the only way to fight the white-boarding standard interview. Stop applying to these jobs.

I know the allure of a big paycheck is too much for most people, but why are ok with going through these ridiculous circus acts just for the "privileged" of working for Big N?

<comment><USER4> > I know the allure of a big paycheck is too much for most people, but why are > ok with going through these ridiculous circus acts just for the "privileged" > of working for Big N?

Cause having a lot of money changes your life and it's not worth giving that up for a bit of pride.

Also working for "Big N" could give you access to very interesting projects, either while you work there or after you leave, since brands do matter and your CV will be more attractive to other companies.

<comment><USER3> That's fine, but you can't have it both ways which is what a lot of the complaints around whiteboarding are.

Either you accept that it's the industry standard and the gateway to a big paycheck and a prestigious CV, or you don't participate.

<comment><USER4> What makes you think it's the same people accepting the status quo and whining? :)

</comment></comment></comment></comment></comment><comment><USER5> Seems like the more employers complain about the lack of available labor, the more they ratchet up the pointless interview hazing. It's hard to take their claims of 'no one is available' when they're so capricious in tossing away potential employees.

<comment><USER6> One thing I've noticed, it's often not the employer at fault but the employees. Engineers reject candidates for extremely pedantic reasons (for example, he used a dict instead of a defaultdict, which some will take as a signal that the developer doesn't know python). I suspect that if you were to interview current employees 50% of them would fail the interview.

<comment><USER7> The worse a programmer-- the more biting his questions. They'll google some trivia before the meeting to look smart, then reject the candidate to feel good about himself.

</comment></comment></comment><comment><USER8> >You just need to call std::sort, and don't care it is "bubble sort" or "quick sort" under the hood

This is often the case, but not always. When you know things about the input data you may be able to get better performance than the generic sorts built into a language. Or, when you know more about sorting algorithms you may be better able to choose among the available sorts/sort options provided by a language or library.

I don't understand the attitude of people willfully choosing not to understand their craft better. Yes we can all be mediocre by just using libraries that other people made, but

1\. Someone has to make the libraries 2\. The average quality of software is not very good, its very often slow (which is astounding given how fast the hardware is) and buggy, often with disastrous consequences, so we should all be striving to do better than average.

<comment><USER9> In case of sorting algorithm, it is important to know the trade-off. However, precisely knowing the details e.g. knowing the details of deleting a node from a balanced tree, is not really useful and that is exactly what is needed to pass whiteboard tests.

In most cases(in my experience), i can always lookup details of some algorithm when i need it. Admittedly, my job doesn't require me to design algorithms, but implement some not so readily available ones sometimes.

<comment><USER8> For sure, I'm not arguing that some whiteboard interview questions aren't crazy, i realize there are.

But also I'm not sure how common it is to have interview questions such as "delete a node from a balanced tree" where they actually expect you to get that right vs just see if you get the basic idea. I've never run into it. Perhaps many people on hackernews work in silicon valley and that is more common there.

</comment></comment></comment><comment><USER10> Is this really news to any of us? I figured most people here understood that algorithm/whiteboard test prep was pretty much standard, but incredibly pointless.

<comment><USER8> It might be pointless if you already understand the concepts 100% and you are just brushing up so you can do them quickly and more completely.

But for a lot of people they will actually by reminding themselves of important fundamentals of computer science, which might be quite a good thing.

<comment><USER11> A whiteboard test is probably the worst way to determine somebodies grasp of computer science fundamentals, especially when what really matters is can they _apply_ those fundamentals properly in the proper context?

</comment></comment></comment><comment><USER12> You practice whiteboard tests to get a job and not to be a better programmer. If it gets you a better paid job it's a win but then you can stop.

<comment><USER13> I recently joined Blind and mostly follow the compensation discussions. 2 Takeaways:

1) Most of us are incredibly underpaid

2) A common question is when asking how candidates prepared that resulted in offers is "How many problems did you do on leetcode?" I'd never heard of leetcode but it seems if you want an offer from FANG, Uber, Lyft, etc then you put your time in practicing programming problems.

<comment><USER14> What's Blind?

<comment><USER15> Looks like an anonymous work oriented chat app: [https://www.teamblind.com](https://www.teamblind.com)

</comment></comment></comment></comment><comment><USER16> I don't think you understand the purpose of a whiteboard test. When I interview candidates, I'm looking for a lot of things that can't be practiced:

\- How well can you converse about a technical topic

\- How adaptable are you to design constraints

\- Do you understand the fundamentals of threading, databases, data structures, ect?

\- Can you "think in code?"

\- How well do you really understand the language that you spent XX years of your career working in

The best way to improve your skills is by doing: specifically, choose a hobby project that involves an area that you want to learn. Reading a book will only get you about 10-15% of the way there. Books are useful to choose a technology to learn, but not to learn the specific technology.

Getting back to whiteboarding: I've used it to:

\- Reject candidates who forget basic fundamentals of a language that they claim XX years in. (Seriously, if you can't construct an "if" statement or use a common collection class in a language you claim XX years in, then you don't belong on my team.)

\- Reject candidates who can't learn an unfamiliar API. This is critical, because we need to discuss new APIs in design discussions; and because "old & working" code isn't always worth refactoring to use some shiny new API.

\- Reject candidates who don't know how to use a database. (Frameworks / ORMs are not a replacement for knowing how a database works and how to program with one.)

\- Reject candidates who don't know fundamentals of threading

<comment><USER12> You seem to have a reasonable approach to interviews. However, as a contractor I was in interviews where I had to code the optimal solution for a certain problem on the whiteboard without syntax errors. That's just silly.

There was no discussion to show any thought process. It was about knowing the expected solution to 100%.

<comment><USER16> Remember, interviews are a 2-way street. If the company has unrealistic expectations in the interview, then it should influence _your_ _decision_ to continue pursuing the job.

<comment><USER12> It does influence the decision. But there is also a good chance that the engineer doing the interview doesn't really reflect the work environment.

</comment></comment></comment></comment><comment><USER17> I found this blog post after also writing today about Time Well Spent [https://blog.wekan.team/2018/02/time-well- spent/index.html](https://blog.wekan.team/2018/02/time-well-spent/index.html) and production setup for Wekan [https://wekan.github.io](https://wekan.github.io) at AWS for thousands of users [https://github.com/wekan/wekan/wiki/AWS](https://github.com/wekan/wekan/wiki/AWS) .

About optimization there is DTrace talks at [http://dtrace.org/blogs/bmc/2018/02/03/talks/](http://dtrace.org/blogs/bmc/2018/02/03/talks/) and related HN discussion at [https://news.ycombinator.com/item?id=16303595](https://news.ycombinator.com/item?id=16303595)

I do remember Randal Schwartz talking at Floss Weekly [https://twit.tv/floss](https://twit.tv/floss) sometime that in his work he tries to listen developers and ask right questions to see where bottlenecks are. Is there some expensive database query, does something need to be cached, etc.

</comment><comment><USER18> I think that the whole interviewing and whiteboard frustration is because not all software development is equal. I think software development is a spectrum, with (let's say) on the one hand engineering (the academic side) and the other development (let's call it the "craft" side). Most software positions/roles/jobs sit somewhere in the middle or lean to one side or the other.

Some companies are clearly academic, think of the Google's of this world. Other companies are more crafty/creative, think e.g. of typical web-dev shops. Games development is an interesting one.

As software developers we like to stick things in clearly defined boxes and treat software development as one big box. But I think it isn't.

I believe that the frustration most people have with interviewing is that the wrong style of interviewing is applied for a certain role. E.g. a company that is clearly on the crafts/creative side is hiring like they're Google (because they read about how Google does it on the Internet).

My experience is that in most situations whiteboard interviews don't contribute a single thing. A good conversation about making software usually does a lot more. But I guess for inexperienced interviewers, a whiteboard is an easy tool to hide behind.

</comment><comment><USER19> I don't think it's a complete waste of time to do these practice interview problems. At the end of the day it reinforces your understanding of core computer science topics and helps you think out of the box(barring stupid problems where you need to know a specific formula). Then there are situations where you need a deep understanding of these algorithms to choose them for specific situations irrelevant of implementation.

</comment><comment><USER20> I find this useful [https://airtable.com/shr5TdnpVYVTpeRrN/tbluCbToxQ2knSLhh](https://airtable.com/shr5TdnpVYVTpeRrN/tbluCbToxQ2knSLhh)

Companies interested getting placed on it should raise PRs on [https://github.com/poteto/hiring-without- whiteboards](https://github.com/poteto/hiring-without-whiteboards)

</comment><comment><USER21> > After stopping these practice, I leverage the spare time for following > tasks: read C++ classical books and learn more about standard libraries

I might suggest this is the best way to study for whiteboard tests in the first place. Practicing for them might only help if you have other people pick the questions and watch you.

The last interview I had, I completely bombed the whiteboard test, but not for technical reasons. I probably wouldn't have been able to practice my way out of it. Luckily, the company also had a live coding test which I aced, and they hired me, so it didn't matter.

As a manager and hiring interviewer, I have to say that I find whiteboard tests moderately useful, even though I agree with pretty much all the criticisms here so far.

The point of it is to try to see how the candidate thinks on their feet, watch them talk their way through a problem without StackOverflow at their fingertips. It almost never matters if the whiteboard code has bugs, the question is more about the process, not the result.

</comment><comment><USER22> I'm definitely not trying to be snarky or mean here--just offering my take on this after reading the article. English is obviously the author's second language, and I would offer that practicing English and learning better fluency/grammar/spelling would help an order of magnitude more than practicing computer science quizzes and coding challenges. Many of the candidates and developers I encounter may or may not be good software engineers--I don't know because their language skills are lacking, and they are unable to convey it through spoken or written word.

I'm learning a second language myself and I feel your pain. I would never want to interview in a second language. However, in the US workforce, English proficiency is critical and such soft skills can often mean promotion into management, increased responsibility, and technical leadership positions.

</comment><comment><USER23> I'd rather someone who knows which library has the required function already implemented in it rather then spending days enacting "not invented here"

</comment><comment><USER24> The first part of the article where the author explains how time-consuming it is to study algorithms can really be applied to any field of study. The fact that the author spends much time learning algorithm doesn't mean that he's "dumb" as he humbly presents himself, it just means that he's just getting started. It's like trying to pick up guitar and when you realize that it really is hard and takes time you decide after one month that you're not a talented guitar player.

Then there the second part where the author considers algorithmic knowledge as useless (or not so much useless at best) because the tools available to a programmer already implement any relevant algorithm.

There's some ironic parallel between this way of thinking and algorithmic proficiency, actually. Many algorithms work by leveraging data structures whose understanding of internal working isn't needed. For example, one way to efficiently merge N sorted list into one big sorted list is to use a priority queue. Do you need to know how a priority queue is implemented to find this solution? Not at all. You just need to know the interface it offers, and the complexity of each method. Finding the k-th smallest element in a list can be done using a heap. Do you need to know how a heap is implemented to find this solution? Not at all. You just need to know what a heap does.

Really, studying algorithms is like studying the C++ standard library, except that instead of knowing about classes and methods as your toolbox, you know data structures (and common patterns) as your toolbox. Of course any curious mind will then go deeper and actually read about how those things are implemented, building an even better understanding of the foundations, and solving even deeper problems with it.

While being an interesting parallel, this doesn't really answers the author's questioning about: what's the point? Which brings us to what the author forgot to address in his article: white board test. The title of article sets the scene with someone wanting to find a job in one of those big tech company hiring people who can pass the whiteboard tests, but then who somehow... forget about it and decides to abandon this endeavor? Well, fair enough, but to be perfectly honest, while Google & Cie engineers certainly aren't spinning up algorithms on a daily basis like mad computer scientists, the engineering level there is still quite high. So there's definitely some basis in wanting to pass the whiteboard interview, mostly working with intelligent people.

</comment><comment><USER25> Practicing white board tests is more about learning composure, maintaining cool under pressure (and under observation), and finding a way to think and reason about problems that "shows your work."

Many times people can solve problems, but can't verbalise them enough to make a white board test be an accurate indication of how they think.

It's not about practicing to solve any specific problem - that kind of "practice" is counterproductive as the poster realised.

</comment><comment><USER26> I regularly conduct interviews at one of the more infamous "whiteboard interview" companies. At the end of my interviews I like to take five to ten minutes to answer whatever questions the candidate might have about myself, the company, the process, etc. One time I had a candidate who absolutely bombed the interview asked me a question that expressed a similar sentiment: why do you guys place such a heavy emphasis on basic data structures and algorithms when standard libraries and software packages offer easy to use, efficient implementations?

To be honest, this is a fair question. For someone whose entire career has been spent coding on a single machine, with data that fits in memory, reusing pre-written O(NlogN) or faster algorithms, often with a single thread, I can see why they would ask this question.

The answer is: for what we do, there is no off the shelf solution. Our datasets almost never fit on a single machine, to the point where we make jokes about five terabytes of data being so small we forgot how to count that low. Our algorithms are almost all novel: one of my favorite interview questions starts off as a trivial string manipulation problem but then branches out into easy-to-express, easy-to-understand variations that actually require some very sophisticated algorithms to solve. When it comes to pre- built software, even our internal turnkey database solutions are so sophisticated they require a solid understanding of distributed systems and operating systems to avoid common pitfalls.

Honestly, not every person is up to the task of working in this environment. Our workforce skews towards people with degrees in CS from high-ranking universities not because we're snobby but because there are few places that teach this particular combination of skillsets. You can probably go your entire career without working for us or on the sorts of problems we try to solve, and you can just as well prepare for interviews by focusing on practical matters and not deeper algorithms and data structures knowledge. And that's fine, I'm sure there are plenty of positions out there for you.

But if you do, don't come complaining to me that our interview process is too hard or the prep process is too impractical or that we're being unfair because none of the stuff we test for is practical in the real world. You can have an easy time prepping for my interview or a job at my company, but not both.

EDIT: There is something to be said for companies that cargo cult this interview process. True, if someone can pass this interview process they're probably pretty decent, but you have to be honest with yourself what sort of problems you'll be solving. OP, meanwhile, expressed an feeling of blanket pointlessness without saying what kind of job he's looking for. I hope I've made clear this is counterproductive for companies like Facebook, Google, Microsoft, etc.

<comment><USER22> I got one of these interviewers (but not at one of the big companies that actually do things at scale), and stood my ground.

How would you sort this list? "Use the standard library and move on with my life."

But I want you to show me... "Use the standard library and move on with my life."

But what data structure would you use? "This one, because A, B, and C. It is already provided, debugged, and tested, by my standard library."

How is that data structure implemented? "Doesn't matter. It works and the time I spend not worrying about it I can spend shipping software."

\--

It actually worked. I think they respected the pragmatism. I actually went on to help migrate them away from a _HORRIBLY BUGGY_ home-grown container/string library, over to, you guessed it--the library that comes with the language.

<comment><USER4> I'd argue that for almost any companies except for the big 10 or so, that's the correct approach. Especially for enterprise software. And even in those big 10, for projects which are not directly tied to the things they do at scale (I doubt the Hangouts Android client needs to reinvent the wheel...), it's still the right approach.

I'm kind of sick and tired of companies writing their own frameworks and languages when they can't really maintain them, long term. Google, Facebook, Apple, Microsoft can, because they have a different culture and primarily because they have a different focus as well as enough profits to support it. Random Java big-shop can't. Their framework will be nice and shiny the first year and 15 years later you'll be wondering why you're working with the atrocious Struts-1 inspired undocumented internal framework.

<comment><USER26> > I doubt the Hangouts Android client needs to reinvent the wheel...

This actually touches on an interesting point. My notorious interview company is Google. I'm not familiar enough with the Hangouts Android client to tell you anything about it, but for the sake of argument let's unrealistically assume it's trivial. Imagine you have an organization where some engineers are good enough to work on the Hangouts Android client but not good enough to work on, say, the F1 distributed database.

Internal transfers become crapshoots. Is this person good enough to work on my new, highly complex project? Should I reinterview them to make sure they can hack it? Imagine what this does to the social and cultural stratification. "Oh, those Hangouts guys are nice but they're not that impressive, it's not like they're working on the machine learning or anything." It'd be a nightmare both practically for management and socially for the engineers.

Our philosophy is: all engineers should have the chops to quickly be able to ramp up on whatever project they like. This means rejecting a lot of people, but it also means that two engineers can look at one another across the hallway and immediately know they could swap teams and not miss more than a couple weeks of productivity. When framed this way, I think the interview process is a natural consequence.

Not sure what the culture is at other places, but I hope this is a useful data point.

<comment><USER4> The only way this actually works is because Google is sitting on a pile of cash, in my opinion.

But regarding your problem, you could solve that by having internal interviews.

And I really doubt that for any complex product people switching will only miss a few weeks of productivity.

</comment></comment></comment></comment></comment><comment><USER27> You Don't Say?

</comment><comment><USER28> This is like saying running for exercise is a waste of time because you could be driving instead. It's not about knowing a particular sort algorithm. It's about the discipline of solving performance problems in the small. Knowing how quicksort works isn't that helpful. Being accustomed to the thought processes that led to the development of quicksort is important in any non-trivial programming activity. I'm not writing Google-scale services, but I regularly encounter algorithm design problems on the job, and they're never the exact algorithm you studied for some white board exam. I think the author is approaching algorithm study with the wrong attitude.

<comment><USER29> I took it to mean that most developers in this current market do not need to know implementation perfect algorithms and data structures like RB trees, depth first search, A*, quicksort, etc. Rather your time is better spent on learning the advantages and disadvantages on the structures and algorithms, and you get more benefit from understanding the implementation. For example, merge sort is dividing a list up into sublists until you hit single element lists and recombine them into a single sorted list. That, in my opinion, is more important than a picture perfect implementation on a white board.</comment></comment>


Junior developer vs Senior developer (rails) - <AUTHOR> https://gist.github.com/njonsson/107343/raw/da9ea9a81454d832390b0829338737008429148e/The+difference+between+the+junior+and+senior+Rails+developer

<comment><USER2> These are great specifics, and I agree with all of them. On a more general level, I don't consider someone senior until they can take a complex problem and break it down by choosing appropriate technologies for all the pieces. This is a necessary but not a sufficient condition. In the case of rails, this means choosing the right testing framework, making good scaling choices, choosing a the right ORM, etc. which coincides with the specifics from your post.</comment>


Ephemeral certificates could replace password vaults - <AUTHOR> https://www.ssh.com/iam/ephemeral_access/ <comment><USER2> This sounds completely insane.

So we delegate security to an alleged "trusted" third party that both the sysadmin and user have to trust.

Sounds like a massive increase in attack surface with questionable advantages.

<comment><USER3> Isn't that basically how Kerberos works? Did with ephemeral certs?

<comment><USER4> Kerberos started out with symmetric keys. It's been a long time since I followed things, so that might have changed. Public keys would greatly simplify key distribution, of course.

</comment></comment></comment><comment><USER5> We do something similar with HashiCorp Vault. People authenticate to Vault (backed by Active Directory) and if they have the proper permissions (based on AD group) they can ask Vault to issue an SSH certificate for a particular account on a specific server. This is working well; we no longer have accounts for everyone who needs access on every box and giving or removing access is as easy as changing group membership in AD.

[https://www.vaultproject.io/docs/secrets/ssh/signed-ssh- cert...](https://www.vaultproject.io/docs/secrets/ssh/signed-ssh- certificates.html)</comment>