Those of you making more than $150k programming for a living: how? - <AUTHOR> My impression is that most of the software engineering jobs visible "on the market" right now pay in the range of $100-150k in the US, and amounts roughly commensurate to that elsewhere.
I don't personally know anyone who makes more (or I don't know I know them; people are fairly private about their pay), but I do know that such people exist, and a lot of them are probably on HN.
I think most people accepting "market rates" are curious what it takes to go beyond. So, here's a poll.
For those of you who have a (non-founder, non-managerial) job in tech, making more than $150k just in pure base-pay:
1. How much do you make now?
2. What first pushed you into this bracket? Taking a job in a particular niche? Good negotiation when you were being hired? A raise? Threatening to quit? Something else?
3. what's your take-home pay where you live? What is it after  cost-of-living (rent+travel to work+groceries) deductions?
4. What is your nominal job title? Is that what you actually do all day?
And a last optional set, if you're not scared of inviting competition:
5. What is the industry/vertical/niche you're employed in? Or your specific employer, if you dare.
5a. How meritocratic is your niche? Are all your highly-paid coworkers highly-skilled as well, or is there no correlation?
5b. How long would it take a good programmer without previous exposure to your niche to learn what they need to know to get hired to do your job at your level? <comment><USER2> I think your spot on with the pay range for what is "visible", but that isn't the real range.

Your 2nd question has all the answers you need.

* Specialize in something, or a few closely related things. Remember that %25 of a job is the actual coding, the rest is understanding the domain your in. It is fairly easy to master something like Magento, but it will take you longer to master ecom as a whole. If you have done a few deep interrogations with payment providers, shipping (picking and packing as well as the actual shippers like ups/usps/fed ex) and most importantly accounting are the tangible skills that will let you move out side the advertised range.

* once your IN a company its hard to break out of meager cost of living increases. If you have maxed out what they are willing to give you then you need to get a new job, and that will let you push higher. If your looking and you don't NEED the job you have a strong negotiating position. Be clear, from the beginning that your making XXX dollars and what you will need from the start.

I know plenty of engineers who make more than your max, but they know the domain as well as the engineering and can speak to both as they have a high level of understanding.

<comment><AUTHOR> Oh, I know what all the advice is in the abstract. I want anecdotes, to see whether the advice people give actually matches up with the statistical reality.

For example, large raises might happen more often than people think. If the people who _do_ get raises never talk about them, for fear of their coworkers finding out about the widened pay-gap, then it would _seem_ like nobody gets big raises.

</comment></comment><comment><USER3> 1\. ~175k is base + bonus, not including retirement stuff.

2\. Combination of experience, keeping up to date on new technologies, having a good understanding of both high level functional programming techniques and low level performance.

3\. I haven't really figured it out. My cost of living is probably 5k a month but can swing wildly depending on if I take vacations, go out to eat more often, etc. I seem to save plenty though.

4\. SE

5\. Big Company

5a. Very, except you have to be somewhat pleasant to be around. Not social or gregarious necessarily, just not a jerk from what I've seen. Most people get very turned off from this. I was surprised to see how different interviews seem to go for candidates of similar technical merit but different personalities.

5b. Depends on their aptitude, how much free time they have? A few months to a couple years?

</comment><comment><USER4> 1\. ~170k (salary) + bonus + options and benefits (100% medical, 401k match)

2\. Hired at this salary. Current company doesn't negotiate salary

3\. In the US. I track every dollar spent -- it was about 75k (after taxes) in 2015. Rent is $1975/month. Groceries for 2 is about 100/week. I am remote (no travel)

4\. No titles. I spend almost all of my time programming.

5\. I am at a b2b saas startup. 1 round of VC, about 4 years old.

5a. Salary is determined by an objective formula -- everyone is assumed to be very skilled. Unskilled workers are asked to leave.

5b. The objective formula is highly correlative to years of experience -- I am in my 40's.

</comment><comment><USER5> Official App Developer wage statistics, including both mean and percentile, in the US (for 2014) can be found here: [http://www.bls.gov/oes/current/oes151132.htm](http://www.bls.gov/oes/current/oes151132.htm)

For generic Programmers, see here: [http://www.bls.gov/oes/current/oes151131.htm](http://www.bls.gov/oes/current/oes151131.htm)

TL;DR: Programmers = ($44k to $128k); App Devs = ($56k to $149k);

PS: Sorry about not answering the actual question, but I thought this would provide some background to the discussion.

</comment><comment><USER6> My base pay is currently $200K. This is not the highest base pay I know of. A friend just started at a certain company at a base of $225K.

I'm pretty senior (I'm about 50 years old). I've been doing this for ... a long time. In fact in some ways I think I'm underpaid (but there are other benefits, like stock, which help a lot). I'm very, very good at what I do. Why do I think I'm underpaid? Because products that I make bring in millions of dollars a year. Yeah, I know it doesn't quite work that way, but we devs control the means of production therefore we ought to share highly in the benefits. A topic for another time.

I live in the SF Bay Area; take home after 401k, taxes, health insurance, and other misc deductions runs around $9K/month. I put as much as possible into 401k, which I advise everyone reading this to do. I own a home, purchased a decade ago, which costs me maybe $3K a month (it's hard to estimate exactly because mortgage interest is tax deductible to an extent).

My title is something like Senior Software Engineer (but titles don't matter very much). I do mobile apps. I used to do desktop apps and server stuff but about 6 years ago, mobile seemed like a very big growth market, and I was right. Right now I work for one of the big companies, but I've gotten this pay rate or close to it at startups. There's the funny thing about startups -- they need you, but they don't want to pay what you're worth so they offer stock, but the stock is usually worthless, and then at the end of the day they really need you. So it's really about knowing yourself and your worth. In my experience, sites like glassdoor do not have accurate salary information for the top end. They are probably ok for average jobs, but at my level, they are completely off. The way you'll get the right info is by making friends with people like me and buying us a few beers... and on sites like this.

How long would it take to learn ... well, depends where you start. I'll assume nothing about you. Knowing all the fundamentals is really, really important -- data structures, algorithms, and at least a couple languages. I went to a top 10 university, but you could learn all of that stuff with a few books and some study.

Then pick some specialization. I happen to know a lot about graphics, I've done lots of UI, and so I focus on front-end stuff, and so I do mobile which is pretty specialized and very hot now. But there are plenty of other in- demand specializations that can serve you very well, so I'd advise picking something you enjoy, because you'll be doing it a lot. I learned mobile stacks by reading a lot (and it's all free, on the internet!), doing my own projects on the side, and once I knew enough, getting other people to pay me to learn more.

Then it'll take you anywhere from 1-10 years to practice that specialization enough to master it. Now, in programming, mastery doesn't necessarily mean what it does in say kung-fu. It means knowing enough of an API, and the available tools, to be really productive. It also means being able to prioritize work (e.g. use top down design) in order to deliver on time and with high quality/low defect rate.

If you were smart, learned fast, and didn't mess around too much, you could learn everything I know in a couple of years. If you did I'd be insanely jealous, but not really, I'd actually be very impressed and respectful, and I would want to hire you.

I am not scared of competition. I've worked with many really, really amazing and smart people over the years, and there is plenty of work out there. My own company is hiring, I know lots of companies are too, and it's a great time to be alive.

<comment><USER7> Thanks for sharing about you. You said you are about 50 years old. Do you not worry about ageism in Bay area ? I just turned 30 ( 4 months back ) and I feel that at some point people start seeing you differently.

Have you ever had chance to move into management role ? Did you accept ? If not, may I ask why ?

I am trying desperately to move into management role but my current company is very large and there is not much opportunity.

Any advice you could provide for this fellow developer on how do you see 25 yrs old making similar or at sometimes more than you ? How do you get younger ( or most ) people respect you ? What is your reaction when someone act like they know all world?

Thank you.

<comment><USER8> > Have you ever had chance to move into management role ? Did you accept ? If > not, may I ask why ?

I can answer that one. The answer is no for me. Many people don't know what management is. It is trying to get people to do what you want through any means at your disposal. It can be disreputable. It can involve lying to a lot of people. It can involve being exposed to crime or at least criminals. Even if you work at an above board company you have to deal with people that have all kinds of issues: alcoholism, drug use, bipolar disorder, violent tendencies, harassment. You have to fire people and try to get other people's people fired. Changing jobs is difficult and risky. Recruiters don't call you. You have to "know a guy" on your same ethical wavelength if you want a job. Worst of all developers probably are going to make more than you in terms of cash. Maybe you make it some day to an executive job, but not likely. You lose all the technical abilities you once had. You have no choice but to work for the company you probably hate, and to listen to your exec bosses yell at you 'fuck this' and 'fuck that' all day.

None of that has anything to do with creating new technology.

<comment><USER9> At a large enough company, there is an HR department, which provides all sorts of tools to help manage the issues you mention... and anyone displaying those behaviors really should be fired, because it makes the workplace unsafe for everyone else.

BTW, the best way to make it quickly to manager or executive fast is to go to a startup.

</comment></comment></comment></comment><comment><USER10> I'm not in US but Canada.(twitter @enitalp) I'm at around 110k Can without Bonuses. Working in video game industry as a Technical Architect with 20 years relevant in video game and add more than 10 elsewhere. I have the best job in the world. not ready to exchange for an IT bank job even for 300k.

<comment><USER11> Could you elaborate why you wouldn't take a 3x more pay and could still program, do whatever you like in your free time. I'm at a stage of life where I'm trying to identify "nay" sayers and "yay" sayers who would go to extreme and forge logic to either say "nay" or "yay". I just thought your answer was a bit borderline there from my perspective.

<comment><USER12> "You can spend all your time making money, or you can spend all your love making time."

Because money can be a means to an end but surely isn't an end in itself. If you don't _need_ the money and you aren't passionate about doing something there's little reason to make yourself unhappy working to get it.

</comment></comment></comment><comment><USER13> 1\. My wage is different now that I run my own companies, but the most I ever made as a developer or architect was well over $150k.

2\. What pushed me there was a combination of things:

\- I am really good at software development and architecture

\- I'm a big picture kind of person, so I've always understood the value propositions with software/tech to solve problems. Not everything is always code in the real world.

\- I'm generally pretty fun to be around. And I think this might be the most important. I'm (generally) not an asshole, nor am I an agreeable wallflower that isn't noticed. People know when I'm in a meeting, I've got valuable input, I also shut my mouth and listen. Putting your head down and toiling away silently will not get you anywhere in the big picture.

3\. I live in a Seattle suburb. Houses around here are approx $500-750k, no income tax, you can rent a 3,000 sqft house for about $1,900/mo, property taxes are pretty high. Sales tax is like 12-15% but on a a grocery bill of $100 I'll rarely have more than $2-$3 in taxes. So I would keep a pretty big portion of my paycheck if it weren't for two kids and a third on the way.

4\. The most I ever made was as a Senior Software Engineer at a consulting company as we got paid like lawyers (by the hour and profit sharing). The highest non-management title I ever had was Software Architect- which also paid north of $150k.

5\. I've spent nearly my entire career in consulting, professional services, or agencies. Meaning in my career I was primarily a gun for hire and billed out at big rates for everything from SAP implementations to The Gates Foundation website for various companies (and on my own).

5a. I think consulting and professional services are more about who likes you that determine the types of work you get, agency life is all fire drills all the time, so if you survive you're probably pretty good under pressure (maybe not the cleanest developer though). Everywhere I've been, everyone knew the standouts and the not so great devs, but I know for fact the pay of some of the standouts (especially young ones) was less than a fair number of the not so good devs. I don't think perceived skill correlates with salary nearly as much as negotiating tactics and confidence do.

5b. My niche has been problem solving. Most of the last six years has been web development, and the last three have really been about scalability- but my entire career has been listening to the customer talk and building something they're happy with.

I now run my own software consulting company, among other things, but I can say this about how I got my money working for other people: I had the confidence I was good enough to get the job done and I'd ask for as much money as possible coming in. I'd negotiate the shit out my entrance to the company. The worst they can say is no, we can't offer you that much. They won't take an offer off the table if they want you.

I graduated college to a $55k/year job. I was at $105k 28 months and two jobs later. You don't owe a company anything other than your best effort every day. If you see a better opportunity, take it. Don't be an asshole, try your best, get over your fuck ups quickly, and be honest. You'll rarely burn a bridge, people will respect you, and the money will come only if you're open to new opportunities.

<comment><USER14> Regarding your point about being "generally pretty fun to be around", does it come naturally or has it been a conscious effort? I'm still in college and have been slowly realizing the deep importance of this quality (or maybe skill?). Having met quite a few people who are, as you described, generally fun to be around, I also realized that unfortunately I'm not one of those people. Do you have any advice on getting better at that?

<comment><USER13> I'm definitely outgoing- I have no problem making myself the butt of a joke to get the laugh, but at the same time I'm not so outgoing that I'm one of those guys who could go on a trip by himself and make five new best friends. Nor would I just go to an event and meet like 10 people and go to dinner with them that night.

I'd consider myself normal outgoing and I think, at least in a work environment, it is my self confidence that alows this. I know my input won't always be right, but it will be way more often than not- even then it will probably still have value. So I throw out my ideas in meetings where it's appropriate. I iterate on others ideas with them, that type of thing.

I would ask those around me what they thought of an approach- not because I was worried mine was wrong, because maybe they'd have a fresh take and could help tweak it for the better. This warms them up to collaborate. They will likely start doing the same to you, then you'll both come to a mutual respect for where each other's strengths and weaknesses may lie, but you've formed a bond of comraderie that should keep you well regarded. It's important that most of the time when you're asking for input that you've got the problem nearly licked- no one wants to work with the guy always asking how to do his job.

Those are the main ways I've built strong relationships in the office. I say hi to people as I pass buy, grab the odd coffee with whoever, and chat about sports (I happen to root for all of the rival teams up here, so that breeds a lot of conversation).

That's it- my secret is that I just behave like an okay guy most of the time and I don't stay silent and keep my eyes to the floor.</comment></comment></comment>


Ask HN: Feedback needed for myRentr.com, a universal rental application - <AUTHOR>

Hey guys. Long time lurker and first time poster.
I currently have a San Francisco roommate matching site (think Grouper but for housing) called BunkSF.com. While working on Bunk I have noticed that people searching for housing are having to fill out multiple rental applications at $30 bucks a piece. It seemed crazy to me because each application is asking for the same info. Because of this, I created myRentr.com.
The idea of myRentr.com is like the common college application but for apartments. Users buy our application for $30 (this may change) and we do the background check, employment check and credit check. Afterwards we put all the info in a nice little document (also includes photo, social media links, and personal blurp) so the user can give the application to whoever they choose.
We have also created a Craigslist Widget, so people who have spare rooms and are posting on CL can ask that their potential applications bring a completed app. It seems crazy to me that property companies spend the time to run their tenant's credit when it would be much easier to ask the tenant to bring a completed app to the showing.
Any feedback/criticism would be wonderful! Thanks for you time <comment><USER2> This looks fantastic. I live in a duplex, and I would most definitely consider using this when my tenants move out and I have to find new ones.

How do you plan to make a good profit? It seems like you not only have to maintain a website, but also do a bunch of schlepping for each $30. So much so, that I'd happily spend $30 to avoid it.

<comment><AUTHOR> We are still tinkering with the price. As of now our cost per application are around 16 bucks...but once we hit a certain amount of orders that will be reduced to about 12 bucks. We have considered charging around 50 bucks for the product...but again, we are still tinkering.

Our product is not completely finalized but I expect it to be ready to go in a week or so. I expect the majority of our users will be small time landlords...we really think the Craigslist Widget is an amazing tool for marketing. Yes, it is a lot of work now per user but very scalable.

As of now, our main problem, like every startup, is attracting users and possibly UX.

Thanks for the feedback!! I am looking for any type of feedback I can get.

If anyone is interested in helping out or contacting me, feel free to email me: my username (samp615) then at me dot com.

<comment><USER3> Exactly what I need right now. I can't find a service that matches roommates/housemates outside of Craigslist. I just registered and completed the form. Wrt your website, it was easy to understand what you did and how I engage. I'm glad I didn't have to register anywhere.</comment></comment></comment>


Can You Use YouTube and Vimeo for Internal Videos? - <AUTHOR> https://medium.com/@circlehd/can-you-use-youtube-vimeo-for-internal-videos-3e6a12cb0855#.1vtvwabxh <comment><USER2> Don't bother reading. This is an advert [very thinly] disguised as an article.

<comment><AUTHOR> Appreciate your comment on this. I shared my perspective based on what I heard from my customers. As part of the solution, I talked about my own product. You can call that advertising but I didn't know how else to talk about the solution of those customer problems. If you have better idea, please do share.</comment></comment>


Qualcomm Insider: Apple 64-Bit Chip `Hit Us in the Gut' - <AUTHOR> http://blog.hubspot.com/uattr/qualcomm-apple-64-bit-chip-hit-us-in-gut <comment><USER2> A lot of people miss how big of an advantage Apple is continually taking by being first to market.

People try to pin their mobile success on Apple fanboys or their "magic" user experience/ecosystem but Apple is simply just x-many months ahead of everyone's product roadmap and continually throwing curveballs at the rest of the players in the market. "Real world" benchmarks aside their 64-bit CPU has everyone else distracted, rethinking their product roadmaps, and demanding it in their devices while Apple works on it's next trick.

<comment><USER3> There is no "magic" that having more computing power on a phone can enable. The vast majority of consumers are more than happy with the speed of their phone. The most impactful ways that Apple could significantly improve the iPhone right now would be to (a) double or triple the battery life, (b) make the screen unbreakable, and (c) make the screen bigger. These are the most common complaints I hear from iPhone users. Everything else really isn't that important. And I don't see any progress in any of those areas.

<comment><USER4> a - I agree, I would pay for thicker/heavier iphone with 2x battery life. However this will fracture Apple's product lineup, thus economically unfeasible.

b - screen on iphone 5S is already very strong.

c - After lots of thinking I agree with Apple. Current form factor is just right for communication device [1]. If you need bigger screen, chances are you do not want a phone - you want a tablet.

[1] Iphone user here, take this with a grain of salt. Over 3 models of iphone I never had a case. Phone is small enough for a proper grip with one hand while using thumb to control it.

Anecdotal experience: I know 12 people with phones that have large screens. 7 of them had screens cracked due to dropping the phone. Every single one has a case (People who dropped their phones got a case after). What is the point of getting super light and thin phone just to put bulky case on it?

<comment><USER5> > If you need bigger screen, chances are you do not want a phone - you want a > tablet.

This kind of remarks is really annoying because it suggests that you know better than us (the people who want larger screens) when you really don't. Either that, or you are incredibly blind to the difference between a freaking tablet (7", designed for browsing on WiFi) and a telephone with a decently sized screen (4.7 ~4.8" compared to the 4" of the iPhone - this makes a HUGE difference).

<comment><USER6> I doubt this is a case of hubris, but rather of the Pareto principle. For 80% of all users, the iPhone is either the right size or they want a tablet. What you (and others making similar comments in reply) fail to account for is that this still leaves 20% of users who actually _do_ want a bigger screen on their phone.

Yes, 20% of all users is still _a lot_ of users, but it's not the 80% that Apple has traditionally targeted.

</comment></comment></comment></comment></comment><comment><USER7> "But now Apple can also claim an advantage in raw horsepower. The new 64-bit A7 chip is the smartphone equivalent of a big V12 engine."

Except these performance gains most likely would of been seen on a 32 bit version of the chip.

It's interesting to see how much marketing is put around 32 vs 64 bit chips and the effect it has on how people market. The biggest benefit is the ability to access more than 4GB of memory. For reference, the iPhone 5S has 1GB of memory. Eliminating the need for PAE and other expensive workarounds is definitely a bug plus. i64 and cheap doubles are certainly a bonus too.

I suspect the primary reason for moving to 64 bit is not for performance gains now, but for future compatibility. Eventually, the iPhone 5S will be the oldest supported iPhone and running a 64 bit processor will reduce maintenance costs of needing to maintain a 32 and 64 bit line of software.

I think this would be a much more informative article if the author had interviewed a few experts to discuss the benefits of 64 bits over 32 bits rather than just say they go faster which at this point is debatable.

<comment><USER8> > The biggest benefit is the ability to access more than 4GB of memory. For > reference, the iPhone 5S has 1GB of memory.

No. The biggest benefit as having an addressable virtual address space which is in the tera/peta/exa byte range. Which makes a lot of things simple and efficient, even if you don't have a lot of physical memory. Read about e.g. LMDB's design or Varnish's design for good examples.

The other significant benefit is more registers.

<comment><USER7> I'm familiar with this, which is the reason I mentioned "PAE and other expensive workarounds" which allows you to break the 4GB limit.

It was badly worded on my part, I was in a hurry. :)

</comment></comment></comment><comment><USER9> I can't really say it better than Mike Ash, so:

<quote>

Conclusion The "64-bit" A7 is not just a marketing gimmic, but neither is it an amazing breakthrough that enables a new class of applications. The truth, as happens often, lies in between.

The simple fact of moving to 64-bit does little. It makes for slightly faster computations in some cases, somewhat higher memory usage for most programs, and makes certain programming techniques more viable. Overall, it's not hugely significant.

The ARM architecture changed a bunch of other things in its transition to 64-bit. An increased number of registers and a revised, streamlined instruction set make for a nice performance gain over 32-bit ARM.

Apple took advantage of the transition to make some changes of their own. The biggest change is an inline retain count, which eliminates the need to perform a costly hash table lookup for retain and release operations in the common case. Since those operations are so common in most Objective-C code, this is a big win. Per-object resource cleanup flags make object deallocation quite a bit faster in certain cases. All in all, the cost of creating and destroying an object is roughly cut in half. Tagged pointers also make for a nice performance win as well as reduced memory use.

</quote>

[https://www.mikeash.com/pyblog/friday- qa-2013-09-27-arm64-an...](https://www.mikeash.com/pyblog/friday- qa-2013-09-27-arm64-and-you.html)

Android's Java runtime is going to need a lot of work to make it pull off a runtime feat like tagged pointers.

<comment><USER10> Some JVMs already use tagged pointers for various things, often called "compressed pointers". It is of unclear utility for a language like Java and it could be easily added to ART if deemed useful.

</comment></comment><comment><USER11> Anandtech had a good overview page of what 64-bit (and more generally, Armv8) does for performance:

[http://anandtech.com/show/7335/the- iphone-5s-review/4](http://anandtech.com/show/7335/the-iphone-5s-review/4)

Basically, the new arch increased registers, increased register widths, and cleaned up some architectural warts in Arm that hurt performance.

The "4GB memory" issue is a red herring -- 64-bit is about making all the paths through the chip wider to process more per cycle.

<comment><USER12> It reminds me of AMD Athlon64 period. Everyone claimed 64bit to be responsible for everything. In fact the majority of the performance came from the improvements over the k7 architecture (like integrated memory controller, hyper transport, better prediction, improved pipelines, cache etc.), new instruction sets and so on.

</comment></comment><comment><USER13> Except that 64 bits is still nothing but a marketing gimmick as far as the memory sizes in smart phones is concerned.

All those companies are panicking, not because they are being left behind technologically, but they are being left behind in the buzzword war.

<comment><USER14> _64 bits … memory sizes_

Processor word width has absolutely nothing to do with memory size. e.g. 8-bit processors regularly interface with 16-bit-wide memory buses, and 64-bit processors often allow use of 32-bit-wide pointers.

What the word width _does_ affect is how much data can be processed by each instruction. Certain algorithms benefit immensely from this (you can easily double throughput), but the code needs to be written to take advantage of this (or at least, not to squander the advantage), and needs to be compiled to use 64-bit-wide registers.

<comment><USER15> > "Processor word width has absolutely nothing to do with memory size."

Huh? How would you address high positions on your 8Gb memory with a 32 bits pointer that will overflow after 4Gb?

<comment><USER14> If your processor _doesn 't_ have special pointer registers, you can use banked memory. (e.g. the high bits are selected on a page-by-page basis by the OS, which understands 64-bit-wide pointers.)

If the processor _does_ have special pointer registers (e.g. 6502, 6809, 8086, AVR, etc.), you use those.

</comment></comment></comment></comment><comment><USER16> How close is Google to supporting 64-bit in Android?

For Apple the story is much more than the 64-bit A7 chip, but iOS 7 and Xcode all being released with highly polished support for the A7.

</comment><comment><USER17> Prediction: Qualcomm wasn't actually ready to release an ARMv8 chip even at the end of 2014. They may try to do it _now_ , but I don't think they were planning for it. From recent news it seems they were more interested in jumping on the "8-core" bandwagon (you'd think they learned their lesson when they rushed out their first quad core chip, the S4 Pro, in order to catch-up to everyone else and also have a "quad core chip", but no, they didn't).

So how do I figure this? Because their first 64-bit chip they've just announced a few days ago (Snapdragon 410) is an ARM one! That blew my mind. Why? Because Qualcomm licenses ARM's architecture in order to build its own cores, and that _should_ mean that they are coming out with a next-gen core _faster_ than ARM's "stock cores". And yet their very first 64-bit chip is based on ARM's stock cores?

That made it pretty obvious that Qualcomm was not prepared at all to make an ARMv8 chip, and I think it was mainly laziness, because of the nice position they enjoy in the Android market right now. They thought they could squeeze 3 years out of the 32-bit Krait, when normally it should've been two.

Well the joke is on them. I certainly won't buy any phone in 2014 that isn't 64-bit, since I usually change my phones every 2-3 years, and I don't want to buy one of the _very last_ 32-bit phones.

I was actually expecting Qualcomm to release its own custom-made ARMv8 core _early 2014_ \- and on 20nm! So I can't believe Qualcomm was actually going to rest on its laurels to such degree that they weren't even planning to switch to 64-bit, and probably 20nm either, even in 2014! That's insane, and only a company that thinks it has too much monopoly power in a market would do that.

As Andy Grove used to say - stay paranoid about your competition. A paranoid company would've expected at least to _some degree_ Apple to release its first 64-bit chip this year. But they didn't even have to do that. They just had to follow the _original_ plan. The one that says release a new core every 24 months, and on a new process node (the one ARM is also following). What ever happened to that plan?

</comment><comment><USER18> While 64 bit mobile processors are certainly a significant step forward for mobile computing, at present 64 bit processors for mobile are a gimmick because it's going to be a long time before the capabilities of such a chip can be taken advantage of. All this means is that we'll be seeing phones hit the market that have 16gb plus of RAM and well, I think we are a long way off seeing phones with that much memory hit the market. We are only seeing phones with 3gb of RAM that require equally as large batteries to power them like the Samsung phones.

It took years for the PC market to transition from 32 to 64, and it'll take years for mobile to do the same. The amount of time it will take means competitors shouldn't worry because by the time 64 bit processors make sense, everyone will be manufacturing one. Sure memory addressing is just part of the picture and a 64 bit processor means data bandwidth is double that of a 32 bit chip which can be seen below 4gb of RAM, I think at present the iPhone isn't taking advantage of such improvements.

<comment><USER19> The processor, in 32bit mode, offers more on-core registers, and a beefier instruction set.

Programs compiled by a compiler aware of those distictions should significantly, measurably, perceptibly outperform those compiled for the older more constrained architectures.

</comment></comment><comment><USER20> If only Apple would give us bigger screens! I love iOS but the bigger screens of the top Android phones really have me wanting.

<comment><USER21> Please no. Some of the Android phones are so large they just look ridiculous. If a person wants a tablet, they should buy a tablet.

<comment><USER5> There's a huge difference between a tablet and a screen size larger than the iPhone's.

</comment></comment></comment><comment><USER22> I think Apple pulled a good one on Android and other mobile OSes. With Android's ecosystem being so fragmented and Windows is still trying to get a foot hold on the apps market, a push to 64bit will further fragment their ecosystem.

<comment><USER3> > With Android's ecosystem being so fragmented

Except that's just FUD: [http://www.phonearena.com/news/New-Android-and-iOS- fragmenta...](http://www.phonearena.com/news/New-Android-and-iOS- fragmentation-charts-are-just-as-flawed-as-the-term_id50332)

<comment><USER23> [http://developer.android.com/about/dashboards/index.html](http://developer.android.com/about/dashboards/index.html) shows it's not, although it's definitely improving. The best way for that to continue is not to pretend the problem doesn't exist but rather to keep reminding carriers and vendors that this is one of the reasons they're less successful than they hope.

</comment></comment></comment><comment><USER24> Can anyone explain to me why being 64 bit matters on a phone?

<comment><USER25> Often when a CPU becomes "64 bit" it's not just the memory bus that's expanded, but all the CPU registers become wider, and often more are added. For example A32 had 14 32-bit registers, whereas A64 has 31 64-bit registers. This can speed up a variety of calculations.

For example adding 64-bit numbers; finding the end of zero-terminated strings; certain hashing and encryption operations; and so on.

It's also good marketing, of course.

<comment><USER14> Yes, the importance of _more_ (and to some extent _larger_ ) registers can't be understated. If you're not paying close attention, register spills (i.e. when the compiler doesn't have enough registers so decides to stick stuff on the stack) can easily turn decently performing code into poorly performing code if the register spill happens in a tight loop.

14 registers is pretty tight. 31 registers are better, and doubling the width helps for structure locals and parameters (which Clang/LLVM fortunately does a good job of keeping in registers). (I do a lot of work on a processor 60-odd 64-bit registers, and even then GCC decides to spill registers now and then.)

</comment></comment></comment><comment><USER26> My fear is that touting a certain number of bits in the instruction set as a proxy for technological leadership will bite Apple in the ass. It's never been something they emphasized with much success -- e.g. the early PowerPC chips were arguably superior to their x86 contemporaries but it wasn't enough to compel users to switch.

And whether Apple wants to buy into the chip game, well, good luck with that.

</comment><comment><USER27> Companies like Apple and Google have significant power to direct the investment efforts of their competitors. Adopting something just to catch up with Apple is a marketing gimmick. Using that money to add more RAM or improve the integration of the software is not a gimmick and could give an edge. Just like how Microsoft got distracted by Bing whilst Google built an OS.

</comment><comment><USER28> anyone who argues that 64-bit at the mobile level is worth anything other than being a marketing gimmick is an idiot. We've had 64-bit at the desktop level for years and the large majority of desktop programs have yet to find a way to take true advantage of it.

All 64-bit does at the mobile level is introduce a ton of power loss for no real performance gain. The power usage Apple is reporting is likely due to other technological improvements that more than compensate for 64-bit's loss.

The first poster had it right. All this does is screw up the rest of the industry, make them scramble, while Apple can buy time to figure out what to do next.

Side note, Qualcomm's layoffs have little to do with their processor line...

</comment><comment> data-cat This makes me wonder when 128 bit processing will come around.

<comment><USER29> We already have 128-bit registers for vector computations (for example, the SSE registers in x86).

As for addressing 128 bits of memory: that's more than a century off even if memory continues to double every two years (which doesn't seem likely to begin with). It's actually plausible that the step to 64-bit addressing was the last one, ever.

<comment><USER30> 64-bit ARM means passing around 64-bit pointers by default.

In most code settings, this pollutes the cache (you can only hold half as many pointers), and leads to slightly weaker performance.

64-bit computing is NOT an advantage in the phone world. It is a massive advantage for database applications or large web services... but certainly not for phone apps in the near future.

<comment><USER29> I know what 64-bit computing is. And I didn't say anything about phone chips, or ARM. It seems like you're posting this rant to every subthread, regardless of content?

</comment></comment></comment></comment><comment><USER31> Ah! remind of the times, he fucked up himself. Now the baby (fakestevejobs) is on the right track. _chuckles to himself selfishly_

</comment><comment><USER32> Apple needs to capitalize on this by abandoning their current lameass numbering scheme and releasing the iPhone64 next year.

</comment><comment><USER33> > A 64-bit processor handles data in bigger chunks than 32-bit processors, so > it can get jobs done faster.

If it is faster, it's not because it 'handles data in bigger chunks'.

<comment><USER34> Well, partly it is because of that.

<comment><USER33> Explain please. Are you talking about the fact that if you are doing calculations on 64-bit operands that it might take you fewer cycles?

<comment><USER14> Yes; this is true of any vector operations in algorithms that are not constrained by memory bandwidth.

</comment></comment></comment></comment><comment><USER35> Tim Cook should do the next keynote in an invisible nano-robe.

The whole industry will be naked in a week.

<comment><USER36> To be fair, iOS is getting performance improvements from ARMv8. That leaves me with the question of whether such improvements apply to non-ObjC code and if so why the rest of the industry didn't realize that.

<comment><USER2> Objective-C has some really interested 64-bit tricks, here's a great blog post on the changes and how they affect things [https://mikeash.com/pyblog/friday- qa-2013-09-27-arm64-and-yo...](https://mikeash.com/pyblog/friday- qa-2013-09-27-arm64-and-you.html)

</comment></comment></comment><comment><USER37> Android has basically been a three legged horse in the speed/performance because of the Dalvic runtime anyway. Who cares about 32/64 bits. When Android comes out with it's new java compilation model and runtime (ART) in version 5 and claims that your phone OS and apps can now execute twice as fast, where does that leave Apple in the performance race?

All of this does not really matter anyway. iPhone has always had better performance than almost every android phone. This has not saved them from losing massive market share. The PC/Mac history is repeating with Android/IOS.

<comment><USER38> _The PC /Mac history is repeating with Android/IOS._

Exactly: Apple dominates the high end, and is at 0% of the low (some might say junk) end.

<comment><USER37> >* Apple dominates the high end, and is at 0% of the low (some might say junk) end.*

Where did you get the idea that Apple dominates at the high end? They haven't for a while now.

The Galaxy S4 was outselling the iPhone 5 all by itself for several months (before the 5s came out). The collective of high end Androids have taken over the high end market on a seemingly permanent basis. Apple is at less than 50% and is on a steady decline vs the (high end) Android collective of phones.

</comment></comment></comment><comment><USER39> "says the Qualcomm employee."

sounds legit to me.

</comment><comment><USER40> It it hit them in the gut it's because they wanted to supply the chips, and had a good thing going. 64 bit? Meh.</comment>


Drew Houston on How to Build the Future [video] - <AUTHOR> http://blog.ycombinator.com/drew-houston-on-how-to-build-the-future/ <comment><USER2> You can download the transcript here: [https://goo.gl/FZUeK3](https://goo.gl/FZUeK3)

<comment><USER3> Thank you! I have no patience for videos or podcasts.

</comment></comment><comment><USER4> Nice interview in all respects, except I think they should be much longer. My favorite podcasts are all very long and unedited. You can really get into the mind of a person after a couple hours of listening to their brain work.

Nitpick: It's annoying that people continue to cite Dropbox's HN reception as negative. It was pinned to the top for two days and got him into YC! The one or two critical comments should be viewed as (weak) attempts to debate the merits of the idea.

<comment><USER2> Thanks for your feedback! I, too, would have loved if we could have spent more time with the guests and pick their brains for longer, but scheduling was already tough as is.

We definitely did go with the informal, unedited approach; a format I also love. The majority of these interviews were done in one take and unscripted, with heavy emphasis on conversation. Hopefully that came through and didn't take away too much from the content.

Perhaps further down the road we can find a way to make longer content.</comment></comment>


Ask HN: Best way to prioritize happiness while focusing on the important things? - <AUTHOR> <comment><USER2> When asked of older, happy people, how to be happy, they say it is a choice. Your perspective is vital on being happy. Take joy in the important things. Beyond that, you have to invest in you. People tend to do best when creating something, sharing things, helping others, and socializing with other happy people. Do make time for these. Maybe you can incorporate them together.

</comment><comment><USER3> Many a time happiness comes with just doing things without bothering about outcomes. So all the important things you want to do should help you to create more such situations. Which also means when you do important things, you won't find happiness.

</comment><comment><USER4> Don't think that everything will be successful. Just accept everything that happens with gratitude. Happiness is not around you, happiness is inside you.</comment>


Computer Science Field Guide - <AUTHOR> http://www.csfieldguide.org.nz/ <comment><USER2> Project lead here: We are about to push v2.0 live, apologies if the site goes down momentarily.

The one time we try to update things quietly...

EDIT: We are going to post 2.0 tomorrow morning our time (that's about 18 hours from now), but we have setup a redirect from the old dev version that was posted to a newer student version. The dev version shows all comments/planning etc so harder to read. Though everything will look much nicer tomorrow morning with the new open source version hosted here [https://github.com/uccser/cs-field-guide](https://github.com/uccser/cs-field- guide)

<comment><USER3> Nice work!

<comment><USER2> Thanks Kinnard! We had been using the Sphinx documentation engine to produce the version linked. We have spent the last year writing our own static site generator system alongside making the whole website open source. We are very happy with the result and looking forward to supporting more languages and curriculums soon.

<comment><USER4> Did the update happen? The footer on the main page still says that it was created with Sphinx.

<comment><USER2> Hi Smoyer,

We have pushed through the update, may still be some caching issues. Try loading [http://www.csfieldguide.org.nz/](http://www.csfieldguide.org.nz/) with a clear cache (or in an incognito browser), you should see a page with an indigo background. The Sphinx version is our old website.

<comment><USER4> Thanks for the update - <shift> reload was all it took.

</comment></comment></comment></comment></comment></comment><comment><USER5> Tim Bell (who helped make this) is a great guy, he spends a lot of time getting kids interested in Computer Science, with CS Unplugged [0], as well as teaching teachers how to teach computer science to high school kids.

I'd say it's in a large part due to him that Python is becoming the de facto standard for high school programming in New Zealand.

He's also a bloody good lecturer, he teaches the intro to algorithms at Canterbury, and does heaps of physical demonstrations of how algorithms work, like using a set of scales for sorting algorithms.

[0] [http://csunplugged.org/](http://csunplugged.org/)

</comment><comment><USER6> This is great! I'm one of those self-taught programmers who holds two truths in his head at once:

1) I can learn anything I need to when the need comes up

2) With the exceptions of PLT and complexity, there are a lot of things (network protocols, compression, crypto, formal languages) that have not come up yet!

So I'm glad to see a survey of these subjects. Formal languages in particular I've felt the hole.

<comment><USER7> The chapter on formal languages is almost entirely about the mapping between regular languages and finite state automata.

While the section on grammars is yet to be written, what's there is still one of the less practically useful parts of language theory. It's nice to know how to direct-encode a regex matcher as an FSA using the program counter as the implicit state register, but it's exceedingly rare that you need that level of performance. And that's pretty much the only time you really need to know the fine details of regular language <-> FSA.

However, quite apart from working as a compiler engineer for 7 years or so, I've found formal languages come up quite a bit. Not necessarily regular languages, but ad-hoc languages and parsing issues are very common if you do much work involving data from third parties. I continually build ASTs and AST- like things to solve everything from client-side routing + module systems to ad-hoc query UIs.

</comment></comment><comment><USER8> It's not nearly as thorough as this site, but I'm reminded strongly of 'The New Turing Omnibus', which has been on the Cambridge (UK) Computer Science pre-undergrad reading list for many years: [http://blog.codinghorror.com/practicing-the-fundamentals- the...](http://blog.codinghorror.com/practicing-the-fundamentals-the-new- turing-omnibus/)

It's a great introduction to the fundamentals of many fields of CS and is accessible to all sorts of folks.

</comment><comment><USER9> Same folks did this for younger grades: [http://csunplugged.org/](http://csunplugged.org/)

</comment><comment><USER10> Student version of the guide: [http://www.csfieldguide.org.nz/](http://www.csfieldguide.org.nz/)

<comment><USER11> What is the difference? One seems to be the dev branch(?)

<comment><USER12> The "teacher" version has "for teachers" sections that contain answers to the exercises.

<comment><USER13> Exercise 1 is googling the teacher version.

</comment></comment></comment></comment><comment><USER14> "YAGNI stands for "You ain't gonna need it" and tells developers to keep things simple and only design and implement the things that you know you are really going to need. It can be tempting to think that in the future you might need feature x and so you may as well already create it now. But remember that requirements are likely to change so chances are that you won't need it after all." [0]

I work in a platform team in a large multinational and had to laugh about the XKCD. I also was a bit surprised about the one-sided view presented here to unexperienced readers who might not think ahead. I cannot count the number of times I encountered the other side of the story where each team tells me their code is special, different from everybody else. Costing the company lots of money while all they are doing is reimplementing data storage, authentication, image processing algorithms, or feature X for the 10th time. The surprise on their face when we let our generic platform component handle it for them with just a few lines of code is always priceless (usually after such a demonstration they come shopping and start "aha-ing" when we tell them that other feature they now want for free from us is too specific to have in a platform :D)

[0] [http://www.csfieldguide.org.nz/SoftwareEngineering.html#agil...](http://www.csfieldguide.org.nz/SoftwareEngineering.html#agile- software-development)

<comment><USER15> I was with you until the parenthetical remark, which seems to contradict the point. Platform software is great for getting 80% of the way there; then you can be screwed.

My last company threw away our expensive IP and tried to use off-the-shelf platform stuff. They're struggling now, with a product lacking features, performance and scalability. Funny, that's what the platform promised to deliver!

<comment><USER14> I think there is a difference between in-house developed platforms and platforms bought externally. Apart from that, if that 80% is of high quality and suits your needs doing the last 20% yourself is of course the idea. A platform can't give you 100% as it isn't tailored to your specific needs as a product. It shouldn't be in the way for the last 20% that's what a great platform should be. Kick-start you for 80% and not be in the way for the last 20%.

</comment></comment></comment><comment><USER16> For 'highschoolers'...my computer science class in high school was learning autocad :O(.

<comment><USER17> My HS CS class included learning about coaxial Ethernet cabling and dumb terminals (yes, actual amber screen Wyse terminals). I graduated high school in 2002.

<comment><USER18> My HS CS class was mainly Turbo Pascal & Borland C++ on token-ring networked DOS computers. Graduated in '02.

<comment><USER19> At least you had a programming class. The computers at my high school didn't even have a compiler.

<comment><USER17> Tell that to kids today, and they won't believe you.

<comment><USER4> Except that so many of them have phones, phablets and tablets. Then they get to school and are handed a Chromebook. No compilers in sight!

P.S. My computer science class was split between 12 "green screens" and 12 card punch machines. Yes I'm old ;)

<comment><USER20> There are, at least, things like Termux ([https://termux.com/](https://termux.com/)), on Android. Just for laughs, I've been doing actual work (using git, vim, and Go) in Termux on my Nexus 10. Only two things got in my way: screen size and the inability to have a browser and terminal on screen at once. What's particularly sweet about Termux is that it has an APT-based package manager.

Given the right tools, even something as locked down as an Android tablet can be surprisingly effective development tool.

<comment><USER21> Windows had an msdos assembler preinstalled, last time I checked, which was before vista. Now the 16bit support was removed, but edge comes with a javascript engine, right?

<comment><USER20> I'm not sure I get what that has to do with the comment I made.

<comment><USER21> With asm I referred to the OP, the javascript engine bit could relate to the chrome developer tools a chromebook should sport or to sites like jsfiddle, codepen, the msp430 challenge at microcorruption.com, etc. etc. I tried to concur with you, basically.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> Really good material here. Particularly liking the dry humou?r here:

\</comment><comment></comment><comment>-----

Programmer welfare

Software developers should not work more than 40 hours per week. If they do overtime one week they should not do more overtime the following week. This helps keep software developers happy and makes sure they don't get overworked.

</comment><comment><USER23> This is awesome! I wish I learned to code during high school. I can't imagine what level the next generation engineers/developers will be like if they start when they're teens. Limitless potential!

<comment><USER24> Many of us now in our 40s started on Commodore 64s, Atari 800s, Apple IIs and similar when we were actually preteens. I think starting relatively young is pretty normal for every generation of programmers actually.

<comment><USER25> Bit before my time, but that's probably true enough. The big difference is probably accessibility; there are so many less barriers to entry at this point, it seems like people are starting earlier than ever.

<comment><USER26> It seems that way, but it could just be increased media attention.

</comment></comment></comment></comment><comment><USER27> I took a cursory look and it seems good. I'd love it if they threw in syntax highlighting though on their example code.

</comment><comment><USER28> Great info, presented in a nice way. I could not imagine my high school self being the slight bit interested in it. I wish that wasn't the case, because I could've been Mark Zuckerberg had I been interested in CS in high school during the late 1990's/early 2000's.

</comment><comment><USER29> One feature I think this excellent resource really needs: offline mode. I'd love to have the whole guide available locally ..

<comment><USER30> There's an open source link so you can download it from there?

</comment></comment><comment><USER31> Did something go wrong? :(

The requested URL /Introduction.html was not found on this server.

<comment><USER2> New URL is: [http://www.csfieldguide.org.nz/en/chapters/introduction.html](http://www.csfieldguide.org.nz/en/chapters/introduction.html)

</comment></comment><comment><USER32> Url changed from [http://www.cosc.canterbury.ac.nz/csfieldguide/dev/dev/index....](http://www.cosc.canterbury.ac.nz/csfieldguide/dev/dev/index.html), which redirects to this.

<comment><USER2> Hi Dang, I'm Jack (Project lead on CSFG) see my earlier comment about updating to 2.0 today. We wanted to switch the traffic to the latest version of the guide instead of the old one linked. All you are missing out on seeing is all the broken sections :)

<comment><USER32> No problem, but is the URL correct now? If not, let us know at firstname.lastname@example.com and we'll change it for you.

<comment><USER2> All sorted now! Cheers!

</comment></comment></comment></comment><comment><USER33> Where is my boi reversing and exploiting?

</comment><comment><USER34> I love the concept and the goal, but the irony was too much. Right in the introduction, where it is talking about how speed (as an example of program quality) impacts usability, the little calculator widgets don't work for me (iPad mini, 1st gen, with up-to-date iOS, stock Safari). Maybe it is my hardware or my OS, or my browser, but I'm just a dumb user, so I don't know or care. But maybe they just tried to be too fancy and shot themselves in the foot. Or maybe I should just follow their advice and download Chrome. Yeah, I'm sure the answer is to add another browser to my device and let Alphabet spy on me too (bad enough Apple does it, why give them an advantage).

Or maybe "stop breaking the Internet" is just the new "get off my lawn."</comment>


Windows Implementation Libraries: type-safe C++ interfaces for Windows patterns - <AUTHOR> https://github.com/Microsoft/wil <comment><USER2> Here's what I don't get.

Microsoft has been shipping a C++ compiler for decades, and for the most part it is the preferred language for Windows development even today.

Moreover, there have been PLENTY of libraries designed to make it easier, like MFC, ATL, etc.

Why didn't this already exist?!

Like I realize some of it is modern C++ and maybe Microsoft was not focusing on desktop when C++ had these innovations. But why not smart pointers for handles, error handling macros, etc. Crazy.

Lateness aside, I still occasionally do write win32 stuff, usually to extend/compliment/hack upon existing win32 stuff. So this is probably going to become a goto library now, if its as good as it sounds.

<comment><USER3> Well, this has existed, but it's been internal to Microsoft (perhaps only internal to the windows team? That's the only place I've seen it). It's just taken a while to slowly open source more and more internal tools

<comment><USER4> > Windows Template Library (WTL) is a free software, object-oriented C++ > template library for Win32 development. WTL was created by Microsoft > employee Nenad Stefanovic for internal use and later released as an > unsupported add-on to Visual Studio and the Win32 Framework SDK. It was > developed primarily as a light-weight alternative to the Microsoft > Foundation Classes and builds upon Microsoft's ATL, another lightweight API > widely used to create COM and ActiveX libraries.

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

<comment><USER5> Not the same thing

</comment></comment></comment></comment><comment><USER6> Also check out C++/WinRT - a _pure_ C++17 library facade over WinRT/UWP API's. [https://docs.microsoft.com/en-us/windows/uwp/cpp-and- winrt-a...](https://docs.microsoft.com/en-us/windows/uwp/cpp-and-winrt- apis/intro-to-using-cpp-with-winrt)

<comment><USER7> WinRT + coroutines makes modern Windows programming _amazing_ to write and read, and efficient to run. This plus the xlang (compiler? toolset?) system, all open-sourced, shows how Microsoft has hedged against whichever platform will win the next round. Kenny Kerr deserves much credit for pushing all of C++ forward with these concepts.

</comment></comment><comment><USER8> Oh wow, this is exactly what I've always wanted in my many many years of developing Windows software in C++.

Despite a million fancy new API layers in newer versions of Windows, Win32 is very much not dead, but it's still a C interface with a lot of clunky and inconsistent nonsense. This looks like the ideal modern C++ wrapper for all that.

<comment><USER9> It looks pretty usable indeed, I just wish they had insludes std::error_code implementations for everything. Last time I checked, getting proper error_codes (i.e. which can be compared against standard categories and which have good error description strings) for everything in the API was still some manual work.

<comment><USER10> It's not too hard. Just write a simple wrapper around FormatMessage:

      DWORD errorCode = GetLastError();

      DWORD dwFlg = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |    FORMAT_MESSAGE_IGNORE_INSERTS;
      LPTSTR lpMsgBuf = NULL;
      FormatMessageA(dwFlg, 0, errorCode, 0, (LPTSTR)&lpMsgBuf, 0, NULL);

      // Error message is in lpMsgBuf so make sure to free afterwards.
      LocalFree(lpMsgBuf);

<comment><USER11> It's even easier since the MSVC STL std::error_code (std::system_category) already does that.

</comment></comment></comment></comment><comment><USER12> This is quite nice! I like the error handler monitor thing. Also quite amazing that they placed whole platform-independent (sort of) thread local storage implementation there.

</comment><comment><USER13> > If you are doing any non-trivial work, also be sure to have a recent version > of Clang installed.

Nice to see Clang being put to good use on Windows.

<comment><USER14> But why do you need two compilers?

<comment><USER15> Microsoft tried to lock developers in with MSVC, but it didn't work. Now we have to wait for it to die, so that we can use Clang instead.</comment></comment></comment>


AI protein-folding algorithms solve structures faster than ever - <AUTHOR> https://www.nature.com/articles/d41586-019-01357-6 <comment><USER2> Feynman's quote comes to mind:

"Nature isn't classical, dammit, and if you want to make a simulation of nature, you'd better make it quantum mechanical, and by golly it's a wonderful problem, because it doesn't look so easy."[0]

I wonder if we'll ever be able to truly simulate protein folding using the techniques available to us now, or whether there are aspects of that process that are just so inherently quantum mechanical that we need qubits instead of bits to get to where we need to be.

[0] [https://www.nature.com/articles/nphys2258](https://www.nature.com/articles/nphys2258)

<comment><USER3> you dont need qubits to simulate proteins even if they require QM. Also, most people generally believe that to predict protein folds can be done just fine with classic force field approximations, and the data seems to support that.</comment></comment>


Electrons can travel in groups of 2 or more at a time in 1D conducting systems - <AUTHOR> http://science.sciencemag.org/content/367/6479/769.abstract <comment><USER2> Adjacent reading: [https://en.m.wikipedia.org/wiki/Cooper_pair](https://en.m.wikipedia.org/wiki/Cooper_pair)

</comment><comment><USER3> I'm trying to imagine what a 1D conductor looks like. just an atom? They call it a waveguide in the abstract.

<comment><USER4> 1D is a line or vector, I believe. A waveguide for atoms would probably still be considered 1D I guess.

<comment><USER3> that sounds better. I thought a point was 1D, a line was 2D thinking of a plot with X and Y axis, and a surface was 3D - but a totally flat surface would be 2D, and a totally straight line i guess is 1D. a point must be 0D.

<comment><USER5> Yeah, in this case dimensionality would refer to degrees of freedom, not the cardinality of the space.

</comment></comment></comment></comment><comment><USER6> What does that mean for the uninitiated?

<comment><USER7> I guess that by itself, it doesn't mean much of anything. It is a very unusual setup on quantum mechanics, that will certainly lead to unusual properties, but that is a large "more research needed" situation.

If this leads to superconductors (a big if), those would be very high temperature ones.

It may also lead to some interesting magnets, maybe even useful as computers.</comment></comment>


Is there still any reason to learn AWK? - <AUTHOR> http://stackoverflow.com/q/107603/334816 <comment><USER2> Like the sibling post to this I also have a bioinformatics background and awk is one of the most important tools in my toolkit. It is just so extremely fast. A few years ago I was laughing about a friend that did a lot of simple data transformation in awk and told him to save his time use python instead. He challenged me to do the same task in python. It took me longer to write and it was magnitudes slower. That was eye opening.

It is useful to be aware about the different awk implementations. For example mawk. That awk version is stupidly fast. GNU awk is already extremely fast, but if I work on a > 200gb file, I just prefix the m and the task will be done even faster. It however does not have all the features of gawk. The differences in regex support are the most painful.

A very useful feature of the GNU version of awk is the debugger. Super useful to be able to step line wise through a awk script.

If I ever have too much time I would like to take a look at that experimental llvm-awk (lawk) someone started and get it production ready. Sadly is seems abandoned currently.

</comment><comment><USER3> In bioinformatics, awk is such a wonderfully useful tool - most of the data in read alignments/genomics is either in tab delimited format or is easily converted from there (via bedtools, samtools, bamtools etc.), so that it's easy to get relevant stats via a quick chain that ends in awk.

There's even a fork of awk called bioawk which adds a few commonly needed functions (treat common bioinformatics files as tab delimited files etc.).

The recent bioinformatics book Bioinformatics Data Skills from Vince Buffalo has a whole chapter on using awk in bioinformatics. Since reading it I've gone from writing 10, 20 line python helper scripts that calculate stats for the publication to just using one line in awk. (Downside: a 20 line python helper script is still in the folder next week and is at least a little bit reproducible, simpler awk stuff disappears in the history if you're not careful)

tl;dr: in bioinformatics it's a boon.</comment>


Dropbox (YC 07) announces mobile API (and apps for iPad, Android) - <AUTHOR> http://blog.dropbox.com/?p=492

<comment><USER2> Just downloaded the Android app and I'm reminded of why I like Dropbox to begin with. It's simple, straight-forward, and does what I want it to. This app is no exception.

<comment><USER3> How do I put all the photos on my droid in my dropbox? That should be simple, but I can't figure it out.

</comment></comment><comment><USER4> I'm still looking forward to a non-mobile API, but I'm doing my best with the CLI. Here's an email I got last night from a user of <http://ourdoings.com/>

That was trivial to set up (I already had dropbox, which is partly why I chose to use it to upload the latest set of photos). Your directions were easy to follow, and the email confirmation came within minutes.

I dropped the photos into the shared folder, went to dinner, and when I came back, everything was transferred over.

thanks,

TJ

</comment><comment><USER5> Great product and at the moment all the rage with the lecturers at my university (small university in Germany). I guess it's the file format agnosticism, the flexibility and the ease of use. Also a good way for them to exploit students and get their 250MB :)

(You would really think university IT could provide their own solutions but they just can't compete. We use Dropbox, Google Docs, Wave and Doodle all the time. And Gmail, so as to not be limited to 200MB.)

<comment><USER6> Do you really expected university IT to provide comparable solutions? Even the biggest university IT department is providing the stuff to maybe 50k people, and as long as it more-or-less gets the job done, they keep their jobs and don't really care that it's not spectacular.

Dropbox is providing the service to 5M people, and the whole business is built on it being spectacular. The economies of scale mean that they can afford to make tiny improvements, and they have serious incentives to make it as great as possible; otherwise, they go out of business. (In fact, otherwise, they would have gone out of business long before they made it to 5M users.)

Good OSS can fix this to an extent--if someone started a really good host- your-own Dropbox project, every university could use it, getting you similar scale when it comes to coding it, so people would contribute from all over to make it great, and the IT at each individual university would just have to deploy it and update it as it improves.

<comment><USER7> I'm sorry that you go to such a crappy university then.

Where I study, IT staff try to be use- and helpful, and not just to keep their jobs.

<comment><USER6> I'm just saying that to make something as seamless and all-around good as Dropbox takes some serious work. Not only do IT people have little incentive to reach that level of perfection, they often aren't really coders and wouldn't be able to get a budget through that gave them enough man-hours to have time to make something like Dropbox. It's not worth it to the university, in general, to pay the full development cost of an extremely well-done implementation of a complex, nonessential system. The economies of scale aren't there.

And I'm still a few months away from college. It looks like Stanford has some pretty good systems overall, but just as a datapoint, the design of Axess (the system that appears to handle pretty much everything--course signup, financial aid, etc) is much uglier (and a little harder to use) than any commercial site I use. It gets the job done, it probably dates back to when all sites looked like that, and the people in charge of it don't have enough incentive to give it a facelift.

<comment><USER5> My university has kick ass WiFi (Damn you WiFi and the constant distraction you provide!), you can use a VPN client to get access to, e.g., free papers anywhere in the world, the mail account is a bit low on space but works like a charm and you never have to fool around with writing anything on dead tree at some fixed location in space because you can do pretty much everything online. And the IT department tries really hard to make it possible for you to access all that stuff no matter which software or hardware you are using (that's in contrast to what might be the case in some corporate environments).

I can't complain but it's probably also true that something like powerful tools for seamless online collaboration is outside the scope of university IT departments.

(The university actually uses moodle which would offer some useful functionality but not even the lecturers like it. Asked whether we should use moodle to upload our stuff: _disgusted-look_ "Uhm, it would be nice if we could use Dropbox, that's a pretty cool service. Do you know it?" :)

<comment><USER8> Ah the joy of Moodle... I haven't met one person who likes it (although I've seen much worse systems - WebCT anyone?) It's amazing that people still want to install it for anything serious. Although maybe there no alternatives feature-wise?

</comment></comment></comment></comment></comment></comment><comment><USER9> The only problem I'm having so far with the Android app (on 2.1/Nexus One) is that whenever you view a picture in the Dropbox app it gets added to your Android gallery. The other way around would be OK, but this way just clutters up the phone gallery.

</comment><comment><USER10> Anyone know what the API looks like? The documentation for it is behind the invite-wall, I'm guessing.

</comment><comment><USER11> It makes me happy to see how much success Dropbox is having. It's a great product.

</comment><comment><USER12> Yeah these guys are top notch. Excellent product, and now this smart move to further fill the storage void for mobile. Good work DropBox!

</comment><comment><USER13> Won't be surprised when these guys get bought out. Fantastic product, implemented way better than anything any of the major players have.

</comment><comment><USER14> Of _course_. Earlier today I go to Android Market, thinking "gee, the Dropbox app ought to be out by now, right?". It was not, so I downloaded some 3rd party thing.

Drive home, fire up HackerNews, and look what I see...

Ah well. As if I can really act like I'm mad for having another reason to twiddle around on my phone.

</comment><comment><USER15> iPad App works great and integrated extraordinarily well with the service. No limitations as far as I can see.

<comment><USER16> I especially am looking forward to use files stored on my DropBox in other Apps (Like Air Sharing or Goodreader).

It's a nice way to get around the clumsy synchronization via iTunes.

</comment></comment><comment><USER17> Created an mp3 hosting/sharing website using this new Dropbox API: <http://boomp3.com>

</comment><comment><USER18> Excellent, was waiting for dropbox to give my ipad a cloud filesystem! I'll probably pay for it now.</comment>


How Y'all, Youse and You Guys Talk - <AUTHOR> http://www.nytimes.com/interactive/2013/12/20/sunday-review/dialect-quiz-map.html

<comment><USER2> TIL: The Australian accent is apparently most similar to the American mid- Atlantic.

</comment><comment><USER3> It picked 3 cities each about 50 miles apart that triangulated where I grew up. I guess some things follow us around in our life's travels.</comment>


Airbnb to purge illegal hotels from San Francisco listings - <AUTHOR> http://www.sfgate.com/business/article/Airbnb-to-purge-illegal-hotels-from-San-Francisco-7223613.php <comment><USER2> I think it's incredibly ironic that San Francisco, the source of so much innovation lately, also seems to hate letting the free market just work. If people want to rent out their place, just let them. Economic freedom used to be a liberal value, didn't it?

<comment><USER3> You believe its "ironic" that a group of people whos foundation is "liberty and equality" don't want to "just let free markets work"?

Seems like a bit of a stretch...

</comment></comment><comment><USER4> Let me get this right, to subvert the system, all that's required is not to put the listings under in there own accounts going forward and not use a name that Airbnb had seen before; am I missing something?

<comment><USER5> Hasn't that always been true? A company has to enforce the system in order to remove itself from liability from the enforcement of the rules, it does that by following the strict letter of the law. I don't believe the San Francisco laws put any burden on AirBnB to investigate each of its hosts to verify they are not false fronts protecting the same entity. Once an entity has done that, AirBnb is not liable for them breaking the law (no doubt they require the hosts to sign an affidavit that they are complying with the existing laws)

Ideally Airbnb will be good citizens and monitor things like multiple hosts having the same mailing address or telephone number, that is something all businesses should do. But you can't burden them with the investigative requirement to identify people who are willfully acting as bad actors.

<comment><USER6> > Ideally Airbnb will be good citizens and monitor things like multiple hosts > having the same mailing address or telephone number, that is something all > businesses should do.

Why should that be suspicious? It's conceivable that someone would run a rental management business with multiple clients that would each list the management company as their mailing address and contact number.

It also doesn't seem like it would do much good, since it's a simple matter to get arbitrarily many different phone numbers or PO box numbers (or PO box equivalents that don't parse as PO boxes if PO boxes aren't allowed).

</comment></comment></comment><comment><USER7> This whole controversy is all over "500 listings" !?!?

What if the city just allowed people to build 500 more homes?

<comment><USER8> But then Tim Redmond might have his view of the Bay obstructed, and his personal view of the Bay is a "public resource!" OFF THE GENTRY etc etc</comment></comment>


Towards a Safer Footgun - <AUTHOR> https://codahale.com/towards-a-safer-footgun/ <comment><USER2> It's too bad IETF didn't at least specify a standard way to use XChacha20/XSalsa20 with Poly1305 for AEAD. As it is you have to rely on all implementations to: 1\. Split the nonce and counter the same way. libsodium uses a 64-bit nonce, 32-bit counter and 32-bit wasted zero bytes for IETF compatibility ;). (You could also say it's a 64-bit counter that never counts past 2^32-1).

2\. Feed the AEAD into Poly1305 in the same way. IIRC libsodium hashes everything in this order:

      AEAD padded with zeros, so length will be a multiple of 16
      message padded with zeros in the same way
      AEAD length
      message length

This is the same as the scheme IETF defined for ChaCha20Poly1305, but it's not defined in any standard XChacha20Poly1305, so nobody can guarantee that the library you're using will do the same (if it supports XChaCha20 at all).

</comment><comment><USER3> Article doesn't mention that with AES-GCM-SIV you lose indistinguishability - an attacker observing encrypted messages passing by can see when two copies of the same message are sent, since they will use the same IV. This might not matter for some cases, but could be a big deal for others.

<comment><USER4> Yes, but _only_ when nonces are reused. In this way, it's at least strictly better than AES-GCM which fails catastrophically.

I'm not positive, but I think the GHASH authenticator used might even allow key recovery in this scenario.

<comment><USER2> Yes. If nonce reuse is expected and distinguishable messages are considered to be a problem, then you really need a larger nonce. AES-GCM-SIV was designed to be nonce misuse resistant while still supporting short nonces. That's why Coda Hale called it a safer footgun. It's much safer, but still a footgun.

An AEAD construction based on XChaCha20/XSalsa20-Poly1305 will solve this problem, as would be deriving a per-message key from your master key + a random salt. I'm not an expert, but this seems to me like a safer method if you want to positively eliminate the possibility of nonce reuse, and don't care about the extra overhead from larger nonces and lack of standardization.

<comment><USER4> Nonce reuse is only expected in the sense that cryptographers have begun to accept that developers will always find a way to misuse primitives. That's why these are called "nonce _misuse_ -resistant" ciphers.

Cryptographers are not encouraging people to use this type of cipher where nonce reuse is expected. Nonce reuse should never be expected, and always be avoided. But people being people will wrongly use these constructions, so we do our best to try and limit the worst downsides of the footgun.

XChaCha20-Poly1305 will not solve this problem, as you seemt o believe. It is _more_ of a footgun, in that it too catastrophically fails under nonce reuse. Yes, it's less likely to suffer reuse in the first place due to a larger nonce size, but that ignores the context driving the creation of SIV schemes: developers who choose nonces poorly, not developers who encrypt too many messages given the likelihood of collision of a random nonce.

</comment></comment></comment></comment><comment><USER5> If we had access to a time machine, would we want to suggest to the IETF standards-makers that they specify a longer nonce than 96 bits?

<comment><USER6> You'll need a time machine that can go back to the AES selection process to ask for a larger block size than 128 bits and/or faster key schedule. 96 bit nonce is so short because in counter mode you encrypt 128-bit block representing the nonce+counter and XOR the result with the message. In IETF/NIST standards, the block is split into 96 bits of nonce and 32 bits of counter, thus with one nonce you can generate up to 2^32 blocks of key stream without repeating it. Some other standards split 128-bits into 64-bit nonce and 64-bit counter. As you can see, there's not much you can do to make it larger.

Salsa20/ChaCha is built with a 512-bit permutation (with initial word additions at the end to make it into PRF), which processes 256-bit key, 128-bit nonce+block counter and 128-bit constant. Similar situation here: we can split 128-bit nonce/counter into 64-bit nonce and 64-bit block counter (original DJB version) or 96-bit nonce and 32-bit block counter (IETF version, used in TLS). However, since there's no key schedule — key bytes are directly fed into the permutation, it's not expensive to change key for each message, unlike with AES that has to run key schedule for every key change. This neat property is what allows XSalsa20 (Salsa20 with 192-bit "expanded" nonce), to be quite inexpensive: basically it "hashes" 128 bits of the expanded nonce and original key with the same permutation, truncating it, into a new key, and then uses this new key along with the other 64 bits of the expanded nonce with Salsa20.</comment></comment>


Heroku 2X Dynos: Resize your dynos with twice the resources (private beta) - <AUTHOR> https://devcenter.heroku.com/articles/dyno-size

<comment><USER2> From the bottom of the email Heroku sent out about this feature:

</comment><comment></comment><comment></comment><comment>===

CONFIDENTIALITY NOTICE:

All information provided through the Heroku beta program is confidential, and should be treated as such until publicly announced by Heroku.

</comment><comment></comment><comment></comment><comment>===

ಠ_ಠ

<comment><USER3> Came here to say this -- I got that email too.

Seriously, what a dick move.

<comment><AUTHOR> Sorry -- didn't notice that (it's on Heroku's public website).

<comment><USER4> Which I would say qualifies as "publicly announced." Could be that this email has actually been floating around a little until now.

<comment><USER2> It was sent literally a couple hours ago. Also: "This article is a work in progress, or documents a feature that is not yet released to all users. This article is unlisted. Only those with the link can access it."

<comment><USER5> "Only those with the link can access it" seems to show a basic misunderstanding about how the web works...

</comment></comment></comment></comment></comment></comment><comment><USER6> Good idea.

That said, I think Heroku is leaving some money on the table by not offering a 1 Dino paid for plan, the only difference being that it would not get unloaded if no requests were received for a while. Nothing serious can be run on a 1 Dino free plan (and maybe that is by design) because of the loading request times after an app,is unloaded. I have several small projects that I would run on a $15-$20/month plan.

Actually, I think it would be a good idea for them to scuttle the free plans altogether.

<comment><USER7> I don't really consider this an issue. If you really _need_ an app with a single dyno and no idling, you could always use the Heroku scheduler addon, and tell it to ping your web app once every 10 minutes.

With the amount of free hours you get per month, per app, that would still allow you to run your dyno uninterrupted for no extra cost.

<comment><USER6> I know about the ping option but that seems to me to be cheating when using a free service. I like to pay for exactly what I use, and I am rethinking free services in general on the web. Anyway, thanks for your comment.

</comment></comment></comment><comment><USER7> As a long time Heroku user and fan, this is a great thing.

Although I find the normal dynos to be really sufficient for my own work, I can imagine that having twice the power of a normal dyno would be a huge asset for many users, particularly those users who need to do memory intensive tasks (queue processors come to mind).

This is a really huge win for all Heroku users, and I'm looking forward to their continued innovation :)

Great job, guys!

</comment><comment><USER8> Typo: "log- runtime-metrics Labs flag" but the flag is log-runtime-metrics (no space) <https://devcenter.heroku.com/articles/log-runtime-metrics>

</comment><comment><USER9> From the docs it appears to be just 2x memory, not 2x cpu as well?

<comment><USER10> That's my understanding... it's still worth upgrading though, at least if you're using New Relic. Should cut the New Relic costs in half.</comment></comment>


WebSharper 3.0-alpha under Apache license - <AUTHOR> https://groups.google.com/forum/#!topic/fsharp-opensource/4gS-qoZ2Z1g

<comment><USER2> Great news! WebSharper is fantastic for developing integrated server and web- client systems from a single F# codebase. Hopefully under the Apache 2 license both development and uptake may increase.

Have been very impressed with the UI.Next client-side framework that was previously in beta.</comment>


Alphabet's Loon deploys internet connectivity balloons to Kenya - <AUTHOR> https://techcrunch.com/2020/04/21/alphabets-loon-deploys-internet-connectivity-balloons-to-kenya-for-first-commercial-service-launch/ <comment><AUTHOR> The interesting part mentioned about the deployment of the balloons:

> The Loon balloons actually have quite the journey to make to get to the area > it will service in Kenya, taking off from either Puerto Rico or Nevada, as > Loon CTO Sal Candido explains in a Medium post. From there, they navigate on > air currents to make their way to their target destination, using "the > fastest route that drifting on the stratospheric winds allow," to traverse > upwards of 6,800 miles through a somewhat circuitous route, which is > determined by Loon's automated navigation software.

The link of the blog post by Loon's CTO which shows a map of the balloon travel from Puerto Rico to Kenya for the deployment: [https://medium.com/loon- for-all/take-me-to-kenya-23221c3f80d](https://medium.com/loon-for-all/take-me- to-kenya-23221c3f80d)</comment>


Prevent IPv6 Leaks with Your VPN - <AUTHOR> https://scottyscripts.com/2019/04/21/prevent-ipv6-leaks-with-your-vpn.html <comment><USER2> OpenBSD's iked daemon does this by default. Whenever an IPv4 flow is established unencrypted IPv6 traffic is blocked. See the -6 option to iked, which disables this behavior, at [https://man.openbsd.org/iked](https://man.openbsd.org/iked)

OTOH, it took several hours of banging my head against the wall to understand why IPv6 stopped working after IPSec tunnels came up.</comment>


Apple's Tim Cook Explains Beats Deal in Interview - <AUTHOR> http://recode.net/2014/05/28/tim-cook-explains-why-apple-is-buying-beats-qa/ <comment><USER2> So he is basically saying this is an acquihire and they don't really care about the Beats brand at all?</comment>


Ask HN: How do I find a freelance graphic designer? - <AUTHOR> Hi HN,
I'm currently in the very first stages of founding my company, and I need some graphic design work done.
If you google for "how to find a freelance graphic designer", the results are either all noise from freelancer.com/99design style shops, or blog posts from designers complaining about the former.
A little math suggest the expected value of entering a design contest is sub $10, so I can see why designers may have a gripe.
Then occasionally I stumble across a blog of a freelancer, but the art work doesn't fit the style I'm looking for.
Ideally I'd find someone to work with longer term.
Is there some aggregator of designer portfolios somewhere?
Thanks. <comment><USER2> Dribble

[https://dribbble.com/](https://dribbble.com/)

Behance

[https://www.behance.net/](https://www.behance.net/)

<comment><AUTHOR> Thank you, behance was exactly the type of thing I was looking for

</comment></comment><comment><USER3> There are usually designers on [https://news.ycombinator.com/item?id=15384263](https://news.ycombinator.com/item?id=15384263)

</comment><comment><USER4> HI, we are marketing and branding agency based in New York City skilled at graphic design. We have worked with Heroin Bikes, BAM Music, ARTYA, Frojo, Axielles and Cramberry and others. Contact me @BeesHustleBrian on Twitter if you want to schedule a chat.</comment>


Seedcamp Tel Aviv Winners - <AUTHOR> http://blog.seedcamp.com/2009/02/mini-seedcamp-tel-aviv-winners.html

<comment><USER2> There is so much tech work going on in Herzliya!

I lived there 15 years ago, and was amazed by all the big companies going in. It's good to see that it's becoming a respectable startup town. It's such a great city - good food, nice beaches, near enough to Tel Aviv to be able to say there's good night life as well.

</comment><comment><AUTHOR> basically:

* Clear Applications - <https://www.clrapps.com/> \- Job evulation (bad timing?)

* Devunity - <http://www.devunity.com> \- Collaborative Tool

* Similar Web - <http://www.similarweb.com> \- No explanation, just a firefox extension.</comment>


Ask HN: Which tech/startup related book you wish existed? - <AUTHOR>

Is there any technology/startup related book/tutorials you wish existed. Tell us here and may be someone among us can find time to write it.
Here are some of my wishes :
1. A book on single page web application development that teaches it through an example project. I would prefer it to do so using python/flask based REST API for backend and HTML5/CSS3/jQuery/Angular.js for frontend.
2. Books that explains popular open source products/platforms in detail from a developer/contributor perspective. For example, I would like to have a book that can get me started on firefox/gtk/linux/etc.
3. A book that teaches you how to develop your own framework. <comment><USER2> I would love the 1st one!

</comment><comment><USER3> My head hurts when I read "REST" and "single page web application" in the same sentence.</comment>


United States v. Google Inc. and ITA Software, Inc. - <AUTHOR> http://www.justice.gov/atr/cases/google.html

<comment><USER2> Fascinating. If you read the stipulation, you find out that these legal notices can now be served (itself a legal concept) via email to the principal parties.

</comment><comment><USER3> I thought the justice dept approved it with conditions? See, for example [http://www.google.com/hostednews/afp/article/ALeqM5gxkMxcbM-...](http://www.google.com/hostednews/afp/article/ALeqM5gxkMxcbM- SIyRY9LObDEF4tTgFjQ?docId=CNG.089cd5d5dc7c45baf62971692489ae8d.f1)

Edit: I see now that this is just the actual conditions. Not as interesting as I thought it was going to be

<comment><USER4> I believe the way they enforce those conditions is to file a lawsuit to block the merger as it was (without conditions), then also file a proposed settlement that's agreed to by both the Justice dept and Google/ITA, that contains the conditions.

I suppose it's possible for the court to reject the settlement, but it seems incredibly unlikely.

<comment><USER5> > _I believe the way they enforce those conditions is to file a lawsuit_

Yes, that's what happened.

> _I suppose it's possible for the court to reject the settlement_

I know I've heard of it happening.

</comment></comment></comment><comment><USER6> tl;dr -- can someone summarize it?

<comment><USER7> The Justice Department is suing Google and ITA to block the merger by requesting that the court determine that it violates the Clayton Act.

The claim is that ITA's QPX product is the most advanced and successful of all the available P&S systems (airfare pricing and shopping systems). There are 4 other competitors, including Expedia (which doesn't license their software).

QPX is used by competitors to Google, such as Microsoft.

If Google were to acquire ITA, Google would have an incentive to block access to QPX from competitors, and thus exercise an unfair advantage over the competition.

<comment><USER8> _If Google were to acquire ITA, Google would have an incentive to block access to QPX from competitors, and thus exercise an unfair advantage over the competition._

So anti-trust cases can be filed for even _potentially_ monopolistic behaviour? Seems a little like pre-crime to me. Or does "prevention is better than cure" come up trumps here?

<comment><USER9> IN a way you're right. I assume it's because once a monopoly exists or once antitrust practices occur, the damage is irreversible. A company wiped out because of some other company's illegal actions can never return to its "former glory".

Also, it's a "reasonable probability" that the illegal actions would occur and that's enough in this context.

That's my guess anyway.</comment></comment></comment></comment>


Ask HN: Code reviews instead of whiteboard for interviews - <AUTHOR> I initially started writing this as an Ask HN but it exceeded the 2000 word limit so posted it on Medium here:
https://medium.com/@lonetwin/code-reviews-instead-of-whiteboard-for-interviews-e0b66f8db71b
Would love to hear thoughts on this from the excellent folk here. <comment><USER2> I've had an interview where the interviewer showed me a poorly-written flask app and asked me to code review it with him. I felt that it was a pretty good interview.

I've also had one where I wrote a thing ahead of time and then code reviewed it with them. I also thought it was a good experience and I got a sense of how it would be like to work with them.

I suspect that trying to do it for an actual piece of production code would require too much context.

</comment><comment><USER3> I've recently started giving a code review interview.

I show them a toy example involving a few classes and a some tests and ask them to review it in terms of correctness, maintainability, testability, etc.

Once they've identified some problem areas, I then have them edit the code and ask them to make the changes they suggested.

I think it's been working well since there have been examples of people doing well on algorithms questions, but not noticing a single problem with lots of bad code.

I think the question works better for more experienced candidates.

</comment><comment><USER4> > The colleague I mentioned earlier was new to the company and among other > things that we spoke about, we seemed to disagree on whether or not it is a > good idea to introduce new patterns/paradigms into existing codebase. I am > of the opinion that code should appear as though written by a single author > even if it has been worked on by different people. His was that introducing > newer patterns improves the quality of the code. While I agreed to an extent > with him, I would vote against this if it violates the principle of least > surprise[1].

Regarding that point, I disagree with you as well. To totally abstain from new patterns / paradigms make it easier for a codebase to become completely legacy to the point of needing a full rewrite. And full rewrites never happen [1]. In general, I favor reducing tech debt with gradual adaptation of new patterns supported by good unit tests and high test coverage for codebases in ongoing projects. Admittedly I have no idea the functionality or role of the specific codebase you're referring to, but that is my general philosophy.

[1]: "Things You Should Never Do, Part I" by Joel Spolsky [http://www.joelonsoftware.com/articles/fog0000000069.html](http://www.joelonsoftware.com/articles/fog0000000069.html)

</comment><comment><USER5> When requested to code on a language I have not used in a while, I have to go back and code on it for a while before getting back on the "zone" (quickly remembering libraries, usages etc). In comparison, I think I could quickly be ready to go through a code review on any language I ever been proficient.. probably because It does not requires you to remember minutia?

</comment><comment><USER4> I like code reviews or practice tasks like "add feature x to this codebase" because of the focus on modifying an existing system vs building a tiny one from scratch. That's a much more realistic representation of daily developer work.

</comment><comment><USER6> I like the idea, but I would add that it doesn't need to be done during an interview.

I think it would be better if we let the candidate check out the code and review it from home, maybe write out a longer and more detailed review of the code, including the good and the bad, not just the problems.

It would be great from the candidates point of view as well. Usually you don't get a real indication of the companies code practices until you start. In fact, before starting a new job I think you should be able to review the companies code base.

</comment><comment><USER7> Code reviews during an interview sounds like it would give good insights to me but why not do both? People are way too melodramatic about having to write code during interviews.

<comment><USER8> I'm happy to write code on a computer. Whiteboarding is a cultural artifact.

<comment><USER9> It depends. If they expect psudocode then I have no problem with that (just writing down the steps of the solution). If they expect doing some 100% implementation of a large project in Java, I'd say no thanks.</comment></comment></comment>