Ask HN: What will happen with BitCoin eventually - <AUTHOR> Is it the right assumption that when quantum computing becomes a reality, it will render BitCoin (as well as all other cryptocurrencies) obsolete overnight. Can/Should anything be done today to prevent this from happening? <comment><USER2> Don't think about what will happen to Bitcoin in that situation, because its hashing algorithm is nothing particularly unique. Think of what will happen to SHA-1, -2, etc. The NSA is likely already thinking well ahead about this possibility.

</comment><comment><USER3> I think, bitcoin will be banned by most of governments earlier than quantum computing will become widespread to break bitcoin.

<comment><AUTHOR> How can you ban something that can not be banned by design?

<comment><USER3> Powerful countries can easily perform 50% attack and decide which transactions get confirmed and which not. Effectively, this makes it possible to completely stop transactions on the network.

<comment><AUTHOR> In theory, such an attack is possible, in practice -- very unlikely at this point given the number of miners out there. Here is what it was in 2015: [http://www.zerohedge.com/news/2015-11-19/bitcoins- computing-...](http://www.zerohedge.com/news/2015-11-19/bitcoins-computing- network-more-powerful-525-googles-and-more-10000-banks) Today it's even higher than ever: [https://news.bitcoin.com/why-bitcoin-is-close-to-a-record- br...](https://news.bitcoin.com/why-bitcoin-is-close-to-a-record- breaking-3-exahashes-processing-power/)</comment></comment></comment></comment>


What Does Freedom Mean to You? Trevolta's Diverse People Unite - <AUTHOR> https://www.trevolta.com/DiversePeopleUnite/FreedomIs

<comment><USER2> Freedom to me means having the ability to say what I want, do what I want, eat, walk, drink what ever I want, whenever I want. It means being able to make my own decisions in life.

</comment><comment><USER3> Getting an education no matter what gender, color, or race you are.

Your video is very diverse thank you for sharing. You got our vote

</comment><comment><USER4> Being that Trevolta's HQ is in South Africa, I feel that this campaign is very well suited. Congrats South Africa!

<comment><USER4> And cool video.

</comment></comment><comment><USER5> Apparently freedom means traveling, to you? Haha pretty cool video.

<comment><AUTHOR> Having the ability to travel and experience other cultures throughout the world is very eye opening.

</comment></comment><comment><USER6> creative video! people should check this out.</comment>


Shenzhen Electrifies Entire Public Transit Bus Fleet - <AUTHOR> https://electrek.co/2017/12/28/shenzhen-electrifies-entire-public-transit-fleet-electric-buses/ <comment><USER2> Living in Shenzhen, it feels like probably 80% of the taxis are electric already. Due to government subsidy the blue electric BYD cabs are more spacious, cheaper (no 2元 fuel surcharge), newer and cleaner than the older red cabs, which are generally clunky dirty squashed VWs. However, the drivers pay more to buy them even with subsidy, and you need a conventional ICE vehicle to get out to the factories in Dongguan, or to cross the border to Hong Kong.

<comment><USER3> Shenzen / Hong Kong will be the next Silicon Valley.

<comment><USER4> Hong Kong maybe. The great firewall is really the party shooting itself in the foot.

<comment><USER5> The Chinese market is big enough to build very successful companies that never need to cross the firewall to provide their services.

<comment><USER4> The Chinese market has to deal with obnoxious barriers to starting a business and competition from government backed giants (tencent, alibaba). So long as the party shoots itself in the foot it will never replicate Silicon Valley.

<comment><USER2> Second time mainland China business founder here - foreigner. As everywhere there are barriers. However, I would say that in China it is not that hard to get going all told. While foreigners cannot really sole trade and there remain linguistic and cultural barriers, low initial capital requirements, a non- litigious environment, relatively relaxed licensing and a reasonably transparent and predictable visa system are big pluses versus the US. These days, the VC environment is also solid.

</comment></comment></comment></comment></comment></comment><comment><USER6> Why is the US not investing in these kinds of infrastructure build outs? I'm not trying to start a flame war, I'm generally curious.

I understand the path dependence that, for example, made the US adopt mobile phones much later than everybody else (a modern and high quality wire plant that wasn't yet amortized). Things like that make things like train networks hard to build too.

But bus fleets turn over relatively quickly and incrementally as well. What's the barrier? The announced deployments all seem like small beer.

<comment><USER7> The U.S. legislative system has to cater to everyone's interests. Which is not bad per se, but when it comes to something like this, new environmental laws will always hollow out an entire industry. No matter what new enforcement they try to enact, there'll always be someone powerful lobbying against it.

<comment><USER8> >>The U.S. legislative system has to cater to everyone's interests.

I'd argue that clean air and water _are_ in everyone's interest.

<comment><USER9> Maybe their actual bests interests but not what they THINK their best interests are.

<comment><USER10> Agree. Not limit to the energy policy. US politicians are more often doing serious but not quite visible damage to long term interests. Just most modern US citizen are not aware of. There are some exceptions like Taleb Nassim but the voices never go through main stream

</comment></comment></comment></comment></comment><comment><USER11> Talk about all the buses you want. What I really really want to hear about is the chargers that make it possible. Give me maximum MW rates and rates for how much each station can crank out in total.

<comment><USER12> The article says, "The city has built 8,000 charge points at 510 bus charging stations in order to be able to charge roughly half the fleet at any given time"

</comment></comment><comment><USER13> I feel like the US will continue to fall behind the curve until it's one day too late to be looked at as what other countries aspire to.

Oh, wait. No one aspires to be us anymore.

</comment><comment><USER14> Since transit buses are on fixed routes, I wonder why they didn't go with trolleybuses instead - no expensive batteries to replace (trolleybuses do have vestigial batteries, but they're much smaller and used for backup), thus better power-to-weight ratio, no need to wait for charging, and otherwise just as if not more environmentally friendly. When I was in Beijing, there were plenty of those.

(I know the ultimate source of power may be coal or oil, but it seems to me that even then, going directly from a power plant to the motor would be more efficient than an intermediate charging/discharging step.)

<comment><USER6> By trolley bus do you mean what are also called "trackless trolleys" — busses with tires but no fuel storage that get power from an overhead line?

I've presumed that the infrastructure buildout and lack of flexibility make the TCO generally not worth it. In addition, if you need a mix you may get an economy of scale on one set of gear (maintenance, parts, flexibility etc — like a single-model-of-aircraft airline).

But this is speculation on my part

<comment><USER15> Two other reasons may be aesthetics, and the environment - Beijing gets sandstorms but it doesn't get typhoons. Per CLP (just across the border in Hong Kong):

> More than 30% of CLP's transmission network consists of overhead lines. > There are more than 700 400kV transmission towers that form the backbone of > its supply system. Overhead lines are exposed and susceptible to the > influence of weather and the external environment. If a pylon is destroyed > by strong winds or collapses because of a landslip, it will take several > months to be back in order.

[https://www.clp.com.hk/en/about-clp-site/corporate- informati...](https://www.clp.com.hk/en/about-clp-site/corporate-information- site/scheme-of-control-site/Documents/4.1%20CLP%20Information%20Kit.pdf)

</comment></comment></comment><comment><USER16> The low-speed maglevs being built in China seem a little more interesting.

[https://www.yicaiglobal.com/news/construction-low-speed- magl...](https://www.yicaiglobal.com/news/construction-low-speed-maglev-train- systems-booming-china)

Getting people from point A to B faster on mass transit will get them out of cars and cabs.

<comment><USER17> The Changsha airport-train station maglev link is quite convenient, and ya, definitely saves a cab trip.

</comment></comment><comment><USER18> Denver bought a bunch of electric busses from BYD for service on the 16th street mall. My understanding is BYD offered a 12 year warranty on the batteries, in order to make the economics work.

<comment><USER19> I noticed RTD had new buses last time I was there. I recall that the original TransTeq EcoMark buses were very progressive for their time. If I remember the story correctly, RTD couldn't find a company that built the right bus for them, so they went off and more or less built their own. Then, over the next decade and a half, I began to see their distinctive low floors and warty roofs in cities and airports all over the nation.

I proud of my little city for leading the way, but I'm a little sad to see that TransTeq seems to have disappeared. For a while, it seemed like their ideas were taking over the world. But at least the technology advanced overall.

Anyway, my favorite part about the new BYD buses on the Mall is their noise. They have a speaker on the front that 'growls' so that the otherwise-quiet buses have a harder time sneaking up on pedestrians. New solutions to new problems!

<comment><USER18> Funny you should mention the noise. I took a tour of their charging facility, and the fleet manager noted the busses were originally too quiet. They went to the toy store, bought some toy trucks and rigged that growling solution from the truck noise makers.

</comment></comment></comment><comment><USER20> This is really impressive, I've been very skeptical of heavy payload capability and range for electric vehicles until now. Will be interesting to see how well they perform, how the charging infrastructure works and battery life

<comment><USER21> > very skeptical of heavy payload capability and range for electric vehicles

heavy usually means "not that fast" \- so less of the speed-squared drug (at 25miles/hour i remember some guys did double the range, like 400miles+, on a Tesla S) and also the weight of the battery becomes less of a factor on the background of the whole vehicle and cargo weight.

<comment><USER22> Two things to note about heavy vehicles.

Often the power plant size is less than you would expect. Partly because drag is proportional to frontal area and goes up with the square of the vehicle size. While load is proportional to volume, goes up with the cube. That points to passenger cars being the worst case scenario, not trucks and buses.

Second, batteries are a tech that just scales lineally. Double the capacity of a battery pack? Double the weight, volume, and cost. Consider with a bus the metric isn't battery size per bus, it's battery size per passenger.

Add for electrified heavy equipment like tractors, etc. The extra weight of the battery is a bonus not a negative. You need weight to get traction not HP.

<comment><USER12> Buses don't need huge batteries for their size. A typical city bus goes only about 100 miles a day, they do a ton of regenerative breaking, and they can charge at stops and also they tend to sit in the terminal several times a day while the driver takes a break after each circuit.

Electric trash collection trucks are even better. That's because they do so much regenerative breaking.

<comment><USER23> Regenerative braking doesn't do much for someone who already throttles properly. Garbage trucks dont have to drive in traffic. They dont get free energy for regen breaking..its just a recoup for bad driving conditions.

<comment><USER5> Were I live buses do drive in traffic.

<comment><USER23> Yes, buses do. But not garbage trucks...Please read my post again - I never referred to buses, only garbage trucks.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> They're turning up in Edinburgh too: [https://lothianbuses.co.uk/news/article/Lothian-introduce- th...](https://lothianbuses.co.uk/news/article/Lothian-introduce-the-first- all-electric-buses-to-Edinburgh)

I suspect a lot of bus services around the world with emissions targets are phasing them in right now.

</comment><comment><USER25> Is the grid in Shenzhen mostly coal-powered?

<comment><USER26> Coal provided electricity to power electric powers ends up _still_ being cleaner than ICEs, which are just about the worst in efficiency or cleanliness as you can get.

<comment><USER25> Coal releases lead, radon, and other toxic pollutants into the environment.

And you haven't supported the assertion that coal-powered EVs emit less CO2, and it contradicts what I've generally heard elsewhere.

<comment><USER27> Do the math instead of listening to people who resist change.

You are right about the extra stuff that comes with coal power, but you will find with a good modern coal plant, transmission losses, and battery/electric motor loss still puts less CO2 in the air that gasoline cars per mile travelled.

<comment><USER28> [https://www.citylab.com/environment/2015/06/where- electric-v...](https://www.citylab.com/environment/2015/06/where-electric- vehicles-actually-cause-more-pollution-than-gas-cars/397136/)

</comment></comment></comment></comment></comment><comment><USER29> That will be Tesla's next big announcement

<comment><USER30> Once they have the truck platform, won't it be easy to swap out the trailer for a passenger cabin?

<comment><USER31> I doubt it - buses typically have the driver in the same compartment as the passengers, and are much lower to the ground than the trailer.</comment></comment></comment>


Becoming a SuperLearner – An interview with DHH - <AUTHOR> http://www.becomingasuperhuman.com/david-heinemeier-hansson-interview-real-life-superlearner/ <comment><USER2> brute force learning and high context switching penalty.</comment>


Ask HN: Investing money for your children - <AUTHOR> Hi everyone,
I am completely new about investing,and I was wondering what are the best strategies for investing money for your kids (less than one year old).
How did you invested money for your kids? What are you advice on the topic and more important, what should I absolutely learn in this field?
Thank you from a super beginner!
Have a wonderful day and smile! :)
Best, Domenico <comment><USER2> If you're in the U.S., you should learn about tax-advantaged educational savings accounts, such as Coverdell accounts:

[https://www.irs.gov/taxtopics/tc310.html](https://www.irs.gov/taxtopics/tc310.html)

If you're completely new to investing in general, you should learn about basic issues of investing, such as the impact of fees on the long-term returns of investments. For example, directly opening a mutual fund account with a low- cost provider like Vanguard is usually a much better deal than going through the sales people at your local bank (who will gouge you on fees).</comment>


EFF is hiring an activist - <AUTHOR> https://www.eff.org/deeplinks/2019/02/life-eff-activist <comment><USER2> I was super interested in this until I read the interest is squarely against government surveillance without any mention of commercial surveillance. Both are really bad, but I also believe the later will always be less ethical. Any activism that doesn't fight both is dead on arrival.</comment>


Native uTorrent app for Android released - <AUTHOR> http://blog.utorrent.com/2012/09/04/its-here-announcing-the-native-%C2%B5torrent-application-for-android/

<comment><USER2> The app doesn't adhere to any of Google's design-guidelines. ICS has been out for almost a year. Why would anyone in their right mind release an application that looks and feels as though we were still in 2011?

</comment><comment><USER3> What's the difference between this and the bittorrent app?</comment>


Wikileaks: Garzón will not represent Snowden, whose "whereabouts are unknown" - brown9-2 http://wikileaks.org/Further-Statement-From-Baltasar.html <comment><AUTHOR> "...draft resolution by the Committee Legal Affairs and Human Rights of the Council of Europe Parliamentary Assembly. It states that those who disclose criminal acts in the public interest should be protected from retaliation and persecution from those who commit them.

Baltasar Garzón

Director of ILOCAD S.L. Law Firm

>...Garzón will NOT represent Snowden

?? Why not?!</comment>


React v0.13.0 Beta 1 - <AUTHOR> http://facebook.github.io/react/blog/2015/01/27/react-v0.13.0-beta-1.html

<comment><USER3> It's funny React gets bashed in this thread for pushing out createClass crutch, mixins, autobinding into userland, when usually it is being modularity shamed[0].

The change is subtle and easy to misinterpret. It's not that React drank ES6 class kool-aid and we're now gonna use inheritance over composition. (Nope[1], in fact pretty much the opposite[2].)

The real change is that React.createClass is no longer _the_ way to create components. It's just a fancy wrapper (which is not even being deprecated). You want magic, you opt-in to it.

ES6 classes are also not _the_ way to create components. As mentioned at the end of the article, you can even use ES3 module pattern:

        function MyComponent(initialProps) {
          return {
            state: { value: initialProps.initialValue },
            render: function() {
              return <span className={this.state.value} />
            }
          };
        }

React.createClass stops being special/required and becomes a (handy) utility. Can potentially be moved into a separate package.

Competition for mixin systems is now possible.

Finally, this change opens up more possibilities for potential React-like frameworks to "interpret" React components. Of course we don't do that today, but it's still a nice property and may be handy later when you decide to switch to future React-like competitor.

It's the anti-lock-in.

[0]: [http://jlongster.com/Modularity](http://jlongster.com/Modularity)

[1]: [https://github.com/facebook/react/issues/613#issuecomment-29...](https://github.com/facebook/react/issues/613#issuecomment-29280175)

[2]: [https://github.com/reactjs/react- future/blob/master/01%20-%2...](https://github.com/reactjs/react- future/blob/master/01%20-%20Core/03%20-%20Stateless%20Functions.js)

<comment><USER4> Given the ES3 style creation if components (which appears to have no "superclass"), can you also just do "class MyComponent" (no "extends React.Component"?)

<comment><USER3> I think so, but you'll probably miss `this.setState`.

They are moving out `setState` into a sideways module[1] so I assume full- featured classes without React.Component should be possible in the future.

[1]: [https://github.com/facebook/react/commit/ed7332c74921874cdcb...](https://github.com/facebook/react/commit/ed7332c74921874cdcb3cce629bb5bd8c95a7968)

<comment><USER3> Indeed, it is not necessary to inherit form React.Component, see confirmation:

[https://github.com/facebook/react/pull/2975#issuecomment-729...](https://github.com/facebook/react/pull/2975#issuecomment-72962088)

</comment></comment></comment></comment><comment><USER5> Nice! I think that if you use vanilla JS (even ES6), the class support adds more hassle than the gains it provides. For example, setting proptypes completely at the bottom of the file seems, well, cumbersome. It's a bit like putting a function signature after the function body. From that perspective, using the old React.createClass syntax seems to keep everything together a bit nicer.

However, if you want to use e.g. TypeScript with React, than this is a very big thing! Up until now, it was always a bit of a hassle, and with this change, it's completely straightforward (especially if you don't want JSX). You'll also need propTypes less because you can just use TypeScript interfaces for the `props` constructor parameter. Plus, TypeScript already has property initializers and all that, so all the other annoyances that you get when doing this with plain ES6 classes disappear with TypeScript.

I'm currently really considering porting my current project back to TypeScript for this single reason. The bad mix of TypeScript and JSX is what mostly holds me back. I'd like my view code to be somewhat understandable/hackable by designers and JSX really matters there. Any suggestions?

<comment><USER6> Similarly, I'm looking for a way to use react with HAML. I just can't give it up, I have absolutely no interest in closing my tags ever again.

One of the things I like about angular is how it deals with standard HTML. HAML doesn't care about its wacky attributes. Whats the best way to achieve this with react? Does the JSX compiler have hooks for preprocessing of any kind?

<comment><USER7> It wouldn't work with Typescript, but this is what my vanilla CoffeeScript React code looks like:

        div
          className: 'navbar-form'
          style:
            backgroundColor: "green"
          ,
          div
            className: 'btn-group'
            ,
            button
              type: 'button'
              className: 'btn btn-warning'
              onClick: @handleDecreaseWpmClick
              ,
              span
                className: 'glyphicon glyphicon-chevron-down'
            span
              className: 'btn btn-default disabled'
              ,
              "#{ @props.status.get('wpm') }"
              span
                className: 'hidden-xs'
                ,
                " wpm"
            button
              type: 'button'
              className: 'btn btn-warning'
              onClick: @handleIncreaseWpmClick
              ,
              span
                className: 'glyphicon glyphicon-chevron-up'

(For the curious, "wpm" is short for "words per minute" \- this is straight out of my code for [http://splashreaderapp.com](http://splashreaderapp.com). More code at [http://github.com/rattrayalex/splashreaderapp](http://github.com/rattrayalex/splashreaderapp))

<comment><USER8> Pretty sure you can lose all of those single line "," and make it a bit nicer.

        div
          className: 'navbar-form'
          style:
            backgroundColor: "green"
          div
            className: 'btn-group'
            button
              type: 'button'
              className: 'btn btn-warning'
              onClick: @handleDecreaseWpmClick
              span
                className: 'glyphicon glyphicon-chevron-down'
            span
              className: 'btn btn-default disabled'
              "#{ @props.status.get('wpm') }"
              span
                className: 'hidden-xs'
                " wpm"
            button
              type: 'button'
              className: 'btn btn-warning'
              onClick: @handleIncreaseWpmClick
              span
                className: 'glyphicon glyphicon-chevron-up'

</comment></comment></comment></comment><comment><USER9> I'm a bit scared of what will replace mixins.

I've worked with C++ code bases where inheritance went crazy, and also with C++ code bases where composition via components was well supported and somewhat enforced. I'd love to see ES building in some kind of default support for composition with components if mixins are out.

See also how Unity3D does it: [http://docs.unity3d.com/Manual/UsingComponents.html](http://docs.unity3d.com/Manual/UsingComponents.html)

I'm very happy to see JavaScript advancing, but I really hope we don't end up falling into the same holes other OOP languages fell into and then had to slowly educate and build themselves back out of again over the years. Frontend seems to be very good at rediscovering the old-new.

<comment><USER10> Yeah it sounds like React's Components could be similar to Unity3D's GameObjects and the replacement for mixins could be similar to Unity3D's Components.

E.g. implementation: SubComponent (or something named better), a component can add the subcomponents to itself on initialization, and the lifecycle events can be similar to the Unity3D's SendMessage, i.e. similar to mixins. I think it would work quite well!

You would need to get the child subcomponent specifically e.g. get the timer subcomponent to create a timer, but as a bonus the subcomponent would not edit the instance of the component, feels cleaner TBH. Also two subcomponents can have the same this.field or this.property, or this.func without worrying about whether it belongs to the Component, another mixin, or something else :D

</comment></comment><comment><USER3> Shameless plug: I just updated React Hot Loader 1.1.3 to work with 0.13 Beta.

[https://github.com/gaearon/react-hot- loader](https://github.com/gaearon/react-hot-loader)

</comment><comment><AUTHOR> Personally I don't see why I would go back to using classes. IMHO, classic OOP doesn't fit to modern JS. I guess it's good to have the option though.

<comment><USER7> "Modern" JS simply didn't have classes, so classic OOP couldn't fit. People still tried a million different hacky ways though (eg; `React.createClass`). I'm disappointed with the implementation in this case (no mixins??) but the idea of going to classes now that we finally can makes sense.

<comment><USER3> >I'm disappointed with the implementation in this case (no mixins??)

The point is moving mixin handling to userland (and eventually some sort of standard?), if I understand correctly. It's not really React's concern.

See also: Minimal API Surface Area [http://www.youtube.com/watch?v=4anAwXYqLG8](http://www.youtube.com/watch?v=4anAwXYqLG8)

</comment></comment></comment><comment><USER11> About mixins: the blog post mentions that "In fact, several features to support mixins were dropped from ES6 today." Does anyone know where these features were proposed/discussed/rejected?

<comment><USER12> Must be ECMA standardization meeting that is ongoing (27-29 Jan) in San Francisco. Haven't seen the meeting minutes yet though.

</comment></comment><comment> kuni-toko-tachi Excited for the release, but disappointed in the embracing of OO programming in Javascript. Object oriented programming is a poor way to express logic and gets away from the beauty of languages like Javascript (and Perl) - <USER2> composition.

I deeply regret the day when all job postings for Javascript say "Looking for an object-oriented Javascript developer", since like lemmings companies think object-oriented programming is a good thing.

<comment><USER13> All the React code I've written tends to be much more functional/declarative in nature than OO. When writing web frontend code, there is the giant blob of state known as the DOM that has to be dealt with in some way. More than anything else, React allows you to treat the view as "create a function that transforms data into DOM elements", handling the state diffs itself.

<comment> kuni-toko-tachi When MVC is expressed as a composition of functions - whose purpose is data transformation, it is an absurdly simple concept.

Only MVC described in object-oriented terms is "hard".

view(controller(model0,event0)) = representation

</comment></comment></comment><comment><USER14> I'm disappointed to see this prioritized over, say, a focus on reduced library size or simply getting to a stable 1.0 release. I'm not sure how this moves React forward, though I'm sure it's a "nice to have" for some people.

Still, perhaps we'll learn more about the roadmap and goals of the team at the React conference this week.

<comment><USER15> 1.0 implies API stability, so now is exactly the time they _should_ be prioritising things that potentially change the API going forwards.

Also, is 40kb gzipped really something to lose sleep over? Especially when the mere act of moving from old jQuery/Backbone soup to React reduces the size of my real code by a far greater amount.

<comment><USER16> I don't know React, and use and love Backbone.

It's my (perhaps flawed) understanding that React deals only with the "view" part of an app, and that you can use Backbone and React concurrently.

Could you elaborate on what you call "Backbone soup" and how React helps solve this problem?

<comment><USER15> Our experience with Backbone, was that the majority of code in your models and views is about keeping the two in sync. i.e. if a field on a model changes, how to update the element that the view controls in the most efficient possible way. We experimented with several methods of handling data-binding (two-way at the time) for us, but weren't satisfied with any of them.

I was building a particularly complicated content editor with Backbone, and was getting frustrated. So I spent the next morning learning React, then re- implemented the whole thing that afternoon. All the complexities I was grappling with disappeared. Obviously there were new challenges to replace the old ones, but we've found it's much easier for someone to pick up work on a React project than it ever was with Backbone.

To start with we were using Backbone models with React views, but now we just use a flux implementation (Fluxxor), and don't bother with much else. Our client-side JS stack is essentially React, Immutable, Fluxxor, superagent, moment and mousetrap, with only the first three being core ingredients.

<comment><USER3> This repeats my experience too. Backbone gets nasty too soon: nested entities, pagination, invalidation, caching have to be ad-hoc ugly solutions because Backbone is just too rigid where it better be flexible, and too flexible where it should have been rigid.

We gradually moved from Backbone to React+Backbone, and finally to React+Flux. It's been amazing since.

</comment></comment></comment></comment></comment><comment><USER15> As an alternative to defining propTypes and defaultProps as shown in the example, could I do something like this?

[https://gist.github.com/AndrewIngram/f0574f79fca8e13e201b](https://gist.github.com/AndrewIngram/f0574f79fca8e13e201b)

It's a similar pattern to how I got Backbone models and views converted to ES6 classes.

</comment><comment><USER17> I'm actually looking for a system that allows me to write Javascript code in the normal imperative way, and _automatically_ makes it reactive.

So, for example, calling a function f(a, b) is first done normally, and then, when e.g. "b" changes value, the function f(a, b) is re-evaluated incrementally. Note that this means that not simply f is invoked again, but that f is recursively re-evaluated.

Anybody here aware of such a system?

I know there is research in this area ([1]). I would really like to use such a system in Javascript.

[1] [http://www.umut-acar.org/publications-by-topic#TOC-Self- Adju...](http://www.umut-acar.org/publications-by-topic#TOC-Self-Adjusting- Computation)

<comment><USER18> I think what you are looking for is called auto-lifting. That is, automatically lifting functions into reactive streams.

While it sounds like an awesome idea, things get crazy really fast. It's hard to explain briefly, but make it explicit and clear to the programmer which things are reactive streams and which are simply values makes it much easier to predict what the program is doing.

<comment><USER17> In my opinion, the current way of doing things with reactive mechanisms really doesn't make it clear what the program is doing. There's lots of things happening at the same time, and also glitches can occur (variables rapidly changing after eachother), and also non-optimal efficiency (things being recomputed unnecessarily).

If my program just gets re-evaluated in an optimal way (without any other side-effects) then that would make my life much simpler.

The research I linked to already states that it can be done. So I was wondering if there are any Javascript implementations yet out there.

<comment><USER19> SAC is quite different from reactive programming in the sense that it is not, well, reactive or interactive. SAC deals with incremental recomputation on change, whereas most reactive programming systems out their don't support incremental recomputation (maybe some DOM diffing and that's about it).

Check out Adapton though, which is trying to bridge the gap.

<comment><USER17> Very interesting! Thanks.

I just hope there will be a browser-implementation soon :)

</comment></comment></comment></comment></comment><comment><USER20> Looks like they removed autobinding. When I first saw React, I thought about new JS developers maybe being led astray by React's magic handling of "this" scope. So I'm glad they removed the magic. But, doesn't this break backwards compatibility? Or does "createClass" keep autobinding while the new class model loses it?

<comment><USER10> Yep, createClass keeps autobinding

</comment></comment><comment><USER21> Hmm. Feels like big changes too early. While it is more idiomatic, i can't see any substantial gains here. Simply looks like more work to me until es7. Especially binding each method manually, That shit's wack! And im actually kinda scared to see OOP features being embraced so quickly. Hopefully a changelog could ease my mind.

<comment><USER22> I agree, I really don't like having to bind all the methods manually, and I'm not sure I agree with the argument of causing confusion. Being used to having to bind and finding out it's being done automatically in React is just a sweet surprise. And besides, I'm sure we'll only see more and more automatic binding in future projects?

<comment><USER23> Lambda expressions which capture "this" have replaced almost all the cases when I'd use .bind in the past, the only time I've needed to do something like that recently has been when attaching events to the window object which need to be detached later - and come to think of it, writing a wrapper around that which just returns an object with a .detach() method would remove that use- case too.

Something like,

        this.handler = new Handler(window, "mouseup", () => this.whatever());

        // later...
        this.handler.detach();

YMMV though.

</comment></comment></comment><comment><USER24> That coffeescript / JSX example from the blog post looks sooo sweet.

      render: ->
        div(onClick: @tick, 'Clicks: ', @state.count)

I couldn't find any transformers which support it. Is there anyone out there?

</comment><comment><USER25> Like classes matter. JS doesn't even have them, not in ES6, not in ES7. It's all just sugar for prototypal inheritance, which has nothing to do with OOP. I don't see any future for OOP in JS land. They'd be better off investing time in reducing side-effects, and the enormous size the library sports.

<comment><USER3> They're not investing in OOP in any way.

In fact, they're doing the opposite: deprecating proprietary pseudo-OOP `React.createClass` helper and let people use whatever they fancy. This makes it easier to write React components using idiomatic constructs from different languages, whether it is TypeScript, ClojureScript, CoffeeScript, or whatever. Also lets you use any mixin system, if you need it at all.

React's stance on inheritance: [https://github.com/facebook/react/issues/613#issuecomment-29...](https://github.com/facebook/react/issues/613#issuecomment-29280175)

"Minimal API surface area": [http://www.youtube.com/watch?v=4anAwXYqLG8](http://www.youtube.com/watch?v=4anAwXYqLG8)</comment></comment>


Group texting startup GroupMe raises $10.6M - <AUTHOR> http://venturebeat.com/2011/01/04/groupme-funding-seriesb/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Venturebeat+%28VentureBeat%29&utm_content=Twitter <comment><USER2> Ha! I made one of these a couple of years back and tried to sell it Vodafone. Maybe I should have applied to YC with that instead of Decal ;)</comment>


Ask HN: What would be your ideal phone (smartphone) - <AUTHOR> I'm not happy with iOS 11. Just wanted to know, what other people's ideal phone (smartphone) would look be ? right now my daily driver is an SE, really solid...fast processor, now kinda shitty OS. An ideal smartphone, would be something in an SE form-factor, with a the looks of an S8, OLED display. Also display should able to display text in eInk / ePaper form.....like maybe through dimming blue background light. I use my phone to read a lot on the subway, that's why! <comment><USER2> If the iPhone X had a fingerprint reader instead of the face scanner, or in addition to the face scanner, then I think it would be pretty good for me.

As it is, I see no reason to upgrade my iPhone 7 Plus to an iPhone 8/8 Plus or the iPhone X.

I think I can wait for a while longer.

</comment><comment><USER3> 4000 mAh battery, Dual wifi cards for wifi relay/meshnet capabilities GSM/Cell network 6MP+ Camera with 12x Optical zoom Waterproof Samsung Screen Ice dispensor

</comment><comment><AUTHOR> one plus 5t looks, good...wish it had a smaller body factor like 4"!

</comment><comment><USER4> A Nexus One with modern specs.</comment>


Code Academy as Career Game Changer - <AUTHOR> http://www.nytimes.com/2015/07/29/technology/code-academy-as-career-game-changer.html?ref=business

<comment><AUTHOR> Brace yourself boys and girls!</comment>


TrashDay: Parody or peak bubble alert? - <AUTHOR> http://blog.sfgate.com/techchron/2015/06/02/this-startup-is-so-basic-people-think-its-fake/ <comment><USER2>
        Once you sign up for the $32-$52/month service,
        the company will come assess your home's trash situation,
        *get copies of your keys*, and then show up the afternoon
        before your trash pickup to roll your cans out to the curb.

Please let this be a parody.

</comment><comment><USER3> That there is actually any confusion about this tells me shit has jumped the Sharknado and is about to hit the fan.

> if no one can tell if your startup is satire or real, either you're screwed > or we all are.

[http://sfist.com/2015/06/01/what_does_it_say_about_sf_that_n...](http://sfist.com/2015/06/01/what_does_it_say_about_sf_that_no_o.php)

</comment><comment><AUTHOR> My vote is for parody. If we find out that a service that charges in the neighborhood of $40 a month to roll out your trash cans is real, we are on official bubble alert. If we find out that they are backed by $5 million in venture funding, sell everything you own right now!</comment>


Fear of making the wrong choice, advice needed - <AUTHOR>

Hello everyone. I'll try to keep it short. After deciding to learn programming I picked Python because of the online programming classes that are available for free and because I want to start with web development.
The problem started last week in a different programming community where someone mentioned that there might not be enough job opportunities for beginners and that it's better to invest my time to PHP or C# instead.
I'll skip that this comment was accepted with positivity to a community which is strictly made to help beginners to learn programming but, he genuinely made me think: Is it a way that this will end bad? Is there a possibility that after reading and learning for huge amount of hours daily that I won't be able to offer my service to add value to a company or customers?
What makes this decision heavier is my perception that I'm not young enough to afford to make a wrong choice (I'm 30 years old) and I'm not from U.S. (which I might say the job market for Python and Ruby developers looks bigger). To add to that even more, I'm not planning to stay in my country but I'll most definitely stay in Europe.
To sum it all up, should I consider the search results from monster and other career websites, coupled with the mentioned advice given to me (and, in effect, many beginners who read that forum) as good measurement of a programming language's job prospects or is there some kind of flawed perception involved? <comment><USER2> I think you should code in a language you enjoy. If Python seems fun, then stick with Python. If you become a good programmer, you should be able to find work no matter which language you choose.

Also, it's harder to learn to program than it is to learn a language. You are currently learning to program, you will find it much easier to learn your next language (and if you stick to programming, you will learn more languages... this will just be your first).

I would stick with Python, have fun and look for jobs when you're ready. A lot of people have opinions on a lot of things, just keep going. Constantly changing won't get you anywhere.

<comment><USER3> I really agree with this. Go with the programming language that you enjoy the most.

Why? Because its going to get very hard down the road.

For me, I'm toiling on a project that is taking longer than I though. The bills are piling higher. I'm short on rent this month. I'm starting to get doubts. However, I remind myself that I would rather do this than anything else, and it helps anchor me.

If you enjoy it most of the time, you'll see it through when times get tough - and they will.

<comment><AUTHOR> Thank you for your input. Would you mind sharing your language of choice?

</comment></comment></comment><comment><USER4> I know most people would probably call this a bad advice, but if the reason you want to start to learn programming is to develop websites, PHP would be the easiest way for you to start with, and really, when PHP starts being a 'bad' language for developing websites for you, you should be able to learn and switch to other language easily. But, if you just looked at web development as a starting point and plan to dive deeper in programming, Python is a great choice. It is a language that is widely used in many fields, not to mention the community support it has..

<comment><AUTHOR> While I consider web development as my original approach to programming, I do want to get a firm grasp around deeper programming concepts. With that said, what I care about most right now is to hit 2 birds with 1 stone: Learn programming with a language that will make me employable.

<comment><USER5> As someone who originally learned to develop with PHP, then hopped around from language to language trying to find something that I could click with that also fixed all the things that were broken in PHP, I eventually landed on Python.

For what it's worth, Python is a _great_ web language, and while sure, there aren't quite as many job opportunities as you might find in PHP, I'd wager that the average pay for the Python jobs you find is higher than the average PHP programming opportunity (even wit Facebook screwing up the averages.)

It's also worth saying that there are tons of Python jobs available, just as there are plenty of big websites built in Python. Regardless, Python is a fantastic learning language, and you'll be in a much better position to learn a new language when you know more about programming in general than you are now (in my opinion).

</comment></comment></comment><comment><USER6> What I suggest you is to not learn a language, but instead learn to code. That is the hard part. Learning how to say something is easy, learning what to say, is hard. Each language has it's features, use case, pros and cons. But when you know what you want to achieve, learning a new language is something relatively easy. If you choose to learn something and stick with it you will only find the jobs for that. If you learn how to think, a language will no longer be a problem.

This is not an easy thing to do considering you are a beginner. But I strongly suggest you to go for it. Lear something from python or c# or php and then mix it. PHP is good because you can then mix it with html javascript & css to create a complete set of web skills. C# might be good to learn about classes types and other things. Each language has it perks. Learn a mindset and you will unlock them all.

I also suggest you to spend more time coding than reading books. Avoid videos, huge waste of time. Doing things, making mistakes and trying to understand how things works will teach you faster than anything.

Good luck.

<comment><AUTHOR> Thank you very much for your input. I'm definitely focused on learning the ins and outs of the fundamental programming concepts and I must say that I'm enjoying every moment of it!

</comment></comment><comment><USER7> If there is a group of companies that you would like to work for, you could learn the programming language that those companies use. That could be less risky in order to get a job with them.

Another option for getting job experience as a beginner would be to do small freelance work available from a site like freelance.com or odesk.com (or a similar European site). The barrier to entry may be lower as someone doesn't have to hire you for a full-time position to do some paid programming. You could learn a programming language that matches the needs of jobs available on those sites that you are interested in.

</comment><comment><USER8> I think if you can execute & build out your ideas - it doesn't matter what language they're written in - you have a valuable skill.

Whatever your first language is it will be the hardest, after that, the learning curve isn't as steep. Transitioning to another language is simpler because you're already familiar with the concepts.

Don't get caught up in looking over your shoulder at what else you could be learning. Get caught up in having fun, building & accomplishing something great.</comment>


Mayor Bloomberg Announces Free Public Wifi Network for 80K Harlem residents - <AUTHOR> http://www.mikebloomberg.com/index.cfm?objectid=DE284B0F-5056-9A3E-D0E634AAF48B43F2

<comment><USER2> He probably just wants to spy on them.</comment>


Ask HN: What is stopping you from becoming a freelancer? - <AUTHOR> <comment><USER2> After freelancing for 3 years, the most difficult part for me was getting paid for my work.

Communicating job requirements was not always difficult. I even enjoyed the process and the challenge. But, I learned there was no way to charge for the work I did both accurately _and_ ethically. This resulted in constantly taking one for the team and doing a ton of extra free work. That extra work also made transitions between jobs require scheduling days or weeks of _just in case_ time.

Checks arrived late about 9 out of times. 2 weeks late was the norm but up to 3 months late is what I learned to expect. There was apparently nothing I could do about this. I used a PO box to isolate issues with paper checks and communicated electronic payment info on all invoices.

I didn't like the varying levels of quality demanded and the terms of negotiating them. I really like doing great work, but almost more importantly, I _needed_ to do great work for my portfolio. I would make sacrifices for projects that would help me get more work. So, I would take the job with an agreement to do that, and later be told "we decided we just need something quick. spend as little time as possible" due surprise money/time constraints. This led to work of significantly quality lower than what was already in my portfolio, unless I did more extra free work to make it good.

</comment><comment><USER3> Clients. I do mainly backend work which ends up in house and doesn't give you much of a portfolio to show off, so its difficult to get clients without having something to show off your work. Front end stuff seems more likely to get you freelance stuff but Javascript isn't a nice ecosystem.

<comment><USER4> Don't worry so much about technologies or gaudy, showy stuff.

What are the business problems you could solve for potential clients? Make a portfolio of those.

<comment><USER5> This is good advice. Most clients don't care what you use as long as you can solve their business problems. You could use toothpicks and duct tape, and as long as their business problems get solved, they are happy.

Also, they care more about the value of the solution to them than how many hours you spend doing it. If you spend an hour doing something that increases their revenue by $500k a year, they'd generally be quite happy handing over $20k for that hour's worth of work.

You may find some that are extremely fussy and try to negotiate unrealistically low prices that would have you working for long hours. Those people do not understand the value of your work, and aren't worth working for.

Focus on what results you can achieve rather than exactly how you will achieve them. When I want my pipe leak fixed, I don't care what tools or parts the plumber uses as long as it gets fixed.

</comment></comment></comment><comment><USER6> I don't know how to estimate the length of time it takes to build a piece of software if I've never built something like it. I don't know where to learn this skill. I don't know how to go about researching where to learn this skill.

</comment><comment><USER7> I've worked as a freelancer for extended periods of time. Always get fed up with:

1\. Networking and selling myself as a freelancer. 2\. Getting paid in a timely manner.

Any marketplace I've found is a race to the bottom in terms of quality and price.

<comment><USER4> > 1\. Networking and selling myself as a freelancer.

That's the best part of it. Networking and sales done properly means giving away some value for free so potential clients consider it beneficial to work with you for additional value.

</comment></comment><comment><USER8> Don't know where to get work that's worth it and my day job keeps me comfortable. It sounds like it'd be great working on some lucrative govt contracts, though, like that one to replace CA's Social Security system?, that was so insanely overpriced people were coming out of the woodwork offering to do it for far lower prices.

</comment><comment><USER9> It seems difficult to get into unless you know the right people. All of the freelancing sites are filled with listings looking for very specific technologies. Many have ridiculously small budgets or tons of bids that are impossible to compete with.

<comment><USER4> If you don't know the right people you'll never know the right people. In other words: If you don't try to meet those people chances are you never will.

A successful freelancing career in the software industry can be built on personal expertise, effort and on gradually building up a personal network. Existing contacts certainly help but they're by no means necessary.

</comment></comment><comment><USER10> Been there before. Didn't like the part of the work commonly referred to as account management. Hated always having to be selling and closing.

</comment><comment><USER11> Health Insurance

</comment><comment><USER12> My general lack of any skill

</comment><comment><USER13> it's too much work, e.g. time spent to look for clients...

<comment><AUTHOR> Tell me more

</comment></comment><comment><USER14> General shittiness of such work</comment>


Seattle's minimum-wage increase made the most vulnerable workers poorer - <AUTHOR> https://qz.com/1014759/seattles-minimum-wage-increase-made-the-most-vulnerable-workers-poorer/ <comment><USER2> I assume it is the study referenced below, I'd wait for more peer review.

[https://www.washingtonpost.com/news/wonk/wp/2017/06/26/new-s...](https://www.washingtonpost.com/news/wonk/wp/2017/06/26/new- study-casts-doubt-on-whether-a-15-minimum-wage-really-helps-workers/)

Top comment:

>A non-peer reviewed study that left out all large employers. Seriously! I can't believe the Post did a story on this. Wait for it to actually get published, and then we can talk about how any study on employment that leaves out all the national chain stores is totally bogus. Really this is very shoddy work. I'm disappointed with the Post for highlighting it. At least wait until it got published. This is one step above click-bait.

<comment><USER3> this made the rounds yesterday.

if anyone read the paper, they subjected exclusively fast food workers, and excluded employers that have locations out of state.

now let that sink in. exclusively local fast food places.

yet lots of places were probably forced to report it. one newspaper even reported it ironically. the title had a quotation in quotes to read something like "a 'very credible' study says..." .

</comment></comment><comment><USER4> Unless the article is wrong, the authors of the study didn't actually track people that were paid low wages before and after the minimum wage increase.

Instead, they just looked at the number of hours worked for under $19/hour before and after the wage increases. Since $19 is close to the new minimum wage, it could be that the pay scales of everyone shifted up a bit, and jobs below $19 are now a lower percentage of all jobs.

Unless I'm missing something, this study is too sloppy to be newsworthy.

</comment><comment><USER5> It would be interesting to see a few other things:

1\. Even though it made some people better off, and others worse off, did it reduce the number of people who need assistance?

2\. Even if the amount of assistance is the same, if the number of people who need assistance is reduced, this would be a win.

To put it another way: if some people are not getting a living wage, and raising the minimum wage doesn't help them, then the only way to help them is direct payments (and, maybe education which has to paid for).

But if raising the minimum wage reduces the total number of these, it sort of "clarifies" who needs the help and who has skills that can be deployed.

</comment><comment><USER6> Counterpoint:

[http://www.thestranger.com/slog/2017/06/26/25238844/the- morn...](http://www.thestranger.com/slog/2017/06/26/25238844/the-morning-news- ignore-the-report-about-how-15-an-hour-is-hurting-seattles-poor-weekend-heat- breaks-records)

Michael Reich, a UC Berkeley economics professor who was lead author on the Berkeley report, said he found the UW team's report not credible for a number of reasons.

He said the UW researchers' "synthetic" Seattle model draws only from areas in Washington that are nothing like Seattle, and the report excludes multisite businesses, which employ a large percentage of Seattle's low-paid workforce. The latter fact was also problematic, he said, because that meant workers who left single-site businesses to work at multisite businesses were counted as job losses, not job gains in the UW study.

Reich also thought the $19 threshold was too low, and he said the UW researchers' report "finds an unprecedented impact of wage increases on jobs, ten times more than in hundreds of minimum wage and non-minimum wage studies. … "There is no reason," he said, that Seattle's employers of low-paid workers "should be so much more sensitive to wage increases."

</comment><comment><USER7> This is one of those topics that really shows economics being the "dismal science."

The "economics 101" ideas applied to price floors (which ie what a minimum wage is) predicts lower volume (fewer jobs/hours). It doesn't predict how much, so it still might be worth having a minimum depending on the demand curve (which is never really known). OTOH, even the biggest proponents of minimum wage would admit that at some level minimum wage makes things worse. Most would agree that a $1,000 minimum wage would cause unemployment. Still, there's no real way of determining the "correct" amount, and even proponents seldom come up with a figure.

Anyway, being the dismal science economists just don't have any good way of settling this. This isn't the first study on the topic. If you look at it from a meta-research perspective, it looks like a null result with findings on both sides.

<comment><USER8> Some quick clarification. In the US we don't have to rely as much on guess work. We have data on based on 20 years of $9-$10/hr minimum wage (in inflation adjusted dollars).

[https://en.wikipedia.org/wiki/Minimum_wage_in_the_United_Sta...](https://en.wikipedia.org/wiki/Minimum_wage_in_the_United_States#/media/File:History_of_US_federal_minimum_wage_increases.svg)

<comment><USER7> A little further down the same article is "economic effects" where they cite some studies relating to this data. Results & interpretations fall on both sides of the equation. Whatever the effect of minimum wage is, we don't know from empirical research.

</comment></comment></comment><comment><USER9> The answer is really simple -- get rid of the minimum wage entirely, let the free market determine how much someone should pay and increase the earned income tax credit amount and eligibility and make it easier for employers to distribute the credit with their employees paycheck. If that means slightly higher business taxes so be it. But, on the other hand, I'm a strong believer in "trickle up economics". If more poor people have money to spend it should help the economy.

<comment><USER10> How does your solution give poor people more money?

<comment><USER9> It gives poor people more money by a) "increasing the earned income tax credit" \- a direct benefit from the government. b) Lower minimum wage makes it cheaper to hire people than to automate. C) More money flowing through the economy increases demand. Where there is demand, people find a way to start business to increase supply.

You'll notice that's just the opposite of "supply side economics".

</comment></comment></comment><comment><USER11> Whoops: [http://www.epi.org/publication/the-high-road-seattle- labor-m...](http://www.epi.org/publication/the-high-road-seattle-labor-market- and-the-effects-of-the-minimum-wage-increase-data-limitations-and- methodological-problems-bias-new-analysis-of-seattles-minimum-wage-incr/)

Now most will latch onto the study (and their priors) and politicians will abandon any attempt to raise Minimum wage citing this and round and round we go...

</comment><comment><USER12> Better article imo [https://www.bloomberg.com/view/articles/2017-06-26/seattle-s...](https://www.bloomberg.com/view/articles/2017-06-26/seattle- s-painful-lesson-on-the-road-to-a-15-minimum-wage)

</comment><comment><USER13> I wonder how this result translates to universal basic income.</comment>


The Self-Inflicted U.S. Brain Drain - <AUTHOR> http://www.wsj.com/articles/michael-s-malone-the-self-inflicted-u-s-brain-drain-1413414239 <comment><USER2> There have been many threads about this but it is a real pain.

I was only a day aways of being forced to leave the US. I got one of the last H1B visas in 2010 before the quota was reached and my F1 expired. Now, happily I got a green card but things could have been much different...

</comment><comment><USER3> Should have a [2014] tag.</comment>


Ask HN: How do I prepare for an interview for AMZ/GOOG/APL/FB? - <AUTHOR> Hi there,
I have a CS degree and I've been working as a software dev for about 2 years now for a smaller company doing backend stuff. I want to make the switch and get a job at one of the BIG 4 tech companies (Amazon, Apple, Google or FB).
Before I start applying I want to make sure I'm ready for the technical interview since I've heard the interviews are intense and I need several months to prepare for it. I'm up for the challenge and I want to do it, but I'm not sure where to start.
Where and how should I start getting ready for a technical interview? How much time would I need to be sufficiently prepared for one?
Thanks!
EDIT: Feel free to share links to Github repos, checklists and study plans, they are very helpful too! <comment><USER3> I've worked at Microsoft, Adobe, and Twitter over the past few years. I've also received offers from (or interviewed with) Google, FB, Dropbox, Uber, etc. I would recommend:

[https://www.pramp.com](https://www.pramp.com) \- 1 hr online interviews where you interview someone and they interview you back. Go through ~20 of these to get really comfortable solving problems while talking through them. They also give you the optimal solution at the end. This will prepare you really well for the initial technical phone screenings.

[https://leetcode.com/](https://leetcode.com/) \- collection of 700+ interview coding challenges. You should be able to solve any random medium difficulty question within 15 minutes if you want a shot at the companies you listed. Keep doing a couple of these per day till you get really good.

"Elements of Programming Interviews" or "Cracking the Coding Interview" \- Read through either one of these to get an overview of the interview process and what companies expect.

Polish your resume - This is only important to get the interview. Once you are interviewing onsite the resume doesn't matter much. Here is mine to give you an example. [http://joshcockrell.com/joshua_cockrell_resume.pdf](http://joshcockrell.com/joshua_cockrell_resume.pdf) Feel free to send me yours if you want some feedback.

<comment><AUTHOR> This sounds like a great advice!

Any specific tips on getting the most out of Leetcode?

For example. Should I do the questions on paper first, then the editor? Should I have multiple solutions to each (n2 and nlogn) if it exists?

How do you guard against just memorizing the questions? I feel like if i can't do a problem and look at the solution, then going back to it later will be useless since I already have memorized the answer but not the methodology to solve it.

Thanks!

<comment><USER3> > How do you guard against just memorizing the questions?

I don't think you need to worry about this. A simple search for "binary search" shows 20 different questions. If you can't do the 1st bst problem and you look at the solution then that's okay! You have 19 more to try it on. Even if you do all 20 then come back in a month and try them again. There's no way you're going to be able to memorize that many variants. And that's just 2% of their entire set of questions.

To really answer your question, I prefer to just hit the "random problem" button and see if I can solve it in 15 minutes with an optimal solution. If I struggle, then I just go read the solution (to understand how I should have solved it) and try a couple related problems to make sure I'm not just memorizing it and I actually understand the methodology behind solving it.

Good luck!

<comment><USER4> This is how I used solutions manuals to ace calc 1 and 2 in college. I went through every problem in the book at least twice. Some people say 'don't read the solutions' but it worked for me, going back and testing myself to make sure I "got it" was the key.

</comment></comment></comment></comment><comment><USER5> I disagree with most of the advice here. There's only one thing you need to be able to do: buy the "Elements of Programming Interviews" and be able to solve any problem in it within 30 minutes. Cracking the Coding Interview's questions are way too easy. If you buy the book and study those questions you're just going to be disappointed that the questions you actually get are much harder.

</comment><comment><USER6> A couple of years ago I was in your position.

I went through the whole process with Google and Amazon, just to get rejected at the end. I prepared by cramming Cracking the code interview in 2 weeks and reading classic algorithms books; it wasn't enough to meet the bar (anecdotally I remember Google being much harder than Amazon).

Fast forward another couple of years and I got contacted by Microsoft and Amazon recruiters, went through and got offers from both companies. Recently I also got approached by a Google recruiter but I politely declined since I recently started a new position.

What changed in those couple of years?

This time around I prepared by solving problems in leetcode and other platforms a longer time. For about 2 months I spent almost all my free time writing code out of the office.

But that's only half of the story. I noticed that as you apply to more senior roles, the interviews focus more on behaviour and experience rather than hardcore programming. I would say that the weight of these factors was between 2x and 2.5x this time around.

Finally, I myself changed during that time. I adopted an 'abundance mindset', where opportunities are plentiful instead of single chances that we can't let get away. Now I see interviews as two way streets where companies need you as much as you need them. Lastly, when I go to an interview I don't see it as 'I practiced x days for this interview', but as 'I have 10 years professional experience, if that didn't prepared me for this job, no amount of cramming in a few days will'. That doesn't even touch the

So my advice is to just relax, do your best and don't get discourage if you are rejected. If your goal is to break in one of the big 4, continue accruing experience and improving yourself and try next time, it will just get better.

P.S.: In my comment I don't mention luck, but personally I think that it also plays a huge role in getting a job. One time recruiters from a company got in touch with me; two years later they wouldn't even read my CV for the same position. Get to the right position at the right time, and the right set of people can be the difference between an offer or none. It's hard to come to terms with the idea than something other than yourself can dictate your future, but the sooner you do it, it will save you a lot of grief.

<comment><AUTHOR> Right yeah, I see this preparation as longer term and not something I can do in 2 weeks. Since I already have a job I enjoy, I'm not in a time or cash crunch so I can take my time.

I hope that it takes me 3~4 months to be prepared, but I guess I never plan on stopping practicing (doing LeetCode questions for example). I realize that interviewing is a skill that needs to be kept sharp throughout ones career, so even if I get rejected on the first try, I'll keep practicing and keep applying!

Thanks for the advice!

<comment><USER7> If you don't mind me asking, if you already have a job you enjoy, what's driving you to the FAANG companies? I know there are a ton of valid answers to this question but I'm curious anyway!

<comment><AUTHOR> Don't mind it at all. I work remotely so I really enjoy my current job, but this is why I'm thinking about going for FAANG:

1) My current company is a startup so things can go sour rather quickly. I want to keep my interviewing skills sharp in case I need to switch jobs.

2) FAANG is great for a career advancement. I'll learn a ton working for the best tech companies in the world and working with extremely smart people. Interesting technical problems and also upwards mobility later on. Also applying to any other job after that will be much easier as smaller companies don't screen nearly as hard as the big ones for their software positions.

3) Great for networking. You meet tons of other smart people who know tons of other smart people. In the Bay Area when you say you've worked for Google doors open much easier and you gain other people's respect much faster.

4) Lastly, FAANG companies will pay more than what I'm currently making.

</comment></comment></comment></comment><comment><USER8> I currently work at Google and have received offers from Facebook and Amazon. I don't have a CS degree.

Interview Cake should be your first stop - the questions are the closest to what you'll actually see in a tech giant interview, so the effort to reward ratio is good.

LeetCode is your bread and butter. With any remaining time, grind these problems.

Cracking the Coding Interview is both too easy and too difficult, very few questions hit the sweet spot. Read the section on behavioral questions though. Elements of Programming Interviews is too challenging, I'd skip it.

Optimize for number of problems solved, which means coding in the site's online text editor. I wouldn't code in your own personal text editor because you do want to avoid autocomplete. If you feel like you need practice actually writing on a whiteboard, you can do that a few days before the onsite.

<comment><USER9> Hey there, Cotter from Interview Cake here. I'd love to get your permission to use a snippet of this as a testimonial on the site. Shoot me an email at email@example.com when you get a chance :)

</comment></comment><comment><USER10> Prepping for these interviews is much like studying for the SATs - it's not about measuring how smart / talented you are, but how good you are at taking these tests. I say this as a primer only because rejection sucks, but knowing that it's not a dig on you personally, that it's more of a numbers game, can help you stay positive through this whole process.

I've heard a lot of success with this method:

1\. Start with [https://www.firecode.io/](https://www.firecode.io/) \- it's a gentler intro than most of these resources.

2\. Once you can manage FireCode, move onto LeetCode as others have suggested. More specifically, the ones that have been flagged as interview problems. If you can get through the Hard ones in 30-45 min, you're good.

3\. Once you feel confident in steps 1 and 2, use [https://interviewing.io](https://interviewing.io) to take a bunch of mock interviews. The interviewers are generally from these companies, so if you do well, you'll automatically skip the phone interview and land right in the main interview space. And if you don't, no worries, you're getting practice in an interview setting, and not just in answering problems.

3b. As a supplement to #3, Google and Facebook actually hold info sessions on their interview process. My friends used those and landed at both places, respectively. They both said the info sessions were pivotal for them.

The average time my friends spent on this process was roughly 90 hours total. So if you worked on this full time for 2+ weeks, you should be prepared, or 2-3 months if you did a little bit every night while working your current job.

Best of luck!

<comment><AUTHOR> Thanks this is great advice! > The average time my friends spent on this process was roughly 90 hours total

That seems much shorter than I had expected, considering there's so many questions on Leetcode. Do you recommend focussing only on the marked interview questions on LeetCode or start at the beginning and work my way up to the hardest?

<comment><USER10> I personally go from easy to hard, but for less time focus on the marked ones

</comment></comment></comment><comment><USER11> Focusing on a limited set of resources in a way that exercises your problem- solving skills would be the key. Here is one plan:

1) Select a category such as "stacks and queues" from the Cracking coding interview (CCI) book and read all the questions. This will give you a sense of the type of questions being asked.

2) Sign up for the algorithms 1 and 2 courses ([https://www.coursera.org/learn/algorithms- part1](https://www.coursera.org/learn/algorithms-part1), [https://www.coursera.org/learn/algorithms- part2](https://www.coursera.org/learn/algorithms-part2)) in the audit mode(free). Pick the correct modules such as "stacks" and "queues" and watch all the videos.

3) Come back to the questions in the book CCI and try to solve the problems yourself. If you get stuck, look at the solutions for hints but still try to do them yourself.

4) Do the same for all major topics such as strings, linked lists, recursion etc.

Unfortunately, you are not going to remember all of you've learned. You need spaced-repetition so repeat the above method 2-3 times for each topic.

Once you have the foundation, you will be able to tackle the harder questions that you may find somewhere else or in the interview.

</comment><comment><USER12> Investigate each company individually to determine whether or not you even want to spend the time. Each one is very different with a different culture and different pros and cons. Wanting to work for one of the big 4 doesn't mean any of them.

</comment><comment><USER13> Beats me, I've been rejected by all 4, along with Microsoft and Netflix :) My only advice would be to take a refresher course on Data structures and algorithms (Coursera, et. al.,) and just practice doing programming problems. I've used Crack the Coding interview and some online coding sites (topcoder, etc.) which has definitely helped improve my interview performance. I'm a lot more confident nowadays, at least :)

</comment><comment><USER14> 10 years old but probably still worth a read:

[https://steve-yegge.blogspot.co.uk/2008/03/get-that-job- at-g...](https://steve-yegge.blogspot.co.uk/2008/03/get-that-job-at- google.html?m=1)

</comment><comment><USER15> Do a lot of practice problems. There are plenty in the book "Cracking the Coding Interview" Use the tools you'll be expected to use for an interview with one of the top 4 companies (i.e. internet text pad, pen and paper, whiteboard) Do several problems every day and you'll be ready in a few months. Make it your 9-5 and you can be ready in a few weeks.

It's all about practice! Good luck!

Also, if you can get in touch with a recruiter at those companies, they'll give you tons of helpful tips (mostly just how to practice and what to practice)

<comment><AUTHOR> Thanks! I was contacted by a recruiter couple years ago and they sent me the practice list, but it seemed super generic and intimidating so I never replied back.

I've heard really good things about CTCI so I'll pick that up. Having a Github checklist and a study plan would be super useful (I'm sure there's other people asking this question). I wonder if something like this exists already?

<comment><USER16> [https://github.com/jwasham/coding-interview- university](https://github.com/jwasham/coding-interview-university) is what you're looking for

<comment><AUTHOR> YES!

<comment><USER17> And the Parent ended up getting a job at Amazon which was a nice ending

</comment></comment></comment></comment></comment><comment><USER18> First, I don't know what attracts you to the BIG 4 tech companies and it would be nice for you to share more context and perhaps share a bigger overall picture. For example, are you excited about their backend and scalability or the amount of data they have? Do you think they can offer more money? I can share some my journey (graduated in 2012 with CS undergrad) and hopefully this can help you (or other HN readers) make better/more informed decisions. My primary motivation for picking and switching jobs is money.

To get my first job as a software dev, I prepared by doing algorithms (using cracking the coding interview book). You really don't need any other resource, I did every the problem in the book at least 5 times. The most important lesson I learned here is to constantly redo problems you struggle with until you know it like the back of your hands.

In my first job I realized that I like building tools that people use so I focused on learning front end development.

The next job was a front end developer and to prepare I just refreshed my algorithms using the same book and basic JavaScript knowledge. I negotiated hard because I had nothing to lose (the worst case scenario was sticking to my current job) and ended up with 200k total comp.

I recently interviewed for front-end roles and I've noticed a shift from algorithms to practical tasks (building x app). Out of the 9 onsites I did, I don't remember doing any complex algorithms, but instead there were alot of hands-on coding to make sure I can code up challenges on the spot. For front end engineers, I think algorithms is no longer a point of focus. I don't think there are any practice resources that focuses on front end development, but my friend is building [https://jsstation.com](https://jsstation.com) to address this.

Dropbox, Amazon, Facebook offered separate interview tracks for front-end development and generic software engineering.

I ended up receiving a few offers and I was quite surprised by the numbers. The top 3 are all between 250k - 310k total compensation packages, the lowest base among them was 180k and the highest base was 210k. I'm quite surprised at the big difference between what Glassdoor shows and what my friends and I are making, perhaps someone here could shed some light.

I think you graduated 4 years after me, I hope you find some value here. Good Luck!

<comment><USER19> Did all of these offers come from one of Seattle, SF, or NYC?

<comment><USER18> Sf

</comment></comment></comment><comment><USER20> [https://www.interviewcake.com](https://www.interviewcake.com)

I met Parker at MicroConf a couple years ago and was really impressed with Interview Cake.

I can't speak firsthand but it might be exactly what you're looking for...

</comment><comment><USER21> I received an offer from one of these companies not too long ago - here's my two cents on the subject:

• I was reached out to, rather than applying for a job. In the past I'd tried applying for jobs at some of the companies but didn't hear back - so I focused on going as far as I can without a job somewhere like this. Start a blog, create some great side projects that receive some attention, etc - <USER2> companies might start approaching you (and even if not, your resume will look more appealing, and you've grown/learnt a lot which is helpful for any job you're in).

• There's a lot of resources out there on interview type programming questions. Yeah, they're helpful, and you should do them - even if just to learn more and become a better developer. There's much more to the interviews than a binary yes/no whether you solved the question or not though: being able to share your thought process, quick thinking, showing creativity and good intuition etc are all just as important.

• Experience, great social skills, and in depth knowledge is worth more than a few days cramming for a coding interview. It shows during the interview process (especially architecture or cultural interviews). I think interviewers are looking for those things as much as they're looking for someone that's smart and can solve a few tough questions on the spot.

Summing that up - focus on being a better developer, learning more, and becoming an expert at what you do. Don't make your end goal a job at one of those companies. If you don't get a job at one straight a way, it's no big deal - who knows, in a few years you might, and if you didn't, you learnt a lot which will help you anywhere you are.

</comment><comment><USER22> Also, I highly recommend the book "Elements of Programming Interviews".

<comment><USER23> Yeah, this book is actually more helpful than CTCI

</comment></comment><comment><USER24> We need university curriculum for these. BSc/MSc in Technical Interviewing and all doors are open!

<comment><AUTHOR> To be honest this should be a required course for most CS programs!

Way more useful than other theoretical classes that were required but only probably needed in grad school.

Software engineers (myself included) have this deep resentment for technical interviews, but they are part of a software developer life and the more comfortable we get doing them, the better off we are in long term!

<comment><USER25> I disagree.

From my point of view University should be entirely about learning academic material for the sake of self improvement. To become a more enlightened and educated individual.

Having a "Technical Interview" course isn't about furthering student's knowledge, but about furthering student's future finical gains. I believe strongly that any improvement of a student's position in the labor market should be a secondary effect, and not a primary concern, of a University.

I think that if Universities start competing on student's success in the labor market post graduation then the centuries long tradition of improving student's knowledge will suffer.

<comment><USER26> You can have it both ways. Maybe you don't get college credit for learning how to interview, but a college could offer a free seminar on interviewing well in the evening or something.

Colleges very much care how well their graduates do in the workforce, as it's a key way they're measured. It's a tough balance to mix mind-expanding academia and direct preparedness though.

</comment></comment></comment></comment><comment><USER27> The same way you prepare for any job for a single specific company. Read everything the company has published so you can convince them you buy into whatever their vision is. Don't propose any ideas or theories or preferences for anything that deviates from it. Learn their every product and how they all work and discuss the details in the interview so they know you "get it" and are already familiar with everything.

Aside from this, getting accepted is merely about convincing your interviewers that you have what they're looking for. Build a rapport, be confident, don't be nervous, be funny if possible, but don't come off as arrogant or annoying. Most companies prefer experience over technical mastery, so don't focus on explaining technical details - though obviously you should fully explain it when they do get technical. Answers you give should touch on every topic that the subject would typically involve, with as little detail as possible, and if they ask more specific questions, dive into it. You have to show a broad understanding as well as minute attention to detail. While not being too serious. Don't voice any negative opinions, nor any preferences.

Obviously ambition is important to you, so definitely get some books on management and business so you can rise up in the ranks quicker. Being able to speak to the business side will endear you to managers and executives, and if you can impress them in an interview you're basically a shoe-in, because politics. Yay for big companies.

Big companies generally think all they need to do is follow trends in order to lower costs and increase productivity, so study up on every modern trend that tech companies latch on to. Big data/machine learning/automation have been in vogue for a while, as is obviously agile methods, devops processes, product lifecycles, etc.

At the end of all this you may realize, hey, this sounds like I have to support ideas or practices that I don't agree with. And that's because you're trying to work for a company, rather than trying to work for yourself. Eventually you may realize you'll be a lot happier _not_ trying to get hired by a specific company, and simply try to be hired by the people who value who you are, rather than who they want you to be.

<comment><USER28> Id also read the last annual report and any interims and also read anything about the companies and their competitors in the broadsheet newspaper you prefer - you do of course read a broadsheet newspaper?

</comment></comment><comment><USER29> Try "Cracking the Coding Interview" by Gayle Laakmann McDowell. There's some pretty good coverage of what you might find in an interview. I think what struck me is the author has worked for at least three of the companies you listed, but never seemed to stay at any of them for very long - it makes you wonder if working for the big four is really all it's cracked up to be (pardon the pun)!

Google has also created some interview videos you can pick up on YouTube. They are (obviously) staged, but are quite interesting and informative.

Good luck!

</comment><comment><USER30> There is a Discord started by a small group on Twitch who have streamed mock interviews (mostly last summer): [https://discord.gg/ndFR4RF](https://discord.gg/ndFR4RF)

Example: [https://www.youtube.com/watch?v=tdmXDjXz26c](https://www.youtube.com/watch?v=tdmXDjXz26c)

</comment><comment><USER31> From my perspective, I'd try walking before you run. You need to get the interview first.

Although you hear of Google hiring thousands of developers a year, and those that do get hired having a 5% chance of success or whatever, that doesn't mean that Google are guaranteed to offer you an interview. I've applied a handful of times, and despite having a Computer Science degree, startup, and small/large agency experience I've never managed to get past the application stage at Google or Microsoft. Microsoft and Amazon contacted me in the past, but neither actually resulted in an interview. Google rejected me within days of applying on both occasions I applied.

With that in mind I would recommend that you follow a loose curriculum, and just focus on becoming the best developer you can be. I'm currently working through John Washam's repo on getting a job at one of the big four, and it was good enough to get him through the door at Amazon.

[https://github.com/jwasham/coding-interview- university](https://github.com/jwasham/coding-interview-university)

In general I think it's a good idea to rethink what your aims as a developer are every now and then, regardless of what company you want to work for. Recently, I was a senior .NET developer at a large agency working for big-name clients, but I often felt like I wasn't a "proper developer" because I worked on the .NET stack, and because for the past few years I've felt complacent in a senior-level role. To combat this, I started learning some new languages on the side, and eventually moved to a new job where I've switched from being the go-to guy for .NET to the goes-to guy for working on a Linux stack, and I hope that over the next few years I'll pick up enough knowledge that I can throw an application in again and not get immediately rejected.

<comment><USER32> What sort of languages/stuff did you work out to move out of feeling that way with .NET? I've been working with .NET for 2ish years and have been feeling the same.

<comment><USER31> I've been lucky enough to join a company that is largely agnostic. The devs here seem to be mostly Ruby and JavaScript, but a bit of Python too. I've not done much dev yet outside of a few bug fixes, but simply being out of my element has helped considerably.

My only gripe with C# and .NET is that it's tied to Windows, a fact that immediately locks you down to a single tech stack. Sure, you could write any mainstream language on Windows, but no one does because the language and frameworks aren't optimised for Windows. You're writing code as good as what's written by others on the Linux stack, and your development environment is largely as good as what everyone else is using, but you feel isolated.

For me, it's this perception that leads people to think less of .NET at a platform. You're the guy that drove a Ford to a Volkswagen convention, and even though your car is as good (and in some ways better) than what everyone else has, you'll still feel like an imposter.

In terms of getting over that feeling, I don't think any particular language will help you get over it. My knowledge of JavaScript is alright, so I'm picking up Node/Express at the moment. For the past few months I've been working through Django too, so my ultimate aim is to be in a position where I no longer feel limited by a different language or platform.

<comment><USER32> Thanks so much for the reply!

I guess my other question would be how did you end up at your latest job?

I always find that - for non .NET jobs they are mostly looking for Sr. level folks for jobs. Any advice on transitioning?

<comment><USER31> I think it was mainly luck, because I've noticed this on both sides. Senior roles are extremely hard to fill because there aren't enough experienced developers looking for full-time roles. In the UK you often reach a certain earning threshold and your options are:

1\. Push the salary limits where you can, but accept a full-time role with limited progression, limited pay, but less stress.

2\. Be a lead developer, and ultimately move away from code and into management.

3\. Go contracting, because you'll earn 2x what you earn as a salaried employee.

Having been on the other side and having to look for a senior-level candidate to join a team, I'd say that you could probably still send a speculative application, and essentially explain that while you're not the finished article they're looking for, you're interested in the company and you're actively looking to learn. For my interviews, I essentially went in with full honesty. I said that my main experience is C#, but that I'm looking to move away from web development on the Windows stack and am looking to give something new a try to build my skills as a developer. Some companies will appreciate your honesty, and some won't, but I'd argue that the companies that are merely looking to fill a defined role won't offer you the progression you're after anyway.

It's still early days where I am at the moment, and there's every chance that things might not work out, but so far I've been enjoying being the newbie again. For me, it's been less about moving to a new stack, and more about getting over that imposter syndrome of being a one-stack man. If it all goes to shit, and I get made redundant/sacked, at the very least I can go back to my old stack, and that alone takes a good bit of stress off of me.

</comment></comment></comment></comment></comment><comment><USER33> I've passed a good few of these interviews. The other advice is good. I just wanted to add that the thing that always gets me is that by the 4th or 5th hour in the on site interview, I start getting tired and start slipping up. You don't really often get a great break in the process. The jet lag from flying to the onsite is also a killer.

</comment><comment><USER34> Facebook recruiter (and people I know who worked there) literally tell you to buy and study "cracking the coding interview." I did buy the book but I've never moved forward with the interview because I really didn't like to commute south when did it for a year and I like pairing too much.

Cracking the Coding Interview: 189 Programming Questions and Solutions

[https://www.amazon.com/dp/0984782850/ref=cm_sw_r_cp_api_OiRw...](https://www.amazon.com/dp/0984782850/ref=cm_sw_r_cp_api_OiRwAb4VD2CN0)

<comment><USER35> When I was contacted by a Google recruiter a while ago, he also sent me a PDF copy of Cracking the Coding Interview and said I should use it to prepare.

The actual questions I got at the interview were nothing like what was in the book. They weren't questions like "how does algorithm X work?" but "how would you model/implement as system that does X?".

So, shrug. My one data point says that this book is a mostly useless distraction.

</comment></comment><comment><USER36> Besides all the tips you already got I also recommend pramp, I tried it a couple months ago and had a good experience.

[https://www.pramp.com/](https://www.pramp.com/)

Besides the coding part you should also think about your non-coding interviews. There will be interviews where you'll be asked about troubleshooting and technology in general. I don't have a good source for that but you should think about that side that is just as important as your coding interviews.

</comment><comment><USER37> The Facebook interview process was a bit of a joke. Writing code without being able to evaluate and test it is for people just out of school, but that's what they gave for an editor (which didn't have emacs keybindings either IIRC, just some generic code sharing site). Sometimes people with experience do things differently and have learned to USE the computer and not do everything in their heads. Age and skillism to the extreme. I suspect they just want coder drones.

<comment><USER38> The horror of no emacs key bindings.

<comment><USER37> When it's built in your muscle memeory and you're a bit 'stressed during an interview', yes it's difficult to write code without your normal set of movement shortcuts and having to adapts to an alternate interface language.

Yes, it's annoying, especially for old timers like me that really know their tools.

</comment></comment></comment><comment><USER39> [https://github.com/jwasham/coding-interview- university](https://github.com/jwasham/coding-interview-university)

<comment><USER17> And the Parent ended up getting a job at Amazon which was a nice ending

</comment></comment><comment><USER40> [https://us.teamblind.com/article/sharing-my-offer-numbers- fr...](https://us.teamblind.com/article/sharing-my-offer-numbers-from-big- companies-for-your-reference-yNgqUPQR) provides some insights into how to go about interviewing with top tech companies, preparation, offer info etc.

</comment><comment> chris-laffra I wrote this a while back: [https://www.linkedin.com/pulse/how-prepare- technical-intervi...](https://www.linkedin.com/pulse/how-prepare-technical- interview-google-amazon-linkedin-chris-laffra/)

</comment><comment><USER41> Have a look at this [https://github.com/jwasham/coding-interview- university#algor...](https://github.com/jwasham/coding-interview- university#algorithmic-complexity--big-o--asymptotic-analysis)

</comment><comment><USER42> I failed sys design interview at FB and it doesn't look these GitHub repos about sys design helps that much. Could you tell me what book should I read to get better at it?

</comment><comment><USER43> Leetcode is the site I used.to practice coding for an interview.

</comment><comment><USER44> For my last round of interviews, I chucked Crack the coding interview and used www.leetcode.com and [http://highscalability.com/](http://highscalability.com/). Some of the better companies also have a culture-fit round, whatever that means. That's very important, so prepare for it. Google around for what sort of questions they ask.

Good luck!

<comment><AUTHOR> I have never heard of leetcode. Mind expanding more on the process? Did you just do practice problems? Is there any reading around each question? Does it offer the optimal solution etc?

<comment><USER44> > Does it offer the optimal solution etc

This is one of the drawbacks; No, it does not. The judge has a timer so you have to write code that is reasonable in runtime and space, but nothing telling you if the answer is the most optimal one possible.

IMO, the ideal way to use it is to get a subscription, and then use the best feature: sort by company. At first glance, you'll notice that facebook asks very different problems than google. Once you select a problem, try solving it, and then make sure you click through to the forums and read the highly voted discussions. In many cases, I didn't find a more optimal solution, but picked up a lot of python tricks that made the solution elegant, etc.</comment></comment></comment>


A Problem With YouTube - <AUTHOR> http://ee1997.wordpress.com/2012/05/29/a-problem-with-youtube-3/

<comment><USER2> why did you post this earlier and then resubmit?

<comment><USER3> I think the first link was a 404.

<comment><AUTHOR> yes exactly</comment></comment></comment>


Bram Cohen: Comments on Go - <AUTHOR> http://bramcohen.livejournal.com/71760.html

<comment><USER2> On topic: I find it funny that someone of Bram Cohens' standing would miss the point of fast compilation.

If you're working in plenty of other languages compile time does not go up linear with code size, but much faster.

When you start out it zips right along, but as soon as you cross that 10,000 line mark the first bits of irritation set it in, and not much later than that you can go and get a cup of coffee and drink it while your code rebuilds. For really large projects an hour isn't much at all!

Fast compile time = I won't lose my train of thought while waiting for the compiler to finish. It's a 'tool' thing, and I think that such details make for much better tools.

<comment><USER3> "Go's speed of compilation is very nice, although I'm afraid I view that not so much as a strength of Go but as an awfulness of C++."

I think his point is that Go isn't special in this regard since many languages already compile much faster than C++. For example, Delphi/Free Pascal.

<comment><USER4> Indeed. Rob Pike makes a point of the 120kloc RTL compiling in 8 seconds in his presentation video, but the Delphi RTL on my machine right here compiles in about 11 seconds, and it has over 417kloc - and much (~ 2 to 3 seconds) of that time is in linking together a runtime package, for folks who want a dynamically linked RTL, rather than statically linked.

<comment><USER5> Is that compiling after the equivalent of 'make clean'?

<comment><USER4> Doesn't really make any difference. Cleaning the RTL takes about 170ms - it's just deleting some files. Build is driven by msbuild, so there is some .NET startup cost in there too.

EDIT: Oh, you mean is it an incremental build? No. It's a full clean build, and that 11 seconds also includes preprocessing some API header files.

</comment></comment></comment></comment></comment><comment><USER6> I really wish people wouldn't include the name of the author in the title.

I think this should be banned and cleaned up by the moderators in the same way using numbers in the titles of submissions is, and the same way that moderators removed "Ohhhh snapppp" from the Go post about the author of Go!

Invariably, Paul Bucheit, Paul Graham, Bram Cohen, Guido van Rossum, Joel Spolsky, and other famous hackers get voted to the very top of the list. If these guys are great writers and great thinkers, then their articles will speak for themselves, and they usually do (but not always).

For the few people who have never heard of Bram Cohen or Joe Hewitt (currently 1 and 2 on HN), then their names are just noise. For those who have heard of them, it just biases their judgment in both clicking and voting.

In this case, Bram's blog even carries his name... so why make his name the first two words in the headline? Do we really need to make to use this kind of name-dropping to highlight content? That sounds like the opposite of content democratization to me.

<comment><AUTHOR> Nice rant, however, I submitted this using the YC bookmarklet. :) No subtle manipulation of Hacker News intended. Hopefully democracy will still be intact after this serious infraction.

<comment><USER6> I didn't mean to impugn your motives... just saying I don't think it's a good thing to do in general.

Also, I'm not familiar with the bookmarklet. Does that auto-generate the titles or something?

<comment><USER7> No, you can edit the title of the submission like for a regular submission.</comment></comment></comment></comment>


Show HN: Garden.io – Kubernetes testing environments on demand - <AUTHOR> https://garden.io <comment><USER2> How is it different from flux?

<comment><USER3> Hey, Garden co-founder here! Flux is a GitOps tool that focusses on the deployment of your services through the use of operators (usually to deploy to staging/production environments). Garden instead focuses on the cloud native testing process and spinning up production-like preview environments. We actually have a number of users that are using Garden to automate their development / PR review and Flux to deploy to staging/production. I think they complement each other quite well.</comment></comment>