Kalzumeus Software Year in Review 2014 - <AUTHOR> http://www.kalzumeus.com/2014/12/22/kalzumeus-software-year-in-review-2014/ <comment><USER2> > I work mostly on what I want to work on, take a day off whenever I feel like > it, and optimize the business for quality of life rather than for any > particular growth or financial targets.

There was some thread here where patio11 kind of snickered when someone called his business a "huge success"; probably because he knows a bunch of people that earn one or more magnitudes more money. But the above quote probably sums up "fantastic success" for me, and I think, a whole lot of the world.

<comment><USER3> Sure, but then "fantastic success" can be relative to cost of living, too. You can earn an order of magnitude _less_ and still be experiencing "fantastic success" if you happen to live in e.g. Cambodia.

<comment><USER4> Given that he lives in Tokyo, which has one of the highest costs of living on the planet, I guess that's an important point as to HOW fantastic his success has been :)

<comment><USER5> I think he's mentioned Nagoya pref, which is kinda countrysideish and less expensive to live in. (and also houses can be of better build.)

<comment><USER6> He moved to Tokyo earlier this year. This is mentioned in his post. For example:

"Appointment Reminder's key stat of interest is monthly recurring revenue on our publicly available plans, since this is the most predictable revenue in any of our businesses and thus lets me make consequential decisions like "Move the family to Tokyo, where rents are 5X what they were in Ogaki" (that happened, more later" or "Bring on help" (that also happened, more later)."

<comment><USER5> Ah, ok, thanks for the correction.

</comment></comment></comment></comment></comment></comment><comment><USER7> Hey Patrick, thanks so much for your honesty in all of this. It's never easy talking about things that embarrass us. Not to mention _in public_. You'll probably get some haters, but just know that I look forward to your annual updates and they have encouraged me to quit my job and start my own software business too. This has been one of the best decisions of my life. I'm sure there are many more here who can say the same thing. So, to you good sir, thank you.

<comment><USER8> I'm also very impressed with Patrick's ability to disassociate business success and failure from his personal success and failure. What I mean: if something I worked on "fell off a cliff" I'd be a lot more panicky and less likely to step back and say "that's ok" as he did in his post. I'd probably take it as a personal failure rather than rationalizing it as a matter of time investment trade offs.

Lesson to learn: it's okay to let some things decay so that attention and focus can be paid to the right things.

<comment><USER9> Yeah, I've let projects die off in this fashion, but I still feel a pang of regret when I think about them and all the time I sank into them. It always feels like maybe I should have sold them off/given them away so that someone else could have helped them reach their potential.

Then again, BCC seems to have reached much higher heights than I would have thought its potential was, so maybe it's more of a "Mission Accomplished" there.

</comment></comment></comment><comment><USER10> I completely understand for your neglect of Appointment Reminder. I've also had my share of projects I'd start but lose interest in it because, well, I was not consumed by the problem I was solving.

So during the years I worked sequentially (or sometimes at the same time) on a gift certificate template gallery, a travel insurance comparator, a body-mass- index calculator website, a file sharing solution for businesses targeted at the french market.

The reasoning behind all these projects was to make "passive income". And by running multiple websites I would make a nice income from them all combined.

After developing and marketing the last of these projects (file sharing one, post-mortem here: [http://www.sparklewise.com/post-mortem-5-mistakes-i-made- wit...](http://www.sparklewise.com/post-mortem-5-mistakes-i-made-with-my- first-online-product/) ) I realized that the most important thing is not to have a "good idea" but to work on a problem you want to solve and with people you can relate to or at least that you enjoy working with. That's why I now focus on serving SaaS businesses, because that's actually something I care about and will likely care about for years to come.

Thanks for all the transparency Patrick and for setting an example for the rest of the HN crowd. And good luck with the fatherhood :-)

</comment><comment><USER11> I have been working on an AR clone in Austria since mid September ([https://www.terminerinnerung.org](https://www.terminerinnerung.org)). I focus on getting enterprise customers. My website is hardly visited (so far). I got my first two customers by simply walking into their offices and asking whether they'd be interested. I asked them to pay me for 12 months in advance, so I have earned 5368€ (6565 US$) since I started. I'm hoping that I will earn this again in 2016, when it comes to renew the contract for these first two clients.

My approach is more high-touch - I don't rely on people searching for "Terminerinnerung" ("Appointment reminder") and then coming to my website. I think most doctors don't do that. I go out and talk to them.

I also by default offer to develop integrations into the customer's existing appointment reminder system - because the majority (~66%) of my potential customers here already have some computer system. This means reverse engineering the customer's existing system to be able to continuously export its data. I did this successfully for one of my customers (it was a Java/MySQL application). The other customer I developed a web calendar for.

I have now completed the development for my first two customers (I hadn't completed development when I sold the service to them. I just pretended I had, to make the sale). At the beginning of next year I'll start to acquire more (enterprise) customers.

I'm happy to talk about this via email if anybody's interested. My address is [my first name]@[my last name].io (Michael Herrmann).

<comment><USER12> I'm doing the same for Belgium actually, and possibly The Netherlands, in time. ([http://afspraakherinnering.be](http://afspraakherinnering.be))

It's in it's early stages. I'm waiting to e-mail Patrick when I can say "Thanks to you I now have >500€ MRR" :-)

I sent you an e-mail to talk about it some more and share experiences! Always great to learn of similar endeavours.

<comment><USER11> I already replied to your email :-)

A few other people also got in touch. Cool! :-)

</comment></comment></comment><comment><USER13> > Ruriko and I were blessed by the birth of our daughter, Lillian.

Congratulations patio11!

<comment><USER14> I really hate to "me too!" on comments. But I have followed a lot of what patio11 says on HN (I've gone through his comment history even, to learn quite a bit!) and I am a fan. Thank you for all of your information and congratulations to you and your wife on having Lillian! Many happy returns.

</comment></comment><comment><USER15> Thanks for being so open with your feelings. I always find it hard to talk about my own feelings, and it's great to hear how you are struggling with and overcoming the pitfalls of self-employment.

Your open sharing of actual revenue numbers is invaluable. The tech press only loves to talk about all those billion dollar companies. But your blog posts put that into perspective, giving us a glimpse of how much money a small business can realistically make without shooting for the startup lottery.

</comment><comment><USER16> > The only time in recent memory I used it myself was when a Redditor asked > for anti-Bitcoin bingo cards, a request which I am unquestionably the best > qualified person in the world to answer.)

Apropos of nothing, it seems that if you're interested in piquing the interest of someone busy, discovering the venn diagram for which they're one of a small population in the intersection might be the way to go. Or, it might just be really creepy.

</comment><comment><USER17> Thank you for sharing your story

> I'm taking my own advice to charge more, and re-aligning those numbers with > actual customer behavior rather than the numbers I guessed four years ago.

How do people normally handle this?

1) Take it or leave it price hike

2) Give a X month grace period before new price

3) Grandfathered in and price only changes if they need to upgrade

4) ??

<comment><USER18> Actually, I'm always disappointed to see useful software priced out of the reach of small businesses - and low priced plans disappear in 1-3 years after a cool tool launches. Visual Website Optimizer, Hubspot, Leadpages, etc all get priced out of the reach of people making less than $10K per month online because its more profitable to go after lawyers and accountants.

<comment><USER19> Visual Website Optimizer just introduced a $9 plan (I work there). I agree with your point in general, but the truth is most SaaS tools make far more profit when serving bigger customers.

<comment><USER18> I didn't know that, and I'm happy to hear that.

And I agree that it's more profitable to serve the bigger customers, but it's a shame nonetheless that I see things that I would love to try to use myself, and would pay for, just not worth $99 a month to me.

</comment></comment></comment></comment><comment><USER20> Patrick's writing serves as a great supplement to PG's essays: real world analysis of "slower" growth software businesses. For engineers interested in alternate models of creating a company, these annual write ups help one develop an outline for the financial, business, and engineering lifestyle required to get something off the ground. Thanks Patrick, after working at VC backed startups, these types of posts actually encouraged me to go out on my own!

</comment><comment><USER21> I am a huge fan of yours patio11, you have gifted us so much useful knowledge. How do we ever repay you? =)

<comment><USER22> Tell me what advice worked or didn't work when you implement it in your own business. It makes me happier than anything else, businesswise.

<comment><USER23> I used your salary negotiation piece, among other sources, to negotiate a ~15% boost in my offer at the company I started at about a year ago. Most money I ever made from a 3-sentence email and a 5-minute phone call.

<comment><USER24> It was also the first thing I looked up when negotiating on my position I start next month. I've secured a 10% raise upfront, with a further 15% + access to a max. 25% yearly bonus arranged once I get a qualification in the first quarter of the new year.

It took a little bit to map the software eng. assumptions to a mech eng. role such as my own (especially given the market is terrible for me right now where I am) but it paid off in dividends for me. So thank you so much!

</comment></comment></comment></comment><comment><USER25> You can burn or you can last, but you can't do both.

Patrick is a wonderful example of a person who takes the middle road and actually put quite a lot of effort into making sure he stays there rather than letting himself be sucked in by the grow like crazy game or the never launch anything game.

He is happy, he is not trying to be happy. That alone is something most people will never experience and measured in that he is a billionaire.

<comment><USER26> 'or the never launch anything game'

I just realized that I am a part of this :(

</comment></comment><comment><USER27> Hey @patio11, hopefully you'll lurk a bit later...

Congrats on the kid! Balancing a newborn and any amount of business is no joke (source: I have two startups, a software company and an 18 month old).

I wanted to ask about this:

> To build out that software and get the team spun up, I had to actually sit > down and document our business processes

I'd love to here a bit more about how you went about that. You've got a great approach to documenting your thoughts and I'm sure I could learn a thing or two. I'm scaling our app [http://www.staffsquared.com](http://www.staffsquared.com) in 2015 and working hard to share knowledge across our growing team.

Keep up the great work!

<comment><USER28> You may have missed it, but Patrick talked about it earlier this month.

[https://training.kalzumeus.com/newsletters/archive/sales_aut...](https://training.kalzumeus.com/newsletters/archive/sales_automation)

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

</comment></comment><comment><USER29>
      [H]aving numbers publicly available would complicate
      [taking investment money in the future].

I don't understand why having publicly available numbers would complicate getting investment in the future. Would someone be gracious enough to explain that to me as if I have no knowledge (true in this case)?

<comment><USER30> Information is leverage in any negotiation.

Patrick basically has all his cards on the table, and can't give much more than that

<comment><USER31> while true, is there someone in venture capital that isn't getting the numbers contained in this post before giving people money? revenue, profit, expenses, etc seems pretty basic. I can't imagine investing in a company without asking, hey, how much money did you make last year?

</comment></comment></comment><comment><USER32> Re: your SEO comment:

 _" AR is virtually guaranteed to be a mortal lock on the query [appointment reminder] due to the combination of the exact match domain bonus and the fact that most links to it naturally cite the name of the company."_

Wasn't that largely made irrelevant a while back? I'd be willing to bet the majority of your relevancy comes from the backlinks and content on their pages vs. your exact match domain. Hopefully you're not building a link profile focusing on that link text as there have been reports of people getting dinged for that.

<comment><USER33> No, he's 100% correct because in his case the keyword is the same as his brand name. And when you search for a brand, Google shows you the brand homepage 99.9% of the time.

In his case, his brand is also highly relevant to the term 'appointment reminder', which pretty much locks up the #1 spot for that term.

<comment><USER34> A shame the website is so utterly horrible though. Sorry, but it's true. Huge walls of text, stock MS Office clipart, "news" a year and a half old. It looks amateurish and smells of abandonware.

<comment><USER35> And your point exactly? He already knows it could be much better, obviously. It is his business after all.

And yet despite your finely tuned ability to detect amateurish abandonware he managed to bring in ~$75,000 revenue in on public plans, and if I had to take a guess anywhere between 1x - 1.5x in non-public plans.

As a general rule, we shouldn't use the obvious to tear someone down.

</comment></comment></comment></comment><comment><USER36> >Most of our customers are on the Professional plan, which annoys the heck out of me, but it's my fault. Since I was thinking personal services, where 100 appointments a month barely sustains a sole practitioner (it implies $3k to $8k gross revenue), I thought any sizable business would be forced to pay more meaningful amounts of money. It turns out that you can run a nice boutique law office with sales in the high seven figures or an architectural consultancy with millions in revenue on less than 100 appointments a month. Believe me, I know several examples.

If you could go back in time how would you change the pricing model here?

Would you remove the professional plan altogether? How could your pricing model differentiate between the small personal services with < 100 appointments/month and the law firms with < 100 appointments/month?

</comment><comment><USER37> Bravo for candidly writing about your failures as well as your successes. I don't think a lot of us would have the guts to write publicly about times that we didn't measure up the way you have; but your doing so is wonderfully instructive.

Congratulations on fatherhood!

</comment><comment><USER38> The comment about BCC being Hello World with a random number generator is amusing, but the fact that you were able to generate profit from a simple web app is really a testament to your marketing and business skill.

</comment><comment><USER18> I bet it must be an amazing relief to be able to talk specifics of AR, after so long of having to be quiet about the details. Congrats on your success, Patrick.

<comment><USER22> It is, oddly enough. Partly it's that -- I love talking about things and having AR be the exception made me feel phony. (That's irrational, but there you go.) Partly, in recent I finally feel like I know what I want from having that business in the portfolio and I have some idea of where it goes from here. Partly that frees me up to think "OK, aside from fatherhood, what happens next?"

<comment><USER18> I totally get that. Not odd at all.

</comment></comment></comment><comment><USER39> Patrick, if you're reading I have a question about Appointment Reminder. The website says this:

> We do our level best to answer all emails within 24 hours. All questions are > answered by our lead engineer. (Your business is too important to trust to a > call center.)

This sounds like it won't scale well. How do you plan to cope with support when your number of customers grows?

<comment><USER40> Not Patrick, but I could see at least two good ways to scale this:

\- Make it a selling point for the higher tiers of accounts. "If you choose the Serious Business plan, all your questions will be answered by our lead engineer. (Your Serious Business is too important to trust to a call center.)"

If you want to keep the selling point of competent and personal support for all customers:

All questions are answered directly by our highly-trained customer support reps, Anna and Thomas [Picture of Anna and Thomas smiling winningly and looking nothing like That Anonymous Incompetent Dick I Get Every Time I Call The Phone Company.] In the rare cases where they can't solve your problem, they'll immediately refer you to our lead engineer."

</comment></comment><comment><USER41> My favorite quote from Patrick's post:

"The slip date shipped repeatedly."

</comment><comment><USER42> This might be one of my most favorite posts of Patrick's ever. It's often so much easier to start something new than it is to sustain something old. Hanging around HN too long makes you an addict of "new". Guess what: growing and sustaining a business for the long haul is _hard_ , even for patio11.

</comment><comment><USER43> Patrick,

Have you thought of launching an affiliate program for the BCC ?

You can connect on forums like WarriorForum and find good affiliates. They will love that you have a proven product. Then give them 50-75%.

Some will advertise on their existing sites, to their lists and may even pay for advertising. You take no risk and may get a lot for sales.

Another option is Clickbank where affiliates may find you. There are alternatives like JVZoo, DigiResults etc.

You could hire someone part time to do the customer support and bugfixes.

In short you could keep BCC going nicely with very little effort on your part.

And then after a few months, you have a low maintenance business that you can sell, rather than something that will slowly die.

I know it may not seem worth your time, as you have bigger fish to fry.

However all of this could be done in a couple of days, and maybe an hour a month to maintain. You may be able to sell it for $100k or more once it is in good shape again.

<comment><USER32> I think one of the considerations here is what degree of professionalism he wishes to portray with this.

The info products sold on sites like WF and such are what I'd lump into the "guru" category, and are oftentimes just lots of fluff or something the writer paid someone off Odesk to write for them. Overall, they don't come off as terribly professional and can quite readily be identified as living within the "Get rich quick" bucket.

Affiliates can be helpful, but I'd be _really_ careful about picking ones that won't damage the brand image and credibility he's built for himself.

<comment><USER44> I made my first money online in the SEO/IM scene at Wickedfire/Digitalpoint/Sitepoint/etc. Those guys are really good at what they do.

It's funny to hear you call the WaFo products "guru" here on HN (I would agree they are), because HN itself is subject to the same kind of guru-bullshit. There are multiple people on HN who make money selling info products purely to the HN crowd. I would classify them as "guru" as well. I enjoy watching it play out, because as HN builds as a community, it seems a lot of trends are evolving in the same way the IM community did. Someone makes money, makes a blogpost, gains a following, writes an ebook, makes more money. I would call that "guru", but people on HN pay for it. I will say, however, that the content the "gurus" on HN produce is far better than 99% of the shit coming out of WaFo.

Relatedly, it's amazing how quickly people on HN will dismiss the SEO and affiliate marketing industry. It's a massive market. The "marketplace" forums on WF, WaFo, and BHW process five figures of transactions per day. That's mostly SEO services, some spammy, some not. Outside of that, there are multiple affiliates on those forums doing six figure daily revenues. The AM industry as a whole is ~6billion annually.

Despite all the money in SEO/AM, commenters on HN are quick to degrade the industry as spammy/blackhat/assholes/whatever, and yet most of those people are making more on their own than anyone here. It's quite funny, honestly.

<comment><USER32> I agree with many of your points, and have recognized the same pattern here before in terms of info products like you mentioned. Can spot those a mile away now.

The distinguishing factor is that a large % of the businesses here attempt to really add tangible value, vs. just selling a dream that they hope some newbie suckers buy into.

Again, quality over quantity. For example, Mike Hartl sells an info product. It also happens to be the definitive bible on Ruby on Rails and has helped numerous people start learning the language, including getting jobs as developers. Contrast that with some random person's "WaFo Special" and I think the difference is pretty stark.

I'd further add that I'm not dismissing SEO at all. I think it is quite important under the "Content" umbrella, but trying to game it is not sustainable and a waste of resources in the big picture. These days it is about creating linkable, high-density/value content, and then getting relevant backlinks for it. That has never really changed in the SEO space. A lot of the random attempts at gaming the signals you send search engines has.

<comment><USER44> Good points.

The distinguishing difference between the crowds seems to stem from the differing skillsets. WaFo has more non-programmers than HN, and consequently differs in market dynamics from HN.

"Gurus" on HN, considered in a context parallel to that of WaFo, enjoy the privilege of writing actionable content because most readers can program, and therefore can take a different route to profit from non-programmers. Thus books from HN authors can simultaneously promote profit and add value, unlike those from WaFo authors, which create a bullshit-cycle by selling things to each other. Then again, maybe that's just good business...

</comment></comment></comment></comment></comment><comment><USER45> "...a lot of folks have wanted me to roll the dice on a funded startup with big put-a-dent-in-the-universe ambitions. At times, I wanted to want that for myself, but for the moment I was content to keep running my business in the traditional fashion. I work mostly on what I want to work on, take a day off whenever I feel like it, and optimize the business for quality of life rather than for any particular growth or financial targets."

We share the same viewpoint. Well said.

</comment><comment><USER46> Why is Appointment Reminder on a .org top-level domain?

<comment><USER16> SEO. It's a an exact match for the search term he was gunning for, and the .com wasn't available but the .org was. Exact-match domains get hit with the +15 wand of visibility in search results, and the whole .com vs .org distinction isn't as black/white as it used to be.

<comment><USER47> There was an EMD (Exact Match Domain) update in September 2012 to fix this.

<comment><USER18> That's a myth. It "reduced" the bonus, but the bonus clearly still exists. But I love that others think that domain name is no longer relevant for SEO. Keep thinking that. :)

<comment><USER32> It's reduced to the point of not being worth insane prices for EMDs. The majority of his ranking is likely due to his backlink profile and relevant content vs. the domain. I'm sure it doesn't hurt things though.

<comment><USER18> Can't speak to "insane prices". But Patrick got AppointmentReminder.org for $8. He classifies it as the best ROI he's ever made.

"cars.com" is still the #1 result for searching "cars". And "business.com" is still on page 1 for searching "business". The death of the EMD has been greatly exaggerated, IMHO.

</comment></comment></comment></comment></comment></comment><comment><USER48> Congrats on the kid & move to 中目黒!

<comment><USER49> Nakameguro is a great area, but I'll bet those rents really do sting. I've always been partial to Nakano, Koenji, and Kichijoji. I'll always be a Chuo liner in my heart.

</comment></comment><comment><USER50> As a young software developer interested in what happens on the business side of things, this was a fantastic read. Thanks Patrick.

</comment><comment><USER51> Is there a way to reach patio11? I emailed him while taking his course but never got a response.

<comment><USER22> Email is generally the best way to get in touch with me. Twitter works as an escalation method. In general, while I try to response to everyone who emails about stuff I write for free on the Internet, it can get bumped from the priority list by a lot of things, including (in the instant case) being at home with a baby.

<comment><USER51> thanks, escalating!

</comment></comment></comment><comment><USER52> Glad to hear Patrick is using Bench, those guys are awesome.

<comment><USER53> Thanks Kevin <3

</comment></comment><comment><USER54> Congrats on the baby!

</comment><comment><USER55> Is it better to have a low churn rate per month with lower MRR or a higher churn rate with higher MRR ?

Can you counter churn rate by acquiring new customers?

<comment><USER56> Low churn rate is better. The longer you have a customer relationship the longer they think about you. You have an opportunity to sell them more value as you develop it and get them to refer you more customers.

</comment></comment><comment><USER57> This may be a unpopular opinion, but this guy needs to cofound a company with someone else. He is one of the smartest dudes I know for optimization, but seems to have some of the most tame/boring ideas for 'startups' (if you can call them that). Bingo card creator? Appointment reminder? He needs a cofounder who compliments his skills. Mainly, good ideas and good sales skills.

The bottom line is you can only optimize so much via a/b testing and whatnot from marginal ideas at best.

<comment><USER21> I feel his $ numbers are shockingly low given his obvious calibre.

<comment><USER58> I would expect that "publicly available plans" excludes enterprise offerings, where i would anticipate a considerable income given his past posts.

<comment><USER18> He said in that post that his enterprise revenue was "$50K < X < $100K".

</comment></comment></comment></comment><comment><USER59> > Ruriko ... does not love Ogaki ... and wanted a change.

Did she consider US cities?

Tokyo is very expensive and an unusual choice to move into for family with a child.

Any US city would put you in a better touch with your business and would be less expensive than Tokyo.

<comment><USER60> Tokyo is a wonderful place to live, and I can assure you there is nothing unusual about families with children in Tokyo.

Life is about making choices.

<comment><USER59> What's wonderful about Tokyo?

5x price increase, small apartments (instead of houses), higher babysitter costs -- these are all downsides.

What is better in Tokyo than in, say, Austin, TX?

<comment><USER61> Tokyo is expensive, but its the best city to raise kids in that I have ever seen.

Its high density and superb transportation mean you don't need a car -- go almost everywhere with your kids by walking, bicycle, or extremely frequent convenient train. Riding in the car sucks for kids (and adults, IMO).

There is access to all kinds of world-class health care, and all of it is free for your kids.

Tons of great educational institutions from the best universities down to preschool (and although the preschools can take some time to get into due to capacity, they are by and large terrific).

Great food of virtually every variety except Mexican. Most of Tokyo is extremely clean, safe and crime-free. Multiple always-open industry-redefining convenience stores, same-day Amazon prime deliveries, synchronous 1Gbps fiber optic Internet connections for $50 a month, a regular taxi system that is better than the Uber you always hear Americans raving about, one-hour cold beer delivery... in other words, the kind of fundamental lifestyle convenience level that is good when you are single, but becomes _way_ more important once you have kids.

Source: I live in Tokyo with my wife, 2-year-old, and 2-month-old.

<comment><USER59> How do all these wonderful family benefits explain that Tokyo has the lowest fertility rate in Japan [1]?

\---

[1] [http://www.japantoday.com/category/national/view/japans- fert...](http://www.japantoday.com/category/national/view/japans-fertility- rate-rises-to-1-43-in-2013) Tokyo has the lowest fertility rate in Japan by far, hovering just above 1.0.

<comment><USER61> Well, if I had to hazard a guess, I would say the main factor is the high cost of living, especially rent/mortgage expense. I have several friends who moved out of Tokyo to have kids for financial reasons (but usually not without some regret).

Tokyo is pretty awesome, but you do have to be able to afford it. I would assume it's a lot more expensive to live here than Austin, TX, but I know it is cheaper (and IMO _way_ better for raising kids) than say, San Francisco.

<comment><USER59> > Tokyo is pretty awesome, but you do have to be able to afford it.

Are you saying that for the same $120K/year a family would be better off in Tokyo than in Ogaki (or Austin)?

Lower cost of living means that you can afford other things, such as bigger house, better neighborhood, better doctors, babysitter, better car etc.

I see though how Tokyo could be better than San Francisco or NYC - thank you for your explanation.

<comment><USER61> It is instructive to think about those 'other things' \-- because each person will value those in different ways.

To some people, a smaller house is a good tradeoff if it comes with abundance of extremely awesome restaurants, shopping, and riverside parks nearby. For others, having a big personal space is more important.

Some people get a lot of satisfaction from having a Porsche or (more likely, with kids) a well-appointed Audi Q7. I think the best car is not having a car at all (at least until the robo-cars arrive) -- but to me that means public transit + bicycle is literally so good that I can get where I am going faster than I could with a car. The only cities I have lived in where that is true are Tokyo and Amsterdam.

So yeah, depending on what you value most, you might be better off in Tokyo even on $120k. But if you want the car and big personal space, then probably not.</comment></comment></comment></comment></comment></comment></comment></comment>


Pushing back on mediocre professors   - <AUTHOR> http://sethgodin.typepad.com/seths_blog/2010/10/pushing-back-on-professors.html

<comment><USER2> I can't agree with this more. The best courses I have taken didn't have a textbook. If I don't struggle at least through some of a course, I'm probably not learning anything. Part of this seems to be that (in my experience) few people are allowed to fail a course. People who both don't understand the material and slack off are just pushed through with the minimum passing grade, dumbing down more advanced courses down the road.

</comment><comment><USER3> What's old is new again: those who can do, those who can't teach.</comment>


What is your best programmer joke? - <AUTHOR> http://stackoverflow.com/questions/234075/what-is-your-best-programmer-joke <comment><USER2> Programmer dad shouted at his kid, "End of discussion! Semicolon!"

There's a lot of great ones here: <http://www.quora.com/Humor/What-is-the- geekiest-joke>

<comment><USER3> Unfortunately, the jokes are all blurred out by Expertsexchange. I mean, Quora</comment></comment>


Ask HN: Can I ask for more severance pay? - <AUTHOR> Throwaway, long time HN participant.
Yesterday, without warning, my whole team was laid off. We didn't even get to finish the day or tidy up loose ends, document anything, etc.
After 9 years at a financial company, currently as a Quant, I am being offered only 3 weeks severance pay. When I started we were passing spreadsheets back and forth!
I want to ask for more. How does one go about this?
I received an overnight delivery with standard paperwork and I must sign to get the severance pay.
The timing could not be worse. I am a remote employee and I need to remain a remote employee. I can't relocate. I live in such a remote area that there are no jobs here. My wife and I are undergoing IVF, mortgage payments, my wife is back in school getting an RN degree with 18 months left to go. Starting to feel the stress today.
Any advice? <comment><USER2> You may have more leverage than you think. The documents that they want you to sign are really important to them.

We had an employee refuse to sign them after we fired them, for cause. A few weeks later he asked for a larger severence than we initially offered. We offered a month's worth of pay, and he wanted way more than that if I recall correctly. We said no. He then lied, said he was fired for racial discrimination. Threatened a lawsuit. We caved and gave him an extra month of severence. He signed the papers and took his two months of free pay.

Aside: I personally hired this person. I noticed big performance problems early, and personally mentored him for six months before coming to the conclusion that we needed to let him go. I was the one accused of racism. It hurt. I lobbied for more time to turn this hire around, I gave him so much attention and extra time to turn things around. Only to be lied about in the end. Worst moment in my career so far. I wanted to fight any lawsuit-- we had tons of documentation and evidence that the fire was 100% performance related including commits demonstrating clearly these problems (and extensive notes documenting the improvement plan). But our employement lawyer and the CEO figured it would just be easier to give the severence.

Anyway. You may have more leverage than you think. Though, just be ethical about how you handle it. They really need you to sign those papers just to tie up the legal loose ends.

<comment><USER3> I guess you learned that valuable lesson that it is never too early to fire. It is not that people don't want to change, it is they can't. Trying to change causes such cognitive dissonance that it can only be resolved by blaming others, normally the person trying to help them change.

Can I ask why you hired him in the first place?

</comment></comment><comment><USER4> Everything's negotiable, but the wisdom of trying it depends on the strength of your negotiating position. Many severance agreements simply reiterate obligations to which you've already agreed in employment/non-compete/non- solicitation agreements. If this is the case, you have basically no leverage. If they're asking for substantial concessions (say, you have a 3 month non- compete and the severance agreement extends it to 12), you've got more of a shot.

</comment><comment><USER5> I was laid off last year, but in Canada so might be different where you are. Here is my advice:

Everything is up to negotiation. You do have leverage, your lawyer will tell you how much.

The process would be:

1\. Don't sign anything.

2\. You hire a lawyer who specializes in employment disputes. If the severance package has a deadline, your lawyer will email the company saying they represent you and need more time to respond.

3\. You meet with your lawyer and explain your situation. My lawyer explained to me that when you get laid off, your company is breaking your employment contract. That means they have to provide you with compensation to make you whole. The amount of compensation depends on your skills, experience, job level, age, health of the job market and any other specific circumstances. Basically, the company has to compensate you enough money that would make you whole - which is be employed again. The compensation is based on the time it will take you to get a new job. 3 weeks is kinda short. Also, there maybe rules-of-thumb: in my city in Canada, we expect to get a minimum of 1 month of salary for each year you worked with the company. I have seen some very generous companies give 2 months of salary per year worked.

4\. The lawyer will write up a demand letter asking for more severance. From that point on the lawyer does all the communications with the company. My company also offered employment services to help me find a new job which i didn't need, so my lawyer said ask the company to pay that to me in cash... was like $5K. My lawyer said there is zero risk in sending a demand letter - never will get a worse package.

5\. Depending on the size of the company, they may expect that a certain percentage of employees will dispute their severance package - which means they already planned to give complainers a bit more... as in, already authorized, you ask, they give... easy.

6\. My company said "No" to the demand letter. They pointed out that there were many jobs that I would be hired for and my severance is enough. They provided the job postings that I would be suitable for.

7\. In response, my lawyer told me to go through each job posting and write a couple sentences of why I am not qualified for them. My lawyer sent that to the company.

8\. Company responded with a higher severance, an extra few months of salary on top of the 1 month per year and the $5K mentioned above. The legal costs were less than $2K.

<comment><USER6> Interesting, how did you find that lawyer? (google? personal contacts? Approached a law firm?)

<comment><USER5> I was referred to a lawyer by a friend who was laid off previously. Many people were being laid off at this time.

Also, I worked with lawyers at the company I was employed with. I asked one lawyer who I got along with to refer one. That referred lawyer was too expensive (big name law firm who works for corporations).

If you don't know any lawyers, you can ask anyone who works with lawyers. For example, if you have a friend who is banker or real-estate agent. Their lawyer will know other lawyers.

Most importantly, you should have a conversation with a couple lawyers (ie. interview them): "Here is my situation, do you think I can get more?", "If we ask for more, how do you go about it?", "To keep costs down, do you have a legal associate to do the work?".

Since you are interview them, calling local employment lawyers that you find on google is OK too. The 15 minute phone call is free, lawyers have to do marketing/business development too.

On a different topic: you mentioned stress. My advice to you is to make sure you don't turn it into a bad time in your life. You have control. You can make it better by doing things such as losing weight, improving your golf game, traveling locally/camping (to keep costs down), visiting family, building a side project, contribute to open source. All of these things give a silver- lining and promote a positive optimistic outlook. Also, these things are great in a future job interview when they ask "so what did you do with your time off?" A fun, positive answer is best. You won't be unemployed forever.

</comment></comment></comment><comment><USER7> My email is in my profile.

Reach out to me if you are looking for quant work. I might be able to help on the short term.

</comment><comment><USER8> The papers explain what you're supposed to give up in return for your severance check. Decide if what you're giving up (your freedom to speak about the company? You won't sue them? You'll keep their algorithms secret?) is worth the 3 weeks or worth more.

Just remember: If you are in the USA and in an at-will state, they don't owe you anything upon termination (other than unused vacation pay, etc, as per your state laws)

</comment><comment><USER9> [random advice from the internet]

If there are papers to sign in exchange, negotiation is possible, but may or may not be worth it. At a minimum it is worth closely reading what is contained in those documents. At the midlevel paying an attorney to review them is not unreasonable. At the top end, hiring an attorney to negotiate the severance contract (and that's what sign this for that boils down to) on your behalf is always an option.

When I say it might not be worth negotiating, I mean that moving forward toward a new job is a necessary step and negotiating severance is a step in a different direction (a potential distraction). On the other hand, if you have a relationship with a higher up, calling them and saying that three weeks seems a bit thin after nine years, might be all it takes...with the caveat that the context is sensitive and framing anything in a way that puts the other party on the _defensive_ will probably backfire...they will or won't find their own way to seeing an "injustice". Let them draw their own conclusions. Heck, you might even wind up getting a position elsewhere in the organization.

Good luck.

</comment><comment><USER10> I'm really not familiar with quant jobs, but is the company itself in good shape? And was your job going well before your team got laid off? I"m kind of curious about the three week severance. I've heard rumors that those companies can have huge concerns about employees leaving jobs for competitors if their jobs involve proprietary IP. So they have really strong non-competes they enforce buy paying ex-employees for the length of the non-compete. But that probably isn't a huge concern if they decided to only give the team three weeks severance.

</comment><comment><AUTHOR> I can't edit the post any longer.

There were zero employee performance problems. The company is in California. I am in NY.

</comment><comment><USER11> It never hurts to ask but you likely have no leverage. After all the company by definition doesn't plan to have a future relationship with you.

The best opp'y is if you have a good relationship with someone higher up in the organization who's still around and might be willing to do you a favor -- possibly (though unlikely) a bit more cash, but possibly a job referral, especially useful in your industry.

What leverage? Well remember I said the company "doesn't plan to have a future relationship with you." The only leverage you really have is that they _might_ have a future relationship with you: i.e. you don't take the severance and (lowest risk for them) you may no longer be bound by NDAs etc or (highest risk for them) you might sue them, so they're paying in exchange for you agreeing that there are no open issues between you, possibly among other things.

Also, straight cash is unlikely to appear (among other things why you? What about that other person of ${ethnicity}/${gender}/${age} different from you? That's a lawsuit waiting to happen and HR will likely quash such a suggestion.

BUT: you could offer to help "tidy up loose ends, document anything, etc" in exchange for them covering your COBRA until you get a new job / six months go by, which might be a suitable fig leaf if you know a higher up.

And the company can't extend your normal health insurance except via (taxably) paying COBRA premiums as the health plans require that eligible employees work a minimum number of hours/week, typically 32.

<comment><USER11> I don't understand why this would be downvoted; it doesn't even express an opinion, simply discusses the facts, from the perspective of someone who has laid people off.

</comment></comment><comment><USER12> You were laid off so you're eligible for unemployment. First, get signed up for that. Next, take a week or two to gather yourself emotionally, brush up on your interviewing skills, and refresh your resume. Finally, start interviewing for the many remote positions out there. Don't worry, you're gonna be fine.

</comment><comment><USER13> Don't forget to file for unemployment.

</comment><comment><USER14> If you ask them to cover insurance for 6 months, they will probably do it given the circumstances. Health insurance is usually the most negotiable thing.

Beside that, just accept that you no longer work there and look at them just like you would look at any other company. Can you offer them something that would help them?

A good thing to offer is that, once they rebuild the team/hire new people, you can help them get up to speed. It is not confrontational, it focuses on something positive for the company too making them think about better days, and you are not committing to anything in the short term (and you probably won't have to do anything in the long term either).

</comment><comment><USER15> Email me, we're hiring and happy to go remote.

</comment><comment><USER16> You can always ask.

But they don't have to give it to you.

<comment><USER17> Yeah. It's certainly worth an hour of your time to ask for more. It might be worth a day of your time. It's probably not worth more (but I'm guessing).

</comment></comment><comment><USER18> Find an employment attorney. They negotiate severance all the time. What state are you in?

</comment><comment><USER19> Get your resume together today, and start looking for jobs today if possible. Don't wait.

I don't see any problem with asking for more severance, as 3 weeks seems really really low. Contact the group that is handling your "transition".

</comment><comment><USER20> Hang in there!

Don't sign anything, find a good lawyer, get all the contracts etc. and put it in one folder. Keep the end in mind and don't let the stress take over your thinking.

</comment><comment><USER21> Like everything in life, its all about costs. Cost of a company fighting a lawsuit vs. giving you more money.

<comment><USER22> If the company followed their documented severance policy, what grounds would the OP have for a lawsuit? They didn't mention anything that the company did that might be grounds for suing them (e.g., discrimination, breach of contract, etc.). People get laid off all the time, and there's no legal requirement for a company to pay any severance at all (I'm assuming they're in the U.S.).

However, I don't see any downside in asking for more severance. The worst the company could do is say "no".

</comment></comment><comment><USER23> What country / state are you in? Check the local laws.</comment>


The Fear of Common Knowledge - <AUTHOR> http://www.overcomingbias.com/2008/07/fear-of-ck.html <comment><USER2> The essay that this blog points to is one of the most thought-provoking essays I've read in a while. Still trying to grok it

</comment><comment><USER3> <http://uncrediblehallq.net/blog/?p=66> < the long but WAY HAVE TO READ, version ;

</comment><comment><USER4> It's not so much the fear of common knowledge, it's the fear of the truth and what that exposes about oneself.

</comment><comment><USER5> this is why politics can be so frustrating. we know they're lying, they know we know they're lying. people sometimes don't realize the second part.</comment>


Reverse Engineering the PLA Chip in the Commodore 128 - <AUTHOR> https://c128.se/posts/silicon-adventures/ <comment><USER2> _After quite some time reading up on silicon chip design and manufacturing and a lot of attempts I managed to come up with a schematic for this that makes sense._

For those who are interested in REading IC layouts from pictures, Ken Shirriff (kens, righto.com) has a lot of great articles on his site about the process as applied to other vintage ICs:

[http://www.righto.com/search/label/reverse- engineering](http://www.righto.com/search/label/reverse-engineering)

I don't read ICs much in my line of work, but the basics are very easy to understand and much of the effort involved is "mental floodfilling", whose speed varies between individuals --- even after lots of practice it takes me a bit of time to find all the edges, but I know someone who can read a die photo faster than she can draw a schematic of the area.

</comment><comment><USER3> Nice work. These things, and also PAL and/or GAL chips are in a lot of older computers, and have to be cannibalized from another computer to replace. For the PAL/GAL chips, an automated "fuzzer" type rig to reverse engineer them would be nice to have.

</comment><comment><USER4> The C64 retro market is well catered for, and there are already C64 PLA replacement options available. However, the C128 market is no where near as popular, so it's really nice to see it be given some love by this project. As someone who recently had to purchase a couple of PLAs for a C128 that I'm trying to fix, I can only applaud this effort!

</comment><comment><USER5> What was the PLA used for? From the scant information (and obviously the name) it seems to have been a general purpose logic array. Was it programmable at run time or factory-programmed for a single purpose like the ULA in the Sinclair ZX81?

<comment><USER6> Author here. The PLA in both the C64 and the C128 are primarily used to generate chip select signals for the chips that are connected on the system buses.

On the C128 it is also involved in the DRAM refresh handling.

The C64 PLA was originally a programmable device, the Signetics 82S100. Later version were MOS/CSG copies of the same device but programmed with changes to the manufacturing masks instead, similar to the difference between an EPROM and a Mask ROM.

For a lot more detail and background, I can recommend reading Thomas Giesels excellent paper on the C64 PLA, found at [http://skoe.de/docs/c64-dissected/pla/c64_pla_dissected_a4ds...](http://skoe.de/docs/c64-dissected/pla/c64_pla_dissected_a4ds.pdf)

<comment><USER5> Why did they design a PLA and then use it like this rather than going a bit further and designing an ASIC? I guess because MOS sold the same PLA to other people?

<comment><AUTHOR> It _is_ an ASIC.

> A gate array is an approach to the design and manufacture of application- > specific integrated circuits (ASICs) using a prefabricated chip with > components that are later interconnected into logic devices (e.g. NAND > gates, flip-flops, etc.) according to a custom order by adding metal > interconnect layers in the factory.

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

PLA's job is simple: it basically contains a lot of combinational logic, transforming some inputs to some outputs. It generates a CS output based on a memory address and bus signals, it's just an address decoder, you can build the decoder using a large number of logic gates, but it gets messy and expensive. You can build a full-custom ASIC for it, but it's expensive and unnecessary. The point of PLA is allowing one to create a custom logic circuit to replace combinational logic by burning the logic on a general template, it was the right tool for the job.

Even today, modern equivalents of PLAs are still used. Some companies provide FPGA-to-ASIC conversion service using mask-programmable array, it allows you to burn your FPGA design to the silicon for a moderate performance boost, without the complication of ASIC redesign.

</comment></comment></comment></comment><comment><USER7> I went from "Why!!!!!?????!!!!!" when I read the headline to holy crap this is awesome when I read the article!

</comment><comment><USER8> Oh man that setup is cool the steppers moving the slide/tied to ESP

Does that HDL part mean it can be fed into an FPGA?

<comment><USER6> Yes, I'm currently working on implementing this using a Lattice iCE40 FPGA. Not the largest or most powerful of devices but I don't need much for this and it does have a fully open source pipeline available.

The other part of reverse engineering something like this is to figure out the other parameters of the chip, e.g. propagation delay, slew rate, output voltage profile etc. etc.

<comment><USER8> Well, it's amazing, the time focus, tracing the paths haha, the automation things sounds interesting regarding the screenshots/stepper controls, assuming that just means it moves/pans around to get all the pictures for a big stitch? Anyway it's really cool.

</comment></comment></comment><comment><USER9> Was confused at first what a People's Liberation Army chip was doing in the C128. ([https://en.wikipedia.org/wiki/People%27s_Liberation_Army](https://en.wikipedia.org/wiki/People%27s_Liberation_Army))

I always admire folks who can dive deep on something obscure like this.

<comment><USER10> Same here. In this context of course it's _Programmable Logic Array_.

</comment></comment><comment><USER11> Are there no flip-flops in this design? It looks small enough that you might be able to brute-force every possible input.

<comment><USER12> The Verilog suggests it has latches.

Some of the Signetics parts in this databook have latches:

[http://www.bitsavers.org/components/signetics/_dataBooks/198...](http://www.bitsavers.org/components/signetics/_dataBooks/1981_Integrated_Fuse_Logic.pdf.pdf)

</comment></comment><comment><USER13> Did they reverse engineer SID yet?</comment>


Ten times Chernobyl television series lets artistic licence get in way of facts - <AUTHOR> https://theconversation.com/ten-times-the-chernobyl-television-series-lets-artistic-licence-get-in-the-way-of-facts-119110 <comment><USER2> It is useful to understand those points where the show diverged from reality. It was a show and we can't expect 100% accuracy, but it's good to know what was and wasn't dramatic license. To be fair to the show though, they did actually highlight some of these divergences in the show itself at the end of the last episode. It's really unfair to criticise a show for deviances from reality, if the show points out those deviances itself.

On the helicopter crash, if you look again at the scene they do show the helicopter hitting a crane cable. It is implied the pilot lost control due to radiation exposure but that is never stated. I have no problem with them moving the incident from later on to when they did, that's just artistic license.

On the volunteers that went in to drain the tanks, we know now they received survivable radiation doses, but there would have been no way to be sure of that before hand. I have no problem at all with how this was dramatised.

With the mining to cool the core being unnecessary in the end, they say in the show there was something like a 50% chance this was unnecessary. I think this is one of the things they point out at the end of the last episode, but that's just going on memory. No problem with this.

On treating the exposed firemen and plant workers as hazardous, this actually happened. It may not have been medically justifiable, but people were kept away from them on the basis there may be risks of exposure. Also the loss of the baby is never explicitly blamed on radiation, they just say some people believed it. That's probably true.

Most importantly IMHO they make it perfectly, explicitly clear in the show that the risk of a follow up explosion was a thermal steam explosion, not a nuclear explosion. The fear was that the molten core would burn down into water tanks, leading to a massive steam explosion, blasting radioactive material over a very wide area. This was a genuine concern at the time, and if it had happened could very well have had the consequences they describe in the show. Conversations much like the ones portrayed about this did happen. This criticism is completely unfair.

</comment><comment><USER3> Complaining about the inaccuracies of a work of fiction… We live in a weird world.</comment>


Hacking Isn't Searching; It's Quartering - <AUTHOR> https://medium.com/@AndrewUnmuted/hacking-isnt-searching-it-s-quartering-eb783a29662 <comment><USER2> Let's suppose this is true. (That is, suppose the software counts as a 'Soldier' and that homes include computers.)

The trivial work-around for the government is to move the NSA away from DoD and into a civilian branch. Eg, the CIA is a civilian organization not under DoD, and members of the CIA are not soldiers.

Unlike the 4th amendment, this very expansive reading of the third would provide not protections against other government hacking, like from the police or FBI.

The author writes: "This is moot anyway, because we aren't in a time of war, nor have we been since Vietnam."

The US hasn't declared war since 1942. If the Gulf of Tonkin Resolution counts as "a time of war" for Vietnam then the Iraq Resolution ('Authorization for Use of Military Force Against Iraq Resolution of 2002') must count as a 'time of war' for the last 16 years.

The author writes: "Where do you read the majority of your news — online, or in the newspaper? Where do you have more photos stored — on your smartphone, or in physical photo albums?"

Most people read the majority of their news online ... from external sources whose business records can legally be accessed with weaker requirements than given by the 4th, and no protections under this interpretation of the 3rd.

The same for photos, as most people have most of their photos stored online on someone else's server.</comment>


Ask HN: What is the best mobile news app for CS/SE related trends/tools? - <AUTHOR> I use hacker news and reddit but is there any mobile application for software engineers so they keep an eye on new trends, tools, libraries? I use hackernoon sometimes but almost all of their articles are related to blockchain, crypto which I don't like. <comment><USER2> It's not for mobile but a while ago I made a little prototype for a news- stream that scrolls all by itself and it has a tech section. Do you like the concept? Its [http://www.uptopnews.com/](http://www.uptopnews.com/)</comment>


Interesting P2P Big Media conspiracy video - <AUTHOR> http://youtu.be/y7DkrsCCQ_A

<comment><AUTHOR> Consume with a grain of salt.</comment>


Ask HN: Why does LinkedIn suck – what is it missing? - <AUTHOR>

I realize I'm presupposing that it sucks. But, I rarely check it. I can't be alone. <comment><USER2> We're currently building a tool, which uses Linkedin API, and I performed a fair amount of customer interviews about their use of professional network and, well, Linkedin. A popular opinion of what I've heard is "Linkedin is dead", cause it's very old-school and not flexible to adapt to changes. People use it for just adding contacts, sometimes randomly, and then they rarely do anything with them. Recently they announced the restrictions to their API program, meaning that new cool tools, which try to make more sense of Linkedin data, will not be able to use Linkedin data anymore. I guess, that will make it even more unpopular for users.

</comment><comment><USER3> It's really for the benefit of the Employer -- not the employee, so it "sucks" for your side of the equation. If you had to find 25 C++ programmers for a government project that starts in June...it would be an amazing tool. (I'm not a recruiter)

It's pretty pointless for a job seeker, though I have received a handful of "leads" from recruiters -- so it might have some value.

</comment><comment><USER4> What I found missing in LinkedIn is a way to show the chain of people that connect you with another person. Xing has this and it's really fun to play with it.

I left LinkedIn when they had their data breach in 2011 so I don't know if they have added this feature in the last couple of years. And apropos data breach - trust, maybe trust, that's for me the main thing that's missing.</comment>


The One Piece of Advice to Help Engineers Negotiate a Better Employment Package - <AUTHOR> My company helps senior engineers negotiate job offers they have received.  We've been doing this for a number of years, and if there's one piece of advice I can give you when negotiating a job offer you've received...and again, this is really geared towards senior level talent (though it can be as applicable down the food chain too)...it's this - be reasonable in what you ask for and approach the process being completely prepared to walk away if things don't move sufficiently in the desired direction.  Nothing allows you to negotiate from a place of confidence more than a willingness to walk away if you're not happy with an offer or the negotiation process.
While there is a ton of nuance involved in a good, comprehensive, negotiation, everything flows from this one premise.
Why? Because it's a seller's market. There are WAY too many tech needs and far too few truly talented engineers to fill those rolls.  This means that there is another opportunity around the corner if this one doesn't work out.
Be dispassionate, be reasonable, be comprehensive but most of all, be willing to walk away.
Good luck out there! http://www.10xagentondemand.com/ <comment><USER2> Do you mean we should also have one or two more offers at hand to build up that confidence?

<comment><AUTHOR> Having multiple offers is helpful in negotiating from a place of confidence. But what I really mean is that one should not make a negotiation a life or death experience. You're in an in demand field, know that, understand that and even if you have no competitive offers, be willing to walk away from the offer you do have if you're not able to massage it into the kind of shape that would make you feel comfortable working for that company. Be dispassionate in the negotiation. Treat it as if you're negotiating for a friend who could either take or leave the job. The more you get invested in working for this company, the less strength and resolve you'll have in negotiating.

Good luck!

<comment><USER2> Thanks mate!

</comment></comment></comment><comment><USER3> I totally agree with this point. However, to do so, one must be armed with choices.

<comment><AUTHOR> My point is that if you're at the top of your game in tech, you always have choices. Yes, if you're starting out you'll have less leverage to negotiate no matter what. But even in those circumstances, if you're resolved to walk if things don't move at least a little in your favor, it gives you great strength no matter what. Having options, and competitive offers is always preferable but not a requirement to employ this strategy. As I mention in another answer, treat the negotiation as if you're doing it on behalf of a friend who has given you carte blanch to kill the deal if it doesn't improve. Be dispassionate - the more you get wrapped up and invested in making the deal work, the less leverage and strength you'll present in the negotiation.

As I said in the initial post, you should always be considerate and reasonable, but be firm in what's most important to you.

Good luck!</comment></comment>


Can You Find the Bug in This Code? - <AUTHOR> https://victorzhou.com/blog/a-javascript-bug-i-had-once <comment><USER2> It's too bad there isn't a less ambiguous way to write programming language expressions with, say, prefix notation, using a single set of characters (open and close parens maybe?) to describe the tree, etc..., and getting rid of semicolons and curly braces altogether.

<comment><USER3> And perhaps we could repurpose those semicolons for comment syntax ;-)

</comment></comment><comment><USER4> The real bug is the failure to use semi-colons. I literally cannot comprehend the non-use of semi-colons in JS.

<comment><USER5> If so, the failure lies with the spec. (personally, I like ASI)

<comment><USER6> I feel the same way about ASI as I do about forgiving HTML parsers. They're built to handle mistakes made by your average weekend warrior Grandpa building a website about his grandkids and pets. ASI is built to handle an "oops", not an entire codebase. That's why there are these odd edge cases. The same is true with the English language. If one were to send me a text with "do ya think" I'd probably figure out that it was a question... but why avoid the actual punctuation that assures that I communicate the intention 100%?

The explanations that have been given to me typically fall in line with, "well, to new comers, it won't make sense why you don't add a semicolon after a function declaration or if statement. I consider that a teaching moment.

But, I'll admit, this debate has little merit. Folks whom are dead set against using them are rarely convinced until they get bitten hard by a 2 hour hunt for an obscure bug. And folks that use them will probably end up with RSI or Emacs Pinky™

<comment><USER7> > Folks whom are dead set against using them are rarely convinced until they > get bitten hard by a 2 hour hunt for an obscure bug.

Honestly -- then they'll never be convinced. I haven't hit an ASI bug in the last decade.

</comment></comment></comment></comment><comment><USER8> Over the years I've submitted pull requests to 3 different projects that consist of a single semicolon in a semicolon-free codebase. They can be sneaky bugs to catch!

I think abusing ASI is a funny hack (and I did it for a while) but the more functional my programming style became the more ran into these cases, so I channeled my inner Douglas Crockford and reopened my bag of semicolons.

<comment><USER5>
        ;['but', 'why']
          .reduce((msg, word) =>
            msg + word,
            ''
          ).join(' ') +'?'

</comment></comment><comment><USER9> An even more common use-case that fails without semicolons by T.J. Crowder (2015): [http://blog.niftysnippets.org/2015/09/automatic-semicolon- in...](http://blog.niftysnippets.org/2015/09/automatic-semicolon- insertion.html)

There are a number of cases where not having semicolons has its downsides, I'm yet to see a single case of an upside.

<comment><USER10> > I'm yet to see a single case of an upside.

It's a signal of coolness from inexperienced programmers. That's the value proposition offered by semicolon-free JS.

<comment><USER7> I disagree, I think people who really care about semicolons in JS are people who just don't write a lot of JS. I can honestly say in the last 5 years of only writing front-end I have never been bit by ASI.

<comment><USER11> _The most popular_ JS style guide from AirBnB uses semi-colons. Google and Facebook uses semi-colons. I'm pretty sure they collectively write way more JS than you do.The most popular code formatter also defaults to having semi- colons because they know it's the de factor standard in JS. I myself have been writing JS since the late 90s (around the time when XHR was introduced) and it's been my most used language for easily the past 15 years.

So, sorry but you couldn't possibly be more wrong. The great majority of the other commenters here disagree with you as well. You got lucky if you have in fact never had an ASI bug as you claim, but in this thread there is at least one link to a famous bug that has been caused by it and mention of others. The fact that you anecdotally gambled and "won" doesn't hold a lot of weight.

There is one much less popular style guide which actually made headlines for recommending against semi-colons and they got roundly criticized for it by many, many famous JS programmers including the likes of Dan Abramov from Facebook. The author of this style guide tried to weasel more popularity out of it by calling his guide "Standard" since he knows for a fact that the vast majority of JS coders use a de facto style that includes semi-colons. That's exactly the type of behavior that I expect from young, inexperienced coders who make poor decisions based on vanity. I see it all day long from junior programmers. Luckily for everyone in my company, it's my job to set them straight.

<comment><USER7> > Luckily for everyone in my company, it's my job to set them straight.

I'm sure they love being told they're wrong because they're young and vain.

I'm aware styleguides recommend semis but I'm more referring to people who have strong opinions about what is a minor semantic. For my part it's simple: the effort involved using semicolons correctly (and in my experience many devs who like semis use them inconsistently) is significantly greater than the effort to fix/prevent ASI bugs. The only possible caveat to this is if you're using a code-formatter like Prettier to handle semis for you -- but then Prettier will catch and fix ASI bugs for you even if you don't.

<comment><USER11> > I'm sure they love being told they're wrong because they're young and vain.

I wouldn't say that, but it is a decision based on vanity and it does tend to come from younger/junior coders in my experience. Making one bad decision based on vanity doesn't make you vain though IMO. It's not personal vanity either, it's "code vanity" so maybe a better word would be: hasty or risky...

Anyway, the effort that it takes to setup and use Prettier (which we use) or before that, "eslint --fix", is the least amount of effort of all the options.

You're expending more effort to memorize edge-case rules than my teams are if you're not using Prettier and if you are using Prettier but without semis, then you risk running into a bug like the one that broke Twitter Bootstrap due to lack of semis.

It's just a bad decision.

> I think people who really care about semicolons in JS are people who just > don't write a lot of JS...

> I'm aware styleguides recommend semis but I'm more referring to people who > have strong opinions about what is a minor semantic.

It's not just some guides, it's the majority of the most popular style guides and the biggest JS-using companies that write and use those guides, which recommend semis.

It's also not a minor semantic. The language _requires_ them and if you make the error of omitting them, the runtime will try and correct your error. Depending on this runtime behavior is the kind of hasty and shallow decision that costs real money. That's why the most popular style guides recommend them and that's why the de fact standard is to use them. Googles style guide requires them company wide. The people who wrote these guides really cared about semicolons, that's why they put it in the rules.

<comment><USER7> > I wouldn't say that, but it is a decision based on vanity and it does tend > to come from younger/junior coders in my experience

You're not wrong, but using it as an argument has a counter: people like semis because they're the old-guard curmudgeons afraid of change :)

> then you risk running into a bug like the one that broke Twitter Bootstrap > due to lack of semis.

The bug was due to a JS minifier removing a needed semi, which they did to save space. I still don't know of an example of somebody actually shipping code that broke due to a missing semi in source.

> It's also not a minor semantic. The language requires them and if you make > the error of omitting them

That's not true at all. ASI is intentionally a part of the language spec, hence why there's not a single runtime that allows you to turn it off.

> The people who wrote these guides really cared about semicolons, that's why > they put it in the rules.

The people who wrote those guides were writing them for hundreds of developers with varying levels of experience and a wide variance in tech stacks. I probably would have put it in the spec too, but that doesn't mean I don't set `semi: false` in every React project I start.

<comment><USER11> > You're not wrong, but using it as an argument has a counter...

I'm not using it as an argument. I'm using it as a descriptor for people who make arguments against semis.

> ASI is intentionally a part of the language spec...

Yes, but it's clearly there as a corrective measure for people who mistakenly omit them. So, the spirit of the language spec and all signs point to: use them.

> I probably would have put it in the spec too, but that doesn't mean I don't > set `semi: false` in every React project I start.

To write a spec rule and then immediately ignore it makes no sense to me.

But anyway...why do you not want semis? If you have a tool that automatically inserts them, like prettier or eslint, then the only reason you're making that decision is because you don't like the way they look. That's pretty shallow reasoning IMO.

<comment><USER7> > I'm using it as a descriptor for people who make arguments against semis.

Doesn't change the point: "back in my day, we used semicolons everywhere..."

> Yes, but it's clearly there as a corrective measure for people who > mistakenly omit them. So, the spirit of the language spec and all signs > point to: use them.

I think you're projecting quite a bit here. If you're interested, here's a ticket from TC39 proposing directly discussing possible issues with ASI: [https://github.com/tc39/ecma262/pull/1062/files](https://github.com/tc39/ecma262/pull/1062/files)

Point being they're not advocating for using semicolons, but making it clear what the possible edge cases are.

> But anyway...why do you not want semis?

Because I don't want the noise. Yeah, theoretically they might save you some time debugging once in a few million LoC but including them everywhere adds a whole lot of pointless characters.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Semicolons are usually optional in JS. The 'usually' part if why it's a good idea to enforce usage of them to avoid situations like this. You don't even need to do IEEs for this - running a function on an inline-declared array has a high probability of creeping the array up as an index on the previous expression.

<comment><USER5> > Has a high probability of...

No. It either does or it doesn't. The spec is not ambigous.

Learn how ASI works, or you will run into trouble no matter if you prefer semis or not.

<comment><USER12> You misinterpreted my statement - it will or will not make a difference depending on the line before. The spec is not ambiguous but for someone who does not know this there is probability at play.

</comment></comment></comment><comment><USER13> Happy to say I caught this, although I would credit that as much to having taken a compilers course as any JS knowledge.

I'm not sure I understand why it's wrapped in an enclosing function, though; you can reproduce the error with just:

        (() => console.log("Hello"))()

        (() => console.log("World"))()

</comment><comment><USER14> What kind of heathen omits semicolons in JavaScript

Thats like neglecting punctuation in English You can but the punctuation makes it much easier to read

<comment><USER15> Lot's of people! [https://standardjs.com](https://standardjs.com)

A better analogy might be the Oxford comma.

</comment></comment><comment><USER16> Reminds me of [https://github.com/twbs/bootstrap/issues/3057](https://github.com/twbs/bootstrap/issues/3057)

</comment><comment><USER17> I think what's more confusing than ASI are the mental gymnastics developers go through to justify typing semicolons daily, rather than installing a linter once, or reading the ASI spec.

Python and Ruby support semicolons for occasional statement termination; why is JavaScript any different? I can't help but think "semicolons by default" would be regarded as ritualistic if the practice was never popularized in the first place.

<comment><USER18> Does pressing a key on the home row really require a lot of justification? A project doesn't care how effective my tooling is if the next person doesn't have it.

</comment></comment><comment><USER5> Always prepend ( and [ with ;

I also prefer void function () {} for this. Void the result of this function expression which I immediately invoke.

<comment><USER19> I'm not sure _always_ prepending those with ";", but definitely when needed, sure. But most of the time you can simply refactor the code a little bit and improve readability with the addition of a single variable.

<comment><USER5> Always for ( and [ when they start a statement.

It really is that simple.

<comment><USER20> I honestly can't remember a recent time I had to start a line with a ( or a [.

I don't really write IIFEs since let and const. I'm sure the outputs from babel/typescript/etc use them, but I don't really need to write them myself, now that we have proper block scoping.

And if I want to declare an array and immediately iterate over it, I just put it in a variable first. That gives it a name, too, which tends to improve readability anyways.

I work with Javascript / Typescript projects on both sides of the argument, and I have to say not using semicolons never seems to cause any problems. Especially not with auto formatting / linters around.

</comment></comment></comment></comment><comment><USER21> I ran into this in the pre-webpack era where it was somewhat common to just concatenate JS together in a gulp build step. We imported code from two NPM modules, and each one was wrapped in an IFEE, but the first one didn't terminate with a semicolon. Not fun to debug.

</comment><comment><USER19> I refuse to use semi-colons in TS/JS, unless that conflicts with existing code standards. I feel like it's as if I'm using semi-colons in Go. This can easily be avoided by writing clearer code.

<comment><USER19> Relevant: [https://standardjs.com/rules.html#semicolons](https://standardjs.com/rules.html#semicolons) (hint: no semi-colons!)

<comment><USER22> Which also recommends

        ;(function () {
          window.alert('ok')
        }())

Which, just, eww.

Just use semicolons. Everywhere, always. Then you can treat JS's parsing rules as the same as every other language, and not normally like every other language except when a line begins with one of a select set of magical charaters that need to be prepended with `;` for unclear reasons.

Just end lines with `;`.

<comment><USER23> >Just end lines with `;`.

But that's not always the solution, you still need to know when ASI kicks in and when it doesn't.

"just end lines with ;" isn't true in multi-line arrays, in multi-line objects, and a ton of other situations where a semi at the end of the line is a syntax error. And while i'm sure you know that and didn't actually mean "every" line, it just goes to show that you already have the knowledge of when to add them and when not to. But that knowledge is learned, and it isn't a simple rule by any means.

For example, the following code is probably not going to do what many beginners think it will do:

        return
          [
            1,
            2,
            3,
          ];

Because the JS engine will insert a semicolon right after the return, and you will basically get `return undefined;` as the result.

Semicolons at the end of lines or not, you still need to understand when they are inserted and when they aren't. The real solution is to use a linter which will check these cases for you. I don't care if you use them or don't, just make sure something else enforces it.

<comment><USER22> You're absolutely correct. Jey provided the better phrasing of my comment: Use `;` to end a statement. The point I'm making is more bias toward using `;`, even when not strictly "necessary". This brings JS's statement parsing in line with most other languages. And yes, absolutely use a linter.

<comment><USER23> Or you can do what a past coworker did. We settled on standard.js for our linting in a project, and they don't use semicolons. The coworker hated this, so he setup his editor to auto-format into his preferred style on load, then on save use the auto-format option in standard.js to save it as the format that we agreed on in the repo.

He only ever worked with his favorite layout, and we worked with ours!

I'm not a big fan of holy wars in programming, i'm fine with either even if I do prefer one style over the other, but at the end of the day I just hope that everyone involved understands that it's just a preference thing for the most part. Linters will catch the edge cases for both styles, and if you really can't adapt to using or not using semicolons in javascript, there are probably other issues at play.

<comment><USER19> This made me laugh out loud. I identify with the sentiment (I can get pretty pedantic about how code looks), but I wouldn't take it to _that_ extreme.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> My problem with semi-colons is that when you force semicolons in a tslint config, applying an autoformat on a malformed input (forgetting a closing curly brace, for instance) will introduce a bunch of erroneous semicolons throughout the file, giving you a ton of syntax errors to clean up. If you're lucky you'll be able to undo before you continue, but I sometimes don't notice until I've done a bunch of other work

</comment><comment><USER25> When you assume the compiler reads it the same way your brain does :)

</comment><comment><USER26> "Must be a semicolon issue," was my first thought, without actually knowing why.

</comment><comment><USER27> Don't use "gonad" javascript, or just use semicolons.

With dangling balls: `(function(){})()`

No dangling balls: `(function(){}())`

[https://gist.github.com/newswim/4668aef8a1f1bc0dabe8](https://gist.github.com/newswim/4668aef8a1f1bc0dabe8)

</comment><comment><USER28> Another instance where TypeScript has your back.

</comment><comment><USER29> The bug is in the coder.

</comment><comment><USER30> I feel good that my first thought of fixing it would have created the solution.

There were obvious errors in my mind that I would fix without knowing the whole dissertation on why it happened.

So maybe if the question was, "Can you repair this code", I would excel.

<comment><USER31> Ditto. I didn't know it was a missing semicolon, but the code smells bad regardless and my solution also would have solved it another way (just by improving code readability/clarity).

It is likely one of these "trust your gut" situations.</comment></comment>


Security researcher fined for hacking hotel WiFi putting passwords on internet - <AUTHOR> https://www.zdnet.com/article/security-researcher-fined-for-hacking-hotel-wifi-and-putting-passwords-on-the-internet/ <comment><USER2> Hackers are indeed a vital part of online security. There's no such thing as a 100% security online and exposing possible risks can have a positive outcome. But I don't think that blogging about it with sensitive information is the best way. Even if he wanted acknowledgement, informing the hotel and writing a "clean" article about wifi security would have benefitted him more in my opinion. Thank you for sharing. Any links to his blog article by the way?</comment>