Calvin: Fast Distributed Transactions for Partitioned Database Systems [pdf] - <AUTHOR> http://cs.yale.edu/homes/thomson/publications/calvin-sigmod12.pdf

<comment><USER2> Prof. Abadi's post on his blog about Calvin: [http://dbmsmusings.blogspot.co.uk/2012/05/if-all-these- new-d...](http://dbmsmusings.blogspot.co.uk/2012/05/if-all-these-new-dbms- technologies-are.html)

Reddit comments on the blog post: [http://www.reddit.com/r/programming/comments/trb7e/if_all_th...](http://www.reddit.com/r/programming/comments/trb7e/if_all_these_new_dbms_technologies_are_so/)

<comment><USER3> Thanks for the supplementary links, they really clarify things for me. I think the key high-level decision they made is to ignore per-transaction latency in pursuit of higher throughput. A consequence of that decision is that the application logic of the transaction must be executed by the coordinator.

A while back coworkers and I developed a system that made similar tradeoffs, and was capable of linear throughput scaling as well, but never made it into production for various reasons. The per-transaction latencies were in practice "good enough", though they theoretically could grow quite large. The necessity of combining the application logic with the transaction coordinator was a lot more difficult in practice than I'd expected, especially since we required completely lock-free logic. It turned out to be a real brainteaser for some applications. It's going to be much easier to write logic for Calvin, because locks are somewhat more intuitive and map more closely to existing systems.

</comment></comment><comment><USER4> I went quickly through the paper, and there are some interesting ideas, like separating scheduling, sequencing, and storage.

Also, there are some details that leave me a bit confused... For example, they mention they use ZooKeeper for Paxos, while ZooKeeper uses a different protocol, ZooKeeper Atomic Broadcast.

</comment><comment><USER5> I took Prof. Abadi's seminar "Database Systems" this past semester and really enjoyed it. Great class, great teacher and super interesting material. He's also very good at commercializing academic research, which is something everyone can learn from.

<comment><USER2> You should come work for Hadapt, we love Yalies :) PM me if interested.

<comment><USER5> I applied, didn't get the job. Awwwkward.

</comment></comment></comment><comment><USER6> This is not particularly new, it's from May 2012. There's an easier-reading writeup here:

[http://gigaom.com/2012/05/16/calvin-a-fast-cheap-database- th...](http://gigaom.com/2012/05/16/calvin-a-fast-cheap-database-that-isnt-a- database-at-all/)

</comment><comment><USER7> OK, sounds good but, Im getting the feeling that serializing database work across distributed parallel transactions queues is the solution. I think there is a little sunny optimism here about rollback frequency. Deterministic parallelism is not going to help you much when you have the same transactions failing across distributed nodes.

If you dont have a lot of rollbacks I can see this being ok.</comment>


Ask HN: What made you choose your current career? - <AUTHOR> Please state your career <comment><USER3> It was December, I was bored to death staring at my four screens and thinking the weather really sucks in Europe in winter, and some guy calls me out of the blue asking me if I want to move to the beach. I had a chat with a few colleagues, one of them told me he spent a year in Australia and loved every second of it; his wife refused to move from Europe as she liked to be close to her parents, so he was stuck in the miserable weather and resigned to his fate.

I took the Skype interview at 6am in the dark of my flat, wearing my suit for work, and he made sure to tell me about how he had just gone surfing that morning. I had to do three trades from the train platform due to the delay and a time change in South Africa we forgot about.

My boss was busy making a lot of money on a volatile morning and took a couple hours to process my verbal resignation, at which point he jumped ("you WHAT?") and told me to go see HR. They trusted me, and were relatively busy, so they let me stay til the next day.

We had a chat in a conference room where he told me that his biggest regret was how his career kind of "just happened", with positions of ever increasing money and responsibility keeping him in the game until he was life-locked (kids, house, cars, skills, network...). He encouraged me to go seek adventure, he had wished to go to Asia at "my age" but never got round to it.

Sydney was even more awesome than I imagined. The rest kind of followed naturally; that and I never managed to get back in, so had to keep going, self-teach, moved companies, etc.

But it all comes down to a cold, miserable day in Geneva and an executive trawling LinkedIn for suitable hires for his team downunder. I sometimes wonder whether I'd have eventually quit to do my own thing, or whether I'd be, like some of my friends from university, debating whether to go for the DBS or the F-type this season.

<comment><USER4> Your writing has a wonderful tone. Do you have a blog?

<comment><USER5> Check the OP's past submissions. You are in for a treat!

<comment><USER3> Thanks to you both... that means a lot!

Funny thing is I started a few blogs anonymously, and they never really took up, and I stopped all of them within weeks of starting. But I keep coming back here because, well, a man is weak, and those upvotes mean something, that somebody read it and enjoyed it.

Somehow that "pays" more than the dollars I could have gotten consulting for the same amount of time it took to write it...

<comment><USER6> Are you a developer or a trader? What do you think about desk development positions?

<comment><USER3> Neither - my co-founder and I consult over the whole data chain from tracking to recommendation engines and automation, and I write around 10% of the code, usually SQL and scripting; this finances our startup R&D better than taking funding in Singapore, which is only generous towards Singaporeans.

I think finance is a broad industry with a wide mix of experiences and competence and it entirely depends on which firm you are working for. I'd work in any position for someone like Jim Simons, Paul Singer or Seth Klarman, I'd probably try fairly hard (and tried fairly hard back then) to get in somewhere like Glencore, places like IMC or Tibra sound quite fun, but I'd hesitate to take up any kind of job at some of the smaller banks, startup funds or other dubious entities. Even some of the non-bulge bracket but global banks are seriously bureaucratic and technologically still in the 1980s (without the culture of proper engineering allegedly more common back then). Then there's the special cases: at Standard Chartered, you get to work with people like @donsbot which is fantastic for your technical development independently of whether you enjoy the industry or the company.

The money is good, but not that good. By specializing in something there is a lot of demand for outside of finance (say, "big, proper" dev ops) you can pull a lot more money than by being an average quant or the "guy who makes the tools for the traders", even if the best quants will pull large amounts of money. We interviewed dev ops people making north of USD 300k a year for managing less than 100 servers.

Lastly, a lot of business people in finance look down on IT; they see it as a commoditized industry with less intelligent people than those brilliant people who have "survived" markets and bring in revenue (one might make the same argument about them - the most often said thing on a trading floor is "would he make the same money without the bank's name on his business card" and "personality" and free lunches was never a factor in choosing the bank I'd trade with). If you can forgive them for that, wear your suit, swallow your pride and do what you're told, you can make an easy living in those places.

</comment></comment></comment></comment></comment></comment><comment><USER7> Programming was my second choice.

I wanted to be a math professor. One day I'm sitting in the office of my favorite professor and we're talking about grad school and PhDs. I asked him if it was worth it. He told me that you don't do it because it's worth it, you do it because you love it. I knew this, and I loved math, so I nodded.

Then he told me what my career could look like after I graduated. Part time, working at 2-3 universities, where teaching math was more of a hobby than a job. I decided that for me, no matter how much I loved math, it wasn't worth it.

Fortunately, I'm pretty good with computers and programming comes naturally given my math background. I'm really satisfied with where I am now, but math is the one that got away.

<comment><USER8> I went to grad school for a Math PhD for 3 years and then dropped out to switch to computer programmer. If I didn't go to grad school, I would have regretted it, but having done it, it seems like a waste of time now.

That was on reason I switched out. I would likely be a permanent adjunct or be grateful for whatever tenure-track job I could get at some low-ranking university in the middle of nowhere. And if you don't get a tenure-track job at one of the top research universities, your teaching load can be pretty high.

I still occasionally read about stuff that interests me. I'm thinking about making some Math-based HTML5/mobile games in my spare time.

My biggest regret right now is that I'm stuck in the PHP/LAMP webdev niche, and I'm having a hard time getting interviews for anything else. If demand for PHP dries up, I could wind up in a spot where my experience has no market value and my career may be over.

<comment><USER9> If you're in the bay area, we're hiring. ReSchedule Med is an automated staff scheduling solution for healthcare orgs. The scheduling part is pretty intense math wise, but we're early so we really need someone who can help with a bit of everything.

And good devs can learn another language no problem, so the PHP niche isn't a concern.

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

My email is in my profile.

<comment><USER8> I live in NYC.

A couple months, I applied to all NYC HN ads, including the ones that said "You don't need experience in our tech stack." I got zero onsite interviews. I know that I know my stuff very well.

<comment><USER9> I can't comment on the other YC companies, b/c I don't know what they are looking for or how their process works.

If you're willing to relocate shoot me an email.

<comment><USER8> Unfortunately, relocating is not an option for me right now.

</comment></comment></comment></comment></comment></comment><comment><USER10> I was a heating engeneer and liked it but during the winter it was so freaking cold, I couldn't feel my feet. That's when I decided I needed a job which can be done in an office where it is warm during the winter.

I went back to school, made a website with Frontpage for my first band (when I was 22 or something), that got me interested in computers. I self learned webstuff, later landed a job in web but decided to study computer science at a university to trully understand what I was doing. Now I am a Linux programmer in the car industry.

So basically I got cold feet.

</comment><comment><USER11> Career: Finance/Trading Platforms Developer (by accident). I wanted to be a doctor. And I hate math.

When I was 7, me and two of my friends signed up for a local free summer course for computer skills and typing for Pioneers (this was in Kiev, Ukraine, in mid-90s).

Learning MS-DOS was pretty cool and different. It was also great fun to make infinite-loop batch files that printed out some vulgarities on screen when the instructor wasnt looking. One day, when walking into a class, an older (maybe 15?) guy in corner of the room (who turned out to be a sys-admin) drew my attention: he had a bunch of weird text on screen in some program I've never seen before (all i knew was "copy con mytext.txt"). Then, at a press of a button, his computer lit up and started drawing colorful circles and making noises.

I've just experienced QBasic ([http://en.wikipedia.org/wiki/QBasic](http://en.wikipedia.org/wiki/QBasic)).

I was fascinated by what I saw and, with encouragement of the the sysadmin visited couple of sessions of an "advanced programming" class. Although I didn't understand much, I was hooked. With great support from my parents - <USER2> - and i'm still not sure how - found the means to get me a PC at home (those cost many months of salary at the time) - i started tinkering with graphics, windows, and random computer stuff. Then a "Delphi for Dummies" found it's way to my hands somehow.

The rest of it all, leading up to today, is history as they say. For me however, it's a series of completely random, lucky, events that gave me the initial interest and subsequently permitted me to pursue an absolutely fascinating career.

Today, i am actively dedicating time to get young engineers interested in technology and show them what amazing possibilities it brings.

Maybe one day i'll even write a blog about it :)

</comment><comment><USER12> I'm a stay-at-home dad.

I fell in love with my son. He drove my wife crazy. She'd rather be coding.

<comment><USER13> This is pretty cool! How old is your son now? Do you intend to remain stay-at- home forever, or until your kid(s) reach a certain age?

<comment><USER12> My son is 5 now. We intend to have more.

I'll probably stay at home forever. Taking care of the house and kids is one way I can show love to my wife. Though we might go into a semi-retired "make video games" mode in a few years (my wife tells me I'm a top-notch tester, and I have pretty good game design sense.)

<comment><USER13> Hope the next question is not too snoopy - I'm just curious, so feel free to ignore me. Taking care of a 5 year old sounds like far from a full-time job to me (presumably he's in K / pre-K). I have two kids myself (4.5 and 1 y.o) so I have a bit of perspective. What do you do with all the free time?

<comment><USER12> I bought my parents' old house and spent 2 and a half years cleaning and fixing and renovating. We have a young family living with us, and I spend some time mentoring them and helping with their small child. I handle all the cooking, groceries, yardwork, etc.

I also run a competitive gaming site (with my wife and another friend): [http://descentchampions.org/](http://descentchampions.org/)

</comment></comment></comment></comment></comment><comment><USER14> I had goals and dreams of becoming a professional chef. Even applied for Le Cordon Bleu my senior year in high school.

In the meantime I was tinkering with building websites and learning HTML and that. I built a few sites and one day a friend who taught me told me to put some playboy style pics on my site and it'll attract people to come. Being 16 I was down for looking at hot girls. So I did. Then later he told me to sign up for these "webmaster programs" and put links on my site and I can make money. So I did.

Long story short, Paris Hilton did what she does best and lets a sex tape of herself leak and I got ranked in the top 5 sites when people started hammering Google searching for it and I was doing about $5-10k/week in revenue off that video. I decided after 10 years of running porn sites I'd bunker down and really learn to program, and now I'm a software engineer.

So you can say Paris Hilton is the reason I do what I do.

<comment><USER15> Do you still cook?

<comment><USER14> For myself yes. And while I was building sites I was a cook at various restaurants for 6 years.

</comment></comment></comment><comment><USER16> Current job - spacecraft thermal engineer, currently taking a 3 month vacation.

It started when I first played halo CE. I decided I want to make massive space stations like halo and I realized that in the next 20-30 years that will hopefully be possible. Until then I am trying to gather all the tools and knowledge I need to lead the next chapter in space exploration and colonization.

</comment><comment><USER17> No one chooses insurance, it chooses them. Joined a management consulting firm out of school, got assigned to a bunch of insurance cases. Escaped to Oracle. 1998, got a call from a friend of a friend: I hear you know a lot about insurance...I just got a million dollars to start an online version of GEICO...are you in? 17 years later, my career is insurance.

</comment><comment><USER18> "I must create a system, or be enslaved by another man's; I will not reason and compare: my business is to create." \-- William Blake

</comment><comment><USER4> I grew up in a software company. Mom worked for a German company that designed embedded software used in automating sea ports and satellite tracking / telemetry. Mission critical kind of stuff. The company would hire developers from all over the world and they would come to Germany and often live with us for a couple of weeks before finding their own place. So many of the engineers became "big brother" kind of friends to me. One of them gave me my first computer. A Sinclair Spectrum 48k. I started using unix (running on a VAX) at work playing with their kit, too.

Mind you I didn't want to become a computer programmer at all. I would come home from school and stop in at my mom's work and all these engineers would be sleeping under their desks because a port worker had been killed when a container ship struck a pier or a satellite entered low-earth orbit and flamed out costing $100 million or something. I associated programming with tragedy and high stakes.

So I went to art school. My senior year I was spending more time in the computer lab than anywhere else. We had a lab populated with Silicon Graphics workstations and I'd written scripts to render my animation across all the machines so I could get a result in minutes instead of hours. Then the web became deregulated.

Lately I found my way into working on rail automation software that had safety critical requirements. Which is exactly what I never wanted to do and so I quit after 3 years.

I'm still in the industry and haven't figured out what I want to be when I grow up.

</comment><comment><USER19> Currently a software engineer working in NLP and machine learning, with a bit of demo-quality front-end design recently. I started out as an electrical engineer, though.

When I was doing my undergrad, I didn't really like programming. I took many of the core CS classes, though, because I really wanted to do embedded development. I just wanted my degree to be electrical instead of computer engineering because I felt an EE was going to have an easier time getting a job in the rapidly imploding dot-com bubble. Plus, I actually liked the physical aspects better; one of my two backup plans was to become an electrician.

When I got into a real job, though, I discovered real-world programming was more interesting than what I was forced to do in class. Additionally, I got introduced to the world of FPGA and CPLD programming. While my first position was hardware production support, I pushed to move towards signal processing. After 3.5 years I managed to switch programs.

Unfortunately, the program I switched to turned out to be a black hole. It was a DOD program that required special clearances to work on. I found out much too late that this effectively made me a prisoner of the program because getting people cleared was so difficult and expensive. Furthermore, I could say so little about what I was doing that I could hardly get interviews, let alone sound competent in the few I did get.

I took my current job out of desperation. I had been searching for over two years and basically took the first offer I was able to get, which was a small local company. It was a domain I had never worked in (NLP) in a language I had never worked in (Java). It has worked out pretty well, though I can't get as interested in NLP as I was in signal processing. Unfortunately, I think I am trapped again as I get recruitment pings about once every two weeks from my new world but can't get the time of day from companies in the old one I left reluctantly.

</comment><comment><USER20> Startup founder and now a CEO (which feels like the strangest job in the world). When I was working as a software engineer, I felt like I had a lot of excess energy that I wanted to put towards something that was mine. I am drawn to responsibility, because responsibility means that I'm in a position to make decisions that impact many people. It's thrilling and I enjoy being in the service of other people. Anyways, it's really hard to not have responsibility when you really want it, so I realized I had to leave and start my own thing to really get that.

</comment><comment><USER21> Technological generalist: programmer, project manager, product developer, database guy, etc.

Why am I in tech? Partly due to participating in the Duke of Edinburgh's Award program and partly because I just took whatever was interesting at university until I was forced to pick a major... when I tallied up my course credits, the shortest path to a useful degree was "computer science" so I did that.

Why does my career look like the plot to "Memento"? Because each time I reached a point where my work was no longer that interesting, I looked around and started doing something else.

So I went from front-line cast member at Disney World[1], to a university grad, to Java dev for a small dev shop, to Perl/CGI and Javascript at a tech mega-corp, to acquire/process/present data on a trading floor, to semi- retirement, to Japan, to a web-dev shop, to an ecommerce mega-corp. At the moment I don't do any development but that will likely change soon as I miss it.

I feel I've been really lucky. I could easy have (and almost did) crashed and burned but somehow it has worked out so far.

The trick is to look at every opportunity and ask yourself "if I turn this down and never get another chance, will I look back and wish I had done it?". If so, think hard about what really matters to you and do whatever will maximize that.

[1] I took a year off university to go work at Disney on a cultural exchange program. It was an awesome experience, I met my future wife (who was on a similar program) and gained extremely valuable customer-relationship experience.

</comment><comment><USER22> It was the logical choice, really. I'd been programming since a young age, it was logical that I'd become a programmer.

I often wonder if there's a job out there that I might enjoy as much or even be better at. Only other profession I might be interested in is watchmaking (sounds crazy but there's actually a huge demand for watchmakers), but the cost of tuition and the risk I might not be good at it means I'll probably never give it a shot.

</comment><comment><USER23> Freedom.

The reason I founded a startup is the same reason Jack Sparrow is a pirate. The freedom to choose what to do and how. And when.

For example, right now I'm in the middle of a 3 week paternity leave because of my second son's arrival. Here at HN there's this vibe that if you run a startup, you're not supposed to sleep or take vacation. But really, why be your own boss if you don't use the freedom that comes with the package?

</comment><comment><USER24> I've always kinda of been into computers and technology. My first encounter was in pre-school with an Apple II; it seemed to be my favorite thing in the school and I'd always watch the teachers when they plugged them in.

I played with a lego a lot and would take apart my RC-Toys to see how they work, and then put them back together. By the time I was 14 I started learning how to upgrade my computer and shortly after I build my first budget gaming PC. Around the same time as the gaming PC I got a chance to see inside the Microsoft compound in Redmond because my to-be step-father worked for Microsoft. I got to see a glimpse inside the NOC, I got to see a server room, and I was amazed that everyone had Nerf guns, the vending machines were free, and everyone made a lot of money. I knew what I wanted to do now: I wanted to be a game developer.

I started playing with linux, aspired to be a "hacker" in the FOX News sense when I was 16. Started learning more, and ended up with a hobby. My high- school years were very rough and my career aspirations went by the sideline for a number of years until I got away from that life.

Then at about the age of 20 I became a recluse, hikkikomori, and my best friends were talked to and found over Skype and various forums. I put my life into anything that involved technology and I gave myself a skillset. Once I got tired of being alone all the time I started putting out resumes to anyone that was hiring and I landed an interview with an animation studio. I excelled at the interview, got a job as a sysadmin, and the rest is history.

A promotion and a raise later I still feel like I've found my place. The job is a perfect fit for my skillset, cultural values, and the kind of people I work with. I think I've found where I belong.

</comment><comment><USER25> Conincidence mostly. I didn't actively search for what I'm doing now (10% hardware 90% software from very lowlevel microcontrollers/fpga to highlevel business apps). Or maybe is was just destined to be: I wouldn't really want to be doing something else (well, except for quitting jobs all together and go live far away and be self-sufficient, but that's something with a long learning curve).

Wanted to go for biology first but hearing what it would take to really get into cutting edge research I changed my mind and went for what seemed, given my hobbies and complete lack of interest for other non-tech fields,the most logical: electronics engineering. Thesis project was picked truly by coincidence (basically the last one left because we were late, lol) but the company offered me a job because I fit in pretty well. Still working there now parttime (did work in different departments as well in the meantime, now I'm back where it started) and parttime for a startup but the job is similar.

</comment><comment><USER26> I'm a software developer.

I hated being bored and I didn't like working hard. ;) When I was a teenager I asked myself what kind of activities I enjoyed doing for long periods of time that made decent money and working with a computer was one of those, so I pursued a CIS degree.

But I'll be honest. I hated my job for a long time. My original two reasons are awful reasons to pursue any line of work. I eventually became disenchanted and started making serious plans to switch to photography full time because I loved photography, which had started as a hobby and was growing into much more.

But two things happened which changed how I looked at my job. One was I got over a lot of the initial learning curve and switched companies and found a work environment I liked considerably more. The other was due to my interests in art, which unlocked my desire to _understand things_ which was eventually fed by software development.

I love my job now (weird how that worked out).

Anyway... thats me. :)

</comment><comment><USER27> First I played video-games all the day. Then I had to fix/upgrade my own PC because I couldn't afford to pay anyone to do it. This got me deeper OS and networking knowledge than the normal user. From building and repairing PCs and building networks for friends came editing configuration files and later writing scripts, first to get things running on my bad machines and then to cheat in games or automating some IRC stuff. Which led to becoming a programmer.

The only thing I knew after school was how to do stuff with computers and playing games, so I did a degree in computer science and worked as a developer.

I didn't really choose to be a developer, I just did it most of my adult and adolescent life and some time people asked if I could code for them and they paid me.

Sadly this led to boring jobs, since I never really searched for anything, I just did what people asked me to do.

</comment><comment><USER28> Pragmatism. I tried twice to get an engineering degree (electronics and CS) but I am too lazy when it comes to studying boring stuff on a _structured_ manner. On my third attempt (age 23) I decided to water-down my aspirations and simply get a BS with a CS and Math focus. I had been programming for fun since age 15 (an Atari 130xe with a Basic cartridge) so it was natural to do it for money. Naturally, like any _real_ professional, I started learning everything that I know AFTER graduation, using my clients as ginea pigs. I never wanted a job per se so the degree was more of a social fulfillment rather than a pre-requisite to start a professional career. I turned down job offers and opened shop right after graduation. I am 40 now, busy and happy :)

</comment><comment><USER29> Career: Programming/Creating a startup.

I was an Arabic linguist at the NSA, and would input certain numbers I'd hear into a tool. Whenever I heard a specific one, I was supposed to add 9 to it and put that number into the tool. This drove me insane, because I kept asking why I had to add 9 myself, instead of the program just doing it (since I could describe the rule myself). I started putting in trouble tickets every few months, but they were all ignored. At one point, I just decided I was going to fix it myself, and approached the guy who made the tool and asked him for permission to modify the program to fix it. He handed me the O'Reilly Perl Cookbook, and said to go to town on it.

I ended up finding out in the code how to fix the problem within the first day, and started thinking about other ways I could improve the program to make our lives easier. I made all sorts of improvements, and my cubicle neighbors saw this and asked if there was any way I could make a tool for simplifying their manual process. I got to work on it, and quickly whipped out something that stored all of their entries for later review. The big problem at the time was that I didn't have any basic knowledge of CS -- I didn't even know what a database was, so I built a system of just storing all of the text in flatfiles and using Perl's Tie::File to turn the files into dynamic arrays.

I started making program after program, and what drew me to my career was walking by someone's computer and seeing the program _I_ built on their desktops as they were working. Eventually, the entire division of 80-90 people were all using my programs for their day-to-day, and I had to quickly learn a lot of hard lessons about putting things into production.

So, in short, I think the big reason I chose my current career was that I always loved building things that people not only wanted to use, but thanked me for building them because of how much easier it made their lives. There is nothing more satisfying (to me) than building something useful and having people who use it think you're a modern day magician.

</comment><comment><USER30> Got a degree in Physics when I was doing grad trips but had a conversation in the basement of a STEM dept in the northeast where I discovered that for people of my race they would have exactly one grad student and they would graduate them with a masters 7 years later(One of the kids from my school went and he has two masters they were ranked #1 at the time and I believe still are). At that point I decided grad school was too much of a risk. I worked in phones for 3 years, mostly technical support and I loved it it was easy for me. So I went back and did a degree in Computer Engineering which I loved and presented some really fun challenges and now I'm looking for something with smarter coworkers than my current government affiliated work.

</comment><comment><USER31> Pure luck.

After a few crazy moves and dropping out of 3 different universities, I was down to washing dishes at some crap restaurant and underpaid tech support. After 18 months of that, I told myself I deserved better and just quit. A week later I got called for an interview at some financial-software company I'd never heard of, they were desperate for an Italian-speaking geek. 11 years later, I'm a well-paid consultant in an expensive niche.

I'm not an ambitious guy, I've always just wanted a nice house, not having to worry too much about money, and time to geek around. If I could do it all again, maybe I'd study harder, maybe I'd emigrate sooner, I don't know.

</comment><comment><USER32> 26yrs old, Academia (Info Sec), I was in the final year of my BTech Computer Science, i got a scholarship from my Undergrad(UG) university to do my final(4th) year in South Korea as part of an Academic Exchange. The catch was that when i returned upon completion of the exchange i was to work as a TA at my UG university. when i returned i worked there for a year and was sent to do a Master's(Info Sec& CyberForensics) abroad, the catch was that again i had to return and work as Faculty(lecturer) at my UG university. So my career path has been chosen for me in a way.

i would prefer to get into private industry when my contract finishes.

</comment><comment><USER33> A desire to work at an intersection of programming, physics, and statistics.

</comment><comment><USER34> Software Engineer

When I was 10 years old I was going to be a biologist. When I was 12 years old I was going to be a microbiologist. When I was 15 years old I was going to be a Virus Hunter for the CDC.

Then I went to college and got a glimpse of what that career choice would actually look like as opposed to what I had imagined it would look like. I decided I didn't want that after all.

Programming had just always been a hobby. At some point though I started making money doing it and realized that I could be happy doing this for the rest of my life. The rest as they say is history.

</comment><comment><USER35> I'm a software engineer. At elementary school I discovered programming (a weird local 8bit computer) and spent several years after that being fascinated what can I do with computers, but it never occurred to me that programming can be a profession. Just like people play computer games a lot and never thing they can make money out of it. Until I was about 17-18yr old, I had no idea what I'll do for a living. Then I needed some stable income and it turned out that I can make pretty good money using something I already know.

</comment><comment><USER36> I'd always known 2 things: I loved small businesses and I was really good with computers.

So, I started a software company that helps small businesses.

At one point in time though I thought I was going to be a chef. Ha.

</comment><comment><USER37> I left school and studied to become a graphic designer. After I graduated, I couldn't find (or keep) work because I sucked at my profession.

This was around the time the Internet started to become affordable (and thus popular), so I decided to migrate my poor design skills and started to get into making web pages.

After a few years, I realised I sucked web design too, so focused on the coding part. After about 10 years of learning to code, I realise I suck at that too and speculate I'm mentally retarded or something.

So my career is: Not Sure.

</comment><comment><USER38> I started trying to make games when I was 5 or 6 on a ZX Spectrum. In retrospect, I never _chose_ to become a software engineer... it was just the obvious thing to do. Interestingly, at that age I was also starting to write short stories. I didn't explore that path professionally, but I've taken writing seriously as a hobby a couple of years ago. I've written a novel and three screenplays so far.

In summary, I'm doing what I was already doing when I was 6. Not sure what to make of that.

</comment><comment><USER39> I'm a Software Developer.

When I was younger my family owned a local computer company supporting a range of customer sizes. At the time I recall saying to my Dad that I wasn't sure if I should be a programmer or an IT technician. He bluntly said, be a programmer there is no money in IT support.

That was late 80s, whilst at the time there was money in IT support, over the long term he was right.

I think doing what your family does helps, because you have people around you that know and can support you.

</comment><comment><USER40> Career: Electrical Engineer/Embedded software development

My father. We grew up extremely poor in the midst of a civil war and he made extra income by fixing TVs and other electronics. I remember watching him measure voltages with his "old school" analog multimeter and watching the glow of the vacuum tubes and that heat and smell that emanated from those TVs. Watching him work with electronics sparked my interest from a very early age and led me to my career path

</comment><comment><USER41> Loved computers since childhood, hence I'm a programmer!

</comment><comment><USER42> Becoming a programmer was a mercenary decision for me.

I dropped out of an Ivy League PhD program part way into my dissertation because I was pretty sure that finishing my doctorate in comparative literature and continuing down that career path would mean getting on food stamps.

Being a doctor or lawyer would have meant going to even more school, but it only took a couple months of reading to learn enough C# and JavaScript to get a job as a junior developer.

</comment><comment><USER43> Software Engineer / Wantrepreneur.

Playing games, wondering how a game gets on the CD. Even though I loved it, a few years in game programming seemed like it was not "useful" enough. Transitioned to general software-, especially web-development. Started studying CS when the time came.

It's been almost 9 years since the first line of code and for now it seems like this will be the thing I do for some time.

</comment><comment><USER44> When I wanted to goto college I wanted to become a pilot but I did not get an admit letter in most of the colleges but some demanded admission fee (which we could not afford).

My dad suggested I do computer science as the next option. Maybe I would not have liked being a pilot as a job but fir sure loving my programming life.

</comment><comment><USER45> Entrepreneur in the software business.

I've been interested in computers and software from when I was 8 or so. I've to thank my father who introduced me to computers when he let me use his C64 (for gaming at first but I quickly turned to writing Basic programs as well).

I became an entrepreneur because of freedom and flexibility.

</comment><comment><USER46> Got an Atari 400, yeah the one with membrane keyboard, loved that thing. Asteroids + Basic cartridge, no storage. It was great for teaching me to let go of code after building a vision. Hobby naturally turned into an easy career path.

</comment><comment><USER47> Career: computational biologist

I was an English teacher, but I found myself thinking about death and the future daily. I went back to school for biology and learned how to program and an opportunity to study aging just fell into my lap.

</comment><comment><USER48> I was offered an internship/mentorship by a family friend to do web development since he knew I was already fairly well-versed in computers & higher-level programming concepts. The rest is history.

</comment><comment><USER49> My cousin studied the same and I'd see him making software (cheats) for this game some members of my family played (me included) and wanted to do the same.

</comment><comment><USER50> Software Engineer since the early 90's, programming since the early 80's. Because I'm not smart enough to be a mathematician.

</comment><comment><USER51> Not very good at anything but programming. That changed after a while, but sure described the start of my career and hs/college years.

</comment><comment><USER52> The movie hackers. I'm a software developer :)

</comment><comment><USER53> I started using computers at age ~2, programming at ~7 and learning CS theory at ~10. One guess what my occupation is. :P

<comment><USER54> Retiree?

</comment></comment><comment><USER55> Tech Entrepreneur (currently running an iOS/Android dev shop)

In 1981 when I was 12, my folks took me to my cousin Herb's house. He just bought a brand new BMW and took me for a drive. Coming from a middle income family, I never had been in a car like this. The handling on the road, the bucket seats, the dashboard were all amazing to me.

I asked cousin Herb, "What do you do to have a car like this?". Herb said "I'm a systems analyst". "What's that?" I asked. He replied "I work with computers".

Click...computers = BMW.

Next Monday, I stormed into my 7th grade math class and said "I want to learn about computers". Got started on TRS-80 and the rest is history.

I remember how amazed I was to press an "a" on a keyboard, and an "a" showed up on the screen. I wanted to know how that happened...and once I started coding, I realized that I could be in control of what happened. I went from an end-user to a maker and loved it. The possibilities were limitless.

Greed may have started me on my career path, but it turns out that computers and me were a match made in heaven. I loved the pace of innovation, and I was doing stuff of my own creation that amazed people. It felt good to be a geek.

Finally got my BMW while the VP Engineering at a SF startup in 2009, but that small accomplishment pales in comparison to the lifetime of creating and exploring that I have had....and still enjoy.

On a side note: I feel so fortunate that I found my career at the age of 12 (though I didn't know it at the time). That drive gave me a focus that helped shape many decisions that people struggle with. Summer jobs, hobbies, college major, first job, where to live. They all fell in place easily for me cause I knew what I wanted in life.

\- TRS-80 in 7th grade JHS

\- Winning JHS science fair with my personality prediction algorithm

\- Atari Computer camp when I was 13

\- Reading Byte magazine like it was Shakespeare

\- Changing my home address so I would be zoned for my local HS a year earlier (they had actual programming classes)

\- Placing out of BASIC, and going directly to PASCAL in 9th grade.

\- AP Computers in 10th grade (and tutoring the 12th graders)

\- Working summer jobs as data entry and tech support through HS

\- Winning an award for my HS in a regional programming competition

\- Summer Advanced Sciences and Technology program. Got to work on medical imaging software for a research hospital at 15.

\- Convinced my HS principal to let me co-teach a course in Applied computers (DBase, Lotus 123, Wordstar) cause they no longer had any classes for me to take.

\- Went to Stony Brook University (inexpensive, and great CS dept) and able to declare a double major in Computer Science and Applied Math

\- Started the Stony Brook Computer Science Society and was president for the next 4 years

\- Used my financial aide work/study grant to get a university job at the Micro-Computer Demonstration Lab selling Apple/IBM/Xerox computers to faculty, students and staff. $3.15 an hour.

\- 2 years later, the guy that ran the lab retired and IBM offered me a part- time job to run the lab. Same job, but now making $10.50 an hour.

\- Represented Stony Brook in regional collegiate programming competitions

\- Got a research job at IBM TJ Watson Research my Junior summer. Met a brilliant researcher who was moving to the private sector to do a startup in NY. Gave me a job offer that would be waiting for me when I graduated in a year.

\- 1991: Moved to NYC to work at the startup (Ovid Technologies) where we built Medline using OOP.

\- Rode the OOP wave through 3 more jobs, and promotions from Developer -> Sr. Developer -> Project Leader -> Director at various startups in NY.

\- 1996: Joined a NYC startup (InterWorld) where we built app servers for our e-commerce products.

\- Rode the "internet" wave through 2 more jobs, and promotions from Director -> CTO -> VP Product

\- 1998: Joined an SF startup (Topica) as CTO to build a free email groups product. Got a BMW.

\- 2001: .bomb and moved back to NYC, doing tech consulting for a few years on scalable server infrastructure

\- 2003: Joined a CT startup (Netkey) where we built systems management software for Retail. Moved to Boston to build up a dev team. Got acquired by NCR.

\- 2008: Moved to Brazil to be with my partner. Thought I would pickup another CTO type job at a startup, but I was too ahead of the curve. Played a lot of Xbox trying to figure out what I was going to do with my life.

\- 2009: Out of boredom, started to play with the iOS SDK. Last time I wrote code was in 1996, 13 year gap.

\- 2010: Published my first app. Thought I was going to be rich...instead learned that it was tough to make money publishing apps. Just then, a friend said he needed an app for his startup in NY. I banged it out for him and realized I could make a living doing consulting as an app developer.

\- 2010: Started my own company, Cliq Consulting. So far: 17 clients, 35 apps, 89 million installs.

\- Currently riding the app wave...and having lots of fun doing it.

</comment><comment><USER56> I started tinkering with computers at 10, became an IT tech. at 15..and eventually started programming at the same time. I got my first professional job at 17.

Now I own my own software company (been doing this for 5 years).</comment>


Traffic Signal Timing Manual: Chapter 4 – Traffic Signal Design - <AUTHOR> http://ops.fhwa.dot.gov/publications/fhwahop08024/chapter4.htm <comment> at-fates-hands One of the local tv stations here did a great story on traffic light phasing.

They first had viewers email them their worst bottlenecks and where they felt traffic lights hampered their commutes. After several weeks of collecting angry emails, they narrowed it down to a handful of intersections.

Then they interviewed a local DOT person, and then brought them out to the worst intersection the viewers identified. The reporter said they spent about 30 minutes working on the lights and signaling. The reporter did say that traffic was flowing better and there were less cars backed up at the light after the DOT person corrected some of the signaling issues.

Of course they ended the story by lamenting about how many traffic lights there are in the city and clearly the DOT have an uphill battle in keeping every intersection flowing well, but said they spend a lot of time at least trying to monitor the bad intersections.

</comment><comment><USER2> You might be interested in the UK's 'Transport analysis guidance: WebTAG': [https://www.gov.uk/transport-analysis-guidance- webtag](https://www.gov.uk/transport-analysis-guidance-webtag) (hosted on the particularly well-designed GOV.UK).

<comment><USER3> gov.uk is practically unique in been a successful public facing government development project.

The people behind it are incredibly talented, they have a blog here [https://gds.blog.gov.uk/](https://gds.blog.gov.uk/)

It's almost like if you get together a talented team of people, give them a clear brief and scope and then let them use whatever tools they need you end up with a good product at the end...

Also good [https://digitaltransformation.blog.gov.uk/](https://digitaltransformation.blog.gov.uk/)

Also interesting [https://www.gov.uk/service- manual/agile/index.html](https://www.gov.uk/service-manual/agile/index.html) which is their manual for providing digital services.

</comment></comment><comment><USER4> The word 'bicycle' is mentioned only two times. 'bicyclists' once, 'bike' none. Why are we officially overlooking a fantastic and common form of transport?

<comment><USER5> The primary author of this document is Peter Koonce, who is a pretty serious bicycle guy. You might be interested in his blog: [http://koonceportland.blogspot.com/](http://koonceportland.blogspot.com/)

</comment></comment><comment><USER6> I've fantasized about making a more responsive, consistent traffic light for years. Every time it's the middle of the night and I'm sitting at a red light for no reason --- or when I figure out that the sensors are broken and I need to get out of the car and press the cross walk to have the light change, or when I'm on my bike and have no chance at all to trigger the sensors.

All these things I want fixed. I want stop lights to stop sucking.

I want an unprotected left to have the signal on the opposing side turn red sooner if there's a lot of people in the queue ... so that more than two cars can turn per green.

There's countless improvements that could be done but aren't that are purely in software and would use the same signal installations. We're not moving mountains here.

But clearly nobody has done this. Stoplights suck exactly the same ways, in exactly the same amounts, as they did 25 years ago.

And then, instead of making them suck less, we slap cameras on them to make sure that people put up with the suckage or pay a stiff penalty. "This technology has annoying bugs that have never been fixed. But luckily, we've just spent a lot of money on making sure you don't work around them."

Who does that? This is absurd. no new features - just fix the damn bugs.

<comment><USER5> The problem with making the opposing red end sooner ("oncoming traffic has longer green," as the signs say) is that the opposing permissive left turns that haven't cleared by the end of the yellow are then caught in the intersection with their signal red and yours still green. The problem is called the "yellow trap" ([http://en.wikipedia.org/wiki/Yellow_trap](http://en.wikipedia.org/wiki/Yellow_trap)), and some states, including California, outlaw the practice because it is too dangerous.

I'm completely with you about wanting everything demand-actuated to be very responsive, though. Traffic signals are all engineering with no user interface design at all.

</comment></comment><comment><USER7> I wonder how many man-hours it took to develop this document. It is thorough and easy enough for a layman to understand. If we had such specifications when building software systems, life of programmers would be much easier.

<comment><USER8> You know, that makes me realize that when you slap "profit" over it all (e.g., red light cameras) it sucks up that system so bad.

</comment></comment><comment><USER9> Thanks for posting this. My city is getting ready to start putting in red light cameras, with the supposed goal of improving traffic safety. This should come in handy when they optimize for revenue.

<comment><USER10> I was thinking about this the other day. Many articles claim this happens, but few include real world before/after measurements.

You should take timings + videos of pre- and post-camera activity, for future reference! It might make a nice compliment to yet another 'they shortened yellow light timing' article.

</comment></comment><comment><USER11> GREAT FIND! Very interesting read. I liked the parts about how lack of concern for pedestrians in the system is a legacy issue. Also interesting is the segment on stop bars for high speed stops. I never considered that the light stays yellow extra long to let cars clear! I've always thought "Good choice Phil, you got through on the yellow all the way." It appears that some of those lights stay yellow until the car is through! (TSTM Ch 4: 4.7.4)

</comment><comment><USER12> NACTO released the Urban Street Design Guide with more pedestrian, transit and bike friendly designs last year. Here is their chapter on traffic signals: [http://nacto.org/usdg/intersection-design- elements/traffic-s...](http://nacto.org/usdg/intersection-design- elements/traffic-signals/)

Several state DOTs have endorsed the NACTO USDG.

</comment><comment><USER13> A recent trip to the UK was enlightening for me. Their roadways have a fraction of the traffic lights and stop signs that we have on the east coast. We need to remove stoplights from lightly trafficked intersections. For heavy use intersections, replace with rotaries. The glut of suburban stop signs need to be replaced with yield signs.

</comment><comment><USER14> Fascinating read. Thanks for posting.

I did get a chuckle out of the header: "21st century operations using 21st century technologies". The lady doth protest too much, methinks.

</comment><comment><USER15> All of this may be irrelevant soon:

[http://www.cs.utexas.edu/~aim/](http://www.cs.utexas.edu/~aim/)

</comment><comment><USER16> Now thats some good documentation.

</comment><comment><USER17> _HTTP Error 503. The service is unavailable._</comment>


GM to Kill Chevrolet Volt, Cruze, Impala Passenger Cars - <AUTHOR> https://www.usatoday.com/story/money/cars/2018/11/26/gm-general-motors-chevrolet-volt-cruze-impala/2114114002/ <comment><USER2> This is particularly interesting in light that Ford announced the same just back in May: [https://www.npr.org/sections/thetwo- way/2018/04/26/605971051...](https://www.npr.org/sections/thetwo- way/2018/04/26/605971051/ford-to-phase-out-traditional-ford-sedans-such-as- fusion-and-taurus-in-the-u-s)</comment>


Government Rescinds Plan to Strip Visas From Foreign Students in Online Classes - <AUTHOR> https://www.nytimes.com/2020/07/14/us/coronavirus-international-foreign-student-visas.html <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=23836616](https://news.ycombinator.com/item?id=23836616)</comment>


Taser Inc's Latest Police Weapon: Tiny Camera and the Cloud - <AUTHOR> http://www.nytimes.com/2012/02/21/technology/tasers-latest-police-weapon-the-tiny-camera-and-the-cloud.html

<comment><AUTHOR> If you're getting blocked by the NY Times pay wall, either reload in a private browsing instance, clear your cookies, or stop the page loading after the text loads but before the pay wall pops up.</comment>


Ask HN: Survey – Would You Use a Recruiter? Yes/No - <AUTHOR> I'm very curious to whether other engineers would use a recruiter and understand the ratio. As you can see, I'm very passionate about this space and I've been asking the Hacker News Community a lot of questions to do research :) <comment><USER2> I exclusively use recruiters. My most important filter of whether I should waste my time pursuing a job lead is salary. You hardly ever see salary posted with job posts. I can always find out salary when talking to a recruiter.

</comment><comment><USER3> [https://news.ycombinator.com/newpoll](https://news.ycombinator.com/newpoll)

<comment><AUTHOR> "Sorry, you need over 200 karma to create a poll." I still have more points to go :)

</comment></comment><comment><USER4> No. I try very hard not to use a recruiter, I have done a lot of contract jobs and worked at a few short lived startups. All and all this means I am in the job market a lot. And I find that recruiters take up 80% of my time, and get me 20% of my jobs.

</comment><comment><USER5> I would and have. I've also used then to fill positions I've got open at my current employer. But in either case you need to have a clear idea of what you are getting.

If you are looking, then are going to try to sell you the positions they have. This can open doors and of course, it's free. But they will never tell you not to take a position.

If you are using a recruiter for a position you have, they want you to hire someone, regardless of how well that person will perform.

Nevertheless, they can automate key parts of looking for a position.

</comment><comment><USER6> I have used recruiters in the past and have gone direct as well. I've had good experiences with recruiters especially the ones who are knowledgeable.

</comment><comment><USER7> Generally no. Most companies I've worked at have a no recruiter policy, and many recruiters seem to overstate the relationship they have with a company. On the receiving end, random recruiters using a candidate as a sales pitch often "apply" on the candidates behalf only to discover we won't pay their fees and so they don't tell the client about the position.

</comment><comment><USER8> Yes.

Most of the time if a recruiter does not come to me with a job in mind, it does not work out. I have had lunches with a lot of recruiters who just want to network and none of them have come back to me with an opportunity. The times working with a recruiter has worked, the recruiter had a job already setup, found me online or through my network, and made the connection that way.

</comment><comment><USER9> Never have, even when I was contracting I was able to find plenty of work through existing contacts and reputation.

</comment><comment> le-mark Out of my last five jobs:

Recruiter: 3

Network: 1

Direct: 1

</comment><comment><USER10> To hire?

</comment><comment><USER11> no

</comment><comment><USER12> Vote on answers:

<comment><USER12> no</comment></comment>


Lock-free Stack for Windows - <AUTHOR> http://kukuruku.co/hub/cpp/lock-free-stack-for-windows

<comment><USER2> these guys stealing articles from other site (without adding any references). The original article (in Russian): [http://habrahabr.ru/post/223361/](http://habrahabr.ru/post/223361/)

<comment><USER3> _without adding any references_

Really? There is a link at the top of the article: "ORIGINAL SOURCE"</comment></comment>


Revisiting How We Put Together Linux Systems (2014) - <AUTHOR> http://0pointer.net/blog/revisiting-how-we-put-together-linux-systems.html

<comment> vezzy-fnord Previously, in chronological order:

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

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

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

</comment><comment><USER2> Why not allow any kind of overlay filesystem like docker does instead of hard- coding the btrfs dependency ?

It seems like a decent solution overall, and it allows to distribute security updates to libraries unlike docker images.</comment>


Personalized AI Horror Movie Is Messing with Artist's Head - <AUTHOR> https://breakermag.com/kevin-aboschs-is-being-manipulated-by-his-own-ai/ <comment><USER2> Seems like marketing for his other projects. He got lazy with this - AI read his emails and somehow learned something to scare him? Please.

</comment><comment><USER3> > This put him inside the feature-length film, titled AIKA, in ways so subtle > and disquieting that it's prompted Abosch to consider therapy.

This is a really poor quality PR piece.</comment>


Detect Parkinson's in 10 lines of code with XGBoost - <AUTHOR> https://towardsdatascience.com/detect-parkinsons-with-10-lines-of-code-intro-to-xgboost-51a4bf76b2e6 <comment><AUTHOR> From a while ago, thought I'd give it a share since the dataset is seeing a lot more use now (from Irvine's ML repository). It's a very basic use of XGBoost/how-to.</comment>


Cloudflare's service's questionable practices - <AUTHOR> https://www.devever.net/~hl/cloudflare <comment><USER2> I really hate this framing. The title is an old meme, but to me it always feels like a false way to present your case by making it feel more "official" than it really is. I'd rather it be titled something like "Here's why you should be careful when using Cloudflare" or "Cloudflare runs into issues when using Tor or disabling JavaScript". The framing shuts down all debate, and ignores that it's mostly just considered harmful by the author. (more: [https://meyerweb.com/eric/comment/chech.html](https://meyerweb.com/eric/comment/chech.html))

I personally love Cloudflare. It's made a ton of stuff a lot easier for me as a developer. Sure, there's some downsides... but that's true with any service. (And a lot of the complaints are opt-in features that the web developer enabled)

It seems the author only has problems with Cloudflare almost completely because he uses Tor. Unfortunately, most Tor traffic is malicious (94%, by Cloudflare's count), and the whole point of Cloudflare is to prevent malicious attacks.

Anytime you do something for privacy (block ads, disable JS, use Tor), unfortunately things won't always work exactly how you expect.

Lastly, it ends with a weird conspiracy theory... "It is probably a US Government-attached intelligence agency". Okay.

<comment><USER3> I worry about Cloudflare, but for different reasons. They are supposedly 10% of Internet traffic now, and probably much higher if you net out video and other things they aren't currently trying to gain marketshare in. Just the general monoculture worry around security, reliability, etc. Especially since they seem to front a lot of the smaller, independent web sites that I like.

<comment><USER4> Makes for a great investment though, and the stock is currently below IPO price with earnings coming up Nov 7.

I'd probably buy now.

<comment><USER4> CloudFlare up today almost 8% after my recommendation.

</comment></comment></comment></comment><comment><USER5> > Essentially, Cloudflare by design randomly perpretrates denial of service > attacks on users, yet at the same time Cloudflare paradoxically advertises > itself as a service to mitigate DoS attacks.

I guess he's trying to be snarky here, but it's obvious their business is to prevent DoS attacks against the server by malicious clients.

I imagine the extremely large majority of clients [fully-featured modern web browsers] can get past the captcha (or JS challenge), therefore it's only a 'DoS attack against the user' in the small amount of situations where the user's client/browser doesn't have the technology required to solve the captcha (or JS challenge). If lynx or other non-JS browsers had a surge in popularity and CF's enterprise customers complained, you can assure they would have a solution out within a week that would not require JS or cookies.

<comment><USER6> There was another discussion a few weeks ago about how often in particular people from developing countries face captchas. Essentially cloudflare knows first and second class citizens of the internet, and sites protected with cloudflare will feel good in Western Europe and US but might require captchas at every corner and are not necessarily sped up if you happen to be sitting in India or Nigeria.

It's a rather typical blindness of US (and to a lesser degree EU/AU/.. ) companies, which by design or accident care mainly about US and other rich country users.

<comment><USER5> It's surely a difficult problem to even comprehend without being in that situation, but the CF ip reputation systems don't flag certain ASNs or IP blocks just because of the location. Maybe there's less security and unpatched RCEs happen often, maybe NAT'ing hundreds of users behind an IP is common place (making a bad actor taint the IP reputation for 99 other users), maybe a good amount of their users install things like the Hola VPN (where your computer turns into a VPN) or a rasberry Pi devices that also turns your computer into a "residential IP VPN" for extra cash. Regardless, if the automated threat detection systems see 100 IPs in a /24 block perform questionable requests, chances are that block or full ASN is going to get the boot.

Maybe that's the problem, the current scale of the internet and of human civilization means it's nearly impossible to use fairly-accurate humans for these types of things; the only option for managing something that works for the entire world is by turning to error-prone computers that we can only bet on someday being as good as humans at making decisions with the full context provided.

</comment></comment></comment><comment><USER5> About to read the article but "Cloudflare considered harmful" sounds like it's a news publication reporting on a well-known organization or government making a statement about CF being harmful. Based off skimming this, it looks like a personal opinion and would better be titled "I consider Cloudflare to be harmful".

<comment><USER7> [https://en.wikipedia.org/wiki/Considered_harmful](https://en.wikipedia.org/wiki/Considered_harmful)

</comment></comment><comment><USER8> A write up like that and he did not mention the cloudlfare policy to inspect the traffic and log the words read / said and send info about things people have read / said to various gov agencies..

I must assume that he does not know this, and if this guy doesn't, then how to calculate the odds that X percent of Y (how many people are sharing what they read through cloudflares pipes everyday?) - how many people don't know they are being spied on and info about them is being sent to others because a host is routing through cloudflare?

</comment><comment><USER9> I've got to wonder why the author blames cloudflare for blocking tor. Site operators have to use cloudflare, and they do because blocking tor is one of the easiest ways to reduce spam. Tor is good for privacy, but not great for the people running the sites. What makes him think that people wouldn't switch to another service? It sounds like he's pushing for tor acceptance, but phrasing it poorly.

<comment><USER10> People are not using cloidflare because they block tor. Most are not using them for dos protection.qThey are using them for a variety of other reasons so they may not be aware of the situation.

<comment> xyz-x Like their free DNS service that supports DNSSEC, Rotor (CDN JS optimisation), Let's Encrypt integration out of the box, low latencies where the users live, etc

<comment><USER11> If you really care about the low latencies, you might want to not pull up megabytes of JavaScript libraries to simply render up a few bytes of text.

I have a single server on another continent, yet my pages load several times faster than any of these Cloudflare-powered websites served from another part of town.

Let's Encrypt itself is an artificial construct that your homepage would hardly benefit from, and where Cloudflare reaps the most benefits from by having it be a selling point that noone outside of commercial entities ought to need in the first place.

</comment></comment></comment></comment><comment><USER12> absolute nonsense.

websites in fact should stop using cloudflare, however the rant displayed here is irrelevant.</comment>


JavaScript: The Good Parts - <AUTHOR> http://www.catonmat.net/blog/javascript-the-good-parts/

<comment><USER2> The youtube video on Peteris' page doesn't seem to exist any more but the original is here: <http://video.yahoo.com/video/play?vid=630959>

There is also a ton more stuff like this at: <http://developer.yahoo.com/yui/theater/>

Disclaimer: I'm proud to work with the YUI team :)

<comment><AUTHOR> That's not quite the same video.

The one I linked to is from a few weeks ago, when he gave a talk at Google.

ps. the youtube video works for me: <http://www.youtube.com/watch?v=hQVTIJBZook>

pps. someone changed my crazy title for this post, this one looks much better and shorter. thanks :)

<comment><USER2> Sorry didn't work for me off the page. hm.

<comment><USER2> I figured it out. It's a bug with youtube player.

If you try and skip to the middle using the timeline bar without pressing play first it says the video is no longer available.

</comment></comment></comment></comment><comment><USER3> The book discussed here is extremely thin. If you buy it, you should be able to read it over a weekend.

<comment><USER4> Another really thin book was K&R's The C Programming Language.

<comment><USER3> From your response, I gather that you may have taken my comment the wrong way. Just to clarify, I mentioned the book's size, in an effort to point out that the book can be read quickly over the course of a weekend (that's what I did), which is a positive thing. Javascript: The Good Parts and K&R are a couple of shelfs apart in my bookcase, and I must say that the former is much thinner and above all a quicker read. K&R is awesome, but I don't expect anyone to get through it in a weekend.

<comment><USER4> Wasn't sniping, sorry. I really liked this book.

</comment></comment></comment></comment><comment><USER5> "It came up with the idea of prototypal inheritance and dynamic objects itself."

Hehe. Not itself, the language Self: <http://research.sun.com/self/papers/papers.html>

</comment><comment><USER6> One bad part of JavaScript that really irks me:

\- Newlines get converted into semicolons.

It seems that JavaScript is really forgiving of mistakes in the same way that browsers are really forgiving of malformed HTML.

<comment><USER7>
      return
      {
        ok: false
      };

Have you seen this part of the video? That's a perfect example while adding semicolons is a bad thing.

<comment><USER8> So write that as any of:

      return {ok:false};

      return {
       ok: false
      };

      return(
      {
       ok: false
      });

The semicolon insertion feature isn't a "bad thing," just a matter of personal preference and something you have to be aware of.

<comment><USER9> Semicolon insertion _is_ a bad thing, because it is unintuitive and may lead to subtle bugs.

If the rule was straightfoward, like a newline always corresponds to an automatic semicolon, then it would be OK. Now the rule require you to have a pretty deep understanding of the language grammar, to determine when a newline changes the semantics.

The intention was good: to optionally allow a more line-oriented syntax like Python, but it turns out that this just dot fit well with c-style syntax.

</comment></comment></comment></comment><comment><USER10> Thank you very much for this link because due to your posting I found a little treasure of video tutorials on JavaScript.

And it's just what the doctor pre-scribed (pun intended) with the nearing release of the Palm Pre and webOS. I've got a handful of ideas for IMHO great but simple apps and the possibility of me being actually able to do it fairly easily is very exciting...

I've also got an idea for one not so simple game, already a proven success on desktop for years that wouldn't even require direct access to Palm's hardware. Unfortunately, I presume this would require much more real programming skills (not web programming skills I can provide) so we'll see what happens with that... And this game, with clever notification system that webOS sports would really excel on webOS...

</comment><comment><USER11> Anyone know of discussions or articles on what is wrong with the dom?

<comment><USER12> <http://ejohn.org/blog/the-dom-is-a-mess/></comment></comment>


Show HN: Video Hub App 2 – open-source charityware - <AUTHOR> https://github.com/whyboris/Video-Hub-App <comment><AUTHOR> Discussion from initial launch: [https://news.ycombinator.com/item?id=17587992](https://news.ycombinator.com/item?id=17587992)

I wrote _Video Hub App_ : open source charityware [1] software "like YouTube for videos on your computer".

I sell a complied version of it for $3.50 and donate $3.50 for every purchase to Against Malaria Foundation [2] Yesterday 1,500th copy was sold resulting in $5,250 (total) given to a cost-effective charity [3]

[1] [https://medium.com/@whyboris/charityware-doing-good-with- pro...](https://medium.com/@whyboris/charityware-doing-good-with-proceeds- from-software-purchases-e48e66a5d1a)

[2] [https://videohubapp.com/](https://videohubapp.com/)

[3] [https://www.AgainstMalaria.com/VideoHubApp](https://www.AgainstMalaria.com/VideoHubApp)</comment>


Body Ritual Among the Nacirema (1956) - <AUTHOR> https://en.wikisource.org/wiki/Body_Ritual_among_the_Nacirema <comment><USER2> [https://news.ycombinator.com/item?id=17844301](https://news.ycombinator.com/item?id=17844301)

</comment><comment><USER3> If you enjoyed this, you might also like David Maculay's "Motel of the Mysteries", which imagines a 41st-century archaeologist attempting to interpret a 20th-century motel (and getting it hilariously wrong).

> Perhaps the single most important article in the chamber was the ICE (No. > 14). This container, whose function evolved from the Canopic jars of > earliest times, was designed to preserve, at least symbolically, the major > internal organs of the deceased for eternity. The Yanks, who revered long > and complex descriptions, called the container an Internal Component > Enclosure.

[https://www.amazon.com/Motel-Mysteries-David- Macaulay/dp/039...](https://www.amazon.com/Motel-Mysteries-David- Macaulay/dp/0395284252)

</comment><comment><USER4> Fans of this may enjoy "Industry and Sexual Repression in a Po Valley Society", in Umberto Eco's _Misreadings_.

</comment><comment><USER5> There's also "The Mysterious Fall of the Nacirema" [PDF]: [http://faculty.wwu.edu/oussele/331/The%20Mysterious%20Fall%2...](http://faculty.wwu.edu/oussele/331/The%20Mysterious%20Fall%20of%20the%20Nacirema.pdf)

</comment><comment><USER6> I have a special connection to this topic. When my then-girlfriend was in college (early 1980s) she mentioned this essay to me. Crucially, I didn't see the word. Just heard it from her. She took the whole thing seriously, even though she mentioned it sounded just like modern folk.

So she wrote an earnest essay taking the anthropological parallels seriously, and got a C because she hadn't got the joke. She was a tensely serious student and correctly talked the prof into a higher grade because there was no reason she should have got it.

Thing is, I was constantly reading words backwards all the time just to hear them pronounced. It must have been annoying as hell. In my head when I heard the word, never having seen it, I spelled it "Nassirema" which isn't interesting backwards. So for once in the many years we went out I didn't bother to blurt out the word in reverse. She was the kindest person I have ever known, but she was a little annoyed.

Sorry, Elizabeth Green, wherever you are! I'm still ashamed of myself for that one.

</comment><comment><USER7> I'm ashamed to say I horrifiedly read that entire thing without getting it, although that did grant me the opportunity to read it again from a whole new perspective. Funny stuff. That was awesome.

</comment><comment><USER8> Yeah it seems the nacirema had a 'font' of dihydrogen monoxide which they used in their ablution rituals.

Can you imagine rubbing that stuff all over your skin?

</comment><comment><USER9> nacirema should be mandatory school reading

<comment><USER10> Interestingly, I recall reading this article in high school as a class assignment. It was part of a required course for all Freshmen too, with a standardized curriculum.

I'm somewhat embarrassed to say that 13-year-old me was wondering why he'd never heard of the Nacirema before. Until we discussed in class the next day, I didn't realize it was "American" spelled backwards.

Edit: Actually, I think the particular article we read in school was "The Mysterious Fall of the Nacirema". Thank you to UncleSlacky for posting it elsewhere in this thread, I didn't realize there was more than one.

<comment><USER11> My Sociology teacher had us read this in class. When I told her it was about Americans, she told me I was wrong and that she had been using this as a teaching aid for over a decade.

<comment><USER12> This sounds hard to believe. As a teaching aid for what?

</comment></comment></comment></comment><comment> La-ang ENG 101 :D

<comment><USER2> Could you please stop posting unsubstantive comments to Hacker News?</comment></comment>


Peace App developer – I can't believe I made a #1 top-paid app - <AUTHOR> https://twitter.com/marcoarment/status/644359302237548544 <comment><USER2> It's interesting that it's only #1 in the U.S. and #20 in Canada. That's pretty good evidence that initial sales were driven by Marco's following on Twitter and friendly posts by people he knows. Now the mass media blogs are picking it up. The high rank will also drive some sales. Once things settle down, it could be great post-launch blog post about sales analytics.</comment>


Creative Commons Explained - <AUTHOR> http://blog.groupgyaan.com/2011/09/creative-commons-explained/

<comment><AUTHOR> Found an interesting article that takes a crack at explaining how the creative commons licensing works. Many people out there who use content without worrying too much about IP. But if approached correctly, the web has plenty of content out there, that can be used legally to augment your ideas/arguments.</comment>


Pros and Cons of using immutability with React.js - <AUTHOR> http://reactkungfu.com/2015/08/pros-and-cons-of-using-immutability-with-react-js/

<comment><USER2> > _I'd recommend the immutable-js library for it. It has nice API and it comes > from Facebook itself. Another option is the baobab library - but it works > better when more 'reactish' ideas are present in your codebase, like global > app state._

Another option is a library I wrote, react-cursor[1], which is basically sugar over the React immutability helpers[2] which the article mentioned. react- cursor has a couple advantages over immutable-js and baobab:

1/ simpler types: use regular react state with plain old js data structures, 2/ simpler implementation - about 100 lines of code and tiny api, 3/ super easy to integrate with your existing large codebase already using react state

[1] [https://github.com/dustingetz/react- cursor](https://github.com/dustingetz/react-cursor) [2] [http://facebook.github.io/react/docs/update.html](http://facebook.github.io/react/docs/update.html)

</comment><comment><USER3> For those looking for great Flux libraries with immutability at their core, I've been loving NuclearJS[0], which is built on top of ImmutableJS and untangles your stores by giving you a great kind of "functional lens" called Getters.

One problem I have is that ImmutableJS[1] doesn't list the complexity of any of the operations in their documentation. So it can be hard to intuit the efficiency of given operations without having read/grokked the 5k sloc of source.

[0] [https://optimizely.github.io/nuclear- js/](https://optimizely.github.io/nuclear-js/)

[1] [https://facebook.github.io/immutable- js/docs/](https://facebook.github.io/immutable-js/docs/)

<comment><USER4> Listing complexity doesn't really help here. There's a huge difference in practical complexity than the theoretical one. Saying that "insert" has log(n) complexity is misleading when you realize the branching factor is 32. Likewise, "compare" has log(n) or mostly constant complexity in most real-life settings where you're comparing against a value that was calculated from the one you're comparing against (so shares lots of subtrees by reference). You're not e.g. sending back a fresh new copy of the data from the server to compare against. Immutable-js _could_ put "it's linear theoretically but most of the time it's really almost constant time", but that doesn't help much either.

Is it blasphemous to say that looking at runtime complexity is gradually becoming more of a premature optimization (thanks to better hardware)? You can argue all day long that your js object has constant insertion time, but the underlying implementation makes it an order of magnitude slower than array for a limited number of fields. And if you accidentally trigger the hidden class deopt that turns it into a hash map that's another order of magnitude slower. No amount of ordinary complexity analysis will help you here. Vice-versa, when Babel gradually starts supporting constant lifting for collections (somehow), you can look at a piece of code in your editor, reason that a comparison is linear, but then have the transpiler lift it out (`const liftedA = []; function foo() {return liftedA;}` instead of `function foo() {return [];}`) and not realizing yourself that the comparison is actually constant time (reference comparison). And then, if you write some overly clever optimization for that piece of code yourself, you might ironically get worse perf because the transpiler can't lift the collection anymore.

That being said, Immutable-js uses the same concept and clojure's persistent data structures (exposed as mori for JS users). Here's a nice article on it: [http://hypirion.com/musings/understanding-persistent- vector-...](http://hypirion.com/musings/understanding-persistent-vector-pt-1)

<comment><USER5> >There's a huge difference in practical complexity than the theoretical one.

This resonates with me. I write a lot of Scheme, and often enough someone comes along saying that association lists (simple lists of pairs) are terrible because lookup time is linear and that I should be using hash tables. However, they don't realize that hash tables are only faster when the mapping is very large and come with a penalty of no longer having a persistent data structure.

</comment></comment></comment><comment><USER6> Immutability for stateful things seems unintuitive at first, but reframed as the lack of mutability, it makes more since. We can easily add it.

        yourCar === neighboursCar; // false
        yourCarRepainted === yourCar; // false :(

In the article's examples, how does the program know which object is different? It's weaved into the language design that every object has an address. That means if we want to write code without mutability, the interpreter has no idea since mutability is always on, and can't protect from accidentally modifying intentionally stateless code.

Flip side, if immutability is the default, we can easily add state, since it's just a lack of an address. The address becomes part of the data structure, giving the coder more power, since it's not locked outside of the code. Think SQL! Or Haskell!

        var yourCar = {id: 'my_car', color: 'red'},
            neighboursCar = {id: 'neighbours_car', color: 'red'};

        function referenceEqual(a, b) { return valueEqual(a.id, b.id); }

        referenceEqual(yourCar, neighboursCar); // false :D
        var yourCarRepainted = Object.assign({}, yourCar, {color: 'red'});
        referenceEqual(yourCar, yourCarRepainted); // true :D

Notice we've now flipped the address into our data, and even the (===) operator in our hands. With JS, this will run slowly since it can't infer our immutability, but constants are coming!

</comment><comment><USER7> This week I learned to love the spread operator.

        const newState = {...state, ...objectWithNewValues}

<comment><USER8> Whoa, that works on objects/properties? I hadn't seen that before. That's nice.

<comment><USER9> Just keep in mind that object spread operators are a TC39 stage 1 proposal at this point.

</comment></comment></comment><comment><USER10> Okay as far as it goes but it downplays some difficulties.

A con when updating tree structures is the need to replace all nodes along the path from the root, which is why functional languages sometimes use fancy data structures like lenses.

Graphs are a bit awkwardly represented (can't use regular pointers due to cycles).

Reference comparisons are fast for small nodes, but for something like a large list, it's often not enough to know it was touched. You need to compute the diff to make updates efficient, which often requires a linear scan or worse. Making this efficient for arbitrary list mutations is a fairly difficult problem.

<comment><USER11> > fancy data structures like lenses

I think you mean zippers. I'm not sure if lenses can be called data structures. They are closer to Functors than say Linked Lists in nature (but I may be wrong here).

</comment></comment><comment><USER12> The author's primary motivating example is the high cost of deep equality checks. I'm not sure how immutability helps with that; yes, if two variables are === then they havn't changed, but two objects can be !== but still value equal. So if you want to know if two objects are (value) equal, you'll still need to check.

<comment><USER13> The primary use case for checking equality in React is when you change one part of your application state and it triggers a rerender of a large React component tree. Since you probably only changed one small bit of the state (e.g. you created a new todo list item), you don't actually need to rerender unrelated components (e.g. the already-existing todo list items). Immutable data allows you to do cheap (constant time) reference equality checks, because the data objects representing the existing todo list items will be the exact same objects that they were previously.

In this fundamental React render flow, you probably won't need to worry about checking value equality between two different objects if you are using immutable data. Now, your application might have specific UI requirements that need to do value equality. As a random example, you might have a complex form, and you might want to know if, after the user changed several things, the form's data is different than it was at the beginning. In this case, you'll have to do a (more expensive) value equality check.

</comment></comment><comment><USER14> Immutability doesn't have to be a discipline. It is the default when working with ClojureScript!

</comment><comment><USER15> There's a benefit to teasing apart two ideas here:

\- writing functions that expect immutable data (you get referential transparency and value equality → a system that's easier to reason about) \- using persistent data structures (makes it cheap and efficient to create new changes to your data over some messy Object.assign helpers)

Javascript doesn't promote applications written in that style though, so you're definitely going to want to use a library like Immutable.js everywhere for those kinds of guarantees.

</comment><comment><USER16> Object.assign does not work well when you have classes. For one of my projects I came up with a small helper to clone class instances: [https://caurea.org/2015/07/19/generic-immutable-objects- in-j...](https://caurea.org/2015/07/19/generic-immutable-objects-in- javascript.html). In addition to cloning, it freezes the new object so accidental attempts to mutate it will throw an exception (in strict code).

</comment><comment><USER17> This is a good overview article with lots of practical examples. One nit. These lines are written many times:

        x == y; // true
        x === y; // true

without a single instance where the results differ. This would be stronger if the first line of every pair were removed, since this isn't an article about JS equality operators.

</comment><comment><USER18> There is a lot of good information here, but being a stickler for detail, I found the frequent grammar errors distracting. It seems like with all the self-advertisement conversion signup forms, it would be helpful to have an editor, or a native speaker of the language it's written, go over it.

</comment><comment><USER19> Seems like the biggest benefit to immutability is that it reduces the time spent dirty checking objects. So if you use getters/setters instead of dirty checking, immutability doesn't provide much benefit right?

</comment><comment><USER20> so let's use tons more memory and slow copies by value everywhere, not to mention backward coding, just because our generic UI framework is too generic?

</comment><comment><USER21> Very well written - great job!</comment>


Show HN: EncryptUs, usable and free email encryption - <AUTHOR> http://www.firetrust.com/products/encryptus-secure-email-encryption <comment><AUTHOR> Finished this yesterday. Works as a proxy encrypting/decrypting email for any POP3/IMAP email client, so the the setup and usability is really simple. Advantages - works with your existing email addresses/email client, no need to do anything different to send/receive email, everything stays local to your PC. Just Windows at the moment, but Mac and Linux coming soon, then mobile.</comment>


University of Tokyo Biped Robot Can Hit Speeds of 2.6 Mph - <AUTHOR> http://blogs.wsj.com/digits/2014/09/02/university-of-tokyo-biped-robot-can-hit-speeds-of-4-2-kmh/?mod=WSJBlog <comment><USER2> Maybe they can use this to fix the creepy "negative knees" of honda's asimo robot

[https://www.youtube.com/watch?v=42J46bZIH9k](https://www.youtube.com/watch?v=42J46bZIH9k)

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

By the way, since Asimo can do 9km/h, how is 4km/h the fastest?

<comment><USER3> It's doing 4km/h with 14 cm legs. If that scales linearly to human size legs, say 100 cm, it'll be doing 28 km/h.

For comparison, Usain Bolt can sprint at ~45 km/h for 10 seconds, and pro marathoners struggle to hit 20 km/h sustained.

<comment><USER4> But it will probably not scale linearly.

</comment></comment></comment><comment><USER5> 4.2 km/h to whom feel confused by imperial units.

</comment><comment><USER6> According to the article, the robot can only run for 10 seconds. Wondering why that is. Is it that computation errors accumulate so that it is no longer balanced? Or the robot outpaces the treadmill and external camera in that time?

</comment><comment><USER7> 4.2 km/h but it needs a camera on the side to calculate its movements. So, in the lab, great. Outside, in the real world, forget it. Boston Dynamics' tech is way more advanced in that regard.

<comment><USER8> I dont understand why is it so hard to build a running robot in lab environment. Show something in real world without tens of cables connected that can run for at least 1 minute without external computing power.

What they show is not robotic, its mechanic.</comment></comment>


Letter from Elizabeth Warren to Ben Bernanke, Eric Holder, and Mary Jo White - <AUTHOR> http://www.scribd.com/doc/141677401/Warren-Letter

<comment><USER2> I am continually impressed with Warren. If only more of the politicians in this country were as interested in serving the public interest as she is.

<comment><USER3> Warren lied about being Native American to benefit from affirmative action. Her credibility is shot.

As to Warren's letter, she has spent her entire career in academics and has never worked as a lawyer. She does not know the amount of resources required to participate in a lawsuit and trial. As lawyers, we are constantly encouraged to settle cases to resolve issues rather than spend the time and expense going to trial. We should not be encouraging the government to sue people and take them to trial when they are willing to settle. To take a case to a show trial in order to make an public example of the defendant is bad policy more fitting of a dictatorship.

<comment><USER4> Right. So taking HSBC to trial for rampant, repeated money-laundering for drug cartels would have been more fitting of a dictatorship? Instead we let a criminal conspiracy go unpenalized except for a lame monetary settlement.

Warren's dead right. The finance guys all know they'll almost never get prosecuted.

[http://www.guardian.co.uk/business/2012/dec/11/hsbc-bank- us-...](http://www.guardian.co.uk/business/2012/dec/11/hsbc-bank-us-money- laundering)

<comment><USER3> A $2 billion fine (from the article) is hardly "unpenalized".

<comment><USER5> They paid a $1.92-billion fine after laundering $881-million of drug money. Also, dont forget that they helped finance terrorists. [1] No one at HSBC went to jail. If you get caught with an ounce or two of cannabis, you're going to prison for 10 years. That's messed up.

[1] [http://dissenter.firedoglake.com/2012/12/16/hsbc- executives-...](http://dissenter.firedoglake.com/2012/12/16/hsbc-executives- get-no-jail-time-for-terrorist-financing-while-somali-sentenced-for-giving/)

</comment></comment></comment></comment></comment><comment><USER6> My first reaction was "Fuck me, you don't say". Of course they have no goddamned incentive to follow the goddamned law! You're going around rewarding them with taxpayer money for what is, at best, piss poor financial work and, at worst, criminal all this while saying they're "too big to fail" and that you'll take care of them no matter what and you expect anything else?

</comment><comment><USER7> Link to PDF: [http://www.scribd.com/document_downloads/direct/141677401?ex...](http://www.scribd.com/document_downloads/direct/141677401?extension=pdf&ft=1368678675&lt=1368682285&user_id=82580762&uahk=OWAcfGIE1gkGkp0QyHfQb5F8NAY)

(Seems like it might expire, but I didn't see any other way to get at the PDF on the page... what happened to HN automatically adding [pdf] [scribd] to submissions?)

<comment><USER8> I think the [pdf] [scribd] thing is something that happens for /\\.pdf$/ links, a scribd link itself isn't treated specially.

<comment><USER7> Ah, that makes more sense, thanks. It's a shame Scribd doesn't have a 'fit width' option that I could find - small viewport drove me straight into a real PDF viewer.

EDIT: Oh, one of those unlabelled, tooltipless buttons is actually 'fit width'. Heh.</comment></comment></comment>


Lessons Learned for Getting Better Results from Developers - <AUTHOR> http://johnnyholland.org/2009/12/30/12-lessons-learned-for-getting-better-results-from-developers/

<comment><USER2> This is an excellent list, and I would love to work with someone who ascribes to it. I also find it a very depressing list, because almost all of those items involve an awful lot of effort. It's really hard to imagine many people even half-way living up to it. It ends up making me think of the times I've done projects for people who have done just about everything the author is cautioning against.

<comment><USER3> Indeed this is an issue, perhaps of the "90% of everything is crud" type. But it does suggest what you should look for and try to create, groups and organizations where enough of the people are putting in the effort. We don't expect them to be common---after all success isn't as common as we'd like--- but it is something to aspire to.

<comment><USER4> "90% of everything is crud"

My first interpretation of this was that most development projects are basic create-read-update-delete applications, but maybe that's not far off from the intended meaning.

</comment></comment></comment><comment><USER5> I manage a team of 6 software engineers, and while I like most of this list, I think #3 will only work for a small team and small-medium projects.

If I took most of the burden on to myself to do the work my engineers don't like I would be a major bottleneck.

Alternatively, what I like to do, is couch and encourage my engineers through these less savory tasks so they can get to the development as quickly as possible.

Edit: You could also argue that it might be worthwhile hiring a business analyst, but I haven't had much good experience with BAs.

<comment><USER6> I don't quite understand what BA does, but where I live, companies are looking for BA like crazy... so I assume BA is quite useful in a bigger organization (possibly in a medium to large org).

<comment><USER5> The definition of a BA will vary by organization. I think ideally a BA would be a person that is familiar with the business as well as the software being developed. They are the people that can understand and extract all of the wants of the business and fit them in to a new or existing piece of software by writing detailed specifications and documentation.

My experience has been that BAs are often unfamiliar with both the business and the software, which is far from ideal.

</comment></comment></comment><comment><USER7> "designers speak human and developers speak computer."

I hate this generalization because it can be used as a blanket dismissal of a developer's opinion.

<comment><USER4> Another interpretation is that when a developer speaks "human" he is engaging in design and when a designer speaks computer he is engaging in development.

</comment></comment><comment><USER8> Pretty good list but I think the author contradicts the notion and importance of iteration. No design doc and no code base is free from changes and improvements, particularly in startups. If you can't deal with changes, you probably should go work for an enterprise company where you spend half your time blowing hot air across the table. You can't just write once and leave it be, the problem with design mockups and wireframes is that they don't really encapsulate the element of interactivity, and certainly lack customer feedback.

I also think designers and developers are very much alike even though we often bang heads. It's a creative process to write code, and I think a lot of people outside the circle don't appreciate how mentally draining "creation" really is.

</comment><comment><USER9> When I read this title, the first thing I thought was, "Oh no, another poser telling the rest of us what to do based on what they _think_ ".

Boy was I wrong about that. This is an excellent post that could have only been written by someone who has suffered in the trenches and knows what he's talking about.

Many of his points:

      2. Get in bed with the business people
      3. Ease their pain
      5. No one gives a rip what the artist thinks
      6. You get to control those lovely details
      7. Write it down, write it down, write it down
      8. Get in bed with the QA team
      9. You have to have a middle man
      10. Proximity breeds understanding
      11. Learn to articulate well

emphasize that the people part of the process is just as important as the technical part. This is easy to overlook and we need to be reminded every once in a while. The main reason we do what we do is not because it's cool (it is), we do it for and with other people.

The only point I challenge is "4. Force business to iterate in design, not in development." This is perplexing because it runs counter to most of his other points. The reason people tend to iterate in development instead of design is because it's much easier. They're not sure what they want, but once they see something, they know what they like and don't like about it. I'd alter #4 to something like, "Learn to prototype well, so everyone is equally comfortable iterating toward the most desirable outcome."

<comment><USER4> "The reason people tend to iterate in development instead of design is because it's much easier. They're not sure what they want, but once they see something, they know what they like and don't like about it."

This just happened to my team last week. The designer had pretty comprehensive mock ups of the site, the stake holders all said "sure, looks good," we implemented it, and then the stake holders saw it and asked for something very different from the initial design.

I agree that, to some extent, this is inevitable. However, if you can somehow teach or convince or trick the business people to give feedback during the design phase, it would save time overall because modifying mockups take much less time than actually building something multiple times. That does not change the need for developers to iterate as rapidly as possible, of course.

</comment></comment><comment><USER3> Very good, the first item is "Be a developer", the author gets it.

</comment><comment><USER4> "If you need an artistic outlet, do it at home, or you'll always be bitter."

This is equally true for developers.</comment>