USPS sells nearly $20B worth of money orders a year - <AUTHOR> https://www.federalreserve.gov/paymentsystems/check_postalmosprocqtr.htm <comment><USER2> In the US, it was possible to do banking at the Post Office until the 1960s. Given the crappy reputation of the 'Payday Lending' type services, there've been many suggestions in recent years to make it possible to bank at Post Offices again.

This would end one part of the deliberate gutting of public services (and the sorry outcomes which usually result). And it would give the PO another source of revenue for services ... which in my estimation would a terrific thing. Once the USPO is gone, watch out.

ADDED: According to Bloomberg (in 2013), "Banks have shut 1,826 branches since late 2008, and 93 percent of closings were in postal codes where the household income is below the national median, according to census and federal banking data compiled by Bloomberg." [https://www.bloomberg.com/news/articles/2013-05-02/post- cras...](https://www.bloomberg.com/news/articles/2013-05-02/post-crash-branch- closings-hit-hardest-in-poor-u-s-areas)

<comment><USER3> Many branchless banks have partnered with AusPost to allow banking at any AusPost branch (of which there are many). And all for free! You can deposit, withdraw (within limits) send money, exchange currency, pay bills, etc. The US banking system seems so far behind, and for one of the world's largest economies it's laughable.

<comment><USER2> Many events in the US since 1980 are certainly laughable from a foreign perspective, and to many of us, more than painful from a native one. But watch as the pendulum swings.

(I'm not in a position to understand what 'all for free' means, but I've learned to be skeptical about that assertion. 'Until when?' for example.)

<comment><USER3> I agree that "until when" is usually a good caveat to keep in mind, but in this case branchless banks basically have to offer free services somehow, since banks with branches don't charge for any of those things. So in order to incentivise people to join, offering an alternative way to bank that is not any more expensive is a must. This is especially true for elderly people that prefer to bank in person. I never go into a bank unless I want to withdraw or deposit large amounts of cash, and prefer to hand cash over to a human than trusting an ATM not to stuff something up.

</comment></comment></comment></comment><comment><USER4> One of the most annoying things is that some US government agencies still require payment via money order. For example, we were not able to get our daughter's birth certificate without paying via MO. That turned out to be the most inconvenient $20 I've ever scrounged up.

<comment><USER5> Before TransferWise became widely available, and would have mitigated this, I needed to get a birth record from the civil registry (Standesamt) in Kaiserslautern, Germany. I had the option of using wire transfer, for a $35 international wire fee from my credit union.

Alternatively, I suppose owing to K-town's long association with the US military, I could mail them a USPS money order. Not an "international money order," a regular USPS "Postal Money Order" denominated in US dollars. For $1.25, it was no contest.

<comment><USER6> TransferWise is incredible. It was cheaper for me to take USD in my account, forex it to Yen, send the Yen to transferwise when paying a co-creator in USD. Sending a USD swift transfer would skip 2 forex transactions yet TransferWise is still cheaper.

<comment><USER7> I'm curious to learn why this is the case. Does your transfer involve non-US account? If both accounts are in the U.S. there are bank accounts that don't charge wire fee, or you can use Zelle / Venmo / FB Messenger / Square Cash and avoid paying altogether if the amount is small.

</comment></comment></comment></comment><comment><USER8> The Federal Reserve should buy a bunch of stamps from the USPS if Congress won't bail it out.

<comment><USER9> The fed doesn't just give away money... they can only loan money out, which had to be repaid later.

<comment><USER10> What OP is saying would not be "giving away" anything. The stamps would be an appreciating investment (the value of a Forever stamp increases every time the postal rates increase) and could be sold or used at any time.

<comment><USER11> Postage rate increases are capped to inflation, though. So they don't really appreciate.

But it wouldn't ever lose value and could inject some cash into the USPS.

<comment><USER12> They likely have a better implied return than Treasuries and many corporate bonds though, and people invest trillions of dollars in those. Risk-free investments that beat inflation aren't easy to find.

There are some issues with postage stamps as an investment, though. They're not as liquid as T-bills, though if they become a popular investment that problem solves itself. More worrying is that the USPS is not quite as reliable a borrower as the US federal government - can you really be certain this would never lose value? I'd like to see where the bond ratings agencies would rate USPS stamps.

</comment></comment></comment></comment></comment><comment><USER13> What's really weird is that I don't know anyone who's ever bought one. It must be really confined to specific cultures or economic classes.

<comment><USER14> I've used them for four main reasons:

1) You're paying for something already going through the mail (e.g. sending a form to the government).

You can usually send a check, but some banks don't issue checkbooks anymore.

2) You're sending a payment to an individual online (e.g. eBay, Craigslist), and who won't accept online payments. Some merchants do accept PayPal, but raise the price to account for the merchant fee; a money order may be significantly cheaper for large purchases.

If it's a scam, it also becomes mail fraud and you have the Postal Inspection Service on your side.

3) You need to make a deposit payment to someone like a landlord. They often won't accept checks, because they can bounce. Money orders and cashiers checks are sometimes the only accepted payment. Of the two, a money order is usually cheaper than a cashier's check.

<comment><USER15> > a money order is usually cheaper than a cashier's check

My bank (one of the big U.S. banks) issues cashier's checks for free if you have an account there - you just hand them a withdrawal slip and they'll give you the check instead of cash. (I just have a basic checking account, not some kind of fancy "premier relationship" with my bank.)

</comment></comment></comment><comment><USER16> Peaked at $60B in Q1 2001.

Edit: Looking again, appears _items_ peaked at 60B, dollar value peaked at $9B in Q1 2007 (but inflation).

<comment><USER17> That column is 60M orders. The dollar amount was $30B.

</comment></comment><comment><USER18> In other words, $20B is untraceable to origin. Not bad, considering how much physical currency in circulation $20B/330M population = $60 per capita. Uncle Sam must be happy.

</comment><comment><USER19> Why is this surprising?

<comment><USER20> It is surprising that in the day and age of online/phone banking so much money is transferred via. the post office. Postal orders have stopped being used in many other countries. My country (NZ) stopped them in 1986.

In New Zealand every few months another bank stops issuing and accepting checks.

<comment><USER21> Some people in the U.S. don't have bank accounts and may need to pay a bill.

<comment><USER22> More like many. About 6.5% of US households do not have a bank account. There's also the concept of the "under-banked", which covers people who have them but still use non-bank fiscal implements such as payday loans and money orders. That number is about 19% of US households.

[https://www.fdic.gov/householdsurvey/](https://www.fdic.gov/householdsurvey/)

</comment></comment></comment></comment><comment><USER23> Curious if there are any obvious reasons for the total value to rise from 3bn/q to 7bn/q only to stabilize around 5bn in 2010?

<comment><USER24> Competition? MoneyGram and Western Union kind of picked up then.

<comment><USER25> It's easier to go to Walmart and get a MoneyGram money order. I would imagine that is the biggest competition. I'm also pretty sure Walmart is cheaper.

<comment><USER26> Walmart money orders are about $1 cheaper than USPS money orders, but there are geographies where USPS is more convenient than Walmart for purchasing or cashing said money orders (my local post office is closer than a Walmart, for example).

Also, USPS money orders never expire. Those from other providers start to incur fees after a duration of time.

<comment><USER27> Wal-mart often also has bilingual employees and the post office may not, in my experience.

</comment></comment></comment></comment></comment><comment><USER28> I for one am glad that the postal service sells money orders especially if I'm out at strip mall sushi place with a broken credit card machine and I don't have cash, but there's a post office nearby to get a money order to pay the bill. (This actually happened).

<comment><USER29> According to the USPO website, they don't accept credit cards anymore to purchase a MO but they do accept debit.

</comment></comment><comment><USER30> Lots of money laundering it sounds like.

</comment><comment><USER31> I would hope that the Fed is investigating (along with FBI/SS/etc), but there is a whole lot of shady shit happening through money orders and gift cards these days...

<comment><USER32> If you are referring to people gaming the credit card points/rewards system using gift cards and money orders, I don't think there's anything shady about that.

If you actually think people are doing that for money laundering, now that probably deserves an investigation but I doubt money launderers are dumb enough to use money orders.

<comment><USER33> Postal money orders are probably pretty low fraud targets given their relationship to the federal government and pretty harsh penalties,

Gift cards are a whole other universe. There are many many grifts, from scammers looking to rip off people, to moving cash, avoiding payroll taxes, or other frauds. There's a pretty active market online for gift cards from places like Home Depot or Walmart.

<comment><USER34> People are paying employees in gift cards to avoid payroll taxes.....reminds me of the Nevada guy who was paying employees in face value of gold coins.</comment></comment></comment></comment>


Worker-owned tech cooperatives find a niche near Silicon Valley - <AUTHOR> http://america.aljazeera.com/articles/2015/5/26/worker-owned-tech-cooperatives-find-a-niche-near-silicon-valley.html? <comment><USER3> One of the best I've seen that's similar to this model is Publix:

[http://www.forbes.com/sites/briansolomon/2013/07/24/the- wal-...](http://www.forbes.com/sites/briansolomon/2013/07/24/the-wal-mart- slayer-how-publixs-people-first-culture-is-winning-the-grocer-war/)

They're an employee-owned, private company in one of the most low margin and cut-throat industries around. Both their profit and effect on the competition is incredible. Also, their management to worker ratio. ;) It would be interesting to see tech companies adopt a model like this. The results could be exciting to watch and maybe lead to more job security as well given every other kind of company likes to sell out.

<comment><USER4> > Also, their management to worker ratio.

Can you elaborate?

<comment><USER5> From this line of the article, quite low: "A distribution-center manager overseeing 800 associates..." That is, many workers per manager.

Which suggests that workers 1) know their jobs, 2) do them, and 3) managers facilitate and largely get out of the way.

<comment><USER3> Exactly. Likewise, their stores had 400 workers and 2 managers. Most retail workers I know say their company keeps staff too low to get the job done while having way too many managers with micromanagement. One of the top chains local store recently had only 2 stockers per fast moving department with about 40 managers auditing and coaching them on best practices. Walmart and Target employees told me they had similar issues but not as extreme effect.

So, as dredmorbius says, they have managers that pick good employees, give them incentives, show them justifiable best practices, listen to feedback, and otherwise stay out of the way. And the management works for the employees, who are the shareholders, not Wall St. Results: highest profit in industry, highest customer satisfaction, one of highest retention, and little risk in operation. IT startups should copy this if they're not just about selling out.

<comment><USER4> > Most retail workers I know say their company keeps staff too low to get the > job done while having way too many managers with micromanagement.

This is definitely not a problem limited to retail. I see it all the time in software development.

<comment><USER3> I believe it. One grunt I know always says "too many chiefs and not enough Indians" in all these companies.

</comment></comment></comment></comment></comment></comment><comment><USER6> The co-op structure is interesting but it's ultimately constrained by the members'/employees' financial resources to contribute capital. That's why co- ops are always modest businesses like grocery stores, or a co-op of cleaning people, or in this article's case, a co-op of IT techs.

If you want to start a capital-intensive business like Google Inc or SpaceX, you have to use the typical corporate structure because you need the $X million in investments from angels, VCs, and the stock market.

The typical employees don't have a million dollars in their bank accounts to pool together and launch a Google-sized business as a co-op. The enormous costs for rack servers and data centers to scale out would outpace the employees' tiny cash contributions.

<comment><USER7> I don't think employees are investors in co-ops. They are like founders. A co- op can still get capital from investors. Can't they?

<comment><USER8> The problem with that is there are tax implications to giving someone a chunk of a company (it's technically income), even if it is completely illiquid. Tax implications the employee probably can't afford much better than a buy-in.

<comment><USER9> coops normally have special status to get round some of these issues.

And coop members can have direct or indirect ownership a full on worker coop normally has direct ownership and organizations like John Lewis have indirect ie shares held in trust.

</comment></comment></comment></comment><comment><USER10> This article is "OK", but their example is a 4 person co-op, which makes you think that all co-ops like the food co-ops you see in college towns.

There are actually multiple forms of co-ops. Typically capital does come from the members (whether they be companies or individuals), but it could also come in as debt i.e. from a bank.

For example:

Sunkist is producer co-op owned by citrus growers to vertically integrate. [http://www.sunkist.com/about/cooperative.aspx](http://www.sunkist.com/about/cooperative.aspx)

REI is consumer co-op owned by the shoppers of the store (though arguably managed much like a normal corporation): (And did over $2.2 billion in sales for 2014) [http://www.triplepundit.com/2015/04/reis-co-op-business- mode...](http://www.triplepundit.com/2015/04/reis-co-op-business-model- produces-record-results/) [http://www.seattleweekly.com/2003-06-18/news/who- owns-rei/](http://www.seattleweekly.com/2003-06-18/news/who-owns-rei/) [http://www.rei.com/about-rei/financial- information.html](http://www.rei.com/about-rei/financial-information.html)

Ace Hardware is a retailer-owned cooperative. Where the franchise board is owned by the member franchises. [https://www.myace.com/invest/about- ace](https://www.myace.com/invest/about-ace)

<comment><USER6> >Ace Hardware is a retailer-owned cooperative. Where the franchise board is owned by the member franchises.

The Ace Hardware franchise requires ~$1 million[1] in startup costs to open a store and be part of the "co-op". Most employees don't have that kind of money and they don't have the collateral to secure a $1 million loan from the bank. When the ticket for admission into the "co-op" costs $1 million, that's not the type of co-op people are discussing. The REI stores co-op is also not a good example of what workers are thinking about. REI is not employee-owned.

I think we need to level-set. When threads pop up about cooperatives, the driving sentiment is from typical workers/employees who don't like the corporate ownership structure (founder has equity worth millions/billions, and/or CEO is drawing $500,000+ salary, etc).

Therefore, the co-op structure where all employees are also the owners and share the profits looks very attractive. The problem is it will end up being a modest business. E.g. a cooperative of IT consultants. The IT Consultants Co- Op don't need members to contribute $1 million each to capitalize the business; they just start billing clients right away. They can pool their modest funds from their hourly billings to buy the shared office a laser printer and a coffee machine.

It would be great if a cutting edge big company (like Google, Amazon, or SpaceX) with ambitious and very expensive goals (driverless cars, drone delivery, Mars colony) could be "employee-owned" but it can't. Employees don't have the money.

[1] [http://www.franchisechatter.com/2013/08/31/franchise- costs-2...](http://www.franchisechatter.com/2013/08/31/franchise- costs-2013-detailed-estimates-of-ace-hardware-franchise-costs-2013-fdd/)

<comment><USER3> See my comment and article about Publix. It can happen but requires management to have that vision to begin with. Thing is, most have never heard of this stuff working and wouldn't even consider it. Past that, there's the whole angle of "let's get rich owning our own company and selling out our workers later." But, get word out about the successes, then we might get more of them. And maybe I'll be lucky enough to work for one. :)

</comment></comment></comment><comment><USER11> Multi-stakeholding coops [http://community-wealth.org/content/solidarity- business-mode...](http://community-wealth.org/content/solidarity-business- model-multi-stakeholder-cooperatives-manual) and open cooperativism [http://p2pfoundation.net/Why_We_Need_a_New_Kind_of_Open_Coop...](http://p2pfoundation.net/Why_We_Need_a_New_Kind_of_Open_Cooperativism_for_the_P2P_Age) points to transition towards post-capitalism. As for lack of capital fairshares model is interesting [http://www.fairshares- association.com/](http://www.fairshares-association.com/)

</comment><comment><USER12> This sounds like a wonderful way to work. I can't figure out who died the sales though. How do they attract clients. Is that just everyone's job?

<comment><USER13> This is actually something I'm actively working on in my area, where there are a number of independent small tech consulting companies (most of them with just one employee), all with different niches and skillsets, and none of whom have offices or shops.

So everyone already has their own client base. The goal is to share some work, leverage eachothers' skillsets, and share a common space with inventory and a shop setting where you can meet customers in a professional environment.

The downside is that everyone's pretty independent-minded so it's a bit like herding cats. But the upside, if it works, will be pretty great for everyone involved.

</comment></comment><comment><USER14> If this is such a good way to run a tech company, why isn't it also a good way to develop software? In other words, why are projects led by BDFLs like Linux and Python so successful, while the design-by-committee approach is usually regarded as producing substandard outcomes?

<comment><USER13> Because the software development industry is stupidly fragmented.

Get 12 developers together in a room and you'll get 12 different answers on the best way to build anything.

<comment><USER15> It's a cultural problem, definitely.

</comment></comment></comment><comment><USER16> Tech coops are a new thing really as an ex poptel member that is news to me :-)

Though you might have thought that a politically aware organisation which all coops are would know what Al Jazeera's line was in running this story - <USER2> it isn't a dedication to the Rochdale principals.

<comment><USER17> I don't know what you mean. What was Al Jazeera's line in running the story?

</comment></comment><comment><USER18> I like this idea but only as one strategy for an exit for software engineers. A majority of employees are stuck being employees and need some assistance.

</comment><comment><USER19> I've seen one or two of these. I've also not seen any really successful or compelling products come out of any of them.

<comment><USER20> Pick any 2 random conventional startups, and this will be just as true.

<comment><USER19> True!

That said, my personal experience with coops is that they tend to be consensus-driven and give everyone a veto. This is a problematic model when vision is required. Works well for more readily-defined things like grocery stores or running a dorm, though.

<comment><USER3> The kinds that have management representing the coop work around that problem a bit. They have someone with vision, experience, and the ability to work through disagreements. That person normally does his or her thing with others adding opinions, votes, or whatever. The critical benefit is that such a person can step in to clear out obstacles caused by a lack of consensus.

So, even with its issues, representational democracy can be better than pure democracy so long as everyone is doing his or her part. :)

</comment></comment></comment></comment><comment><USER21> According to this article co-ops are a place where non-whites congregate and find their safe space. Wow. Bringing ignorance to the masses I see.

<comment><USER9> Not in the USA its mostly Farmers and American coops don't have the left wing roots that they do in Europe and to a lesser extent in the UK</comment></comment>


What are the normal steps to keep repo safe after hiring freelancer programmers? - <AUTHOR>

I'm looking to tryout a few freelancers and see if they can come through and if so then hire them for more work. What's the normal way to go about working with another programmer and still keep my app safe?
Would I just add him as a contributor on github? And then be able to revert anything damaging that he commits?? Or would he fork my private repo and then push commits to me? I've only used github to just push commits and then push to heroku so I'm confused as to how to keep this all safe while still working together.
Also does a freelancer programmer push to my heroku site or does he create his own?
Thanks! <comment><USER2> Part of the hiring process, whether a freelancer or a full-time-employee, involves an implicit degree of trust. Access to SCM is one way to demonstrate that trust. Without SCM, your freelancer isn't going to be able to see what he needs to work with (read) or integrate work with your codebase (write). If you don't trust a person with that level of access, you probably shouldn't be hiring them.

One thing I've found particularly helpful as a freelancer is the ability to work on isolated projects as opposed to ongoing development. Companies hire me because they have some functionality or enhancement in mind that they'd like to have, but all their regular developers are tied up with other activities. At a certain pain point, those enhancements are worth bringing a freelancer onboard but not quite worth hiring another employee.

What, if you don't mind me asking, do you need done? If you're looking to try out freelancers and don't have anyone in mind, I'd like to talk.

<comment><AUTHOR> I need someone who knows ruby/rails very well and can help me iron out some features. Nothing that difficult, something such as adding comments to posts, or a favorites system for user's posts. And some help with gem support like sunspot for solr. I'd like someone quite versed in ruby/rails so that these features can be banged out pretty quickly and without any problems.

</comment></comment><comment><USER3> Repo access is essentially copying your source tree to a USB stick and giving it to someone.

If your code is that sensitive, split it into modules that communicate over a well-defined API, and keep the sensitive parts to yourself.

Otherwise, a little trust goes a long way, especially when there's really nothing effective you can do about it.</comment>


Pure Coolness (describes paper e-book device that Manolis Kelaidis prototyped) - <AUTHOR> http://tizra.blogspot.com/2007/06/pure-coolness.html <comment><USER2> Now _that_ is something people want. I'm much more excited to see this go into production than a hyped web 2.0 phone.

<comment><AUTHOR> It's not too far from an interactive book, ie: Nells _"Young Lady's Illustrated Primer"_. Just add an interactive component and you get something out of science fiction ( Diamond Age, Neal Stephenson, 0-553-38096-6) ~ <http://en.wikipedia.org/wiki/The_Diamond_Age>

Another point that parallels Stephensons book is the failure of AI. If you can add digital content, hook it up to the web who needs AI?</comment></comment>


Ask HN: Security of a username/pw combo vs a username of the same lenth - <AUTHOR>

Which is more secure?<p>For example if my dual string login is username "joebob" and my password is "helloworld", is this more secure than a single string login where my input is simply "joebobhelloworld"? <comment><USER3> Those two things are not the same thing at all. For example, let's say I want to create new account in your application and you ask me to enter u/p. I enter the string that is already used by another user, so I should choose another one. Except, now I can login with another's person u/p combo.

I don't see any reason why you should do a single string login.

<comment><AUTHOR> Good point

</comment></comment><comment><USER4> secure against what attack? in general, a single (longer) username is less secure:

it's less secure against someone looking over your shoulder and seeing your username displayed on the screen.

it's less secure than someone watching you log in and reading the username displayed as plaintext in the login interface.

it's less secure if the username is stored unencrypted (if the password is encrypted) and someone gains access to the database.

however, it is _more_ secure if all information is encrypted (and someone gains access to the database).

the last point may be unintuitive, since the "amount of information" is the same, but k^n + k^m < k^(n+m) (for reasonable values of k, n and m).

(if k is the number of bits per character, and n is the number of characters in a words, then k^n is proportional to the cost of guessing - it's easier to guess two halves of something than to guess the whole) (think of hangman - <USER2> game would be no fun at all if you had to guess whole words; being able to guess letters - word fragments - makes it much easier)

<comment><AUTHOR> Thanks, so it would be more secure against brute force attempts. Also, if it were encrypted and type as dots, it would be more secure in general.

</comment></comment><comment><USER5> I don't see why you'd want to do this. You want to keep the username in plain text for many reasons, and hash the password for security reasons. If you put them together you either keep it in plain text and lose security, or hash it properly and lose the ability to display usernames in your site.

</comment><comment><AUTHOR> accei guess the biggest problem is that a long pass phrase would tend to logical phrases like 'willyoumarrymeedward' where as user name and passwords rarely form a logical phrase. So guessing at valid passphrases would be easier to do</comment>


Bloom distributed programming language released - <AUTHOR> http://www.bloom-lang.net/ <comment><USER2> I think I'm a distributed computing fanboy. I'd like to pull a few EC2 (or GPU) instances and see how quick brute forcing different encryption/hashing would take, how big of a prime number one could compute in a few hours, do the same pi/e/eulers, or let some genetic algorithms generate a huge wad of data. No idea why or to what ends, just seems like a cool thing to do with spare time.

<comment><USER3> You mean in general or with this project? This project appears to be a Ruby DSL with aspirations to be its own language someday, but while it's a Ruby DSL it's not going to be a great language for performance exploration. Ruby is _slow_. Writing in a faster language(/implementation) and running it on a single computer is like running a Ruby cluster of ~30 machines, for raw performance work.

(Ruby being slow isn't a criticism. "Some of my best friends are slow languages." But it's not where I'd start any sort of clustered/cloud computing project.)

<comment><USER4> What these guys are doing with Bloom/Bud are searching for dramatically better abstractions for building distributed systems. Getting the performance right should and will come later.

I'm a big believer in the mantra "First make it possible. Then make it beautiful. Then make it fast." In the distributed systems community, there's a lot of experience with "making it possible": Hadoop, Dynamo, etc. Bloom/Bud is attempting to figure out the "make it beautiful" part by leveraging what we already understand about the problem domain of building distributed systems.

Worrying about the kinds of constant-time performance things you mentioned at this stage would be premature optimization. I commend them for building this system in a language that allows them to iterate fast and experiment. I'm sure in the future they'll look at using technology like JRuby to improve the performance of the project.

I think what they're doing is very interesting and potentially groundbreaking -- I can't wait to see where this project goes.

<comment><USER3> I get where you are coming from, and it's a good plan, as long as the plan is to eventually fully detach from Ruby. Being even two or three times as fast as Ruby, which seems to be an optimistic interpretation of JRuby's performance, is still starting from a terrible position in so many ways.

I don't get the idea that some people seem to have that performance doesn't matter for distributed systems, when the truth is the exact opposite. Desktops and even cell phones, we see a great deal of sloppiness around performance, because it doesn't really matter that much. Small servers or small clusters, we still say throw more hardware at it and just hack some stuff together for clustering. But when you're serious about distributed systems is also when you are counting every one of something; maybe disk hits, maybe CPU cycles, maybe bytes of RAM, but there is something you are obsessing over. And maybe you're obsessing over more than one of these at once, all with an intensity that would credit an Atari 2600 programmer. (Facebook apparently published the specs for their machines today. Tell me they aren't too concerned about performance.) I'm not sure leaving performance for later is a good idea, they may well iterate their way into a cool abstraction that will _never_ perform. Designing a distributed system abstraction without worrying about performance strikes me as about as sensible as designing a new 3D framework without worrying about performance... not necessarily a fatal flaw but I sure hope you have a good plan.

<comment><USER5> > I don't get the idea that some people seem to have that performance doesn't > matter for distributed systems, when the truth is the exact opposite.

I think that investment in performance follows a curve.

A bowl, actually. And that this interest is based on the cost of optimisation vs the payoff.

          -                                              -
          --                                            --
          ---                                          ---
          ----                                        ----
          </comment></comment></comment></comment></comment><comment>                                    </comment><comment>
          </comment><comment>---                              </comment><comment>---
          </comment><comment></comment><comment>---                 </comment><comment></comment><comment>----
          </comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>
        <-- embedded ... SME web/desktop ... data-centre -->

Assume that an optimisation costs $X of programmer time and pays back $Y dollars.

When your cost of production is very large, $Y > $X. That's what you see for embedded systems with millions of units shipped and for data-centre computing with tens of thousands of units installed. The cost of one programmer optimising is well worth it.

But for the sunny plain of mediocrity in the middle, the cost of extra hardware ($Y) will be less than the cost of the programmer time $X.

Here endeth the extemporising.

</comment><comment><USER6> See wealth of background material: <http://boom.cs.berkeley.edu/papers.html>

</comment><comment><USER7> FYI: the name seems to stem from the BOOM project, and have nothing to do with 'Bloom filters'.

<comment><USER8> Leopold Bloom, not Burton Bloom.

</comment></comment><comment><USER9> i feel like this is an interesting step in the right direction

but... what happens if i want to read, process and write a log message....? thats three different bloom blocks that require 2 partial orderings.

instead of totally unordering everything, id rather have the ability to declaratively order functions for a request, where a function is a typical sequenced set of operations.

their examples arent particularly helpful, looks like most of these bloom blocks are single lines...

<comment><USER8> See the sandbox at <https://github.com/bloom-lang/bud-sandbox/> Some involved examples there (including a GFS clone).

</comment></comment><comment><USER10> I like it! umm... but what the hell is it? I STFA (skimmed-the-f*ing-article) and don't know what's going on here. Quick! What does this mean?</comment>


Tracking Down A Subtle Analytics Bug - <AUTHOR> http://www.kalzumeus.com/2009/10/31/subtle-analytics-bu/

<comment><USER2> This is a lot heavier on the code/hacking than usual for my blog. I'd be interested in hearing whether y'all like it more or less than usual.

<comment><USER3> Adding some technical details to your posts enlarges your audience.

I like this post as well as previous ones.

</comment></comment><comment><USER3> Another solution is to save state of the (pseudo)random generator and then restore it. In python: random.getstate()and random.setstate().

<comment><USER2> The only problem with that is that a termination of your code in between those two points (which could be caused by an exception, a client timeout, etc) leaves you right back where we started.

You can use begin/rescue/ensure (Ruby's try/catch/finally) to try to prevent that, but it strikes me as unclean. In addition to having to catch a very wide scope of exceptions, I'm not sure you can actually ensure the ensure block executes. (A trivial example: suppose I call out to library code that I don't understand and, for whatever reason, it calls exit. The ensure block will _not_ execute. Granted, that would take care of my problem because the process was dead, but speaking generally, it is dangerous to assume that ensure actually ensures anything in generic circumstances.)

<comment><USER3> Right. It seems we are closer to conclusion that side effects are _bad_.

Functional programming on the horizon?</comment></comment></comment>


Today's American men are weaker than their dads - <AUTHOR> http://marginalrevolution.com/marginalrevolution/2017/03/todays-american-men-weaker-dads.html <comment><USER2> Not exactly surprising as we've moved into the "service economy". But I bet you'd see the same in blue collar jobs, many underestimate just how much of these jobs have been automated in the past 50 years, the amount of manual labor that manual laborers actually do has plummeted due to machines being more widely available.

<comment><USER3> > _But I bet you 'd see the same in blue collar jobs_

Yes, that's probably true due to the use of power tools. Here's a longer article on the decline in grip strength: [http://nautil.us/issue/45/power/raising-the-american- weaklin...](http://nautil.us/issue/45/power/raising-the-american-weakling)</comment></comment>


Rate this startup - <AUTHOR> http://www.movingtunes.com/

<comment><USER2> People _like_ choosing their music -- or at least, the 'anchors' around which a service like Pandora build playlists. Here there's no evidence even of what artists/genres are possible. So the idea people would pay a premium over other rental services -- like Pandora or Napster -- seems farfetched. For your lowest yearly cost ($30*12=$360), someone could own an iPod touch and yearlong "Napster+mobile" subscription.

<comment><USER3> Thanks for the feedback. Regarding choosing one's own music, the service is really geared towards those who would prefer someone else to do the work of finding and sending them new music within genres of their choice, when they want it. Quality of music is also important to the target audience. With Napster or other web based rental services, quality is "far less than pristine CD quality" ([http://www.ilounge.com/index.php/articles/comments/iphone- ge...](http://www.ilounge.com/index.php/articles/comments/iphone-gems-napster- and-rhapsody/)). With movingTunes, you get 256kbps, CD quality music. So the main selling points as I see them are: convenience and quality. Point taken about the library browsing, am looking at options. Meanwhile, I publish library updates via Twitter and Facebook.</comment></comment>


Last.fm Founders' Next Track: Lumi - <AUTHOR> http://techcrunch.com/2012/12/04/last-fm-founders-next-track-lumi-a-site-that-uses-your-browsing-history-to-help-you-discover-things-on-the-web/?icid=trending3&grcc2=211e9f1cade0871ac6a68b4c3e70f4a3~1354622639103~fca4fa8af1286d8a77f26033fdeed202~1b92a4a35d496977496d2034ef06ffd4~1354622639102~98~0~0~0~0~0~0~0~9~6~10~14~-1~-1712885869036340998~~http%3A%2F%2Ftechcrunch.com%2F~

<comment><USER2> I'm dubious of just handing these guys my browser history. Facebook et al use your social graph not just for personalisation but for advertising.

<comment><AUTHOR> the data collected from the history is not associated with the user account, only analysed; and the plugin/extension respects private/incognito mode, according to the privacy policy: <https://lumi.do/about/privacy>

<comment><USER2> So how are they supposed to personalise your content if they don't know who visited what?

</comment></comment></comment><comment><USER3> great, another site wants to 'personalize' stuff based on what I 'like', so I can 'discover' stuff similar to what I looked for before.

btw hasn't the early StumbleUpon worked that way? browser extension + suggestions?

</comment><comment><USER4> I loved Last.fm back in the day when all of our music was stored on the hard drive. Scrobbled an insane amount of data via foobar2000.

Recently discovered Rdio connects to last.fm so that data can flow from there too.</comment>


Active Merchant - Ruby on Rails Credit Card Payment System - <AUTHOR> http://www.activemerchant.org/

<comment><USER2> A decent system, but don't expect it to be problem free. On switching over to Active Merchant we saw a downturn in payments. The problem was early developers simply trusting that Active Merchant would be problem free.

We ended up having to disable the internal credit card validation tests to keep the system from rejecting valid cards. No experience with the shipping component though.</comment>


Senior scientist argues that we should bypass Europa for Enceladus - <AUTHOR> https://arstechnica.com/science/2018/07/the-case-for-enceladus-as-the-best-place-to-look-for-life-beyond-earth/ <comment><USER2> I'm still pretty blown away by the probe landing on Titan: [https://www.youtube.com/watch?v=CNiO1b0ewy0](https://www.youtube.com/watch?v=CNiO1b0ewy0) \- what an amazing and wonderful endeavor.

It's so frustrating that we can't dedicate more resources to stuff like this than garbage like "the wall".

<comment><USER3> Because:

A, constituents are not interested.

B, the politicians that OK it would be long out of office before the results are in.

What you get when you base your politics on marketing and homo economicus...

<comment><USER4> Interestingly, it is a conservative Republican from Texas [1] that is championing the exploration of Europa. I wonder if he could be convinced to go to Enceladus instead.

[1] [https://arstechnica.com/science/2017/03/inside-nasas- daring-...](https://arstechnica.com/science/2017/03/inside-nasas- daring-8-billion-plan-to-finally-find-extraterrestrial-life/)

<comment><USER5> Yes. The GP comment is somewhat glib. Culbertson is following Europa exploration closely. He passed out a press release on a possible Europa plume recently: [https://mobile.twitter.com/spcplcyonline/status/994323304453...](https://mobile.twitter.com/spcplcyonline/status/994323304453468160?lang=en)

</comment></comment></comment></comment><comment><USER6> Honestly, we should be focusing on Ganymede.

It is also covered in ice with an ocean. Europa looks good but it is bombarded by direct radiation from Jupiter. Enceladus also looks good but it has really low gravity, and is farther from earth. Also, radiation again.

Ganymede has it's own magnetic field, to help bounce some of those ionizing particles, and is more distant from Jupiter. It's gravity is better than the moons.

Obviously I wish we could go to all three, but Ganymede is clearly the best choice imho.

<comment><USER7> > _Europa looks good but it is bombarded by direct radiation from Jupiter._

A few dozen meters below surface the radiation levels ought to be nil. And the surface is not interesting anyway.

<comment><USER8> Instrumentation design for a probe that has to survive the radiation on the surface would be an awesome job. Given the weight budget, it could be a very hard engineering problem.

<comment><USER9> All of the probes that have gone to Jupiter have had that same hard engineering problem, and we've yet to lose much science because of it.

<comment><USER10> Partly radiation shielding, partly planning orbits to avoid it as much as possible. If you're on a moon you don't have the luxury of avoiding anything.

<comment><USER7> OTOH, if you're on a moon then you can use the moon itself as a shield. Just burrow below the surface. Most natural sources cannot penetrate more than a few meters (dozens of meters at most) through rock and/or ice.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> TLDR: we've detected organic molecules in the water jets that come from the surface of the moon.

<comment><USER4> Organic molecules with a molecular weight > 200 [1]. In addition, there is strong evidence of hydrothermal vents [2]. Enceladus is one of the most fascinating stories in all of science right now. I think Ms. Porco has a point. Enceladus may look more promising, if we are to discover extraterrestrial life.

[1] [https://www.swri.org/press-release/evidence-complex- organic-...](https://www.swri.org/press-release/evidence-complex-organic- molecules-enceladus)

[2] [http://science.sciencemag.org/content/356/6334/132](http://science.sciencemag.org/content/356/6334/132)

</comment></comment><comment><USER11> We have too many problems on Earth, so we shouldn't put anytime in expressing our imperial tendencies else where in the solar system until we can feed all of our children and stop POC from dying at the hands of police.

<comment><USER12> Have you SEEN human history? Human beings are not good at what you propose. Human society tends towards domination and enslavement over caring for each other. Half the people believe there's an invisible Man in the sky that grants you wishes if you pray hard enough and that their invisible Man is the only correct invisible man. We're primitive and we have nuclear weapons.

I think we need an alternative.to this planet as fast as possible.

<comment><USER13> Amazing explanation. Even if we found a way to feed any hungry person and any other person would earn $1000 for every poor person fed, a considerable percentage of the population would oppose it.

We will never be able to come to an accord on something and it's probably a good thing though.

I wish much more money were spent on space exploration so I could enjoy the findings in my lifetime, even though it might not affect me more than a tv show.</comment></comment></comment>


Self-Taught Developers: Are You Missing Your Foundation? - <AUTHOR> http://www.javacodegeeks.com/2012/09/self-taught-developers-are-you-missing.html <comment><USER2> You know, in years and years and years of programming, of applications and web and back-end and front-end etc etc, I have never had a real-life use case for Big-O notation, except in interviews. Nor had a real-life use case for caring about sort algorithms. I mean, not _once_.

I'd say the true foundation needed is entirely different. Avoiding spaghetti code, good refactoring practices, understanding when more architecture is needed, avoiding premature optimization or over-architecture, concepts like technical debt, writing code designed to be readable, how to establish practices and standards and make sure they're communicated properly... These are the kinds of things that actually matter in most projects.

(Obviously, if you're writing video codecs or kernel code, it's a whole different story...)

<comment><USER3> _I have never had a real-life use case for Big-O notation, except in interviews. Nor had a real-life use case for caring about sort algorithms. I mean, not once._

That is frightening. I can't think of any function I write without taking a second to think about what the Big-O would be.

And I don't even know how I could do things like parse input without knowing how to structure it so that look-ups never take more than log N time. And I don't know how I could do that without knowing sorting algorithms intimately.

And I am not writing codecs or kernel code, mostly it has been high performance and some soft real time, but I've also worked in back end web development.

Everything in your second paragraph I fully endorse, but your first paragraph is terrifying. I'm terrified I'll run into someone like you some day, clearly smart, clearly experienced and without a clue as to why I'm concerned about the Big-O of his implementation of something.

<comment><USER4> Some people know the computational complexity of something they write without knowing it in terms of Big O. Before my CS degree, I understood that looping through a list and for each item, looping through the same list again was not optimal. And someone only needs to write an O(n^3) algorithm once to realize that it's a very bad idea for any but the smallest amounts of data. Knowing about Big O is nice though, if only to understand documentation (realizing that O(nlogn) is better than O(n^2)).

</comment></comment></comment><comment><USER5> I've been programming professionally for about 8 years, and I'm self-taught.

To be honest, I've found that my degree carrying co-workers fall way short in the basics. Perhaps it's just me, but my background in languages went something like this: GW-BASIC -> QBASIC -> ASM -> C -> C++ -> PHP -> JS --> Python -> Erlang -> Ruby -> C# -> Clojure. So for me, programming in C meant that I had to understand linked lists and sort algorithms.

I've sat in in interviews before and asked candidates (with degrees and experience) the difference between a dictionary, a hash-set and a list, and I just get blank stares.

So no, I think it's more about the desire to learn. If you have a true interest in Software Engineering, you'll teach these basics to yourself. If not, then not even college will help you.

<comment><USER6> This.

I think most folks who truly master this stuff are self-taught, whether they went to University or not. I got all the degrees, but I can honestly say that I learned a lot more exploring on my own than I did sitting in class.

</comment></comment><comment><USER7> What stops a self taught developer from also 'self teaching' the fundamentals?

Books and lectures (from OCW etc) have been available for years now. These days you can go one step further by taking online courses with assignments, exams etc from Coursera. All you need is motivation, and self taught devs often have that in spades.

The real problem is that in most enterprise swshops/codebases, knowing (say) algorithmic complexity is not very valued in terms of reward structure (though it should be - I've fixed my share of O(k^n) horrors) and lots of people _choose_ to go through life writing simple apps and stitching APIs together (which is perfectly ok as a career choice if that's what floats your boat).

(Due Disclosure: I worked as an enterprise dev for a decade before I shifted fields. I work on fairly large machine learning systems these days and let me assure you that knowing algorithmic complexity analysis - and other things like statistics and linear algebra - is a _basic_ required skill in this world. Fwiw I am entirely self taught. My degree is in Industrial Engineering)

<comment><USER3> _What stops a self taught developer from also 'self teaching' the fundamentals?_

Just read through the many comments here the gist of which is: _Why would I care about the difference between a list and a hash table._

A lot of people tend to assume hostile bias against knowledge simply because they've been successful without it for a while.

<comment><USER8> > Why would I care about the difference between a list and a hash table.

> A lot of people tend to assume hostile bias against knowledge simply because > they've been successful without it for a while.

I don't necessarily see it like that. My opinion is more along these lines:

> Why would I care TO STORE IN LONG TERM MEMORY the difference between a list > and a hash table.

There are plenty of things I know I know, things I know I don't know and things I don't know I don't know. The vast majority of my programming knowledge resides in short-term memory; in six months ask me about Linked Lists vs Array Lists and I will have forgotten the primary differences (fast iterate vs fast insert or something like that)... I only vaguely know that today because I was researching something.

The biggest challenge I see as a self-taught developer is I see everything on equal footing. That means the basics (map, set, list) and the trivial (apache config settings, tomcat's web.xml) tend to reside in the same heap and if I don't think about one element for awhile it tends to get GC'ed. Since all of my knowledge came from 14 years of on-the-job-training nothing was given particular precedence, everything was important to the task at hand.

I believe that's really what frustrates self-taught developers. It isn't that I don't know the answer, or that I'm hostile to learning new things (far from it) it is simply that I never burned these fundamentals into my permament memory. I've tried, but I tend to miss bits and pieces, for example, I needed to refresh myself on autoboxing just a few weeks ago because I just haven't _thought_ about it.

</comment></comment></comment><comment><USER9> Having a "formal" CS education, the only thing that keeps me current, relevant, is being perpetually self-taught and self-directed.

Having and building this discipline is the single master skill that unlocks everything else.

As soon as we think we're done, arrived, or have a "foundation", we're dead. What we know today will be relevant in a different way tomorrow.

It's true there are intangible skills like design, usability and architecture, but it only comes from building lots of small and larger software projects, not in the classroom, textbooks, projects, or theories.

Algorithms are important, but I contest that the majority of web/mobile apps don't even come close to needing premature optimization.

I wouldn't think twice at hiring someone who's self-taught and self-directed over someone with a CS degree.

Why? Self-taught people seem to have more of a track record of things they've built, instead of school projects on a resume. Self-taught programmers also tend to like to build things customers like and focus on the customer a lot more instead of optimizing their own world and tools.

I would definitely argue that the only thing that gets in the way of my learning is my "education"

One handicap my CS education gave me until I realized it was the "start fresh" syndrome. In CS you start pretty much everything from scratch, and think that's normal. Get into the post-graduate world and scrapping existing codebases isn't exactly normal, nor is always starting from scratch.

</comment><comment><USER10> If "foundation" means:

      - learning many technologies, even the ones I'll never use
      - learning 100% of the syntax (10x what I'll ever need)
      - being able to solve the same problem 5 different ways
      - learning slick stuff I'll never need
      - being able to scale to levels I'll never encounter
      - winning brogrammer arguments in on-line forums

then, yes, I'm missing my foundation.

If, OTOH, foundation means:

      - seeking solutions for problems, not problems for solutions
      - being able to learn whatever I need
      - being able to solve most problems with few tools
      - favoring action over status
      - living in the real world, using academia as a resource
      - having learned what really does and does not work
      - having raving customers who don't care what's under the hood
      - satisfying 100% of customers with 75% solutions

Then, yes, I think I'm just fine.

<comment><USER11> What about being able to analyze efficiency (Big O), understanding compilers, full understanding of computer architecture, realizing how the CPU executes code, knowledge of advanced algorithms, knowledge of the OS workings, and AI fundamentals? That's generally what I see self-taught people lacking, i.e., deep understanding of anything outside of languages.

<comment><USER12> You realize these pet topics are only 5 university courses. It would be a intense 4 month semester, but it's workable.

      1. full understanding of computer architecture, realizing how the CPU executes code
      2. analyze efficiency (Big O) (a few hours), knowledge of advanced algorithms
      3. understanding compilers
      4. knowledge of the OS workings (often self taught out of necessity)
      5. AI fundamentals (Admittedly a specialized topic)

</comment></comment></comment><comment><USER13> For me, I think absolutely. Sometimes to the point where I don't consider myself a 'real' programmer and feel like a faker any time I'm talking with someone more skilled than myself. I've always been much better at just getting things done than learning an entire catalog. Maybe it's because I spend half my time in the design space, where I also have no training and also feel like a 'faker'.

I've looked in various apprenticeships like thoughtbot's and others, but at my age (30) I am not their usual target demo.

It's why I'm so grateful for hackernews. i learn a lot of great stuff here from the 'real' developers that I can then apply in my day-to-day.

<comment><USER14> >Sometimes to the point where I don't consider myself a 'real' programmer and feel like a faker any time I'm talking with someone more skilled than myself.

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

<http://www.inc.com/magazine/20060901/handson-leadership.html>

<comment><USER15> interesting! As one of the top performers in my major as a senior, I think I self-inflict this a little bit to keep myself sharp / hungry. Kids call me crazy and say I've had all kinds of success, but I don't compare myself to the apathy I see around me and putting a chip on my shoulder compared to 'elite' devs has worked for me.

<comment><USER14> Privately I think most people have this but don't want to admit it because they think someone would call them out on it. From what I see/experience it seems like the world mostly runs on people trying to impress other people because that's the only validation for our own skills we get.

</comment></comment></comment></comment><comment><USER16> Self-taught developer here, I think the foundation is incredibly important if you desire to advance in your career as a developer.

That being said, you don't need to know all that to get started. I probably would have hated a CS program if I had tried it in college. Now, however, I am completely fascinated by things that would have terrified me before.

There is a lot to be said for Just in Time learning as opposed to front- loading your knowledge Just in case you need it down the road.

<comment><USER17> Just In Time learning is perfectly fine, but there is a minimum of foundation for you to even realize there's something you need to learn. I think this article covers that pretty well.

</comment></comment><comment><USER18> I consider myself a self-taught developer even though I hold a CS degree. The reason is, what is taught in college is not always up the standard required by the industry.

The only thing I learnt from college was the list of topics that needed to be studied. I spent time learning those things practically on my own.

That was the thing that helped me land a job immediately after college.

So I would say that a college CS degree is really a subjective, It depends on the person and the college.

Any self-taught developer who has the interest to improve him/her self can and will learn the foundations eventually.

<comment><USER19> The goal of a college education is to learn how to learn, so you can stop paying people to teach you. Becoming an independent learners isn't in spite of college, it is the goal.

<comment><USER18> I wish they told me that in college ! :-)

</comment></comment></comment><comment><USER20> I'm a (mostly) self taught developer but I have taken some software related courses (assembly, C, data structures), so I have some semblance of a foundation. Still, I constantly feel 'behind' in my foundational knowledge compared to my peers because I majored in something other than CS/SWE.

That's why the rise of edtech startups have been of interest to me: online courses like Algorithms: Design and Analysis from Coursera have been a godsend, at least when I have the time and energy to do it. It's not easy playing catchup with a full-time job, but there's even less time (and money) for me to go back and get a degree in CS.

<comment><USER21> "but there's even less time (and money) for me to go back and get a degree in CS."

It seems like many don't understand that not having pursued a CS degree is often a pragmatic one dealing with _money_ , not because self-taught people are too lazy or unwilling to learn at a university level.

They have already obtained their degree and invested a lot of time and money. Or they're far enough along in life where they're giving up a lot more than a teenager or person in their early 20s if they take 4 years off to pursue a degree full-time.

I think these are articles are useful for people who are learning on their own, or who come from that direction. But if you're starting out at a self- taught person, from my experience, no one seems to care if you understand algorithms. You're better off building real things, and it doesn't seem close.

</comment></comment><comment><USER22> Developers should know CS fundamentals

Developers should know security

Developers should know testing

Developers should know the business

Developers should understand marketing and SEO

Developers should should should. Everybody's different. Do what you need to do. No one is going to be perfect at everything.

Here's my 'should advise': Developers should stop listening and executing everyone else's ideas and execute their own.

</comment><comment><USER23> I'm about 90% self-taught, including the foundation. To be honest, university is a waste of time for me. When I learn by myself, it's about 10x faster and more effective. What is most important is experience and practical knowledge. The good thing about university is that 1) I have lots of time 2) I find out about stuff like boolean function minimization or state machines.

</comment><comment><USER24> At first I found the article kind of condescending. I was expecting something I didn't know, instead:

>hey self-taught developers, here's all this totally elementary stuff that you probably don't know.

I'm self taught, but I have a very solid computer science foundation because I found that stuff interesting when I was learning. Looking at the other comments here, I guess that's not the default...

<comment><USER25> We're in the same happy boat. I think there are probably more in it, too, but a lot of us have stopped thinking of ourselves as self-taught, because we've been working at a higher level for a while. I'd bet that those who are less interested in fundamental topics have shorter lifespans in the profession.

</comment></comment><comment><USER26> As a self-taught programmer who started in the '80s, I definitely missed a lot of foundation I had to pick up over the years. However, this was mostly on the architectural level. As far as the more technical stuff is concerned, I was lucky enough to start with C at a time where we still had to code a lot of stuff by hand which is now taken for granted.

But realistically, this knowledge is rarely needed in most modern day application-level programming. Many decent developers can not only get by, but produce great applications without it. It's mostly a matter of the right skills for the right job. And as always, just getting stuff done is the #1 skill.

</comment><comment><USER27> I learned everything I know from the streets.

Read the Hacker Ethic. As long as one is curious the information is there. Set theory? Probability? Algebraic lattices and convergent data structures? Monotonic functions? Cache registers and word alignment on some rare architecture you've never encountered before? Need to know how to write a compiler? I've learned some of this stuff and more on Usenet, web forums, IRC chats, books; from github, bitbucket, CPAN, PyPI, quicklisp; and by going to conferences, meetups, and even on the job. Academia is not the bastion of Computer Science fundamentals.

As long as one is curious and has the intellectual tenacity to be critical then there's nothing that the ivory tower can offer that isn't available on the web, at your local library, and right on your damn computer.

We don't live in the dark ages. Why do so many Computer Science people insist that only they know the true knowledge?

</comment><comment><USER28> Seems like these "missing foundations" can easily be remedied by reading a couple of algorithm books.

<comment><USER29> You're right. You probably won't need to take any courses to learn all this stuff - this stuff can be easily accessed online. It's definitely crucial for all software developers to have this sort of CS background.

</comment></comment><comment><USER30> I'm somewhat "self-taught". I majored in straightforward "pure" math, with emphasis on real analysis and abstract algebra, but I did take graph theory, numerical analysis, and so forth - and the professors did include a lab component that involved writing substantial amounts of code... so I'm not completely self-taught.

That said, I feel that there is a gap because I didn't major in CS.

Although I had to read a textbook on Data Structures and Algorithms on my own, I don't feel like this is a particularly glaring gap. Interestingly, my math coursework _did_ cover a lot of the stuff at the _end_ of the algorithms book, since I'd taken graph theory, linear and non-linear optimization, numerical analysis. But I had to learn the basic data structures (trees, hashes, lists) on my own. While it took some work to learn this, it came naturally enough, because I consider data structures and algorithms to be very similar to math. You could study this stuff without a computer and get a decent understanding of it.

The big gap in my knowledge is more around compilers, operating systems, and that elusive border between software and hardware. I never took compiler design, and I think that languages are still a dark art to me because of it. I think I also would have benefitted from doing some very low level programming (when I was in college, "C" was still considered a "high level" language, but at least I had to struggle with memory management). Also, a lot of data structures that are optimized to interact with memory or hardware are still pretty much a mystery to me. Obviously, without this knowledge, my understanding of operating systems is going to be pretty limited.

<comment><USER31> Right on the same page with you. Mathematician by training, programmer by youthful joy of building games and ELIZAs in QBasic, with some MATLAB/Python in college. Lucky both things caught my interest when they did, it's made breaking into Machine Learning awfully accessible as a post-university career.

(I still think there are dragons inside the CPU.)

</comment></comment><comment><USER32> Its a great question. I believe IMHO that ultimately it boils down to the application; does it require computer science, some deep scientific understanding, or does it require basic knowledge of a language? Are you writing real-time Bayesian Learning algorithms for use on big data feeds for example or a sign-up form for a web site? Do you need to have fine control over where data is placed in memory so you can optimize performance (C/C++...assembly even?) or do you not need to know anything at all about memory management - and don't want to? There is a raft of questions like this.

Self taught programmers can write well but may be missing some of the nuance for why things are done one way over another or maybe be missing some tricks that save a lot of time. These limitations can be overcome by somebody committed to writing good quality code.

</comment><comment><USER33> I'm new to this site, but hopefully I can give some insight. I'm in Ireland and I'm in my fourth year of CS, but I've also worked at some startups because they frankly aren't mutually exclusive. I've had the pleasure of working with both self-taught and formally-educated programmers, and when it comes down to the daily grind of work the lines between us are pretty blurry.

What I'd _miss_ if I dropped out isn't any notion of a foundation, I'd be able to get it all from the resources mentioned on this page. What I'd _miss_ (as in, it's absence would sadden me) is being able to discuss compiler design and other areas that may not be of interest to most working programmers with respective experts in the field. I'd also miss the impact the piece of paper would have on any potential greencard application but that's another story.

</comment><comment><USER34> A CS degree can differentiate you from someone who cargo-cults their way through a software project. Sure cargo-culting can make the plane land once in a while, but wouldn't you some day want to know why?

I started programming for a living before I got a CS degree. After I got the degree, the biggest difference I found (aside from the really cool knowledge I gained) was that I had a common language to use to talk to other people with CS degrees and an understanding of common methods that I used to take for granted.

Also, I appreciate the rigor behind a lot of CS fundamentals, and I believe I'm able to teach myself new CS-y things more easily and do my job better as a result. I don't think the CS degree is necessary, but I really really really believe it helps you in ways you may not realize until you get one.

</comment><comment><USER35> These developers hit a wall quickly, and have to work harder (or just write poorly thought-out/designed code) over time. That does not mean they are less capable than classicly trained CS programmers; it just means they have to overcome certain learning curves at a steeper incline. Saying this tho - personality, drive, etc makes a huge difference and overshadows this argument. Want to know how to optimize your website for a high-latency 3G mobile connection? I bet that having eaten some TCP/IP 7 layer burrito will help you in some way.

</comment><comment><USER36> What many self taught software engineers lack is the shibboleths of the computer science community. The interview process at many large organization's like Google and some startup's seem to use many of these factors like obscure algorithim tricks to screen potential applicants. It is possible to pick these things up on one's own but it makes to it more difficult to transition between organizations.

</comment><comment><USER37> Agree. A lot of us self taught developers get started because there may be something simple we want to do that requires a program, and can hack or reverse engineer our way through it. But if/when we progress past hacks to actually building applications, it becomes obvious (to the ones who care) where a good understanding of the foundation is crucial.

The part about dismissing boolean logic really rang true.

</comment><comment><USER38> No. What is up with college students thinking that Big O is some complicated secret concept that only college graduates know about.

<comment><USER39> its the secret handshake that only CS grads know. If you cant` recite the CS pledge then you must be lame..

</comment></comment><comment><USER40> One of the biggest traps self-taught developers fall into is not recognizing (seemingly) complex problems have likely been solved before.

A simple example in Python:

      for dog in dogs:
          print dogs.index(dog)
          calculate_dog = something_complex(dog)

vs.

      for i, dog in enumerate(dogs):
           print i
           calculate_dog = something_complex(dog)

<comment><USER41> I don't see your example as a trap a self-taught developer would fall into. The non-usage of enumerate just indicates that it is a code from some one who has started with python and any self taught developer who groks pydocs would eventually discover enumerate.

<comment><USER40> I guess that's kind of my point - there's no motivation to grok pydocs, because you don't realize there's a better way.

</comment></comment></comment><comment><USER42> Maybe. But 18 years in, it hasn't mattered yet.

</comment><comment><USER43> If you are careful enough to learn the basics good and practice what you have learned, there is not really anything that can get in your way. So it depends on the person, but definitely working with more advanced developer can improve your learning curve. ;)

</comment><comment><USER44> I think most developers are self-taught. Those college classes were okay for comp sci theory perhaps. But for accomplishing real world tasks, I think I got more from books and the internet and actual knowledge, than paying for a course.

</comment><comment><USER45> People forget the saying "school if what you make of." School is just a place for facilitating the self-study of people by providing a guide devised by people who have already gone through the joy and pain of learning.

</comment><comment><USER46> IMHO (as someone with no programming qualifications at all) there's no such thing as a developer who's _not_ self-taught.

You don't get taught anything (especially programming) you get out there and you fucking LEARN it!

<comment><USER47> In this context self-taught obviously means: didn't pursue computers in secondary education. I've learned way more about development post college, but I wouldn't call myself "self taught."

<comment><USER46> self-learned? :-)

</comment></comment></comment><comment><USER48> I'd choose to work with product developers than software developers anyday.

<comment><USER49> Can you give your definition for both these roles? I thought they are different jobs.

<comment><USER48> Software developers are concerned with making things "the right way" - eg. in the article the writer speaks about choosing the right data structure, algorithms etc.

Users couldn't care less about a perfect domain model, dependency injection or asynchronous yada yada.

They care if it works and Product Developers know this.

<comment><USER3> Imagine you have a web startup and as soon as people visiting your website start coming with reasonably large data sets, your website becomes noticeably sluggish.

And then a competitor pops up and they are dealing with the same sized data blazingly fast, instantly from the user's perspective.

And you look into it and they are using the same technology stack you are using.

It's at that point that you might start to care about the difference between a linked list and a hash table.

<comment><USER50> And at exactly that point (but rarely before), a good "product developer" puts on his "software developer" hat, and executes his finely-tuned JIT learning subroutine. He Googles "[framework] profiling", spends a week collecting information, tracks down the bottleneck, makes a fix, tests it, evaluates the new output, then calls it a day or repeats from step 1 until the issue is resolved.

<comment><USER3> Or a if you already know the difference you take a minute to look at the APIs you are using and switch to the one which is implemented with a hash table instead of a linked list. One minute vs. a week. A week here and a week there adds up.

</comment></comment></comment></comment></comment></comment><comment><USER51> no we don't, when I started programming in high school in my late i had a copy of the dragon book that a RE friend told me about.

ops question would be better addressed if it addressed it's audience correctly:

"Self-Taught Web-Developers: Are You Missing Your Foundation" - and again the answer would be no. Since it's essentially a form of text processing we're talking about. Entirely different audience/target/whatever.

There's also many many many algorithms books around these days. The average web developer doesn't read them, and why would he?

Long story short:

Any headline which ends in a question mark can be answered by the word 'no'".

<http://en.wikipedia.org/wiki/Betteridge%27s_Law_of_Headlines></comment>


Elon Musk: SpaceX Will File Suit Against the U.S. Government - <AUTHOR> http://io9.com/elon-musk-spacex-will-file-suit-against-the-u-s-gover-1568027055

<comment><USER2> Good on him. The more of these no-bid contacts that are challenged the better.</comment>


Ask HN: Career Change from Dev to DevOps? - <AUTHOR> I'm a software developer/architect with 20 years of experience in software development and system architecture. In most jobs that I had, I was spending roughly 3/4 of time on development and 1/4 of time on DevOps and infrastructure work.
Recently I have implemented a system I consider to be the masterpiece of my career (not bragging - just trying to explain the situation) and somehow I have a feeling that my motivation for working on yet another software development job has faded a bit (probably temporarily).
However, I noticed that my interest in DevOps topics didn't decrease, and in fact has intensified.
Therefore I have question for fellow HN-ers: Those of you that made a career switch from Dev to DevOps, can you share your experience? Pros, cons, advices, warnings... anything you find important to emphasise. Any input is much appreciated. <comment><USER2> As a DevOps, you get to play with all the tech, but you also have to be on call. (One pro and cons, depending on where you devops) It's been fun, I'm really about automation {the larger set of automations}, and it's been foundational and transformative for me.

Kelsey Hightower had a good talk about what DevOps means in a post Kubernetes world. I think it was a DevOps conference in Seattle iirc. It's on YouTube somewhere

[https://cuelang.org](https://cuelang.org) (DevOps futurology)

[https://github.com/hofstadter-io/hof](https://github.com/hofstadter-io/hof) (my work)</comment>


The Chat Matrix: A Game-Changing Alternative to Chatroulette - <AUTHOR> http://thechatmatrix.com/

<comment><AUTHOR> Requires face recognition via webcam to avoid seeing peoples body parts. Instead of constantly clicking on a "Next" button to find a person you want a video chat with, you can go directly to who you want to chat with.</comment>


Ask HN: What will be the effects of the upcoming rise of AI and Automation? - <AUTHOR> I feel like we are living in a tipping point of human history. The rise of automation and AI will make our lives easier. We will finally be able to get rid of all the "useless" tasks we have to do.
However, my main concern is with ecomonical and sociological effects of this?
Will world GDP finally contract because of drastic reduction in cost of everything made?
Will joblessness become a norm and people can easily live off without working since humanity will finally be afford to do that?
Please someone smarter than me explain what can possibly happen in this future. <comment><USER2> I can't speculate on the economics part of it all, but I have a different take. I think it will lead to another renaissance of sorts. Assuming that AI and automation are well done, it will give people a lot of free time to indulge in activities like art and philosophy more than what is possible currently (if one doesn't do it, then at least appreciate others' efforts). Liberal arts will come to fore again. There will be more intellectual activity that isn't tied to technology. Wars will become rare (after the last war to end all wars, of course). Fewer people will die (at least in non poor countries) due to advanced medicine. I am not sure what all this critical thinking etc and over population will bring about though. Probably a combination of natural phenomenon like super bugs and massive solar flare will take us back to early 1900s.

</comment><comment><USER3> I'm not going to claim to be smarter then anyone or have any answers to your questions. I will point out that artificial intelligence is something entirely different from automation.

You can make the case that Humans have been coping with automation from the rise of agrarian civilisation. Suddenly hunter gatherer tribes had to adapt to an entirely new social order and way of life. The industrial revolution radically transformed the world and we have muddled through and adapted. I think automation will always create winners and losers, wars, upheaval etc but civilization will adapt and continue on in some form.

Artificial intelligence that has a true self awareness and agency would be a genuinely new, never before seen phenomenon. What the consequences would be are totally unknown. There is no previous data or experience to measure.

</comment><comment><USER4> I've been thinking about this, and for me, the driving force is status. As far as I can tell, status drug s human behavior more than anything.

So, when it comes to automation, etc. the thing that really strikes me is that some people get their status from work. Others feel that you _should_ get your status from work. But the truth seems to be that one work is just one of way to get status.

Why does this matter? Because if we provide a basic income, only a small minority of people will continue to get their status from work. The rest will do it in some other way, like collecting YouTube subs or whatever.

This will represent a seA change in society, with a massive extension in adolescence. We'll all be in high school forever.

<comment><USER5> BA is about keeping people as high as possible in Maslow's pyramid, not about giving infinite purchasing power to every single member of our society.

The way you're presenting the problem is as if being able to have basic food and shelter, will automatically throw you into the _high society_.

</comment></comment><comment><USER6> Superintelligence and Singularity is Near are good books to read o this.

</comment><comment><USER7> Something is up. First, the educational system (High School, and especially College) was about beating in (ie, indoctrinating) conformance, compliance, "teamwork" (leaving yourself a slave to the shht of others, in place of getting on with what needs to be done), focus (rather than branching out, hedging your bets, diversifying, etc), and other things that seemed irrelevant when it came to setting one up to be competitive and prosperous in the world at large.

I graduated at the end 2007, but it's likely things haven't changed much now. Everything was watered down, even though I was a Computer Engineering major, and there wasn't much to be gained from all that was being pumped in. In fact, it's as though they were trying to beat out of me whatever good was left, to then have there be nothing but an empty, uncompetitive, cookie-cutter shell of a person.

This approach does not line up with how the world seems to be trending, and with the "rise" of these AIs and advanced automation strategies. I'm not sure what's going to happen, but it's either going to be really bad in general, or everything will collapse forcing the need to reinforce, strengthen, or otherwise make better the BS that is the educational system and introduction to the working world.

Other things will need to change. Performance enhancers (safe, side-effect free smart drugs) may be one way to help things along (not current ones, but new and more advanced developments to meet future needs), but that could easily descend into "drugged up" culture, which is pointless.

Many things can easily be automated away to leave room to work on more interesting things and to not be as tied down as in times past; however, in looking at the groups and people behind most potential advances, I'm more scared that optimistic. I'd generally be optimistic, but these people seem either clueless, or not well intentioned. That seems like a recipe for a bad outcome.

Either way, it's about time things started getting good. Factoring endless amounts of things into an online dating match percentage calculating algorithm? Yes! It would be great to have the online dating system take into consideration many things that it would take a normal person years to evaluate on their own. And with the increased popularity/availability of smartphones, it should be fairly trivial to verify profiles, and collect information privately (and securely-- to avoid it being resold/misused by dating sites) that will further enhance the matching algorithms/strategies.

It would be nice to approach a period in time where an online dating app helps you discover who you are, what you want, what you value, and other things in the direction of better understanding yourself and what you want/need in a relationship (versus being indoctrinated with some arbitrary irrelevant garbage).

The same idea can be applied to job searching, roommate finding, business partner seeking, college selection, and many other things. I think it's been established (maybe just in my mind) that they are at least in the realm of "solvable," so now it's about doing so properly, to not end up spinning on another iteration of the same garbage.</comment>


Cgroupv2: Linux's new unified control group hierarchy - <AUTHOR> https://www.youtube.com/watch?v=UBpVG6AW2Qs <comment><AUTHOR> tldr; v2 is not backward compatible with v1, but has some really neat features.</comment>


F.T.C. Is Said to Begin a New Inquiry on Google - <AUTHOR> http://www.nytimes.com/2013/05/25/technology/ftc-said-to-have-begun-new-inquiry-on-google.html?_r=0

<comment><USER2> So many investigations on companies like Apple and Google. I guess they are not "too big to trial", like the banks.</comment>


Ask HN: Visiting SF, should I check out Silicon Valley? - <AUTHOR>

I'm from the UK and will be visiting SF for a week in April. Is it worthwhile to heading down to Silicon Valley to check it out?
I'm aware a lot of the area is simply large business parks, and companies won't let you just wander into their offices uninvited. These are places of work after all, not tourist attractions.
Having said that...
Is it worth trying to get a tour of the Googleplex? Or trying to get a tour of other headquarters (Facebook/Apple)? Or a tour of Stanford? Is there anything else worth seeing?
I will not have a car either, but suppose I could hire one for the day if it was necessary.
Other suggestions welcomed!
EDIT: If any Google/Apple/Facebook employees can snag me a tour I'd be greatly appreciative, email in profile. <comment><USER2> Rent a car (you'll need one) and head down to walk around Stanford's beautiful campus, then have a coffee in Palo Alto before heading over to see Google's campus and shoot some pics. Then off to nearby Cupertino to buy some goodies at the company store in Building One. Not much else to see in the Valley I'm afraid.

<comment><AUTHOR> Any recommended coffee shops?

<comment><USER2> Definitely hit Coupa Cafe in Palo Alto where a ton of startups have been 'made'. Ramon makes some dope cappucinos too there.

</comment></comment></comment><comment><USER3> It is possible to take the train down to Palo Alto from SF, rent a bike from the bike share system, take a leisurely ride down Palm Drive and around Stanford campus (2-5 miles along bike paths) and then back to Palo Alto for coffee (or something else tasty). Coupa Cafe is a good place for coffee, as ulfw mentioned.

If you want to tour one of the big companies, find a friend/acquaintance/recruiter, and catch lunch. These companies compete on quality of meals...

Also, if you're going to rent a car, I highly recommend visiting some Redwoods. The best around are in Big Basin about an hour south of SV. There are also some just north of SF in Muir Woods.

<comment><AUTHOR> I'm not averse to cycling, I just didn't think it would be too scenic around the Valley.

Unfortunately I have no contacts in these big companies.

That's a good shout on the redwoods, I had no idea this was on offer near the SF area, thanks.

<comment><USER4> We're planning a family vaca to California for the first time this summer and planning on Muir park.

Also if you end up renting a car you may want to check out Yosemite (3-4 hr drive). That is on our list.

</comment></comment></comment><comment><USER5> I could only vaguely remember my time in San Francisco due to the fact that I was only three years of age, but that didn't stop my parents from taking me everywhere within the city. Although I may have not recalled any of the visits, after we had moved out of Cali, I always hear how we should've toured Stanford and what a great opportunity we had. Don't miss that opportunity! Schedule a tour of the campus, I'm sure you'll be glad you did.

<comment><AUTHOR> A Stanford tour looks interesting, looks like they have a general walking tour and more specific science/engineering tours that you can book.

</comment></comment><comment><USER6> This is probably old news, but if you haven't already read Steve Blank's Vistors Guide to Silicon Valley, i'd recommend it before your trip.

[http://steveblank.com/2011/02/22/a-visitors-guide-to- silicon...](http://steveblank.com/2011/02/22/a-visitors-guide-to-silicon- valley/)

</comment><comment><USER7> A meetup group might have more value for you - but the googleplex does sound interesting.

<comment><AUTHOR> Are there any cool, generous Googlers here that would be able to arrange a tour? My email is in my profile, I would be very appreciative.

</comment></comment><comment><USER8> What are the dates of your trip?

<comment><AUTHOR> I'll be in SF 9-16th April.

<comment><USER8> Just dropped you an email</comment></comment></comment>


The Berlin Phenomena - <AUTHOR> http://www.blog.earlybird.com/blog/2011/07/the-berlin-phenomena-part-1.html

<comment><USER2> Do you happen to know any good site/source to get a job there in one of those start ups/tech companies?

I am oriented towards data analysis/mining and I happen to be working in Germany, it would be just amazing to be able to apply for some cool jobs in Berlin.

<comment><AUTHOR> send me an email (in profile)! :)</comment></comment>


YouTube sued for limiting white, Asian male hires for diversity purposes - <AUTHOR> https://www.fastcompany.com/40538483/youtube-sued-for-limiting-white-asian-male-hires-for-diversity-purposes <comment><USER2> Previously: [https://news.ycombinator.com/item?id=16497551](https://news.ycombinator.com/item?id=16497551)

</comment><comment><USER3> What is the stated goal of explicitly discriminatory behavior, where white males and otherwise conservative people are targeted?

<comment><USER4> I don't think anyone has actually stated this, so perhaps this won't do as an answer, but I think in general the purpose is to counteract decades of bias and discrimination?

<comment><USER5> By introducing new bias and discrimination? Well, what can go wrong?

<comment><USER6> To break endemic, _systemic_ bias and discrimination, the majority group must choose to be biased and discriminatory against itself.

I can almost guarantee you it was a white male that had ultimate responsibility to make the decision to take action with regard to that demographic.

<comment><USER5> So bias and discrimination aren't inherently wrong? If the newly introduced discrimination is alright what actually made the old one wrong in the first place?

<comment><USER6> It's a paradox.

And white dudes (like me) aren't ever going to fix it without actively _trying_ to fix it, which is going to make other white dudes (like the ones in the lawsuit) discriminated against.</comment></comment></comment></comment></comment></comment>