C and Go are quite small languages. I love C for its history and low-level view of the machine. It's worthwhile learning C I think, as a way to understand part of the history of programming. However it makes it time consuming to program even simple things. Go is more productive, with maps, strings and a garbage collector.

C++ and Rust are both relatively complex. If you have aspirations to working on large native projects, then C++ might be the way, with Rust becoming more prevalent in the future.

I have successfully obtained a TN-1 Visa with a mostly unrelated degree (CEGEP generic "IT" degree). It does require a fair bit of paperwork, but it is absolutely possible.

Fair warning, as i wish someone had told me exactly this when i got my own TN-1: Any given border agent has the power to repeal said visa for any reason, without oversight. If they have a bad day at the border, they may elect, at any time, to permanently repeal it.

In addition to being able to qualify with equivalent work experience (usually a ratio of 3 years work : 1 year diploma), there are two occupations that don't require a degree strictly: (Scientific) Technician and Management Consultant. My advice is find a competent tech immigration attorney in SV or surrounding areas who specializes and you will have a good time. I recommend Olivia Lee at Minami Tamaki or Chris Wright in LA.

Yes, I've seen Computer Systems Analyst with grade 12 highschool and 12 years of experience work. (Anecdotally 12 years of relevant experience = 3 years of degree work, but I've not seen that codified anywhere).

as for immigration, yeah it's 3 years of experience equaling 1 year of college / university, but you might need a lawyer. speaking of your unrelated degree. one of the best developers i know has a degree in orthodox christian theology. oh, yeah, US market is so much better than CA/UK/EU/AU/NZ

The gross annual amount of an employee's base salary is very different than the cost of hiring an employee with said base salary. I know CA != US, but payroll taxes, benefits, retirement contributions, unemployment and disability insurance, etc can't be that alien of a concept. Or is it? In the US estimate 130%-160% of the salary for base employment. Or is circa 30k for an intermediate engineer normal in Vancouver? In which case what would the entry level position make?

I had a similar idea as you originally with my startup: build a functional MVP, launch with beta testers, recruit co-founders, raise seed capital, and then (finally) start to focus on growth.

I wasted probably six months going down blind alleys with this approach. Here are some of the lessons I learned:

1) A small group of beta testers will not give your product the time and attention you need to find product-market fit.

2) High quality collaborators, willing to devote all their spare waking hours to your vision, are extremely hard to find (and even harder to get up-to-speed). Especially on a budget. You'll probably see several promising co-founders come and go before you find a good match.

3) Even if you have a really sexy MVP and a great team, it's nearly impossible to fundraise until you can point to a handful of satisfied early customers. You might think you can raise $100k (chump change!) to fund your first six months of operations, but you're probably wrong about that.

The only thing you should be doing right now is getting your product into as many customers' hands as possible. In your post, you say you plan to "charge money and earn revenue from day 1".

I recommend https://draw.io/ - it's easy to use, doesn't require an account and you can load/save diagrams from Google Drive, OneDrive and Dropbox (or, of course, from your device). I've created a lot of diagrams with it and it "just works" :)

Most of the time I'm using PlantUML [1], since it can live in the same place as the source code, moreover there is a IntelliJ Idea plugin which adds PlantUML support to the IDE [2], nevertheless I think there should be plugins available for all major IDEs.

This post didn't gain much traction, but XSS attacks are still pretty popular and Google awards up to $7500 for XSS attacks[1]. React and Angular may help prevent XSS attacks, and while I don't know specifics, they likely do have some ingrained tools to prevent it occurring. I wouldn't be surprised if a XSS exploit could find a way around client-size sanitization though. In a perfect world, all strings coming from your server would be pre-escaped.

Rails is 'immune' in the sense that it doesn't let you directly drop HTML onto pages from strings without escaping it first, and if you would like to do so, you have to explicitly mark the string as safe[2]. This isn't to say that XSS is no longer an issue though, Rails and other frameworks help prevent these occurrences in many cases in simple applications, but larger scale applications have a lot more code and a lot more ways to punch holes in that protection. In fact using Express with with Node.js doesn't sanitize your strings by default (as far as my quick research has shown), which leaves a potential attack vector.

While XSS is a very well known vector, XSS attacks are not uncommon in non-boilerplate web applications. Fortunately sanitization is easy and bugs can often be fixed quickly.

Browsers can prevent some methods of XSS, such as by preventing loading JS from a remote untrusted source. If you find a way to drop JS directly onto a page that the browser can't catch (such as the entire JS source being delivered by the server), there's still vulnerability.

OWASP tends to be the place to go to learn about web security[3]. They have lots of examples of potential exploits.

Different companies are great at different things. Obviously generalizing a bit here, but...just to give an example...

...Apple makes really great hardware and good software, but would you expect them to make the best social site in the world? Maybe, if they really put their minds to it they could, but it's just not part of who they are. For instance, they have one of the world's biggest captive audiences in their suite of music software, but can't add basic 1.0 features and interactions to their repetitive attempts to make a music social network inside of iTunes. It's not even funny anymore, just really sad.

...Google is very smart at algorithms and dealing with massive scale, but would you similarly expect a bunch of smart nerds to build the best possible platform for sharing or rating stuff with your friends? What limited social success they've had with YouTube they've had to just buy, and even this they almost screwed up with their ridiculous abortion of a Google Plus integration.

It's not that these companies don't have talented people inside who are capable, just there's probably a lot of corporate momentum and interference from managers on top who dictate that things need to be done a certain way.

Nearly all our development has been on the HN application rather than on Arc itself. Of course, in a Lisp, the line between application and language is blurred. Many of our changes have a language-like quality, but because they're implemented in macros, they haven't involved modifying Arc itself.

We did make one change to Arc proper: we added syntax for binding thread-local variables in function signatures, analogous to how optional arguments are declared. This adds a limited kind of dynamic scoping to Arc. That is useful when you have some 'top level' state (e.g. the basic parameters involved in making an HN web request: username, item id, etc.) that you'd like not to have to pass down every chain of function calls that's going to need it at some point. We originally added this as an experiment to see whether it would simplify or complicate the code. It simplified it very nicely, so we kept it. I can describe this in more detail later if anyone's interested.

The idea of testing code was never covered in any of the introductory books I read. I learned the basics of C, Fortran, and Pascal while doing a physics undergrad in the 90's, then I learned Java and Python in the 00's on my own from books and websites. None of the introductory books I read introduced the concept of testing. It wasn't until I started reading programming blogs on a regular basis that I started writing tests for my code. Once I did, the quality of my code immediately improved and I felt much more confident in the code I wrote.

When I wrote an introductory Python text recently I included a chapter on the most basic aspects of testing. Beginners don't need to write tests for everything they write, but they should definitely be aware of the concept.

Getting excited and wanting to build something with my new found knowledge. Doing this after learning a few new things really slowed down my learning. I wish I waited to learn a lot more before starting a project, it would have been more efficient, I'd know how to work smarter, and I'd have been able to make coolet projects.

Probably wasting so much time trying to make languages work that weren't really necessary. I spent so much time messing with C++ and performance and it was pointless because CPU's went from 4.77 Mhz to 3 Ghz. Also I probably would have just headed straight for a top CS school instead of wasting time teaching myself out in the sticks or learning 20-30 year old tech at whatever local university is nearby. Literally a lot of schools are still in the cold war era when it comes to teaching.

I have a friend who is a cloud architect at a big-4, he is making a little more than $300k in total comp in NY (base is lower, a lot of RSUs etc), but he is more than just an engineer.

He has a friend at another big-4 in NY, also a cloud architect, he is making $400k

I think that the $1 million package is incorrectly calculated. This is perhaps the total package for 2-3 years, including signing bonus (vested over a couple of years) and RSUs (vested over a couple of years)

Annual total compensation for any big-4 Sr software engineer with a lot of experience in SF I assume is around $300k and can get up to $500k if you are really good.

I don't know of anyone who is making $1 million a year, even senior directors at big-4s. Perhaps if you are a Phd who worked at Google cloud / AWS / Azure for 5 years, wrote their software, talk at cloud conferences, wrote "Cloud computing for experts" type of books and published a seminal paper on distributed computing, then perhaps you will get a total compensation nearing that.

If you are just a cloud architect at a big-4 I think the lower part makes sense in total comp, the upper bound sounds completely ridiculous. I have friends who got offers from Amazon and Google for very, very senior cloud positions, way more than "just a cloud engineer", and the total comp is around $300-$400. If the stock goes up though, then the RSUs might be worth much more.

If LinkedIn / Facebook are offering engineers an annual $1 million I'll be very surprised.

Making 300k+ in total comp is pretty easy at the big Tech companies. Most level 5 Software Engineers make around that and there are >10 thousand of L5 SWEs at just Google; and I don't think Facebook, Microsoft etc pay any less. This might change if there is a downturn and these companies stop giving out significant annual stock refreshers since the base salary part of the 300k is only about 140-170k. But as of now, the numbers are"normal". To reach the close to 1 million level, you need to be at least a level 7, and there are very few of such.

Now salary is a different matter. A 300k+ salary is very rare, and you probably need to be a director at least to command that. As you rise up the ranks, salary goes up at a much smaller rate than the annual stock grants/bonuses.

The article seems to be using "cloud engineering" to mean what I would call "data engineering" or "distributed systems engineering". If so then the numbers they're throwing around seem high but attainable. I would call myself a "data engineer" (I build ad servers, recommendation engines, etc for clients) and have been getting offers in the low 300s for full time work with about five years of experience.

I can disclose that, in a recent past job as VP in a tech company, I had a very generous package which was a bit above $0.5M, all included (base, bonuses, options and RSUs) - then the stock went down (options became worth nothing, stock lost more than half its value), and the actual annual comp went down by about $70k-80k.

I am sharing this here to benefit the discussion, please do not make a big thing out of it.

I know it's a ton of money, but I'm pretty sure that most purely technical jobs don't surpass 300k-350k. 1M is simply foolish.

Furthermore, if you consider income taxes, and the cost of living in SF, the number is still high but not as nice as it seems at first.

Netflix, however, consistently pays way more than any other company in the valley - and yet, it is still an exception.

Include about 100K worth of stock in that 300K package, which will vest over 4 years. So your annual salary goes down to 200K + 25K (assuming the value of the stock doesn't move at all). 225K per year is slightly above what a 5y standard SWE makes here in the Bay Area working for a big guy. Really nothing exceptional here... By the way, 225K/y after income tax would be about 140-150K net income per year. Where are these $300K? :)

Also, any key hire like a scientist/data analyst/PhD working in a big company would easily get $1 million offers from other big companies.

It's definitely possible, but typically that sort of package will be long-term employees at IPO/buy-out with an incentive-to-stay package (You just got 4MM$ from your options, but we'd like you to stick around for a couple of years, so we'll give you another 4MM package that vests over 5 years).

You won't get that sort of offer at an illiquid startup (except as un-valuable options) - but it's certainly within the ballpark of reason for people hiring experienced engineers at highly profitable companies.

can someone find a job posting with this type of pay scale? I am curious what skills I should develop.

at this point I do not believe this unless you are the lead architect.

for exaple this job posting I cannot see payin more than $165,000 in dc/ny/bay areas... but maybe my previous exposure to the big four has been limited... was anyone able to find a job posting that pays this much?

Total package includes base, stock, bonus. Lower end of that range is attainable for most. Upper-end is also attainable, either joining prior to the IPO and holding on to the stock afterwards, or by delivering outsize impact.

This is a fucking joke guys. Programming is not the career job that will get you those kind of figures, if it does it sure as fuck will be more of a management position. Look guys, salaried work will never make you 'rich.' Believing it will is the same belief that a startup will succeed. You need to get out of the salary game and work for yourself or do consultantcy if you want big bucks

I know some people at Google and Netflix that make that range. Really solid technical skills, strong communication skills, consistent productivity, and strong negotiation and you can get to $400k / year. I haven't heard of more than that outside of a couple cases (I know a couple high profile women that earn millions a year, but this is more because there aren't that many publicly visible women in the tech world) unless they're working for a hedgefund or as a sales engineer.

I teach community college and sometimes I wonder about the thought processes behind some of my students' papers. Paul Graham linked an essay he wrote in Stypi, where you could watch him write it in real time. This was clearly the greatest computer-assisted tool for teaching writing ever, and I immediately incorporated Stypi into one of my writing assignments. I wanted to know how much my students proofread, how they structured essays, and what they struggled with as they wrote. I was so excited about it that I wrote the entire assignment in Stypi and linked my students to the replay in case they were interested.

It was a disaster. So many students lost essays in browser crashes or were flat out unable to use the software. I ultimately had to apologize to my class, give everyone an extension, and cut Stypi out of the project.

Apparently they were acquired though, so I guess they made someone happy.

You should check HomeJoy. They were a cleaning company (they subcontracted cleaners) that went through YC, had a huge growth and raised about $40M, but went on to fail. Look for them in HN search, it has been discussed a lot.

As a relatively recent bootcamp grad who hasn't written a review, here are my excuses/hypotheses for others who haven't:

a) simple laziness. A good review takes time and thought to write, and the time isn't necessarily in the writing the review, but in processing the experience after graduation. By the time you have a more balanced (ie, graduated, employed/unemployed) perspective, you've probably moved on to other things.

b) in my case, it's mostly due to general ambivalence about the experience. There were things I liked, things I thought weren't done well, and the overall effect is to cancel each other out. Ambivalence doesn't encourage taking the time (see above) to write down thoughts the way more extreme positive or negative views do.

c) also specific to me: I genuinely liked the instructors and most of my cohort, and writing anything negative seems impolite - not wanting to hurt someone's feelings or seem ungrateful. Irrational, but there ya go.

One reason that also explains why there aren't many reviews of universities, relative to the number of people who attend: When your career depends in part upon the esteem of your degrees or certifications, speaking negatively about the source (uni, a camp) is disincentivized.

It lead to several sites emailing me and asking me to write a review or to link to their sites. Here is what I wrote to coursereport:

>By completely ignoring the issue of student outcomes, your resource does prospective students a disservice. How about listing average salaries, listing graduation rates, linking to yelp profiles and linking to student directories for those schools confident enough in their outcomes to share them?

I hadn't looked at any of these sites in a long time, but to the best of my knowledge, very little has changed. They offer a comparison only of the costs of the various options, not the value. The person who emailed me did seem to express some vague interest in adding that kind of information later but two years later it's still not there.

At least for me, the main reason I avoided the "bootcamp review" sites is that I didn't feel any would have given me useful guidance as a prospect (whereas Quora, Yelp and HN threads would have if they'd been around when I applied).

Hmm... there is probably space for a service here. Find out who applies to boot camps, interview them, find out who gets accepted to boot camps, interview them, then interview the graduates and any drop outs/people cut after the program is over. Use questions drawn from standard sociological and psychological surveys like the Grit-S Scale http://www.sas.upenn.edu/~duckwort/images/12-item%20Grit%20S...

Provide ratings and info to the general public that don't just show rates, but trends, who drops out, comparisons of success rates for different groups, etc. Provide more structured but still anonymous feedback, for a price, to bootcamps as a consultant, or get a grant from a large tech firm. Publish papers in conjunction with academia on a delay.

I think what bootcamps could do, if they were willing to, is be much more agile in changing how they work based on research then a 4 year school, and actually do research and experiments to find better ways of teaching, and improve the industry as a whole.

Many of the bootcamps are relatively young with not that many attendees per year. Back-of-the-envelope calculation: ~50 per cohort, 6 cohorts per year is 300 students per year, times 3 or so years is around a thousand total enrollees. 100 reviews is 10% of people reviewing - that seems pretty high to me.

FWIW: I did a bootcamp, loved it, never wrote a review. Just laziness/generally don't write reviews for things. I would guess many people don't write reviews for the same reason.

I'm a grad... and I would say part of the phenomena -- and this might sound corny but I will explain -- is how bootcamps are a personal journey.

By that I mean the entry point for most participants are all different, the expectations for most participants are all different, the experience for most participants are all different (some students work harder than others), and the outcomes are all different.

I felt there was more to learn than there was time (I did a 12 week course), so how I felt after graduating was largely a reflection of my own confidence and ability in contrast to the effort I put in and not a direct reflection of the quality of the instruction.

The Dreyfus model of skill acquisition [0] is a useful reference here. Any program that claims you will gain mastery over a discipline in a dozen weeks is lying to you. The guys that ran my bootcamp were plain about that. They said they would help me help myself learn... which they did but not to the level I really wanted to get to. And that more than anything is why I am ambivalent about recommending them.

I loved my bootcamp experience, am still plugged into the alumni network, am not ashamed of it (why would I be?), but I'm probably never going to write a review of it. I'm happy to talk to people about it, but I'm not going to take the time to go write a review. There's no particular pay-off for me, and besides, the program changes constantly; I mentor where I graduated and in the 1.5 years since I finished, tons of things have changed in terms of how they organize things. I'd feel like an idiot if I said, "Oh, this was a part I didn't like," and then somebody who worked there emailed me and said "Hey, that doesn't exist any more." (Which has happened, except in conversational form.)

And sure, I'll freely cop to self-interest here. Bootcamp grads get enough shit from people in tech who want to dick-measure. I'm not going to do anything to further the cause of people who already think I'm an incompetent chimp with a keyboard.

Also, like the SwitchUp person already said in this thread, there's no reliable source of data for outcomes. I can tell you how long it took to get a job and what I made fresh out of the course, but why would you believe me, especially if you're already primed, like a bunch of people here clearly are, to believe that bootcamps are bullshit and their grads are rubes desperate to cover up the fact they got bilked? Maybe I'm just a plant; maybe I get paid a combined $200k a year by DBC/GA/HR/Flatiron to fire up 100 sockpuppets and argue that bootcamps are a good investment to con people on Reddit/HR/wherever. (That actually sounds like a super fun, super immoral job. Maybe I can trick them into actually paying me to do that. OR MAYBE I AM STILL MESSING WITH YOU. ~spirit fingers~)

Kind of relevant: Are bootcamps worth it? I'm looking to get into programming, but I have a full time support job right now that I need to be able to live and eat. I can save my money and do a bootcamp, or I could learn how to program in my downtime. I'm not sure which route to go through.

My friend did a local bootcamp and now he's doing ASP.NET work and loves it! I'm just scared of doing that specific one because I don't really have interest in anything microsoft.

At the application level make sure you're secured against the most common security problems like xss, sql injections, csrf and that you're using the recommended hashing/encryption library for your language. For testing, you can use any number of scanning services like skipfish, do manual testing using BURP suite or automate security tests with Gauntlet. More importantly is to follow basic server security. If you're running your server yourself, run done basic hardening scripts and then make sure to apply security updates when available. Honestly, this is where PAAS shines since they will do the server hardening for you.

A lot and not enough. My guess/hope is 40% of south Florida startups? 80% of Minneapolis St. Paul startups? 33% of San Diego startups? Look around those locations and Boston.

I used to do surgical AR. The immediate-now-future is nanodevices, rDNA pharma / gene therapy, and more exotic chemistry. Hardware and software only play a supporting role and smaller role in the final clinically approved therapy. No matter your background all require organic, molecular and various biochemistry or medical skills - probably not as much mechanical engineering as you hope now that CRISPR is here.

I was thinking about this today. Neuroprosthetics with feedback is the most exciting. The type where people can actually sense touch on the prosthetic limb...but it's probably still in the "research" phase. Any startup trying to do this may need to work with a doctor. You may also need to do surgery to access the nerves...or maybe there's a better way..

If you're planning to make money from it, try doing a good draft of the launch page first. This helps you focus on which features are critical and which are just nice to have that aren't big selling points.

Also, don't obsess about making the code and architecture good. Get it working to prove the idea works then using what you've learned you can go back and improve it. I see so many side projects fail because many coders obsess about making code perfect over more important things. Releasing a project with imperfect code is vastly better to never releasing anything because you procrastinated trying to write perfect code in my opinion.

1-Use a to-do list. This might seem like a basic thing, but not many people know how important it is. It allows you to have specific goals everyday that you work toward. Also its very satisfying to checkout a goal :)

2- Work in 25-5 bursts. What that means is that you cut yourself completely from any disturbance, which include your phone, emails, social media, family members... for 25 minutes, that you dedicate completely for work. Then take a 5min rest. Its very effective and something that i do myself.

3-Hire a frontend developer or buy a ready made theme to only focus on the backend stuff. Since UI is very important.

I would definitely say commit your timeline to paper/tracking software etc. I do this to myself all the time where I come up with a timeline and don't stick to it. I found that by having it front of my face (like I usually do at work) it helps me stick to it and let my mind wander less.

Also, I have found that at work it is ok if you get sidetracked sometimes because your guilt or sense of responsibility to your coworkers and company will refocus you soon enough. If you are like me, then you have no such thing when working on your own thing. For that reason, I highly recommend keeping regular, well defined work hours. I would even consider one of those apps that won't let you connect to FB, etc. while you work.

As far as technology goes, you can build a solid prototype website in anything these days. Pick the language you know best and also pick a solid foundation. By that I mean do as little as necessary to make the prototype work. Don't fall into the trap of using this as an excuse to try something new (if you want to actually get it done that is). Frameworks are great for this for example.

For software, create a plan to build what you'd normally code... preferably, something you want. Figure out how to sell it, how long it would take to build (time === money), the business model required including marketing plan to reach profitability, and whatever else you need to launch it. Then build a 10-20 slide deck with a designer about the idea (not a prototype), learn how to present it (don't waste it coding, let others do that in the future) and start pitching at least once or twice during those 2 weeks.

In the end, I hope you'll become a successful technical CEO and great company because you've learned a lot more than an API or two.

Scope the entire project into half days worth of work, aim at being in flow for 2-3 hours in each block. (Unless you are not used/trained in being in flow, then the pomodore technique might be better for you)

Lay out the entire 20ish blocks and post them here/email to your friends and family or to some other entrepreneurs that you do not want to dissapoint by not getting stuff done.

Every day, update the post/email with a status, did you get the blocks done and if not why not, what did you learn and what will you do differently tomorrow?

I made http://www.hnreads.com a while ago to help find book suggestions from threads on hacker news. I expanded the idea to look at subreddits related to books, at http://www.bookbot.io - the eventual plan being to unify the two. There are quite a few things I would like to add, but they will have to wait until I finish my thesis!

Principles by Ray Dalio. My interpretation is that this book shows 'how to get what you want'.

That sounds so far up the chain of abstraction and generality, that its easy to dismiss the book. Dont! The book is impressive partially because it manages to distill useful truths which are applicable at such a general level.

It's written by Ray Dalio, who is undoubtedly extraordinarily intelligent and remarkably determined to self-improve. He is the founder of the hedge fund Bridgewater Associates and consequently the 69th richest person in the world in 2015.

The firm itself is noted for its unique company culture. He believes that people can only improve through feedback and that there are strong social conventions and cognitive barriers which prevent people receiving the feedback they need. At Bridgewater, every meeting is recorded and broadcasted to the company. At any level in the company, if someone is being considered for a promotion, they will be invited for a discussion. Senior executives will discuss, in front of the candidate, the merits of whether to promote them or not.

The book contains elegant, simple, yet crucially important truths. They seem obvious at first sight, but he fleshes them out in such a way that you realise you don't really act consistently with those truths, even if you perhaps trick yourself into believing that you do. Through reading the book, you can internalise some of his approaches in understanding the world.

Its a book which altered my way of thinking about the world in a profound way.

The Art of Manliness has a great set of booklists. If the website's title is not obvious enough, they are all completely centered around manliness, so be forewarned. By this, they mean manliness as opposed to boyishness, not womanliness. Heres some good lists and a link to their landing page for all their book related content:

You can also check out Blinkist - they summarize business/finance/self help books to 10-15 short key insights. It's pretty cool (Disclaimer: I worked for them, but actually mean it): http://blinkist.com

In this election season, if you are left leaning and would like to understand just what it is that's underlying the politics of the right (or vice versa), I recommend Jonathan Haidt's The Righteous Mind.

Prior to reading this, my politics aligned very closely with those of Sanders and I thought everybody on the right were selfish, evil, close-minded fools. After reading the book, my politics are still left of center (but definitely right of Sanders), but I think I understand and appreciate the politics of my right leaning family and friends.

In a flagrant act of self-promotion, I'll recommend my own book on math and physics: No bullshit guide to math and physics. What is remarkable about it is the interlinked explanations of mechanics and calculus, so you get a picture of why it all works. Great review if you ever wanted to learn these topics. Comes with a review of high school math too, in case you need it.

I'm reading James Altucher's Choose Yourself Guide To Wealth right now and I really like it, although it's quite verbosely written (I'm about halfway through). This book is about business and monetizing ideas. I haven't read Choose Yourself, which is more of a self-help book, I think.

I'm not sure this is the "best stuff," but I'm currently reading From Counterculture to Cyberculture, and moderately enjoying it.

It's about Stewart Brand, but really more about the scenes he was involved in, it's not a biography. Covers the Whole Earth Catalog and the WELL, but also talks about the influence of systems theory and Bucky Fuller, and clarified, for me at least, the difference between the New Communalists and the New Left, which were somewhat conflated in my mind. It also puts Stewart Brand as a character, if not an essential one, at some key events. The mother of all demos and the founding of the Homebrew Computer Club are what I'm referring to here.

If you haven't already read it, "Getting Things Done" by David Allen is one of the best known productivity books.

Some people I have spoken to say his method isn't for them but I've found it useful, even if I haven't implemented everything he suggests.

I'd also recommend "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold. It starts at simple circuits and builds up a picture of how computers work. It has really helped me get my mental models of what's going on inside a computer straightened out!

some recommendations on mixed topics from my recent non-fiction reads, I enjoyed all of them for different reasons (the song machine book even got me to listen to music I would never have thought I'd enjoy, but can't argue Max Martin knows how to write a catchy song!)

I started reading Henry Kissinger's On China. I'm currently on the Cold War chapters. USSR and China actually had a very tense relationship and Mao often played Soviets off against the Americans.

One reason I wanted to read the book is Kissinger and Nixon are responsible for establishing relationships with China. My parents generation were able to come to the US because of them. Many older Chinese immigrants have positive opinions of the two, despite them being amongst America's least favorite politicians.

Robert Caro's The Power Broker about Robert Moses, the most powerful unelected government official in U.S. history.

Caro, a Pulitzer winning journalist, is a wiz at writing, so you'll enjoy each page. But more importantly, even though Robert Moses was a bad buy, you don't have to be bad to learn to get what you want, in an organization, by ignoring superficial power structures, and focusing on the real ones.

Plus you'll learn a ton about how NYC was built out in the depression.

I recommend Dan Drown's first book, Digital Fortress: https://en.wikipedia.org/wiki/Digital_Fortress the book is filled with Cryptography, Quantum computing, NSA, Assasins....... Was perfect for me and will be for any other hacker!! :D

John Holland, "Hidden Order". Really. What is money? A message bus in a complex adaptive system. Lots of other stuff out there on complexity but this has a unique perspective. If you really want to go crazy find "Signs of Life, How complexity pervades biology" after you read "Hidden Order"

Creativity Inc., by Ed Catmull (co-founder of Pixar). A book on the structure and processes used at Pixar to sustain the creative process - It's one of the best books I've read on business/management and personal development.

I'll commit for small, incremental changes. Each commit is a semantic change to me- could be a small change applied in the same way across multiple files, or a larger change in a single file that does one thing.

I tend to push at the first opportunity it makes sense for other people to see my code, and then push again whenever I make enough incremental progress towards the feature to share. Our team has a culture of opening "in progress" PRs early and often to get feedback before we are too far along. This is great to share ideas and feedback about how things should work (instead of just about how they do based on implementation). It also helps keep the final code review size / time down.

Pushing and committing is completely different actions in the git world.

If it's a simple fix then I try to commit and push almost instantly. If it is a large piece of work that needs several days, then I "checkpoint" it by committing at least once/day.

But I try to never checkpoint by committing something that breaks the build or unit tests. Like if my work is rewriting module A to B, then my first commit would be to add module B, second to change all dependencies from A to B and lastly to delete module A from the repo.

But seriously, I commit regularly, and rebase locally before pushing, whenever possible.

It's not really about how often you commit, it's about documenting that commit as a single unit of work so looking at it it's clear what you did, and why. This often requires planning ahead of time, and even possibly creating a separate branch just for off topic commits that you think of while working on the same file.

I use feature branched for everything, usually named after an issue number. I created a script that allows me to commit whenever I get a task done, not the whole feature, and that script takes care of adding the files, committing them with a message, tags it with the issue number (current branch name), and pushes to remote. That way, every time I save, the changes are saved on the remote GIT repo in case my computer dies or something.

I usually commit whenever I've done one thing that builds and is the smallest amount of change that is still a self-contained change. For example, changes to package scripts, the code and test cases all live as separate commits. The most important thing to do is to make sure no commit breaks the build and that the commits are small enough that someone can follow what they are doing when they're bisecting in the future.

I commit every time I complete an atomic unit of work. Write a 3-line test and a 3-line method that passes it? Commit.

Working on something that will take a week to be atomically complete and testable? (For instance, a major refactoring.) I'll write myself a checklist of steps and commit every time I complete a step.

As someone else said, once every 30 sec is too often, and once a day is too infrequent if you're coding 8 hours a day. When I'm in a rhythm I'll typically go anywhere from 10 min to 2 hours between non-trivial (e.g. typo-fix) commits.

I do not push every commit immediately. Once a day is a good minimum as a backup strategy and if you want to make sure you can work on the codebase from elsewhere or if you have a CI system to warn you of merge conflicts.

I'll also push whenever I complete a ticket (for long-running branches we typically have sub-tickets, or I'll push when I've completed work that someone I'm sharing the branch with can build on.) Git makes it easy to develop those units of work on separate branches, and when you merge them back to the feature branch is generally a good time to push.

We use a fork model where each developer has their own fork of the "main" repository and the developer fork is cloned to the local dev machine.

Using this model I do work in progress commits as needed for different features using many different branches. Those wips and committed locally and are pushed to the remote fork many times per day for backup. For example I can do a quick push before going to lunch or meeting. I can also fetch, rebase, squash, and force push commits as desired because the only history I am affecting is on my own fork. The final merge to the "main" repository is usually 1-2 commits squashed from all the wip commits. Once that is merged I, since I am usually working on a feature branch, I can delete that branch locally and in the remote fork.

Every 30 seconds seems like a bit much, but it wouldn't be unreasonable to say I commit and push 10x a day.

Depends. If it's just the beginning of a project or a side project where I'm definitely the only person working on it then I generally just use it as a backup system. If it's a more substantial project then I try to remember to commit and branch off before embarking on new feature additions, major refactors, or really anything where several hours in you could find yourself cursing and deciding that particular adventure was ill advised or is currently not worth it.

I'm not sure there's a generalizable pattern there for which has a lower actual time interval between commit/pushes but I suspect that I tend to be spammier with them in personal projects.

Incrementally, every time I make a small but significant change. I treat it like a super-save, so I can get that latest slice of work back if the disk on my dev machine dies. (The dev machine is currently a Linode.)

> I'll commit for small, incremental changes. Each commit is a semantic change to me- could be a small change applied in the same way across multiple files, or a larger change in a single file that does one thing. - jtfairbank

I agree with that but i'd add that i'll also commit at any stopping point. Need to leave for work? Commit. Need to go home ? commit. Doesn't matter how broken the code is at that point. I'll rebase the ugly commit away. Usually the ugly commit will have a message like "INTERIM COMMIT - REBASE ME"

I'll also happily push these ugly commits to a topic branch on a remote machine for backup purposes as long as I know that no-one else is working on that branch.

When developing something new, I make tons of tiny work-in-progress commits, sometimes dozens in a day, and frequently go back and squash them with rebase into a logical flow of changes, once it's more clear what that logical flow really is. I keep my WIP branches around locally for a while so I can go back and dig out the experiments I made along the way.

I prefer this over trying to get every commit right the first time. I also feel there's a nice change of pace in the process of stepping back, looking over the previous work, and shaping it into something that communicates the ideas well to reviewers.

check in when it makes sense. In a feature branch? whenever you like as long as it's building often. In a dev branch directly? often enough so change gets into test regularly but not so often that your small change sets break the build our functionality other devs may also be working.

push and push regularly, in case you have merge conflicts. Get the continuous integration server building on commits and please have it email the team when the build fails too.

I would guess that there are three major components to the cars - the data collection (sensors, cameras, GPS, etc), the driving mechanism (throttle, brakes, wheel), and the logic unit ("should I accelerate into this minivan?")

I would assume they run the logic unit through simulations independently of the other systems in many instances.

i actually have been doing this a bit. I asked on hacker news and someone else I found online. Told them I would help them/lend them my core skillset for theirs.

I think it would make sense as a community, it does e.g. HN, or maybe an accelerator type thing where you get a few gurus together IRL and help/hack on eachothers projects so that in reality like 5 companies all helpn eachother, but directly. not advice, or not just, but code, legal design, hardware marketing etc. everyone buys in with skill instead of money.

i think helping and learning from people is strong and getting help outside core.

This is how I make money sometimes... resource hire or consult gigs and help out with new tech, automation, delivery/process or do/fix things the development team can't do. So I would like to continue being paid, and the company has the confidence knowing I'm delivering what they're paying for. Any other way is just not something I'd do.

What I will do and currently do is keep in contact with guys from old companies and they are welcome to flick me a mail and I'll reply with some guidance as far as is practical

I like the idea. I've heard of programs like this within very-large companies (team X will send some devs to team Y to evangelize a new technology and visa versa), but I've never thought of it happening between companies.

I think it's worth a shot. I think a lot of devs and companies might be uncomfortable with the idea at first, but that's what early-adopters/trailblazers are for (to show everyone the way, and prove that the concept works).

The game looks really cute. Will take it for a spin on the weekend (wife has an iphone while I get stuck with Android). I assume you used SpriteKit? Did you do the graphics yourself or hire someone? They look simple but very professional!

Also .. where are you based (trying to judge cost of living of areas vs mine)?

Great artwork and colour scheme. The title screen looks dynamite. Gameplay is fun and has good feel.

One thing: I wouldn't place the bar that counts down a powerup's effect at the top-left beside the score. It's way too small and is pretty much outside my field of view while I'm carefully placing bumpers in the lower portion of the screen.

There's some links in there to discussions of the same. The Quora discussion is starting to fill up with what I think is spam for services that don't exactly solve the problem, but it might be worth checking out.

Here here! I do the same for my line of fitness apps. $3.99 at the moment. The only way for consumers to begin to understand that the software they use everyday costs real money to build and maintain is for us to charge for it. I'll be experimenting with higher prices later this year. Cheers!

Because to write takes as much time and effort thinking through the structure of things as programming does, but the compiler is much more poorly specified.

Really though, I need to get together some folks who can do usability tests on my writing. (If, uh, anyone is interested and wants to learn about server configuration, please tell me what you think of https://saltstack-from-scratch/

I used to, starting maybe 15-16 years ago, and I kept it up for a good long while, but I don't get much out of it anymore. A bunch of people decided, for reasons which never made any sense to me, that blogs and blogging somehow ought to be a mechanism for making money, and in their rabid enthusiasm for commerce managed to suck all the life out of the medium. I no longer feel like writing blog posts is an act of participation in a community, because there is no community anymore, so far as I can see.

The web itself seems to be pretty much over, as far as you can consider it to be a community medium, and the death of blogging is just the most visible aspect of that. I still post on my blog from time to time, but it's basically just out of habit, or because I think I might want to find some interesting link again later.

I do: http://www.jakeseliger.com. But I can tell you why most people don't: Writing interesting content with any kind of consistency takes a lot of time, energy, and effort, and it's poorly remunerative in the short term. For many people it's poorly remunerative in any term.

I have a lot of ideas in my evernotes, but I am procrastinating on building my webpage. I want to be perfect, which ofcourse will require time and I am too lazy to invest that much time.so basically cos I am lazy and just trying to convince myself with false reasons

Right now, I don't blog much because I tried to make money off blogging and failed.

I used to blog on & off since early 2000s. It was mostly about my daily life, interests, and photos. It was a lot of fun and many friends read it.

Then I added ads and affiliate links. I hardly made any money from those ads or links but once I accidentally ended up making $200+ from one affiliate link. This got me greedy, and I started to think I can become a professional blogger. I cleaned up my personal stuff from my blog and started to write with a focus of gaining views. This ended up being work and boring. Also my blog suffered negatively as my friends stopped visiting it. I lost my interest too. Started to blog less often.

But this year I will re-start personal blogging. I don't have anything important to say to the world. My blog will be just for my friends & family. Also I removed all ads and affiliate links from it to remove any temptation of making money.

It seems to me that successful blog post requires either having expert knowledge of a specific domain, or an interesting take on a trending topic. It's hard for many (including myself) to break through the barrier of self-doubt if neither of those cases are obviously true.

Blogging for personal reasons is still a good option (as many would say), but why spend limited time on writing a blog post when you could be working on a side project instead?

I ask if it is useful to others: the answer is probably no. In a group of 100 people at random, I am not the best one at breaking down complex subjects, nor the most likely to be a cultural pioneer, so the utility to others would be low. I ask if it would be useful to myself: the answer is no. I write for myself, in a way that is useful to myself, but not to others. I think the blogging provides a lot of leverage to superior writers, and is probably a wasteful distraction to the other 99%.

Pretty well summed up by other comments, but loss of ROI. Funny enough one of my last blog posts was the most response I've ever gotten (few hundred K readers, tweeted by O'Reilly, liked by Zuck) but it still felt "not worth it" in the end.

Now blogs are simply the place I put something if I truly write something for enjoyment where that enjoyment needs to be 100% of the reward. This does happen, but rather uncommonly (because: life).

I have many articles written on software management. They document my journey as a new engineering manager. I also write down what my other friends deal with as managers/tech leads. It's amazing to see what everyone has to think about and how events could possibly unfold behind every decision.

They're all sitting on my laptop, but I worry about keeping topics separate from our employers. I want to keep things classy.

I took the plunge to writing a blog, because I like to sometimes express (really stupid) ideas in long-form, which social media is ill-suited for. Also, I hate most social media platforms. So basically the same reason Stevey's Drunken Blog Rants exists. But I am an idiot, so don't expect that kind of quality content. If you're insane, or curious as to how many bad ideas a bored, slight knowledgeable hobbyist can come up with, it's at qwertyuiop924.wordpress.com

I've got a lot of blog post outlines saved, and I'm no longer so worried about posting something to the internet and receiving critique. However, no matter how good my intentions are, I always find something 'more important' to do with 2-3 hours on a weekend. E.g. sleeping, extra work via side projects or freelancing. I just need to find a way to break it down into half-hour blocks of time, or to lock myself in my office for a few hours on a Saturday night.

Most of what I have to say, I haven't thought through enough to commit to the internet permanently. When I was a little younger I was willing to put anything out there, but not anymore. So I prefer a transient medium.

The other thing is that that there a handful of disjoint subjects that I might like to blog about: a hobby (that I do have a nascent blog for), things learned in tech, etc. But they don't have much to do with each other, and putting them all in the same place feels silly.

I've ran various news sites in the past, and I'm working on one now, if that counts as blogging.

But I don't run a personal blog. Why? Because I don't see the point. Anything related to gaming or tech is already discussed on my existing sites and social media accounts. My personal life is kind of boring by comparison, so no one would want to read about it. And anything political goes on Medium or some other such platform instead.

I blog at https://glebbahmutov.com/blog/ as a reminder to myself how some problems are solved. Now people at work, especially new hires, comment how 50% of my communication or answering questions are just links to the blog posts.

I'm not sufficiently white to qualify for a Medium account to tell everyone how I quit my 6-figure paying job at McKinsey, after graduating at Wharton, and my college roommate who graduated in finance gave me $5MM in seed money to start my new photo sharing app, so you can do it too'

HN allows duplicate submissions of stories that haven't had significant attention in about a year. We want good stories to have multiple chances at making the front page.

Our goal is to optimize the front page for the best stories, and it's fairly random whether or not a good story gets traction the first time it's posted. If we were anal about disallowing reposts, sure we'd get a more deduplicated submission history, but we'd also end up with a poorer front page. Bad trade.

There are things we're working on to reduce the number of duplicates that are appearing. The problem is trickier than it seems, but we'll get there.

I think it's because one person might come up with a more convincing headline than another that causes the post to take off here. If that's the case, the first one to submit shouldn't always win. Also, if multiple threads on the same topic take off at about the same time, mods sometimes merge the two.