What Craigslist Did Right: User Management Without Usernames or Passwords - <AUTHOR> https://jobpoacher.com/blog/blog/2012/02/13/what-craigslist-did-right-user-management-without-passwords/

<comment><USER2> "These days, disabling your cookies would make it nearly impossible to use any web application. I'm not sure if people are still out there browsing the web with disabled cookies, but if you are, my hat's off to you! :)"

I use Firefox + Cookie Monster, which allows me to enable temporary cookies for the sites that I'm just browsing and permanent cookies for my webmail and social networking sites.

The only site which sits in the middle of these -- it breaks without cookies but I don't use it enough to justify cookies -- is scribd. It's gotten to the point where I actively cringe whenever I see the word "scribd" anywhere. Basically they show you a perfectly working presentation for about ten seconds and then suddenly send you on an infinite redirect loop which simply says "optimizing your Scribd experience", and once you temporarily enable cookies they dump you on an index page having nothing to do with the presentation you just started reading.

I might shift them to a "store cookies permanently" exception, but it still bugs me. You should never require cookies for content which can be read by solely clicking "Temporarily Allow Cookies for this domain name." Cookies don't do anything if you delete them immediately after the transaction is over. (I am looking especially at you, New York Times: you are guilty, guilty, guilty of this.)

<comment><USER3> Scribd over-complicating things since they used PDFs to display text.

I just visited their site again, I'm not exactly sure what they are using now, it does look good, but my god is it slow on my low end machine.

I am not surprised to hear they are needlessly complicating session tracking as well.

</comment></comment><comment><USER4> Craigslist has a big spam problem to deal with; anonymous e-mail based accounts make spamming very easy. They've dealt with this through phone verification -- if you try to post to a high-spam category, or your account is otherwise suspicious looking, you get prompted to enter a phone number and take an automated call or SMS with a code to put in the site. That phone number gets tied to your e-mail and can't be used to authenticate another, so spamming now requires throwaway phone numbers (harder to acquire) instead of throwaway emails.

I haven't made any attempt to test it, but they probably block using VOIP and other non-fixed phone numbers too. There are APIs available to check whether a number is one of those types, so, say, you can't sign up for a bunch of numbers through Twilio and use those to spam Craigslist.

<comment><USER5> There's a way to get around the phone requirement, too. I've seen this as far back as 2010.

You pay to post a fake job (something unskilled that will get a lot of applications) on a site like Simply Hired, Indeed, etc. Applicants come to your fake careers site. Applicants fill out the application for the non- existent job and are asked to input their phone number to verify their application.

When they input their phone number, the backend of the careers site submits that number to Craigslist. The applicant receives the call from Craigslist which reads them a number. The careers site instructs them to enter the number to confirm their application.

A few days later your site auto-emails the applicant saying that you're sorry, but the position has been filled. They forget about it and no suspicion has been raised.

For the price of posting a single job, you can get hundreds of phone-verified Craigslist accounts working.

<comment><USER6> Wouldn't the phone call start with "Your craigslist code is..."?

<comment><USER5> Maybe they changed it for this very reason... I'm not sure. At the time, there was no indication that the call was from Craigslist. You were just read a code, twice, and then the other end automatically hung up.

</comment></comment></comment></comment><comment><USER7> Not having a mandatory registration step definitely lowers the entry barrier for new users. Doodle (doodle.com) uses a similar technique for their polls. A user doesn't need to create a login to manage a poll, he just gets an admin URL and he/she can use that to edit/delete/manage the poll later on. Participants, meanwhile, get a different participant URL that does not have the admin options. Their pages are not served over HTTPS though, so I suppose it's not perfectly secure.

</comment><comment><USER8> I know I'm probably asking a stupid question, but why can't my browser adopt some variation of OAuth and automatically authenticate me everywhere, forever? Imagine if we never had to discuss sign-up forms anymore. Everyone has an identity built into the browser, no questions asked. That's way better thank cookies, and just as transparent.

What am I missing? It would just take one browser (such as Chrome or Firefox) to support it and I think it would take off.

<comment><USER9> [http://hacks.mozilla.org/2011/07/introducing-browserid- easie...](http://hacks.mozilla.org/2011/07/introducing-browserid-easier-and- safer-authentication-on-the-web/)

</comment></comment><comment><USER10> "Ask rails developer how to do authentication, and you're likely going to hear 'devise' or 'authlogic'. These are great solutions for most use cases."

I like that the author thought through what the minimum amount of code needed would be to get the job done for his specific case. However with recent improvements to Rails, Authlogic & Devise are usually overkill even if you are going the standard route. It's easier than you think to roll your own, and you'll end up with a similar amount of code. Here's a good post summing it up: [http://www.farbeyondprogramming.com/2011/05/63-rails-user- au...](http://www.farbeyondprogramming.com/2011/05/63-rails-user- authentication-using-has_secure_password)

</comment><comment><USER11> Not to be cynical, because I don't necessarily think there is a "right" answer for this particular application, but I don't see a huge advantage in doing this over a simple registration form with a password.

An email is a unique field anyway, so when you say that "nobody likes creating a new username and password for a website" you are making the process sound more complicated than it really is. For the case of this site, the only difference is whether or not a password is required to log in. Additionally, should you want to add user-specific functionality later that persists across sessions, you will have to add an authentication system.

Again, that's not to say that this method is right or wrong, but I myself have started down the road of maintaining sessions with cookies instead of full- blown authentication, and every time I have ended up going back to authentication because I always end up deciding that the benefits outweigh the drawbacks.

</comment><comment><USER12> This looks wide open to csrf attacks.

Another site can post a form on behalf of a user automatically, and the cookies for job poacher will be sent. Meaning that a malicious site can take actions on behalf of a logged in user.

Perhaps their solution is more complicated than they let on, but I doubt it given it's "20 lines of code".

<comment><USER13> Rails has CSRF protections baked in; unless you explicitly turn it off, non- GET requests require a CSRF token associated with the user session to complete successfully.

<comment><USER12> That makes sense. I've been doing node js too long where you have to do this stuff by hand :0

</comment></comment></comment><comment><USER14> I'm not too familiar with Rails (and this is unrelated to the point of the article), but is this code vulnerable to a session fixation attack (<https://www.owasp.org/index.php/Session_fixation>)?

I notice that it doesn't destroy the session when you log in/out, just changes a session variable.

<comment><USER13> No; session fixation requires that the attacker gain access to a session id and pass that on to the user. Rails doesn't use session ids by default. All session data is stored in the client cookie, and is verified with a cryptographic hash. If you can steal the cookie, you win, but that's much harder than session fixation.

</comment></comment><comment><USER15> the thing about https and your employer.... be very aware that on managed workstations, its trivial to intercept https traffic by pushing out a new trusted ca across the company....

assume your employer can see everything you are doing.

what are you doing job hunting on his dime anyway? uncool.

<comment><USER16> Therefore when job hunting never use the browser your employer installed on your computer, always use one you installed yourself. Did I say job hunting? I meant checking your bank balance. Although if you don't trust your employer this much maybe you SHOULD be job hunting. Besides, they can always install a key logger.

</comment></comment><comment><USER17> _In our rails model, we generate a SHA1 string based off of the user's email address, the random obfuscated email address that we generate, and a salt._

Why people still do this, when HMAC is even easier to use? [http://www.ruby- doc.org/stdlib-1.9.3/libdoc/digest/rdoc/Dige...](http://www.ruby- doc.org/stdlib-1.9.3/libdoc/digest/rdoc/Digest/HMAC.html)

It also seems like the salt here is not actually a salt, but a secret key.

Edit:

        @listing = Listing.find_by_confirmation_code(params[:code])

I'm confused. If you store confirmation code, and lookup users by it, why it should be SHA1 instead of a random string?

</comment><comment><USER18> My website does this too - example: [http://textbookcentral.com.au/26/university-of-new-south- wal...](http://textbookcentral.com.au/26/university-of-new-south- wales/buy/69897/acct1501/?query=)

It sends you a confirmation email which you must click on before your post is broadcast to other buyers and sellers.

I figured this beats user accounts because students buying / selling users would come here at most once per semester, they are never going to remember their account credentials anyway.

No spammers, yet. (the spammers post without confirming)

</comment><comment><USER19> I think Craigslist's authentication scheme only works if your users don't need to be logged in very often. Otherwise it's a royal pain.

<comment><USER20> The nice thing about Craigslist's authentication is that it allows casual users to post easily (and anonymously) without having to create an account, but they also allow you to create an account if you plan to use the service often.

They are able to account for both types of people.

<comment><USER21> It seems if you later decide to make an account, it aggregates all your posts into a useful summary pane.

I was able to sell a couple of things using Craiglist. I was surprised at how easy and smooth it went.

</comment></comment></comment><comment><USER22> This can work if your app is an impersonal one like CraigsList. It doesn't if it's a social one where you want people to use an username, or their full name to interact with other people.

</comment><comment><USER23> Good post... but amazing how many rails applications and examples, don't use SecureRandom or ActiveSupport::SecureRandom

</comment><comment><USER24> This was a really useful post. Thank you.

This is a good solution where people will use a site infrequently.</comment>


Anti-algorithmic music: How Bandcamp is helping artists beat the odds - <AUTHOR> https://www.residentadvisor.net/features/3703 <comment><USER5> Hey, we're on HN! As mentioned elsewhere we're waiting revenue share tomorrow. We've got a handy timezone-aware site for tomorrow and other future fundraisers: [https://isitbandcampfriday.com](https://isitbandcampfriday.com)

A few records were announced this week that I'm pretty excited for, if you need some inspiration:

[http://music.sufjan.com/album/the- ascension](http://music.sufjan.com/album/the-ascension)

[https://videoage.bandcamp.com/album/pleasure- line](https://videoage.bandcamp.com/album/pleasure-line)

[https://washedout.bandcamp.com/album/purple- noon](https://washedout.bandcamp.com/album/purple-noon)

<comment><USER6> If you're affiliated with bandcamp, I have a question: is there something like bandcamp radio coming out sometime? I don't know about others but I have trouble actually discovering stuff on bandcamp. Every artists page seems to be cut off from other artists and I haven't found a way to just let random or similar artists be played.

Jamendo has radios, "best of" and "trending" lists per genre, artist, tag and across their whole music selection which makes discovery really easy. For bandcamp, knowledge of who's who seems to be necessary and I don't have the time to be that into music. That's why jamendo has been getting my money lately.

<comment><USER7> I plugged elsewhere here, but I put together [https://bandhiking.isandrew.com/](https://bandhiking.isandrew.com/) because I had the same problem. It's basically a Bandcamp radio thing. (I've found a few dozen things over the last month or so using to it!)

<comment><USER6> Niiiice! Thanks a lot! That's very much more what I was looking for. And opensource too!

Good job :)

</comment></comment></comment></comment><comment><USER8> I can't say enough good stuff about Bandcamp. All of the underground IDM is on there, the app is great (it caches stuff locally) and they let you download the music you buy in high quality. Setting up and customizing a store is also very easy. I even got a sale on there once, which is more than I can say for any other music selling/streaming platform.

<comment><USER9> Any underground IDM recommendations?

<comment><USER10> Trackermatte. I'd check out the album Ná. He also has an album on his Bandcamp page called "Growth" by "The Florists" that has a gorgeous closing track.

Not sure he's underground (and more acid than IDM), but Ceephax Acid Crew is always excellent. I especially recommend the releases Acid Quakers 1000, Exidy Tours, World Dissolver, and Cro Magnox (but really, look up any of his music videos on YouTube. They're insanely fun)

For more downtempo or glitchy type stuff, check out:

Lanark Artefax - Whities 011 (Touch Absence is a track that shouldn't be missed. The music video is good too)

Proem - Socially Inept

Lusine - Condensed (the track Rushhour is superb)

Grischa Lichtenberger - Graviton - cx (rigid transmission)

Oneohtrix Point Never - Garden of Delete

Albums not on Bandcamp worth checking out:

Access to Arasaka - void();

Richard Devine - Asect:Dsect

You probably know these, bit worth mentioning:

Venetian Snares - "Hospitality" and "Rossz Csillag Alatt Született"

Autechre - <USER2>

Alva Noto - "Xerrox" series

<comment><USER10> I almost forgot. For fans of Aphex Twin and Squarepusher (particularly Squarepusher's album Go Plastic), check out the album Red Extensions of Me by The Flashbulb. It's a little sharply mixed, but it's excellent music

<comment><USER8> Also Flexing Habitual

</comment></comment></comment></comment></comment><comment><USER11> Bandcamp is proof that you don't have to be a predator to your clients or your users to run an online business. I love your service and I hope you all keep it up!

</comment><comment><USER12> Bandcamp is the best. Reasonable prices on drm-free, lossless downloads plus an app that lets you easily stream your purchases on the go. I happily spend my money there on a weekly basis.

On a related note, if there were a similar site for drm-free movie purchases, I'd be all over it.

<comment><USER13> > _On a related note, if there were a similar site for drm-free movie > purchases, I'd be all over it._

No joke. Call me old fashioned, but I love self-hosting my music collection and BandCamp is a key in facilitating that. I would do the same with movies if it were an option.

</comment></comment><comment><USER14> I love that Bandcamp provides FLAC downloads. I have racks of CDs and I'm not keen on buying more physical items which I just rip and listen to digitally. A FLAC download completely replaces a CD for me.

And for my convenience they also provide Ogg Vorbis downloads which I prefer for putting on mobile devices due to reduced storage requirements.

With most any other site you can only get MP3s.

When I first discovered Bandcamp ~5 years ago it was pretty hard to find (metal) bands of interest. By now the site has really caught on and tons of established bands that I have been listening to for years are releasing their music there.

It's still also really good for obscure stuff too. There was a band from my city (in the USA) whose album could only be bought in Germany. Only after they made a Bandcamp release was I finally able to obtain it!

<comment><USER15> I've been waiting Caladan Brood to put their music on streaming services for ages, but they've been on BandCamp forever! You're not from Salt Lake City, are you?!

<comment><USER14> I am, in fact! Good guess! I was actually referring to the related project Gallowbraid. Caladan Brood is great too. Ironically, I heard about both of these bands from a friend in Germany.

[https://gallowbraid-northernsilence.bandcamp.com](https://gallowbraid- northernsilence.bandcamp.com)

<comment><USER16> Waited for your confirmation, although there aren't many bands from US on Northern Silence IIRC.

Brood's album was on Spotify for a brief time until it was retracted (by label or guys no one knows). Since there was some movement on GB's site there might be some hope, as that request is literally under each video with songs from either project.

Cheers from Urals!

</comment></comment></comment></comment><comment><USER17> Worth noting. Tomorrow (3 July), Bandcamp is waiving their revenue share on all sales. More info here: [https://daily.bandcamp.com/features/bandcamp- covid-19-fundra...](https://daily.bandcamp.com/features/bandcamp- covid-19-fundraiser)

<comment><USER18> Exactly. I was just about to post that, I'm going to be buying a few discographies tomm. Specifically, Carpenter Brut's stuff who released a really crazy film based [1] on its music video for Turbo Killer [2]. It's worth checking out if you're into rock-sounding synthwave with 80's themed psychedelic visuals.

I'm also buying like 3 more to support artists.

ABout 7 years go now, Soundcloud enabled Bitcoin donations, and about a team of 5 guys includin me went on a tipping frenzy and tried to get adoption going that way. It was funny, because reddit allowed for direct Bitcoin donations there via a bot and you could name it whatever you wanted. So we did the same on Soundcloud, it's funny because I log into my old soundcloud account at the History of them is still there.

Anyhow, I tipped like 20-30 guys on SC and even got some runway from an early adopter ($100?) to take it further and met a few EDM guys coming into Hollywood/LA area for a few sets and tried to explain it to them as none of them picked up there funds. Apparently, Soundcould didn't do a good job of notifying them that they had money waiting for them so ultimately it failed.

I ended up giving the Bits I had left into people who set up full nodes on the network. But I always thought, especially as a DJ myself, that supporting artists with micropayments would be a good solution. Youtube now allows for tipping in their chatbox as I saw a few in house performances/sets be tipped by followers and fans, but it was always over $1+, which is awesome, but entirely impractical if you want people to send what little they may have on hand to listen a song/remix/dj set/podcast for most people unless you have a very dedicated and quite frankly affluent followers. I'd rather have a 100k-million fans tip 10-50 cents then the four or five die-hards give $10 so I can continue to make content. Paetreon, Gofundme, Kickstarter and such are just needless middlemen at this point and hosting content is super cheap with even multimedia with a $5/month vimeo account.

Anyhow, happy hunting tomorrow, I'm all digital now so I can buy and support a lot more music/artists I otherwise had to ignore because of format.

1: [http://bloodmachines.com/](http://bloodmachines.com/)

2: [https://www.youtube.com/watch?v=er416Ad3R1g](https://www.youtube.com/watch?v=er416Ad3R1g)

</comment></comment><comment><USER19> Frankly I've stopped using any kind of 'less legal' method of getting MP3s and just buy FLACs from Bandcamp daily now. It's a great site and pretty much everything I've ever wanted is there.

<comment><USER20> This. Absolutely this.

I used to be terrible for "less legal" downloads until I discovered beatport, Juno and bandcamp.

I'm pretty sure bandcamp is one of the reasons for my vinyl habit now. Complete 180.

<comment><USER21> Me too. Though I went spotify -> vinyl -> bandcamp. Spotify is still useful, but much better to own.

</comment></comment></comment><comment><USER22> Bandcamp has been of the best things to ever happen to DIY music. It's given a tremendous amount of power to artists, power that used to be held almost exclusively by labels. We're finally at a point where many bands can make decent money without having to worry about "getting signed" to a label and losing so much control in the process.

<comment><USER23> While this is true, it should also be noted that distributors have already updated their business model to take a cut of Bandcamp sales. e.g. label X uses distributor Y to manage the process of their tracks in as many online stores and streaming platforms as possible, and to collect revenue. Distributor Y then takes the credentials for Bandcamp and operates that in the same way as it does everywhere else, taking a certain sizable. It's still better than the old model but it doesn't mean all money goes to the artists.

<comment><USER22> I'm not aware of any digital distribution platforms that automate the Bandcamp process and take a cut of that revenue, though I wouldn't be surprised if that was happening somewhere. Which distributors are doing this?

It should also be said that plenty of labels are operating Bandcamp pages, where they can take a cut of digital sales and then pay (or not pay...) artists. It can make sense for artists who are trying leverage the resources of a larger organization. IMO it's something bands should negotiate aggressively since Bandcamp might be their best (possibly their only!) shot at recouping their expenses or selling merch.

</comment></comment></comment><comment><USER24> I built a tool a few years ago to search for your top Spotify artists on Bandcamp. It's just a simple front end on a Spotify API query, unfortunately there's no Bandcamp API so all it can do is link to a search for that artist, but it could still provide a useful jumping off point for discovery: [https://tomduncalf.github.io/supportify/](https://tomduncalf.github.io/supportify/)

It all happens client side, no tracking or data collection or anything - <USER3> can view the source to check :)

<comment><USER25> Excellent! The code looks clean too.

I'm looking for a tool to export Spotify playlists to text/csv and can only find weird commercial solutions; maybe the way to go is to use `spotify-web- api-js` and build it on the client side.

<comment><USER24> Ah I used to use [https://www.playlist-converter.net/](https://www.playlist- converter.net/) but seems it has recently stopped working :(. Yeah you could do something with the API fairly easily I think, the Spotify API is actually awesome, has some really cool stuff like audio analysis and recommendations for tracks in there.

</comment></comment></comment><comment><USER7> Self plug because it's super relevant (I think)! I made Bandhiking [https://bandhiking.isandrew.com/](https://bandhiking.isandrew.com/) to help find new music on Bandcamp.

It's basically a randomized top list player, but it lets you just put some music on in the background and mark the stuff you liked.

</comment><comment><USER26> As a DJ I use Bandcamp a lot. There's so much stuff on there that you just cannot find on other platforms such as Beatport. It also feels great to pay the artist or label directly. Often they let you set your own price for an EP or album (with some low minimum, like 5eu for the whole EP).

Truly an amazing platform.

</comment><comment><USER27> Bandcamp should implement support for Media Session API, to be able to use desktop integrated player controls when their playlists are opened in the browser. Youtube supports it and it works pretty well with Firefox and KDE plasma browser integration. But Bandcamp palylists don't.

<comment><USER5> This is cool.. I was trying to figure out how to get macOS next/prev controls to trigger events in Safari but haven't had any luck. This seems like a cool API for doing that sort of thing (though, sadly, no Safari support)

<comment><USER27> Yeah, it's pretty cool. I discovered it after noticing that Youtube playlist in Firefox started reacting on the player controls in KDE notification area.

<comment><USER28> And with KDE Connect, the Youtube videos automatically pause then you get a call and resume immediately after the call ended.

</comment></comment></comment></comment><comment><USER29> I love Bandcamp. It is my primary place for exploring and purchasing new music. Their generous policies around previewing, the ability to browse through niche labels to find similar music, and flac support make it hard to beat.

I am also really happy that Paysage d'Hiver got a call out in the article. Such an amazing, one person, lo-fi, atmospheric black metal. It's great to program to as it just drowns out any distractions.

> Someone grabs an LP from Paysage d'Hiver, the Swiss black metal band.

<comment><USER14> Nice.. [https://paysagedhiver.bandcamp.com](https://paysagedhiver.bandcamp.com)

The one (20 minute) track that I listened to had sort of a atmospheric Bathory feel.

</comment></comment><comment><USER30> Love bandcamp.

Being able to buy the whole catalogue from an artist with one click is great. Maybe patreon style subscription for artists you like could also be interesting - reliable subscription revenue would make a world of difference to many artists.

And please add playlists!

</comment><comment><USER31> I love bandcamp. Just the other day I read some reviews of the new Jessie Ware album. She's a fairly mainstream, moderately successful pop artist from the UK. I thought ... no way she's on Bandcamp. But ... there it was, her brand new album, available in FLAC, ogg, whatever. Bandcamp is the union of everything that was good about the original mp3.com and cdbaby.

ps. if you like 80s sophisticated disco, that Jessie Ware album "What's Your Pleasure" is totally awesome.

</comment><comment><USER32> Very nice to see Bandcamp here. As it so reminds me, I have some ambient tracks on Soundcloud that I made during a really crazy trip over here in the pandemics. If any fellow hackers would like to listen, here. Would these be interesting in bandcamp? [https://soundcloud.com/nidnogg](https://soundcloud.com/nidnogg)

</comment><comment><USER33> Love to see Bandcamp get some love on hn. I'd like to give a shout out to their Bandcamp weekly podcast, which I think to a great job of showcasing releases and artists:

Current episode:

[https://bandcamp.com/?show=378](https://bandcamp.com/?show=378)

</comment><comment><USER34> Love the UI and feel of Bandcamp, it's like a glass of iced water in algorithm driven hell.

</comment><comment><USER35> I've probably spent thousands of Euros over the years on music via Bandcamp, mostly in the form of vinyl.

Big thank-you to the team behind Bandcamp and their fairer payout model to artists (compared to other outlets)

</comment><comment><USER36> This might the most positive comment thread in the history of Hacker News?

</comment><comment><USER35> Can we please have playlist functionality?

I have to download then manage via iTunes and upload to my phone, which seems crazy as I have 100s of tracks available on BC itself...

<comment><USER37> I actually find it refreshingly anti-commercial that Bandcamp has a fairly basic app and a low key approach to curation. I think having a very basic player in the app fits well with a kind of anti-DRM "it's your's now, we don't care what you do with it/BYO[everything else]" mentality.

Focusing on an app often seems to lead to a slippery slope of metric driven development, feature creep, engagement analytics, notifications, etc. First it's personal playlists, then it's publishing playlists, then it's liking other people's playlists, then it's artist endorsed playlists, then it's sharing playlists to other social media platforms, then it's being notified that a playlist you like has been updated, etc. etc.

(My one gripe with the app is the slightly childish decision to hide the download links for music you already own.)

</comment></comment><comment><USER38> I can say that Bandcamp made this release possible... it just got released this week! and this is a record that waited years to come out and is a big band featuring some of the best/most interesting jazz musicians in NYC - <USER4> compositions are incredible— [https://andrew- dangelo.bandcamp.com/](https://andrew-dangelo.bandcamp.com/)

</comment><comment><USER39> Even-though I have an Spotify subscription, I buy music from Bandcamp to support lesser known bands and artists, such as The Midnight and FM-84.

</comment><comment><USER40> For discovering artists, I primarily use YouTube. When I want to listen more to said artists, it's usually Bandcamp where I can find the rest of their discography. Probably my preference for the general Vaporwave genre and their prevalence on that platform has a lot to do with this.

</comment><comment><USER41> Bandcamp experience for an artist is good but the backend could sure do with a spruce, particularly the reporting and the API for merch fulfilment.

That said anything pushing against the chilling affect of Spotify is a win.

</comment><comment><USER42> Bandcamp is great! (speaking as an artist & a fan/listener both)

</comment><comment><USER43> The "Selling Right Now" feature on the homepage shows it's success. Some years ago you could read what was being sold. Today it's scrolling too fast :)

</comment><comment><USER44> I do find it interesting how you pay your own price(I don't know what to choose). Also RIP Her's, their albums are on there.

</comment><comment><USER36> I love Bandcamp!</comment>


Passwordless Authentication with React and Auth0 - <AUTHOR> https://medium.com/javascript-scene/passwordless-authentication-with-react-and-auth0-c4cb003c7cde#.dqip1tbi8 <comment><USER2> Please change the title. This is about integrating Auth0 into a demo React app.

FWIW, the article's actual title is 'Passwordless Authentication with React and Auth0', which accurately describes what's being done.

<comment><AUTHOR> Updated. :)</comment></comment>


WeatherBug advertises extension by impersonating Chrome permissions dropdown box - <AUTHOR> http://weather.weatherbug.com/Common/SearchResults.html?loc=califonia&nav_section=1&zcode=z6169&lang_id=en-us&country=US&x=0&y=0&is_search=true

<comment><AUTHOR> Also, I'm pretty sure I spelled "California" wrong.</comment>


AWS Launches HTTP APIs for API Gateway - <AUTHOR> https://aws.amazon.com/blogs/compute/announcing-http-apis-for-amazon-api-gateway/ <comment><USER2> You should really change the title as your selling the significance of this short. A feature I (and many others) that have been hoping for is a DRASTIC price drop in APIG. This IS it.</comment>


Show HN: Whatigot.bash – Prints a list of installed software and their versions - Bilge- https://github.com/ScriptFUSION/whatigot.bash <comment><AUTHOR> Love this idea, but the currently supported list is pretty short (15), and adding more items will get tedious fast!

<comment> Bilge- If everyone added their favourite software it wouldn't be so tedious.</comment></comment>


Sparse matrix representations in SciPy (2017) - <AUTHOR> https://heydenberk.com/blog/posts/sparse-matrix-representations-in-scipy/ <comment><USER2> A good sparse matrix implementation is key to any serious numerics. SciPy's implementation is very nice and quite complete, and a foundation for the entire scientific Python ecosystem. Unfortunately, though, many of the low- level sparse operations are not implemented very efficiently, which has lead to some projects having to do their own implementation, see e.g. this discussion for the QuTiP project: [https://github.com/qutip/qutip/issues/850#issuecomment-38400...](https://github.com/qutip/qutip/issues/850#issuecomment-384005667)

It would be really nice if _all_ of the sparse linear algebra in SciPy could be heavily optimized (to a similar extent as e.g. Intel optimizes their sparse operations in MKL), so that the entire ecosystem could benefit from that. This is probably something that would require some corporate support, but given how many data science and finance companies use Python for their workflow these days, it might be a wise investment.

<comment><USER3> This is true across the board. NumPy, Tensorflow, Pytorch...no library has anywhere near 100% coverage of core functionality in sparse tensors. It's just sort of generally assumed that if you're using sparse tensors, you're on your own.

Tensorflow is better than most, in that it at least _implements_ most ops for sparse tensors, even if it doesn't have efficient implementations for things. I was recently frustrated to find that PyTorch doesn't implement a lot of basic functionality for sparse tensors at all -- it just throws an exception.

<comment><USER4> TensorFlow is indeed the one-eyed king here. We found that running with large SparseTensors, CPU training jobs is actually faster than on GPU nodes. An individual job is faster on GPU, but SparseMatMul just blows up GPU memory use to the point that only one train job fits in its memory. SparseMatMul is inefficient on CPU as well, but you can keep getting some decent speedup by cranking up the parallel trade jobs per node.

I did have great success using Netflix Vectorflow. I roughly gained 2x performance for my use case. It does leave some other performance on the table, no vectorized minibatches etc. If you are training on huge sparse datasets with a shallow ffw network, Vectorflow is a good alternative.

</comment></comment></comment><comment><USER5> There seems to be no end of sparse formats, potential sparse formats and algorithms for dealing with them.

But it also seems like for a given sparse matrix in a given situation, there's no guaranteed that there's algorithm for handling it. The whole thing requires deep experience or black magic.

<comment><USER6> To get the best performance you typically want to know something about the sparsity structure of your problem. Do most nonzeros fall near the diagonal? Or do they clump into dense submatrices?

If you don't have that information, you can look at how your matrix will be accessed. Do you need fast access to random rows, or columns? Do you need to write new values? Are those values already in the sparsity structure?

All of these questions can lead you to choosing the right sparse format, but it does take some experience to know where to look.

<comment><USER3> That's true, but mostly you just want to be able to store massive sparse matrices without filling your RAM with zeros (or spending tons of time reading/writing zeros from disk). Any implementation will do, as long as it works.

<comment><USER7> Storage is a minor worry. The main thing is whether the storage makes the frequent operations efficient. The tuple (index_position, value) is reasonably storage efficient but abysmal for linear algebraic operations. So one cannot decouple storage efficiency concerns from compute concerns too much.

I think this is one of those shibboleths that separate folks who are experts in ML/data-science at scale vs those who are coming more from a enterprise/DBA background. I often have to convince folks why its not a great idea to write sparse matrix multiplication in SQL.

<comment><USER3> _" Storage is a minor worry."_

For many domains, it's a big worry. I routinely encounter large, sparse datasets where I/O and storage dominate other concerns. Big sparse tensors are worse than the "slowness" associated with a suboptimal sparse vector math implementation.

 _" I think this is one of those shibboleths that separate folks who are experts in ML/data-science at scale vs those who are coming more from a enterprise/DBA background."_

I've been doing ML work for a long time. This is actually a shibboleth that separates folks who mostly do image classification from other kinds of ML people.

<comment><USER7> "Minor" in the sense relatively easy to solve if not constrained by the compute needs.

Interesting comment regarding image classification. I would have assumed they are the ones who don't have to worry about sparsity much. Physics, and image and video are some of the places you encounter large and dense matrices. Lapack's wet dream :)</comment></comment></comment></comment></comment></comment>


Typography for User Interfaces - <AUTHOR> https://viljamis.com/2016/typography-for-user-interfaces/ <comment><USER2> From the article: _" we've had graphical user interfaces for mere four centuries."_

What's the graphical user interface from around 1600? Or did he mean "four decades"?

The oldest GUI of which I am aware is General Railway Signal's NX system, first installed in 1937.[1] These used engraved letters in white on black, with a sans-serif font with fixed line width. There were earlier control boards, but this was the first system which had active systems to assist the operator in routing trains. In previous systems, operators set signals and threw switches. With NX, operators selected a path for an entering train, and lights lit up at all the places it could exit. Pressing an exit light set all the necessary switches and signals. All this was interlocked against conflicts for safety.

[1] [http://www.rrsignalpix.com/grsnx.html](http://www.rrsignalpix.com/grsnx.html)

<comment><USER3> I'm honestly not sure what the author's referring to, but if you consider things like a table of contents, page numbers, indices, footnotes, and reference sections to be part of a book's GUI, then we've had GUIs almost as long as we've had books. Though I admit it's a bit of a stretch. :)

<comment><USER4> they had an helpdesk for that [https://www.youtube.com/watch?v=pQHX- SjgQvQ](https://www.youtube.com/watch?v=pQHX-SjgQvQ)

</comment></comment></comment><comment><USER5> It's funny how the article praises large x-height and low-contrast strokes, yet it is written in Garamond, a font with small x-height and high-contrast strokes.

Personally I like small x-height and high-contrast strokes, so I find the article very readable. But I think fonts with these features require higher- DPI displays. Consider Computer Modern, which is beautiful on paper but unreadable at low resolution.

I wonder if the studies mentioned in the article took this into account. Were they testing readability on low-res screens, paper, or what? Would you get different results if you changed the medium?

<comment><USER6> The article is talking typefaces for UIs, not for body copy.

A telephone book, a phone screen menu, a novel, and a traffic sign all have dramatically different constraints on legibility.

<comment><USER7> true, but the difference between a 1080p and retina displays are quite stark. as is the difference between LCD and eInk. that might change things?

<comment><USER8> Retina is, at best, a standard of pixel density, in general it's just marketing.

<comment> yoz-y Standard on phones yes, but the PC market has not yet caught up. A 1920x1080px monitor is still the baseline.

<comment><USER9> Because of battery life

<comment><USER10> GP was referring to Desktop screens, not laptops, I believe. Those are AC powered.

<comment> yoz-y Indeed. The thing I find surprising about laptops that one has basically choice between a HiDPI screen, or a 1366x768 "Everything is blurry" screens.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> I noticed this page's text is rendered with nice fi and ffi ligatures. Yet, they are individual characters. How do you coax that out of a browser? I see the CSS references a bunch of .woff files.

<comment><USER12> There are CSS rules that control a typeface's ligatures for OTF fonts. [https://developer.mozilla.org/en-US/docs/Web/CSS/font- varian...](https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant- ligatures)

<comment><AUTHOR> Also note that these additional ligatures are not always included in web fonts.

</comment></comment></comment><comment><USER13> Also: Don't capitalize every word of control labels. That's amateur-hour. They're not titles or proper nouns, and capitalizing them leaves you no option when you DO refer to a title or proper noun.</comment>


SpaceX Just Flew Its Starship Prototype for the First Time - <AUTHOR> https://www.wired.com/story/spacex-starhopper-starship-rocket-first-test-flight/ <comment><USER2> Half the screen tells me to subscribe. The absolute state of webdev in 2019.</comment>


Perceived Intelligence =~ Measured Intelligence in Men but Not Women - <AUTHOR> http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0081237

<comment><USER2> As a face recognition researcher I've always wanted a set of face images annotated with IQ to see how well a face based IQ estimator would work.</comment>


Vim as a python IDE : some neat plugins and TIPS - <AUTHOR> http://blog.dispatched.ch/2009/05/24/vim-as-python-ide/

<comment><USER2> I've been coding Python in Vim for a while but hadn't heard of a lot of these. Nice find.</comment>


Grocery Delivery Service Instacart (YC S12) Raises $44M - <AUTHOR> http://dealbook.nytimes.com/2014/06/16/grocery-delivery-service-instacart-raises-44-million/ <comment><USER2> I love Instacart. I have two comments about this raise.

1\. I hope they use some of it to hire more shoppers. It is increasingly common to log in at 10am and see no available delivery times until the next day.

2\. "The company makes its money through the delivery fees." That is disingenuous. They appear to make significant margin on grocery items. It's fine - I'm willing to pay for it - but I think they consistently gloss over this fact.

That said, I've been a huge champion of them to my friends and family, and I'll continue to be. Congrats on the growth.

<comment><USER3> Yep, extremely disingenuous. One time they left the receipt in the bag and let me assure you that there are huge markups being taken...

<comment><USER4> I've noticed that the prices on their site are almost always lower (and sometimes considerably lower e.g. $2 / lbs less) than the actual price of the item at the store. I'm not sure if what I'm being charged is the price that is listed on the site or the actual price of the item. It could be if the item is less they keep the difference, but if the item is more they add on the charge.

</comment></comment></comment><comment> k-mcgrady This really confuses me. Why aren't the large supermarkets offering a delivery service in the US (at least last time I checked they weren't)? I can order groceries to be delivered the same of the next day from all the major supermarkets in the UK. I've done it for years and rarely had an issue.

Also, if any of the major supermarkets in the US step in and decide to offer this service won't Instacart's business be instantly obliterated?

Is there something I'm missing?

Edit: I guess someone accidentally down voted my perfectly valid question.

<comment><USER5> They do, but their interface really blows and the scheduling system can be troublesome because they have a limited number of drivers and sometimes you'd have to schedule delivery during a bad time. I've only used instacart a few times, but I could immediately tell it was way better than Safeway's delivery mechanism.

For starters, I could have a single watermelon delivered at 11pm for a party I had going on, but with Safeway, I could not do same day delivery and it would need to be delivered during working hours the following day because the other times were already booked. Safeway's delivery mechanism is probably good enough for large offices that need regular deliveries, but Instacart is good for all other times. I probably would just stick with a single delivery service for everything so I wouldn't waste my time using Safeway's service.

Instacart feels very similar to Google Shopping Express, and if you haven't tried out either service, you should definitely try one of them out. Google Shopping Express can't deliver perishables, but they do support Costco, so if you don't have a car and you need 50 rolls of paper towel, that's the best place to be.

<comment> k-mcgrady Interesting. I wonder if that's really enough. When it comes to groceries the vast majority of people shop based on price. Instacart charges a markup on every item purchased. In this market people seem to value price over convenience especially when the convenience difference is small.

<comment><USER5> I don't agree with that sentiment. I think your pattern detector is only taking in account on how grocery shopping is currently done. When you introduce something new into the system, it may not adhere to the same rules. There are many cases when convenience will trump price. Say you need to buy items from 10 different stores. I would rather use a service that goes to 10 different stores for me, than have myself drive to each store to hunt down each item.

When I use amazon prime, I'm very aware that the prices are sometimes more expensive than a generic brand, but I am willing to pay the small price difference for the 2-day shipping convenience. A study was released on amazon prime shoppers that showed prime customers are less affected by price. The convenience of getting something with 2-day shipping, but with a higher price trumped a cheaper item but longer delivery times. People don't always go for the lowest cost item.

<comment> k-mcgrady >> "Say you need to buy items from 10 different stores. I would rather use a service that goes to 10 different stores for me, than have myself drive to each store to hunt down each item."

I guess it depends how you shop! :) Supermarkets are there to give you the lowest prices and eliminate the need to go to more than 1 store. But I understand where you're coming from. I guess we'll have to wait and see how it works out.

<comment><USER5> Hah, I wish that were true. Supermarkets exist to make money, so they can't stock items that have low demand. If you cook ethnic foods, you'll typically need to visit several stores to buy all the ingredients for your meal.

<comment> k-mcgrady Judging from flog's reply to my comment it's a cultural thing. In the UK the main supermarkets all have sections for ethnic foods (as the number of polish immigrants has increased for example the supermarkets have added polish food sections). Things in the US market seem to work differently.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Why Instacart over Amazon Fresh or Google Shopping Express?

I saw their product when it first launched but I didn't see a distinct advantage.

<comment><USER7> I think it's pretty obvious that Instacart's exit strategy is to make some great technology that either Amazon or Google will buy-out.

There is no way they will survive as a company long-term trying to compete against either of those two. It's a low-margin business with expensive, labor- intensive components that won't scale efficiently over time. They just need enough money to last long enough to convince Amazon or Google to buy them at a premium so that the investors make their 10x.

<comment><USER8> "I think it's pretty obvious that Instacart's exit strategy is to make some great technology that either Amazon or Google will buy-out."

I think they will make a play to open up their shop and delivery service via API to eventually allow stores to use them as a full end-to-end delivery service and sales channel.

The other play is to do what DoorDash is doing with focusing on the core logistics/driver infrastructure and route/scheduling optimization software. Doordash is generic enough to go beyond restaurant delivery and become an open alternative to last-mile courier services in the market today. It's basically Uber cargo but I think they could do so much more by making it an open service that any business could use to handle on-demand delivery to their end users. If Trader Joes wants to provide delivery, they just need to be able to ping DoorDash with an address and have a box ready when a driver arrives. This offloads the liability and capital costs associated with having your own drivers and delivery trucks, etc.

</comment></comment></comment><comment><USER9> Huge instacart user, was wondering what was happening now that Amazon and Google are both moving into the space. It's awesome to see that they're winning.

</comment><comment><USER10> The link seems to be broken?

<comment><USER11> Was broken when I checked earlier, seems to be fixed.

</comment></comment><comment><USER12> i loved it from the start when i was in the bay area doing my and loved it so much that if i wasn't a founder almost applied to join. good luck and exciting market.

</comment><comment><USER13> Congrats Instacart!

</comment><comment><USER14> Shit, déjà Vu. Is it y2k again? If not, what are these guys doing differently from the Y2K grocery services?

EDIT: since Adredreseen Horrowitz invested, I assume it's likely not a repeat from Y2k, and I'm really interested in what they're doing differrently

<comment><USER15> The number of people on the internet (even if we strictly limit to the USA) is far larger now than it was in 2000. There were an estimated 400 million worldwide internet users in 2000. It's now estimated at over 3 billion.

In 2000 only 41% of all US households had internet access. Now it's 81%. This number also doesn't include internet in your pocket (74% of all Americans have some kind of mobile broadband).

The idea of "groceries on the internets" was never bad, it just tried to enter a market that didn't actually exist yet. They also tried to do too much, too quickly: i.e., launching into low population density markets that had zero chance of being cashflow even in the next 20 years. Notice that Fresh, Instacart, Google Shopping Express, and all these other perishable delivery companies are now strictly only in the densest urban areas where there is sufficient economy of scale to make the numbers work.

There are also some smaller contributors to success: people in general are _much_ more willing to put their credit cards on the internet and buy things through the internet. People are able to access the internet while on the go. In the case of Amazon and Google they're leveraging a brand and existing user base that they've been building for years. The state of web tech also means the products are far less painful than before - keep in mind that 2000 was before AJAX, where every click of every button meant a completely new page load... over a connection that is likely dialup.

The game is very, very different from the way it was in 2000.

<comment><USER14> That sounds reasonable. I do still wonder about building up infrastructure vs crowdsourcing. I'd love to have groceries delivered, I hate going to the grocery store & spending hours of my life which I can put to better use. However, I'm an early adopter.

The negative Karma points were totally worth the responses. Wish there were some more with more specifics on said startup.

</comment></comment></comment><comment><USER16> Are they actually making any money? Every time I see their headlines these days, it's "Instacart raised $X" and not "Instacart earned $Y." Don't you have to eventually make money to pay back those VCs?

<comment><USER17> There should be a basic level of business knowledge required to participate in these discussions.

<comment><USER16> Here's a brilliant idea: how about instead of being a dick about it, you explain the circumstances.

It was a serious question that deserves a serious answer, not self-righteous snark.

<comment><USER18> Wait, weren't you being snarky? "Don't you have to eventually make money to pay back those VCs?"

<comment><USER17> I was totally feeding off his tone, and I also love how he believes his question deserves an answer.</comment></comment></comment></comment></comment>


Why we removed bosses at Treehouse - <AUTHOR> http://ryancarson.com/post/61562761297/no-managers-why-we-removed-bosses-at-treehouse <comment><USER2> EDIT: One of my points was mistaken. See the end.

I've seen this is several posts of Ryan's and it continues to bother me (from Part 3 of the linked series):

> _Everyone is hired at Treehouse at an industry-standard salary level that > matches their job description. Most of our team is distributed and outside > of expensive outlier markets (like Silicon Valley or NYC)._

> _The only way to get a salary increase is by performing consistently well in > reviews. We don't have a profit-sharing plan or bonuses (other than the > sales team which has a traditional sales team bonus structure)._

To me this is a way to pay people as little as possible. The "industry- standard salary" for a position like developer increases year over year by more than the rate of inflation. But without even standard cost-of-living increases, it sounds like working at Treehouse for any measurable about of time will put you in a worse financial position than if you bounced around.

EDIT: It seems they do offer cost-of-living adjustments but only for employees who are performing well (not that I'm advocating giving raises to poorly performing employees, but we're talking about 1-2% to cover inflation here).

<comment><USER3> You need to have two increases annually. The first is an market/cost of living adjustment that person's salary increases commensurate with prevailing market. To my mind, this adjustment always works in favor of the employee. Therefore, if the market actually paid less for a job this year than last, then the employee would receive no adjustment. All employees receive these adjustments no exceptions.

The second is a merit increase based on their performance. This increase is analogous to a traditional raise. An employee may or may not receive a merit raise based on the incentive system the company has put in place.

Waiting to address poor performance until annual reviews is a horrendous anti- pattern. When an employee is performing poorly, it should be addressed as soon as it is identified. Therefore, a poor performance review should never be a surprise to anyone. Provided that the poor performance did not emerge near the end of the annual review cycle, truly poor performance reviews should be rare because the issue should have been resolved (either by the person correcting the problem or the company and the person parting ways).

<comment><USER4> So in a bubble market where salaries are potentially inflated, and then the market crashes, yet salaries stay the same? Isn't this a problem?

<comment><USER2> Realistically it's hard to peg a salary to "market rate," particularly when one has gotten merit-based raises on top of that. I think all employees should get a cost-of-living adjustment, tagged to inflation. So if inflation is 3% in a year, everyone gets 3% right off the bat.

I'm torn in that I think the flip-side makes perfect sense. If there is 1% deflation, why shouldn't employees' wages be cut by 1% across the board? At the same time I feel that's the quickest way to see half your development team leave, even though we're talking about less than the cost of a nice dinner each month.

In an environment where the market crashes and it dramatically affects revenue for a business, everything has to be on the table, from layoffs to hiring and raise freezes to voluntary cuts in pay (often to save the job). If you make $100k a year at "market rate" and there's a huge crash, and you're given the opportunity to cut your own pay to $80k or try to get a job for $60-90k, what do you do? It's a tough call for anyone.

<comment><USER5> If there was a 1% decline, would it work to not adjust pay but record this negative inflation so that next year if it's +2% then the employees only get +1% raises? If the economy continues to go down then this won't work, but it would handle a short bump fairly without actually reducing anyone's pay. Would people still leave?

<comment><USER2> Why is it expected to get inflation-based increases with deflation-based reductions?

</comment></comment></comment></comment></comment></comment><comment><USER6> While I hope this continues to work out for Treehouse, I'm not sure I agree with Ryan's problem statement:

 _" In my experience, managers' responsibilities were … \- Communicating messages from top to bottom \- Settling disputes \- Managing careers \- Keeping their teams motivated and happy \- Shielding their teams from things they didn't think they needed to know"_

I think that's a pretty narrow definition of management, esp. things like "communicating messages from top to bottom".

While I don't disagree with the fact that a significant component of management, esp. large parts of middle management, can be done away with, I don't think any reasonably complex and growing organization can do away with management altogether.

A great manager (who may also play a part as an individual contributor) can channel & amplify an organization's creativity and innovation. S/he will also ensure there is an alignment b/w the organization's high level strategies and the individual contributions being made.

Much as we'd like to think that tech workers are unusually self-motivated or that online tools can fully substitute people management, in my experience neither are the complete truth.

Further reading:

\- How Google Sold Its Engineers on Management: [http://hbr.org/2013/12/how- google-sold-its-engineers-on-mana...](http://hbr.org/2013/12/how-google-sold- its-engineers-on-management) \- The Flattened Firm—Not as Advertised: [http://hbswk.hbs.edu/item/7000.html](http://hbswk.hbs.edu/item/7000.html) \- Be a Minimally Invasive Manager: [http://blogs.hbr.org/2013/10/be-a-minimally- invasive-manager...](http://blogs.hbr.org/2013/10/be-a-minimally-invasive- manager/)

Fair disclosure: I'm an MBA...biases, warts and all.

<comment><USER7> I love the Treehouse article. 90% of the employees voted for it. The 10% who did not were the managers. :)

I wonder if any managers voted for it; or it any employees voted against it. I would be curious to hear from the displaced Treehouse managers as to what they think about the move. Maybe they were already doing fiefdom building and things that are orthogonal to the founder's vision.

I would also love to hear a follow up a year from now from an anonymous employee or two as to how it worked out.

nb. I did read the article from HBR on Google and managers - while I found it compelling, I also had to wonder whether HBS needs articles like that in their publication to ease the conscience of their students and alumni about the value of their degree and their utility to the companies they work for.

<comment><USER8> I was one of those Treehouse managers and I voted for it. Still very happy that I did. :)

<comment><USER9> What does your role at the company pivot into?

<comment><USER8> It's really not as different as everyone is assuming. Fewer meetings, which is good. :) I wasn't demoted, everyone else was promoted, in a way. Anyone can be a leader. So I'm still leading, it's just on smaller teams and on more focused projects that change more frequently. I'm better able to apply my talents where they're needed from day to day.

<comment><USER9> Sounds like a challenging and rewarding transition :}

</comment></comment></comment></comment></comment></comment><comment><USER10> You'd be surprised how fast rank gets pulled when the money stops flowing. Management structure is basically irrelevant at a company that's doing well. It's only under stress that you understand why the military has a strict hierarchical structure. It's to prevent organizational collapse under extraordinary conditions.

<comment><USER11> In the military you are trained to go into extraordinary conditions. The reasons for this exercise is to stay out of the extraordinary 'issues'.

</comment></comment><comment><USER12> I find it interesting that this starts with : _As we added more people to the team, we noticed something disconcerting: rumors, politics and complaints started appearing._

This suggests that Ryan has confused "leadership" with "management". Good leadership means that people are all working to the same goals, good management means that people are working efficiently.

If you want to fix rumors, cliques, and back stabbing. Look to your leadership. If you want to get more done with the same number of people look to your managers.

<comment><USER13> If you want to fix rumors, cliques, and back stabbing...it's not a leadership problem.

It's a people problem! Hire better people that won't engage in petty crap like that...

<comment><USER14> It's been my experience that those negative social phenomena are emergent with any sufficiently large group of people. You need structural components in place to prevent them, or you need to not grow.

<comment><USER13> I'd rather not grow ;-)

<comment><USER15> So youd rather fail? Or stay lifestyle?

</comment></comment></comment></comment></comment><comment><USER16> Part 2 discusses more about forming projects and clarifies that whilst there are no 'formal' managers to cajole people into doing things, there still need to be 'sticks' to hold groups together.

[http://ryancarson.com/post/61606695537/how-to-set- priorities...](http://ryancarson.com/post/61606695537/how-to-set-priorities- create-budgets-and-do-project)

I think it's interesting that beneath the tagline of 'people work on whatever they want' there is actually an expectation that peer pressure will prevent this; once you're onboard with a project, you are expected to stay and contribute otherwise you will be penalised in your quarterly reviews. So manager-in-person has been replaced with manager-in-peers.

This is also the means by which people are discouraged from working on solo projects; since no-one can really rate them at review time, they'll slip down the rankings.

As usual, however, no discussion about how boring regulatory things are done.

Edit: actually that last statement was incorrect, sorry . If there is such a need then management is imposed:

 _There isn't any top-down prioritization (unless we are required by law to act on an issue or some "red alert" type work is required, which should be rare)_

<comment><USER17> I would imagine if the solo project benefited peers greatly, they could still score well in the peer review. Think of someone building a powerful internal tool.

It does mean that any endeavor that doesn't produce quickly would be a bad candidate for a solo project.

</comment></comment><comment><USER18> I initially felt positive about this -- and I don't doubt that it's working for them -- but I have the nagging feeling that there would be a break in the accountability chain.

I can imagine a board meeting where an investors asks "so why are you behind on your customer growth this quarter?" and one of the founders says "no one at the company thought those projects were worth doing this quarter, and we're only 'guides' to the planning process so we can't ensure that something like that gets done."

Or a customer asks "why didn't you patch that security hole that we knew about last quarter?" \- "no-one thought that project was as worthwhile doing this quarter as a bunch of cool but ultimately less-valuable features, and we are only 'guides' to the planning process so we can't ensure that something like that gets done."

There has to be someone setting specific overall goals and being accountable for hitting them. (Edit: at least if I was an investor / customer / employee of the company, I'd feel better if that was in place)

I'd be curious to hear more about how that's handled!

<comment><USER19> It's feels great to be able to blame managers when something goes wrong, but that's the only real difference between having or not having your 'accountability chain'. And if your company is structured to have someone to blame when things go wrong, you're not really building for success.

I get that everyone is afraid of prioritization going out the window without managers, but in my experience (and ymmv), managers are no better than productives at prioritizing. Grown-ups are used to taking responsibility.

</comment></comment><comment><USER20> This is a link-baity title. They have clearly not done away with "bosses", as the two co-founders clearly are and remain bosses. They have just decided that between the two co-founders, they don't need _more_ management, they can rely on self-management, which is completely sensible.

<comment><USER21> As long as someone is handing out performance reviews, bonuses, and raises, there are bosses. This obviously includes the people with the checkbooks, but it also includes the advisers, formal and informal.

</comment></comment><comment> at-fates-hands Its interesting as someone who's worked at two companies and run four others, I'm surprised he missed one of the most basic jobs of a manager:

Sets objectives. The manager sets goals for the group, and decides what work needs to be done to meet those goals.

Also, when you have a flat structure, what incentives are there for people to aspire to anything other what they're doing now??

While I can appreciate his leap of faith, I'm not sure this will work out long term.

<comment><USER22> I agree with you about missing a basic job.

> Also, when you have a flat structure, what incentives are there for people > to aspire to anything other what they're doing now??

However, I feel that this makes the mistake of believing that the only way people want to ever grow is into management. For myself, this is absolutely not the case. There really do need to be other ways to grow other than into management.

<comment><USER5> Personally I do not want to grow into "management" because I don't want the job of managing people and careers. But I do want to grow into guiding product direction and picking my own projects. At most companies those two are linked. The more tenure/respect you have the more you can influence managers, but the managers still have ultimate say on the product direction.

Because of this I keep thinking about whether it would be worth the hassle of being a manager just so I could have the control I want.

It also makes being a startup (co-)founder very appealing because I'd be much more involved in what development gets done. Except then it would add even more overhead on top of managing people, since co-founders also manage finances, legal, PR, and take on risk.

I agree there needs to be a better way for people to grow. That's why I'm interested in flat structure experiments.

<comment> at-fates-hands >> I agree there needs to be a better way for people to grow. That's why I'm interested in flat structure experiments.

I worked at a startup who got bought by a large corporation. We had already had a flat structure:

Manager

Team Lead

Senior Developer

Developer

As soon as you moved to Senior Developer, your development ceased. Which lead to essentially a flat structure for developers since most didn't want to go into management. The only option was to quit - which happened frequently and increased turn over.

This lead to another crisis of how to give developers a role besides management to aspire to. They came up with two roles. One was a "research and development" role and the other was an "application development" role.

This lead to another crisis. When you have a large team of developers and only two roles to aspire to - you again have another flat structure. Too many people for too few spots put them right back where they started. If you didn't get an "R&D" or "App Dev" spot, developers got frustrated and left. It created more politics and backstabbing and "cliques". If you knew the manager, you got preferential treatment to get into these now prized roles. It actually created more problems than it solved.

In order to get around this, you have to build a hierarchy structure, not just new roles. This include title changes as well as increase in pay, increase in responsibilities, etc. You can give developers a non-management track, but it as to be structured, and give people a sense they are achieving their goals and not feeling like they're being marginalized or just another cog in the wheel.

This is why I'm not sure flat structures will work. When you reduce the ceiling of achievement for everybody, what else is there to look forward to?

<comment><USER23> That's not really "flat" in the sense that the OP is describing it. What he's talking about is restructuring a company to look more like an FOSS project. You have the project maintainers (c-level team) that set the goals. They sign off on all subprojects that are aligned with those goals and have enough people who want to work on them. The subprojects are run the same way, with people deciding what to hack on, in a way that is aligned with the goals, plus has support of the other team members.

The situation you described has all the crappiness of a corporate hierarchy, but none of the promises of meritocracy ("work hard and advance"). From the programmer's perspective, he's stuck both in rank and in skill.

Contrast this with the FOSS model, which creates the feeling that he's working on something, versus working for someone. He can work on whatever project he's interested in, or create a new one if it has enough traction. Since he's not going into management, that leaves him with advancing in either depth or breadth. He can advance in depth by choosing to work on something that challenges his skill level. Or he can advance in depth by working on new technology or in a new area (e.g. frontend vs. backend).

<comment> at-fates-hands >> He can work on whatever project he's interested in, or create a new one if it has enough traction.

Just to play Devils Advocate here, but what happens if everybody wants to work on the same project? And this same developer doesn't have enough traction for other projects he would like to start?

<comment><USER23> If everyone works on the same project, there's only so much work to go around. If no one wants to work on something, it's probably a sign that it's not worth doing.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> When Valve gets invoked like this, it's not always a positive thing. There was a good post about Valve's flat management structure about half a year ago [1], which raised several interesting points. Seriously, check out that post, and read up on 'The Tyranny of Structurelessness'.

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

<comment><USER25> That's exactly what my reservations are about this approach. Perhaps the problem is not so much that they chose a management-less structure, but rather that they imposed a new approach top-down.

Hierarchy isn't always bad, nor are managers. I mean, the army (special case perhaps) probably wouldn't function without it.

Perhaps in companies that can experiment in this manner, a better approach is to try and organically grow models that fit _that_ specific company. As another commenter mentioned, you could start with giving developers x% time to do whatever they want, and scale up from that. Then regularly review any metrics that matter to you (the boss), and adjust.

The way I see it, humans in any context need structure of some kind. Why not focus on having people that are good at feeling the needs within the company, and grow structures from there. Maybe some parts of the company actually need hierarchy, and maybe others don't.

</comment></comment><comment><USER26> I love the idea of this, but am not sure how this works when you have things like on-call rotations, support hour coverage, unpleasant tasks that need doing (late night deployments, etc...). If you let everyone self manage, and no one is handling support tickets during your published support hours, who's fault is that? How do you make sure that the least aggressive/most agreeable person doesn't get stuck with all the 3 AM deployments?

Have a manager solves those problems, and I'm not sure how they'd get handled in a flat structured company. Without ownership and accountability for specific responsibilities and/or deliverables, I think that the least pleasant jobs would get dropped...

</comment><comment><USER27> There are degrees. The company I'm with as a senior dev, has less than 25 people, yet I've got 4 layers of management above me.

If everyone is as professional and as dedicated as everyone else, and if conflict resolution and communication is easy between all people at the company, I can see the "no management" approach working.

<comment><USER28> Wow, my jaw just dropped open. Less that 25 people and 4 levels of management? How can you operate with that much bureaucracy in a small company? Very slowly, I'd imagine.

<comment><USER29> all depends how involved each layer is. perhaps the top layer never even speaks to the other 3 more than a yearly meeting.

<comment><USER30> And how does the top layer make any decisions then, without being aware of what's happening in the company? If they only make decisions that can be made by participating in a single meeting per year, it doesn't really make any sense for that layer to exist at all. Continue recursively.

If there really are four layers of management in a company with 25 employees, that basically means each manager has zero, one or two subordinates. I really cannot see how that could work very well at all.

<comment><USER29> i was thinking ownership for a top layer, but that could be true for lower ones too. but i see your point, ownership and management are different things.

</comment></comment></comment></comment></comment><comment><USER31> Of course, there will be lots of criticism that such schemes "don't scale". This is a BS red herring that detracts from the real issue.

The general idea is for companies to be run as a democracy, like how governments are. IMO this is even more important than Basic Income. You spend 1/3 of your life working under these conditions, so why shouldn't corporations be democratic?

As for "implicit hierarchy" or "informal authority", yes that is partly the _point_. Not for positions of absolute authority to be ill-defined by top-down management which don't reflect reality; but for recognition and respect to be awarded based on _actual merit_. Cliques and inappropriate peer pressure might form (as claimed by articles about Valve not too long ago[1]), but you can deal with that another way, instead of resorting to hierarchy and absolute authority.

How do democratic governments work? That could be how corporations work.

[1] Whether or not actually true is a side point; the things it described certainly _could_ happen and therefore are theoretically interesting

<comment><USER32> _but for recognition and respect to be awarded based on actual merit_

 _you can deal with that another way, instead of resorting to hierarchy and absolute authority_

Could you elaborate on both of these please? I am incredibly doubtful that a meritocracy naturally springs up and enforces itself. How does that actually work when everyone is on board with that idea? How does it defend against people that are just in it for themselves from exploiting it?

You can make theoretical arguments that hierarchical management is the best form of management for meritocracy as well, but that doesn't hold up in practice either.

Right now your post doesn't do anything to explain why the "no management" model works, you just more forcefully assert that it does, and handwave away two of the readily apparent points it could go wrong.

<comment><USER31> > Could you elaborate on both of these please? I am incredibly doubtful that a > meritocracy naturally springs up and enforces itself. How does that actually > work when everyone is on board with that idea? How does it defend against > people that are just in it for themselves from exploiting it?

Look at how many FOSS projects work. Look at how many hackerspaces work. People gain reputation for doing good things, and in turn they are listened to (gain soft authority). People that try to take over get ignored, or thrown out.

Yes, I know that the economics are a little different, since it's a lot easier to fork a software project. However, this gives us a base to work on top of.

> You can make theoretical arguments that hierarchical management is the best > form of management for meritocracy as well, but that doesn't hold up in > practice either.

Sure, all of this is theory and useless, we need people to try it. My point has always been "the counter points are invalid", to encourage people to try it.

> Right now your post doesn't do anything to explain why the "no management" > model works, you just more forcefully assert that it does, and handwave away > two of the readily apparent points it could go wrong.

I'm not handwaving them away; I am saying that they are not critical to being able to sustain a "no management" model. There are existing projects that work like this. The problems people mention are real problems that are either solved well, not solved well, or not all that important, but it is very rare for them to be _critical_ , which is the common (invalid) argument.

</comment></comment></comment><comment><USER33> I paid for an annual subscription to their web design classes and thought they were horrible - I've subsequently found free resources that are much superior, like Codecademy.

Maybe some good managers could have helped by taking the unpopular stand of "guys, this sucks, we need to do better."

</comment><comment><USER34> Is it just a coincidence that I never hear again of a company that declared something like this?

<comment><USER35> Other than Valve, of course.

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

Their new employee manual: [http://newcdn.flamehaus.com/Valve_Handbook_LowRes.pdf](http://newcdn.flamehaus.com/Valve_Handbook_LowRes.pdf)

<comment><USER36> SEMCO, to me, is the best example of this. While they haven't fired all of their managers, they are a _very_ large company doing self-management in a whole bunch of different verticals.

Books by the SEMCO founder, Ricardo Semler:

Maverick - [http://www.amazon.com/Maverick-Success-Behind-Unusual- Workpl...](http://www.amazon.com/Maverick-Success-Behind-Unusual- Workplace/dp/0446670553/ref=sr_1_1)

The Seven Day Weekend - [http://www.amazon.com/Seven-Day-Weekend-Changing- Work-Works-...](http://www.amazon.com/Seven-Day-Weekend-Changing-Work-Works- ebook/dp/B000PDYVXE/ref=sr_1_2)

</comment></comment></comment><comment><USER37> Bryan Cantrill from Joyent delivered a really good session at Surge this year on a similar theme, Leadership Without Management: Scaling Organizations by Scaling Engineers. Well worth watching.

[http://www.youtube.com/watch?v=bGkVM1B5NuI](http://www.youtube.com/watch?v=bGkVM1B5NuI)

</comment><comment><USER38> Stock the fridge with tons of beer, pay young 20 something engineers tons of money, then remove accountability. Also, the "non-boss" founders should just walk around talking to who they like the best. This will drive the company towards a better product.

</comment><comment><USER39> This makes sense for projects, but how does it work for the perpetual parts of running a business. Who takes care of payroll, tax filing, keeping the infrastructure running, etc.?

Are these perpetual, "projects?"

If anyone has any experience with this, please share.

<comment><USER40> You can outsource payroll, general accounting and tax stuff fairly easily. Serviced offices give you rooms, desks, chairs, someone to answer the phone, toilets, kitchens, physical security etc.

</comment></comment><comment><USER41> To me, the core issue here isn't specifically about management, but about allowing their developers to follow their intuition. I think a great way to do that is to set aside a time for developers to work on whatever they want to (within the scope of the project). Feel like your test coverage is lacking? You get X% to work on that. Some technical debt always been bugging you? Use your X% on that.

The beauty of this approach is that it can start as an experiment, say 10% (or a day every two weeks), but then migrating to an environment where employees set most of their work queue is just a matter of adjusting X.

</comment><comment><USER42> Sounds great ... call me in 10 years and let us know how it went. Somehow, I think the company will be acquired & re-orged, dead, or someone will take over who re-injects managers.

It's sad, really, because in principle, I agree.

</comment><comment><USER43> A manager's primary goal should be to make themselves superfluous as much as possible. Whether that can be attained for the full 100% depends not in a small part on the type of business your in.

Doing away with managers entirely is not a one-size-fits-all solution.

I also can't fail to notice that like this example, most of these attempts start with horror stories about a failing management / organization. Just because doing completely without management is better than the previous situation, doesn't mean that there isn't a middle ground which might work even better.

<comment><USER44> > A manager's primary goal should be to make themselves superfluous as much as > possible.

My experience is that most managers have climbing the ladder as their primary agenda. Making themselves superfluous almost always does not align with that goal.

</comment></comment><comment><USER45> In my experience programming is a dead end job, as is any work that creates 'output' (ex: a marketing document). To progress, you should be a parasite, and not work. Just create meetings and emails to stop others from working. They decide what you should work on and when you should be done by, how motivational. Am I a salve? The career goal and company goal are 2 different things.

Unless you remove the parasites that have no output. So good job removing managers. I have a start up, I am a founder and I'm doing the same thing!

</comment><comment><USER46> Someone needs to say something about that hideous layout. It's mobile-first and I had so much wasted real estate on my screen. So annoying.

<comment><USER47> [http://readability.com/articles/droi9kvk](http://readability.com/articles/droi9kvk)

</comment></comment><comment><USER48> Similar lack of structure exists at CloudFlare.

<comment><USER49> How does one get fired at CloudFlare? Who evaluates employee performance?

</comment></comment><comment><USER50> There are many flaws with contemporary management practices, but its existence is not a flaw. You would do much better by not tying pay/promotion to management. When that happens, you explicitly create a whole level of organizational politics that is contrary to the organization's goals.

</comment><comment><USER51> Another way to remove bosses is to work for yourself and co-ordinate with others through prices.

</comment><comment><USER52> I'm curious about the on boarding process for a new hire—green or experienced. When you go flat, whose responsibility is it to show the new person what to do and how to do it?

</comment><comment><USER53> Thanks for posting this. It's been fun to document how #NoBoss actually works day-to-day. My hope is that other companies will try this.

</comment><comment><USER54> Is this -the- Ryan Carson of YouTube pre-roll ad fame? Because I still see them EVERY SINGLE TIME.</comment>


Brains, Brains, Brains, Brains: different flavors of genius - <AUTHOR> http://scienceblogs.com/pontiff/2009/01/brains_brains_brains_brains.php

<comment><USER2> Interesting classification. I can't help but feel that it's overly simplistic to think that each "genius" is only a genius in one of those areas. Back in Oxford, I met many people who were clearly good at several of these areas, amongst both other students and professors.

Imho, the "dots and spaces" metaphor is still the best one to describe the diversity of brilliance around us: <http://www.stephanietolan.com/self- knowledge.htm>

<comment><USER3> From the post: "just to cut out the comment before it happens, of course these [areas] are not mutually exclusive".

<comment><USER4> I _think_ that swombat's intended point was that the areas of genius correlate very highly with each other's presence -- to the point that treating their respective occurrences as independent events (possibly) damages our actual understanding of the situation. Which has been my experience also.

You did refute his actual point, though.

</comment></comment></comment><comment><USER3> Something I find interesting about this post is that the author is an accomplished theoretical physicist, who has known and worked with many leading theoretical physicists and computer scientists. It gives his classification some extra credibility.

</comment><comment><USER5> These things always read like horoscopes to me. It always feels like simple bait for people who are looking to reaffirm their genius.

</comment><comment><USER6> A suitable response to this: <http://news.ycombinator.com/item?id=447904>

The problem is, if you abstract any amazing person into one word, it is usually "genius." Which elicits the natural tendency to find patterns and make comparisons (since we are comparing "apples" to "apples" now, aren't we!?). Amongst the different flavors of humans, there is a common flavor of romanticism and bias.</comment>


Show HN: `$` Can be used in any webpage from the browser console - <AUTHOR> Just try it. It is as if a mini jquery is now builtin. `$('.class')` doesn't work on hacker news because here $=getElementById <comment><USER2> $ is basically a shortcut for document.querySelector in the console, I wrote about some other things I found here: [https://loftie.com/post/things-you-may- not-know-about-chrome...](https://loftie.com/post/things-you-may-not-know- about-chrome-devtools/)</comment>


Ask HN: Why and how should someone learn functional programming? - <AUTHOR> A lot of people tell me that it's the holy grail of programming crafts -which I don't see. So enlighten me.<p>Thanks in advance. <comment><USER2> In terms of day to day programming, I've picked up the following habits:

* Natural terseness. A lot of functional code is freakishly short. Because functional code is similar to how we think of math, it's often times easier to simplify out over-computation and you end up with the bare minimum of what you actually need.

* Generic programming. Things like currying and first-order functions are great for separating (or combining) context from computation. When you understand where the difference lies, you can write your code such that it is adaptable in the most efficient way (read: generic).

* Lambda functions. Infinitely useful in a language that uses them, like Python. Lambda's are great for doing work over large collections of data without getting lost in for loops (i.e. map, reduce, sort, fold).

FWIW: I learned what I know from Haskell

<comment><USER3> Examples I completely agree with.

I got used to short functions so much, than my normal function length in any other language went down a lot too. Now I'd probably refactor anything that doesn't fit on half of a screen (got fairly big monitors though). And that's a good thing - the effect is easier to read and the shorter the code is, the more self-documenting it becomes, because you have to name every sub-process correctly via the function name. Something that would otherwise be a 40 line function with inline comments: "First do this", "then do that", becomes a two- line: do_this(); do_that(); with ~20 lines in each of them. Much much better.

On the other hand, once you get too used to lambdas, you start missing them in other languages. It just felt natural for me at some point to make a C macro (f, arr, type, len) which did something like map on an array of `type` using a function pointer `f`. That didn't go very well with other people who normally read that code...

</comment></comment><comment><USER4> If you've really never had any functional programming experience and you are interested in haskell, I would recommend "Learn you a Haskell For Great Good" <http://learnyouahaskell.com/>

It's a little bit silly, but it's a great bottom up tutorial of haskell and a lot of functional programming paradigms.

</comment><comment><USER5> I wouldn't say that it's the holy grail, but there are several reasons why it's good to know, and also many why we'll probably start seeing a lot more of it.

The biggest reason that its' a good thing to learn a functional language is a lot like the reason that it's a good idea to learn more languages than just Java. In this case, all you have is one paradigm to think in (object-oriented (probably procedural as well, but...)). Functional programming is a completely different beast that requires different ways of thinking. Lots of the neater concepts of many popular languages now are lifted right out of functional ones. Python's list comprehensions and generators come to mind.

A more pragmatic reason to learn about functional programming is that it is becoming increasingly useful. Functional languages are, in general, much easier to parallelize. More importantly than that though, they make it easier to make _correct_ parallel and multi-threaded programs.

As for why these are often presented as the 'holy grail' of programming, many of features exist to make it simple to create concise, correct programs. The features are all the foreign-sounding buzzwords that people tend to rave about: composition, laziness, currying, lambda-functions, monads, strong type systems, type inference, higher-order functions, loop abstractions, and any number of other nifty things.

If you're interested in learning more, check out the Haskell or Ocaml languages (or Lisp, but Lisp isn't entirely functional).

<comment><AUTHOR> Any resources you suggest, just off the top of your head?

Realworld haskell is free online, any others?

<comment><USER5> I'm a fan of Learn You a Haskell for Great Good (<http://learnyouahaskell.com/>). It's not quite done (a couple of advanced topics are absent at the moment) but it's a good introduction to the language, and is somewhat less dry to read than your average programming language book.

</comment></comment></comment><comment><USER6> I wouldn't say it's a Holy Grail or Magic Wand, or whatever you want to call it. I would say: learning a (pure) functional language, or taking a university course on it, is a religious experience. One that every programmer should go through to learn a new way of looking at problems.

<comment><USER7> Important side note: religious experiences are not always good :-)

</comment></comment><comment><USER8> I thought these papers are useful:

<http://www.cs.utexas.edu/~wcook/Drafts/2009/essay.pdf>

[http://www.ccs.neu.edu/home/matthias/Presentations/ecoop2004...](http://www.ccs.neu.edu/home/matthias/Presentations/ecoop2004.pdf)

[http://www.bluebytesoftware.com/blog/2010/03/01/OnHaskellTyp...](http://www.bluebytesoftware.com/blog/2010/03/01/OnHaskellTypeClassesAndCInterfaces.aspx)

[http://www.harukizaemon.com/2010/03/functional- programming-i...](http://www.harukizaemon.com/2010/03/functional-programming- in-object-oriented-languages.html)

</comment><comment><USER9> it isnt the holy grail, I can say I am a better programmer thanks to learning erlang though, half of that is due to its functional nature, half due to the erlangs idioms.

you learn the same way you learn any other language, just pick something to program and go for it.

</comment><comment><USER10> I learned using Elisp, it didn't make a better programmer, but I am much more pragmatic now.

Use the 3 schemer books The little schemer, the seasoned schemer and the The Reasoned Schemer, and read Structure and Interpretation of Computer Programs. You can work through the books using clojure or other more appealing languages.

<comment><USER11> Elisp isn't really functional ... everything is dynamically scoped so you don't get closures and the entire language is built for mutating state.

</comment></comment><comment><USER12> Referential transparency makes things so much simpler, there is so much less stuff to keep track of, when your program is much less prone to random state in one part of your code affecting another.

Its not the "holly grail of programming", its more like "the less broken type of programming".

<comment><AUTHOR> I think I'm running out of ideas as to where I would IMMEDIATELY want to use it.

A list of neat projects that should highlight the use of functional programming would be useful in this case.

</comment></comment><comment><USER13> How long have you been programming and in what languages?

<comment><AUTHOR> For about 6 years. In C, Java, Perl, Python, C++ and, sadly, VB.

I've seen a bit of "funcational" in python's type "function" and lambda expressions. But didn't really understand how I could go far with this.

I kinda don't see how I can build a large project based solely on the idea of having those constructs in the language.

<comment><USER13> Once you have enough scars from side effects, especially if you try your hand at concurrent programming, you'll appreciate it a lot more I suspect. Although as others have noted, it's not exactly a "holy grail".

</comment></comment></comment><comment><USER14> I got my first taste of functional programming with Erlang. Honestly, it had me befuddled for quite some time with pattern matching and the "functional" style; I was used to using objects to encapsulate rather than "modules" and "functions" - the distinction in nomenclature may seem frivolous, but the concepts are worlds apart when used in the context of Erlang or Java.

Erlang taught me a lot that I never even came close to learning with PHP, Python, and C++. Most notably what Erlang is good at - Concurrent Programming.

I still didn't fully "grok" functional programming though as I just completed the book and didn't complete any projects using Erlang. The real meal first started with Common Lisp which drove me to Scheme (Common Lisp is a mess, Scheme is minimal in nature, and Scheme is much more true to a functional language than CL). I then picked up the _Little Schemer_ series of books and proceded to have my world view enlarged; with the addition of many other excellent resources, my knowledge of programming increased exponentially.

Within a few months of "grokking" functional programming and grooving with Scheme (it is my favorite language to date, Python comes second) the noted benefits were: an increased academic understanding of computing and the modality with which computable logic is represented, clearer/cogent/lucid and higher-caliber thought, my creativity in programming was unleashed, and I've found that I have a vested interest in the _philosophy_ behind what I do. I also feel like my general perception of reality has changed too, I interpret my life experiences with a different set of concepts now.

The experience of learning a functional language and being committed to "grokking" it, has been remarkably similar to the time I went backpacking through India for two months on a budget... _alone_. I came back with a new kind of maturity and my mind just works different from everyone else I know that still hasn't left the states. It's like that, your mind just works different than all the others that haven't left procedural/OOP land.

As for production projects: there are plenty of companies that use Scheme, Erlang, and a other functional languages. I personally would love the opportunity to program in Erlang or Scheme over any other language (they are that much of a joy); alas, my industry (web application programming) is primarily enamored in Ruby/Python/PHP (Python and PHP being my primary marketable skills) so I would probably need to build my own startup or work for a company that uses the language (it wouldn't be in web application programming though!).

By the way, HN is built using a dialect of LISP based off of Common LISP (is that correct?) of which Scheme (Scheme is also a dialect of LISP) is a brother.

</comment><comment><USER15> I'm curious as well.</comment>


Mozilla Style Guide - <AUTHOR> http://www.mozilla.org/en-US/styleguide/

<comment><USER2> That's really quite good. I hope they follow it up with some Design Guidelines. Extensions could do with a bit more consistency.</comment>