Self-serve first: an overlooked paradigm underlying great software companies - <AUTHOR> https://medium.com/@gokulrajaram/self-serve-first-the-overlooked-but-essential-paradigm-underlying-great-software-companies-45a67dbec4c4 <comment><USER2> Meh. The company I'm at is in the exact same situation as the 'self serve' company described, taking the low end of the market while a larger company fails to do so. The way we approach enterprise is uncannily similar to the way they described the other company doing so: use our API which does the hard domain specific stuff. Except we're the opposite of self serve.

Virtually every customer pays us for technical support, and our developer (I'm effectively the only one), talks to customers practically every day about what they need in the product and to our services staff about their challenges. The insight this provides is invaluable.

Companies in the market with dozens/hundreds of developers are worse at deploying new features than we are with a single developer (yes, I write tests and use industry best practices for my stack, extra work up front, but development is waaaay faster years later). Think ViaWeb's Lisp advantage, except our real secret weapon is just that 1 developer who talks to all their customers and their services department is as good as 20 who don't (I'm using C#/Vue for web [with an erlang like actor framework I built] and C++/Lisp for embedded).

There are certainly challenges scaling, and dear lord am I underpaid (I'm more interested in autonomy than the 3x-10x money I'd get from moving to a competitor), but self serve is orthogonal to our customer appeal. (Others in the market might actually think we're self serve though, just because our software is user friendly and self serve is actually possible).

<comment><USER3> Wow, while reading this I was thinking to myself: "this person better be a co- founder!".

You obviously don't need any advice since you know what you want and you know what you're doing. But I couldn't help thinking - 10x-ing your pay gets you 9 years of complete autonomy for every year spent working.

Also, are there any quick insights you can share about using actor model with .Net? Did it shine, did it make some things harder then you thought they would be? Thanks!

<comment><USER2> I'll answer the last bit first (I have no other developers to talk to at work, so excuse me for the wall of text):

It's not exactly a traditional actor framework, so you might be a bit underwhelmed. It's single process (working on extending that, as we use P/Invoke, and a mistake there can completely crash the process; that said, hiding the details of distributed calls seems like a bad decision, so I'm still thinking about how to best approach this). Message passing is done through individual typed queues. Actors don't run when a message is received, but instead decide how often they should be run, and then poll for available messages from their queues (or just perform some timed action). Actors don't fail-fast so much as ensure proper logging and try again later (though parents may manually monitor and dispose their children).

The biggest flaw I see is that message passing involves locking, and while I've tried to abstract this away with 'MessageQueue' and 'Atom' primitives, a user could easily circumvent this or pass mutable data. While I could easily catch and correct this if we bring a new developer on board, if someone were to start using the framework with no guidance, I worry they would not 'fall into the pit of success'. Designing a language around the actor model allows you to solve these issues: [https://www.ponylang.io/discover/#what-is- pony](https://www.ponylang.io/discover/#what-is-pony)

I've actually made the framework available as an open source library: [https://github.com/caseymarquis/KC.Actin](https://github.com/caseymarquis/KC.Actin)

I wouldn't say I'm proud of the framework's code. It could be better organized and more understandable (unfortunately, you can't use dependency injection when making the framework which does your dependency injection). What I am proud of is how simple and organized our main codebase is because of our use of the framework.

A new developer can simply create a file containing a class, mark it with an attribute, specify its dependencies as private fields (also marked with attributes), and then create new functionality independent of what everyone else is doing. Effectively, fences are drawn between independent portions of the codebase in the style of 'micro-services', except there's no need for separating into separate services until a bottleneck is introduced (so there are no pointless debugging nightmares).

I still have a lot of plans for building tooling around the framework: profiling, visualizations, monitoring, reporting to a centralized parent, inspection of running systems using reflection (remote inspection?), etc. I probably wouldn't recommend using it unless you're a brave soul. Maybe check in after a year or two and there will be something a bit more fleshed out.

Having said all that, the actor model is a natural fit in our problem space. Our software talks to dozens of types of mission critical systems and physical equipment, each of which has the potential to fail outside of our control. I think the actor model would have been a perfect match for our software regardless of language. That said, .NET's excellent reflection and the ability to dynamically compile lambdas made it possible for the actor paradigm to feel native. I think that there's a lot of untapped potential in .NET surrounding this (making frameworks for one's domain).

Regarding switching jobs:

You're not wrong. There are other factors I didn't mention though. 10xing my pay would put me at the pay level of a mid-range FAANG employee. The main issue is that I would either have to move to get this kind of pay, or do a large amount of traveling (depending on the role I took). I do not live in a software hub (I live in an aerospace manufacturing hub), and so there aren't a lot of options in the area. Additionally, I feel loyalty to our team, and my leaving would have a major negative impact on them (they'd need 3 people they couldn't afford to replace me). I'm happy to have a good job in the area that I (mostly) enjoy, and to be innovating in a B2B space which allows me to make a lot of people happy. Five years from now I may feel differently (or we'll have substantially increased my pay). I get a lot of job offers, and they'll probably still be there in 5 years.

At least one of the current owners wants to give me an ownership percentage, but I've told them to just keep increasing my pay as revenue increases instead. Most companies fail, typically from structural/organizational issues. I think ownership may be overrated. I could be wrong though. I think owning a piece of the company would feel more like the company owned me, and that I was stuck with it. Right now I feel like I'm choosing the company, and have the ability to easily leave if needed. Not 100% rational, but feeling good is important. I'd be much more likely to start a contracting business than found a company.

</comment></comment></comment><comment><USER4> An alternate POV: you can sell boutique software as a means of getting paid to do initial iterations on an idea while simultaneously building out an impressive set of logos to slap on your site when you release an off-the-shelf version down-market to capture what the smaller companies are paying LOB/plugin devs to do.

The shop I'm at is in the first half of that, TBD whether it works out. Which is about as much anecdata as the OP has in support of their claim.

If I had to guess, I'd say the amount of consulting you're providing to your customers to supplement the software, or the gap between the process of using your software vs. just automating existing workflows probably has a lot to do with which approach is preferable.

The other note is that if you have a decent amount of domain expertise/networking, you can do the above and not take on VC funding. You may not eat the world but you'll do a hell of a lot better than most lifestyle startups.

<comment><USER5> What's boutique software?

<comment><USER6> Bespoke software; software tailor-made for a particular client/customer, according to their specifications.

As opposed to off-the-shelf / generic software that is put out to market and is then purchased by whomever thinks it would meet their needs.

</comment></comment></comment><comment><USER7> I've observed the same thing in the EdTech space (e.g. ClassDojo, Google Classroom), and I think a big part of that is being self-serve forces the company to build _actually good_ software, not just software that sells well to the district, state, etc.

What's required to sell software to large buyers is very different from what's required to make the product useful, but in the long-run, it's the utility of the product that makes it valuable to end-users, and the success of the end- users _eventually_ determines how the buyers make decisions. Self-serve software tends to prioritize the things that will make it easy to sell and improve in the future.

<comment><USER8> Exactly. Serving people directly strongly encourages a focus on delivering real value, because the user and the purchaser are the same.

Serving people indirectly allows for all sorts of other approaches that work in the short term. If purchasing decisions are mainly driven by our sales guys and their executives, it slows and distorts a key feedback loop.

I once heard a story about SurveyMonkey that I love. They got their start very much on the self-serve end. But eventually the CFO of Oracle saw all these credit card charges from individual Oracle employees using it, went to SurveyMonkey, and said, "Create an enterprise tier for us." SurveyMonkey looked at what it would take in terms of engineering and said, "Sorry, we have other priorities right now."

The way I heard it, the Oracle CFO, not used to being told no, sent forth an edict: From now on staff were not to use SurveyMonkey, but some other product that Oracle _did_ have an enterprise deal with. Sounds like bad news for SurveyMonkey! Except that the other product wasn't very good, and SurveyMonkey wasn't that much anyhow, so people just went on using and expensing it.

</comment></comment><comment><USER9> This reminds me of the "Why did Borland fail" story:

[https://www.quora.com/Why-did-Borland-fail/answer/Danny- Thor...](https://www.quora.com/Why-did-Borland-fail/answer/Danny-Thorpe)

(discussed on Hacker News - [https://news.ycombinator.com/item?id=9712267](https://news.ycombinator.com/item?id=9712267))

<comment><USER10> Thanks for those links!

</comment></comment><comment><USER11> I think that for B2B software, the right approach is "service first!": you should consider service processes as equally important as the business processes your product supports. For each feature, you should ask yourself "How will we provide customer support for it?"

The answer does not need to be "self-service", but don't add customer service as afterthought to your product.

</comment><comment><USER12> We have been self-serve product for the first 12 years and a year ago we launched our Enterprise version. As the article mentions because of the existing high traffic it has been pretty easy to find leads. We have already signed 100 Enterprise customers. Our main challenge was not to find customers, in fact we struggled to catch up with leads. The main challenges were making the product Enterprise ready with necessary features such as covering most popular SSOs and building admin privileges on the Enterprise product, and trying to build a sales team from scratch.

We had to hire 3 sales people before we found someone right. It is like someone hiring developers without any development experience. You get it wrong because you don't know what makes someone good. Get help from someone who has experience. We finally found the right person from our network and suddenly sales started flying.

<comment><USER13> Can you explain a bit more? I cannot quite square the fact that you had issues with sales (people) and the fact that you had no problem finding customers... Why do you need sales people, if not to find customers? Or do you actually mean customer support / integration people?

<comment><USER8> The leads are the top of the funnel. Traditionally salespeople take leads and turn them into deals. So I presume they were seeing a big falloff between interest and conversion.

It also doesn't surprise me at all they struggled to find good salespeople. I hear that all the time. Seems like it's hard to tell the difference between a salesperson who can sell your product and one who's just selling themselves to you.

</comment></comment></comment><comment><USER14> generally enjoyed the article, then hit this:

> By the end of our coffee, he resolved to pull together a tiger team of four > engineers to rearchitect the company's technology stack and make it possible > to launch a self-serve version of the product by end of year.

wonder what the fate of this 7.5month x 4 engineer rewrite was

<comment><USER15> > wonder what the fate of this 7.5month x 4 engineer rewrite was

He got a promo after launch, the project was quietly taken out back and shot 6-9 months after launch. Happens every time. :-)

<comment><USER16> Heads I win, tails you lose.

</comment></comment></comment><comment><USER17> I think this has to be taken with a grain of salt. Building self-serve can have huge development costs which for enterprise B2B can be absolutely out of proportion before a product market fit.

Isn't "do things that do not scale" (and automate them away once you got enough momentum) a mantra exactly opposite to this?

<comment><USER18> Self-serve is a specific form of automation. The problem is that introducing automation after the fact is almost impossible in this case, because the sales org you'd automate away tends to become far too powerful to ever allow that to happen. Postponing the sales automation adds a very hard cultural problem you the technological one you already had.

By the way, I would not call "do things that do not scale" a mantra, rather the opposite: "don't scale too early, but be dead sure that you can when you need to".

<comment><USER19> If anything, I'd think self-serve should empower a good sales team. I would think it would let them spend less time scheduling and doing generic demo, PoC planning, and onboarding meetings, because customers could do all of that themselves (with the option to talk to a human at any point in the cycle, if they want to).

I've never been on the SaaS sales side, but from the big-enterprise buyer side, I've seen what seems like so many unnecessary wasted cycles spent on things that could be avoided if there was a way for us to immediately start playing around with their product ourselves (and potentially even using it in production) before talking to anyone. Then when we do talk to them and schedule meetings with them, it could be focused on specific questions and feature requests we have after spending time with the product. Instead, it was usually 3 - 7 meetings before we could even get to the stage where we evaluate the product hands-on. Those meetings could be drawn out over the course of 3 - 10 months.

I got the impression a lot of that was because they wanted to sweettalk and hand-hold us as much as possible to increase the chance we would agree to the most extensive and expensive contract they could think we'd accept. All the worst offenders would want to constantly take us out to lunch and schedule various sorts of useless meetings before asking us to agree to some absurdly overpriced contract. And then our managers would have to do various dances with them over the course of weeks or months to get them to drop the price/agreement to something we found more reasonable (they'd usually concede to most or all of our requests, sometimes dropping the price by like 80% in the process).

I do understand that purely from a financial side; they have a lot more revenue (and commissions) potential if they tailor the price to the most each company is willing to pay, and giving customers access to the things which cost the least to provide, both of which may vary wildly from company to company. And maybe at the end of the day, that is actually the most effective strategy for making money. To your point, maybe a powerful sales org is actually rational to avoid automation, so they can milk more per large customer and make more net revenue. But it felt like a lot of wasted time for us engineers who weren't sure when or if we were going to evaluate the product, or purchase it after evaluation, and usually generated bad will from our engineers and especially our managers. Not to mention the annoyance of interrupting work to sit in on so many mostly-useless meetings.

Over the course of many years and dealing with probably 20 or 30 vendors, I don't think there was a single sales team we interacted with who we didn't unanimously agree we utterly despised. The exception was a small boutique firm which happened to have the best product and service in a particular domain, in addition to being priced literally 50x lower than their main competition (one of the companies that frequently wanted to meet us for lunch and schedule all sorts of pre-pre-pre-calls; that company's product was also, maybe unsurprisingly, total shit compared to the small firm's). I believe we mostly just dealt with the founder in that case.

<comment><USER17> Even with a non-self service system spinning up a demo should not take that long. I'd say those companies indeed had further political or other issues leading to your experience. For the product team alone a proper pipeline for building and deployment is worth it.

Than again it of course also depends on how the product works, how deep the integration and customization needed are etc.

<comment><USER20> Dev side of the business myself, so just perception of the mechanics why self- service may be unattractive for the sales team:

From a sales perspective you would typically optimize for fewer false- negatives (people not buying even though the solution would be valuable for them) at the expense of more false-positives (you wasting time trying to convince people who have no value and therefore don't buy in the end). Self- demos lead to people self-selecting themselves out without sales being able to influence this (explain the lead maybe just misunderstood a feature in the self-demo etc).

Besides typical sales bonus structures reward converted leads which the sales person did convert, not avoided churn after self-signup which customer success gets credit for.

<comment><USER21> si siht emos dnik fo ekoj.

</comment></comment></comment></comment></comment></comment><comment><USER22> I'd recommend against falling into some mode of cargo cult thinking on this one. A key part of whether self serve is going to work is to look at how fragmented the requirements and use cases are across different customers. In many cases, there will be a good amount of domain customization, which invariably makes it difficult to go into self serve. Most of the examples provided are around utility/productivity apps which all tend to have very similar requirements across a large customer base..

</comment><comment><USER23> You say "self-serve", I hear "externalize your support costs".

Is being a "great software company" really mutually exclusive with being a "company with great customer support"?

<comment><USER24> It's not - see Zappos pre-acquisition.

The point the article is making is that if you want great customer support you need to design that into the company's business model, and so it gets reflected in all sorts of places - cost structure, org chart, target market, customer expectations, etc. And then if it turns out there is a segment of the market that _doesn 't care about customer support_ (which is fairly common with tech companies), you cannot effectively compete for that segment. Tech businesses frequently have network effects or strong economies of scale, so a company with no customer support but a decent product can often eat the self- serve end of the market, then use the profits and market leverage from that to build a decent customer support operation and attack the higher-end market segments. This is the model that's been employed very effectively by Dropbox, Github, Heroku, Google, etc.

<comment><USER23> I haven't heard much about Github or Heroku but as far as I'm aware, neither Dropbox nor (especially) Google have stellar reputations for customer service.

<comment><USER4> Github's rep is probably worse than Google's.

<comment><USER25> Not sure where this is coming from. Not my experience, but I am one data point.

</comment></comment></comment></comment></comment><comment><USER26> There are tons of examples of "truly great" software companies that are not self serve first. Neither approach is necessarily better than the other.

</comment><comment><USER27> Software products do not sell themselves. Only when you have a snow-ball rolling where users will tell other's. And I would say most software need a sales process, even if the software itself is very intuitive and solve a real problem, you basically have to install it on users machine. Then teach them to use it, and come back every week and repeat.

<comment><USER28> It depends which end of the market you are targeting. My customers generally don't have the budget for consultingware. Their budget means they can only get a self service solution.

</comment></comment><comment><USER29> I think that a better approach to software is to only build what is absolutely necessary, lazily, according to real user stories fulfilled by customer service. Try to automate away all the customer service, but only in response to learning from it in the first place.

So I'm building a Wizard of OZ interface for creating custom Wizard of OZ interfaces.

</comment><comment><USER30> There are so many B2B companies in the adtech space that are completely enterprise-oriented and they're printing money.

</comment><comment><USER31> A good sales force is the richest source of market and product information that you can ever find _if_ they are good, and if you can get them talking. But they know why/not what they sell sells. The caveat is that if the answer is "cheap" then that is the thing you will not hear...

</comment><comment><USER32> It resonates with [https://skyclerk.com/blog/if-you-run-a-small-business- park-i...](https://skyclerk.com/blog/if-you-run-a-small-business-park-in-the- back-of-the-parking-lot)

</comment><comment><USER33> Great article. But almost all of B2C software products are self-serving.</comment>


Email: the easiest way to improve retention - <AUTHOR> https://segment.io/academy/email-is-the-easiest-way-to-improve-retention

<comment><USER2> If you're going to do this (and a _lot_ of startups seem to do this now), then it's critical to actually respond to people when they react to your email.

I've had a number of startups (OrderAhead, Instacart) email me shortly after I've signed up with a 'personalized' message. I've had issues or questions so I've followed up with them straight away - only to get no reply.

That, in a nutshell, is a perfect way to destroy retention. If you're going to do stuff like this, it's critical to follow through. My opinion of a company is strongly tied to how well and how quickly they respond to customer feedback.

<comment><USER3> James from Bugsnag here. We make sure to reply to people asap, we've set up Help Scout (<https://www.helpscout.net>) to manage the replies to these emails, so even if I'm out of the office, my co-founder can jump on and reply.

Our target is to reply within 10 minutes, unless we are asleep :)

<comment><USER4> James, you're doing much better than me! I've been slipping on my reply times recently to up to 2 days which totally sucks.

One thing I started doing is taking an hour of zero-distraction time every morning to fire off responses to emails that come in to support.

Unfortunately we don't have anyone handling customer responses full time, but we're getting to where we should. Responses to emails are a blessing and a curse, but I wouldn't trade em for the world.

</comment></comment></comment><comment><USER5> One popular startup has been emailing me every couple days since I signed up a week or two ago, asking me if I'm having trouble getting started and suggesting some simple ways to start using their service today. That's great, but I have already started using it successfully.

Every time I get a new email I start to draft a "please don't bug me about this any more" reply, but I decide not to send it because I don't want to get on the radar of their sales staff. The only email I hate worse than spam is email from salespeople.

<comment><AUTHOR> mmm, yes this is the advantage of targeting users. if they're already set up, then the startup you mention should be sending them the next level of helpful email... or no email at all.

the cool thing is that the companies mentioned in the article all let you do this kind of targeting really easily.

<comment><USER6> Chris from Vero here - totally agree.

That's one of the big benefits of Vero and the other guys: a typical autoresponder (think Mailchimp) is hard to 'cancel' but it's easy to setup different flows with Vero depending on where a customer is in your product's lifecycle!

</comment></comment></comment><comment><USER7> I guess I don't fit the template because I definitely find automated email, _especially automated email that masquerades as a personal email,_ to be a big turn-off as far as first impressions go. When I register for something I don't mind an immediate confirmation email with an activation link, but just give me the help/support email address and if I need it I'll use it. THEN you get your chance to impress me with your responsiveness.

</comment><comment><USER8> Having now spent a lot of time sending and analyzing email campaigns/triggered emails (I'm one of the co-founders of Klaviyo), we keep seeing that email is one of the best ways to turn analysis into action - not least because it gives you a complete feedback loop.

For example, say an Ecommerce store realizes most people only make 1 purchase and don't come back. With email, you can target exactly those people, but you also can quickly see if it worked (because you know who you sent it to, you can see if they actually made a purchase).

Retention is definitely really important, but I think what's at root here is that email is an ideal way to interact with users in a more targeted and personal way outside of when they proactively visit your website. The same feedback loop idea should (and will) apply to push notifications, texts, in- app messaging, etc as time goes on.

</comment><comment><USER9> Sometimes I think startups make an effort to re-invent everything. If you want a successful email program then you have to go and _copy_ the mailings (as in made of paper) you get from charities. Those are the best to study and follow. Pay attention to the language, the composition of the offer, the colors each page has (due to the purpose of each page), the layout, and how most include a little gift to get you to open it.

Now, the other day I noticed a little detail in the emails I would get from Firefly (Dan Shipper's startup). The _from_ line said "Team". I emailed Dan and told him to change it to someone's name. He promptly did. But why? People relate to other people. Little details like these are what nudge people towards opening emails. Be very, very conscious about details. That's how you get engagement. The details.

Oh, and answer the damn emails. I hate replying with a question, only to be ignored because some idiot forgot to forward the mail to the general inbox.

</comment><comment><USER10> For a recent application I developed, I used a series of 3 automated emails post sign-up. The first was sent right after signing up, with a "personalized" welcome that came directly from my email address. The second came 5 days into the trial period with suggested activities to try within the application, again from my email address. The third was sent 15 days into the trial and included links to the help and support site, along with links to tutorial videos for advanced activities. The third email was sent from our support team email address. Each message included the option to stop receiving general inquiry emails.

<comment><USER4> Awesome! How did you pick those timings? And what were the responses like from the people who received the emails?

</comment></comment><comment><USER11> What do you guys all use for email management between a small 2 person team (founder co-founder)? I've seen that one person has already mentioned <https://www.helpscout.net/>

I've been using Assistly/Desk <http://www.desk.com> , but find that it's actually a bit overpowering, and adds a lot of support meta-junk to each email that just makes it looks like we're trying to be an enormous company, when in fact, we don't get that many emails, but at the same time, we want to handle each email efficiently and promptly.

<comment><USER12> I'd love to use something like Help Scout, but I absolutely never under no circumstances would use a hosted solution for that.

Do you know an equivalent that I can self-host?

<comment><USER13> Why don't you want to use a hosted solution?

<comment><USER7> Users asking for help will send you all kinds of potentially sensitive stuff, even if you don't ask for it. Screenshots, passwords, etc. You may not want that in the hands of a third party.

<comment><USER13> Valid points. If it was for records, or being able to move off of it in the future, Help Scout is fine for both of those.

</comment></comment></comment></comment></comment><comment><USER14> This is a really powerful tool, and we use it too with generally good results. Getting feedback is hard, and it's a good way to accomplish this, whilst making users feel good about the company and product.

That said, I do start wondering if this becomes the norm, people will see through this. I already 'feel it' when those emails arrive from the founder, or katie from <insert company here>. It's almost obvious now that these are just automated emails, and it makes it feel much less genuine. A bit like when you know how a magic trick works, it's no longer magic...

</comment><comment><USER6> Nice work on all the case studies Ian, Peter, Ilya and everyone at Segment.io (who have I forgotten ?!)

Keep it up!

<comment><USER13> Calvin! But he's deep in Sublime right now so he probably won't notice :)

</comment></comment><comment><USER15> email is just a tool of communication. The keyword is moderation.</comment>


Ask HN: What programming topics would you like to know more about? - <AUTHOR>

and can't due to lack of time, learning resources, etc <comment><USER2> Visual programing. Node base programing. Taking what VFX has been doing bringing it to Web development.

</comment><comment><USER3> JIT compilation (v8, python, etc), code vms.</comment>


Ask HN: Best Bank for Business Checking Accounts? (USA) - <AUTHOR>

I'm tired of Chase and will be switching as soon as I find the best alternative. Does anyone have any tips? <comment><USER3> Have you looked into Charles Schwab? I have a good friend who literally raves about them. He compares their level of banking customer service to that of Zappos retail customer service.

That is quite the compliment if you ask me. Might be worth checking out! Its huge to be able to get someone on the phone who is helpful and caring - <USER2> when you are a small business.

<comment><AUTHOR> Wow, thanks for that comment. I never even considered them. I'll look into that today.

And just to reiterate: Chase sucks.

</comment></comment><comment><USER4> A few friends with small businesses have had great experiences with New Resource Bank.</comment>


Ask HN: What's in a name?  Serious or fun? - <AUTHOR>

My startup is working on a name for a new product we're launching.  We've got two "working titles" so far.  We haven't registered the domains yet, so here are the descriptions:
A) This one is fun, in a sort of edgy way, and lends itself well for a metaphor for the product (which might help cut down on explanation complexity).  It's seven characters, two syllables, easy to remember, interesting, and describes what we do well.  It verbs well. However, we are concerned about its negative connotations: specifically, one of the words describes a felony (think along the lines of MacHeist).
B) I find this one slightly more boring, but it's fairly descriptive and is more focused on the community/userbase does with our product than on what the product actually is.  A ten character, three-word three-syllable sentence.  One of those del.icio.us -like names, but we can get the .com name too.  Doesn't verb, not quite as interesting/edgy, but certainly won't scare anyone off.  Feels good, in a sunshine-and-puppies sort of way.
I can't tell you much about our target market, primarily because we haven't launched yet and don't have any users :-)
So--would a name like MacHeist scare you off or intrigue you?  Or would you prefer a name that's more friendly/neighborly?
Also:  know any good (cheap) logo artists? <comment><USER2> I'd recommend to register both domains for a few bucks and ask again with naming the actual working titles.

I think I personally would prefer the serious name.

For your logo: we got ours from <http://www.designcontest.net/> \- you pay $150 (or as much more as you like to) plus I think about $20 fee and describe what you want. You get several logo concepts from several artists and can comment on them. When you finally really like one of the logos, you close the contest and the logo is yours. Have a look at the forums (<http://www.designcontest.net/forum/>).

</comment><comment><USER3> For logos, you can try running a contest on a site like worth1000.com (there are other similar sites, but that's the one we used). You get a lot of choices for only a couple hundred bucks, and you can always work with the artist to refine your top choice.

edit: didn't see the comment above before I posted.

</comment><comment><USER4> Why not run Google ads for both for 48 hours and then compare the click throughs? Let the market suggest to you which they prefer.

</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>

Ad 1:

MacHeist Can Help

Save time, money, frustration

Online help - Just $39.95

\</comment><comment></comment><comment>

Ad 2: SunshinePuppy Can Help

Save time, money, frustration

Online help - Just $39.95

</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>

All in all you'll likely spend $50 or less. One suggestion: have an email/beta signup form on the landing page to capture folks who are interested.

As for good (cheap) logo designs, there are lots of places to find good logo designers and lots of places to find cheap logo designers. Why cheapen a good product/domain name with a cheap logo? IMO logo design is a major part of branding - you shouldn't cheap out here.

</comment><comment><USER5> This is a little off the wall, but why don't you register them both, and then as your first users what they think? Have a vote. Get's them involved in the site, and makes them feel special, like all early adopters want.

A little off the wall, but it solves your problem with little effort.</comment>


Ex-NSA Hacker Finds a Way to Hack Mac Users via Microsoft Office - <AUTHOR> https://www.vice.com/en_us/article/jgxamy/hacker-finds-a-way-to-hack-mac-users-via-microsoft-office <comment><USER2> apple, microsoft, hacking, and the nsa all in the same headline. this editor deserves a raise.

</comment><comment><USER3> I don't know about everyone else but it's the _first_ part of that title that catches my interest. "Executed a hack via MS Office -- yeah, great but tell me more about the role of 'NSA Hacker'..." Notwithstanding the "What? No way..." revelations in Edward Snowden's book about the United States' SIGINT-via- internet abilities I suspect Snowden didn't even know the half of it.

<comment><USER4> > I suspect Snowden didn't even know the half of it.

Obviously, we'll never know exactly how much he knew relative to the entire scope of the intelligence community, but he pointed out multiple times that he had pretty broad access to a range of tools and KBs based on his work integrating various tools for the government.

He's said himself that he doesn't know everything, but given his ascent in the government contracting world due to his technical skill prior to his departure, I think it's fair to take him at his word when he said that there wasn't a whole lot he didn't have access to in terms of IT systems and databases.

</comment></comment><comment><USER5> So if I create an test.slk file on my desktop, then rightclick > open with, and select an app like Sublime (to be sure no other office apps like LibreOffice), to open all files like this in the future by default, will that solve this problem?

</comment><comment><USER6> Patrick Wardle is a well-known security researcher focused on macOS, and founder of Objective-See which provides free (as in beer)"simple, yet effective OS X security tools."</comment>


Ask HN: Front-end engineering positions with Visa sponsorship UK/Canada? - <AUTHOR> I'm a front-end engineer with about 4 years experience currently working for a big Co in Europe but looking to relocate to an English speaking country.<p>How easy/possible is it to find front-end engineering positions in Canada/UK with companies willing to sponsor Visa. I know Canada recently has a Tech visa program. <comment><USER2> There is missing info.

Do you have a CS degree? Is it from somewhere that Canada/UK would recognize?

Do you have any connections locally? It's quite hard to "get discovered" by some kind of tech recruiter and convince a company its worth the 3 month hassle.

If you have friends though - it can be fairly straightforward. They go and tell their hiring managers "We really need this guy". Many times - that's all you need for an offer.</comment>


What does it all mean? - <AUTHOR> http://kitchen.pizzapowered.com/2011/04/what-does-it-all-mean/

<comment><AUTHOR> Getting the bank account for PizzaPowered has been 3 months of back and forth with HSBC (the worlds local bank don't you know). Half the team is based in London and half in Leeds and everything has to be done by post (not fax or email).

With the whole #digitalstartup thing going on in the UK recently, it was quite an interesting story to post..

<comment><USER2> And just getting the paperwork together to prove our identities was a pain - as all my banking and utilities are handled online.</comment></comment>


Hilbert's paradox of the Grand Hotel - <AUTHOR> http://en.wikipedia.org/wiki/Hilbert%27s_paradox_of_the_Grand_Hotel <comment><USER2> A lot of mathematicians I've known feel a kind of awe for Hilbert that they don't feel even for history-makers like Euler or Gauss. I think little stories like this one are part of the reason why. Hilbert always makes it look easy, even when his results are weirdly counter-intuitive.

Technically, though, there aren't any paradoxes here. It's for the purpose of avoiding paradox that we're willing to talk about infinities in the first place.

<comment><USER3> _Technically, though, there aren't any paradoxes here._

The real reason why it _is_ a paradox doesn't have much to do with notion of infinity per se, but with problem of _infinite decision_ aka _Supertask_.

Which reminds me of an article on physics of supertasks that among other things somewhat outlines how classical theory is more paradoxical before than after quantization <http://th-www.if.uj.edu.pl/acta/vol36/pdf/v36p2887.pdf> (43pp but easy reading).

<comment><USER4> I really wanted to like this PDF, but the grammar is at times so bad it is often quite hard to parse.

</comment></comment></comment><comment><USER5> When you ask client N to move to N+1, what happens is this client becomes temporarily "homeless", or not occupying any room for the duration of this procedure: packing, moving out, asking the next client to do the same and _waiting_ until the next client packs, moves out, etc. So once you want to make room for your new client and start the procedure, one of the existing clients at any given time will be in the lobby, not occupying any room.

Accommodating infitine number of newly arrived guests thus means having infinite number of poor "homeless" guys in the lobby.

So? So... Grand Hotel can accomodate exactly infinite number of guests, but not more than that. If it's full, it's full.

Let alone the fact that infinity doesn't exist because we can't observe it.

<comment><USER2> _infinity doesn't exist because we can't observe it_

Presumably, you are accessing this website using a some kind of personal computer and some communications infrastructure. The engineers who designed these systems all made frequent use of the notion of infinity, particularly in their use of limits and calculus, when these systems were designed.

I am sure that those engineers would _love_ to hear about the equivalent (but necessarily much more complex), infinity-free versions of calculus and limit processes that you have obviously developed. Since infinity is the only simplifying assumption the average engineer is ever forced to make, I'm sure that as a group, they will be very eager to take your advice, even if it means they have to do twice as much work.

<comment><USER6> Infinity doesn't "exist" because the notion of "existence" doesn't apply to mathematical constructs. We don't find them in nature; we use them to describe things we find in nature. The number two doesn't "exist", though there are plenty of things it models well.

There are, of course, things that are described by infinity: the energy required to accelerate a mass to the speed of light, the number of points at which a magnetic field can travel through a surface, etc.

<comment><USER5> The notion of existence is applied to mathematical constructs so long as these constructs are abstractions/generalizations of things that exist in the physical world.

The number two is a generalization of quantity. We know there may be two apples or two birds on the wire, and at one point we are taught quantity can be applied to virtually antyhing.

Now, what's infinity? Another abstraction of quantity, which has many definitions. However, every definition you take involves infinite time, e.g. you add 1 to a number _ad infinitum_ or you accelerate a particle to the speed of light, and because reaching precise speed of light is not possible, you will be doing it infinitely.

So even " _we use them to describe things we find in nature_ " - even that is not true. You can't find infinity in nature, neither anything that can be described with infinities.

</comment></comment></comment></comment><comment><USER7> What is missing from this discussion of infinity is the notion that there are multiple infinities that are different from each other.

The integers (like the hotel rooms) are countably infinite. There are only a FINITE number of integers (or hotel rooms) between any two integers (rooms), like between rooms 1 and 100.

The set of real numbers is a larger set than the integers. Both are infinitely large, but the real numbers are a larger infinity. Between any two real numbers, (even 0 and 1), there is still an INFINITE number of real numbers in between.

The notion of a hierarchy of infinities initially seems paradoxical, but once you know how to distinguish countably infinite from uncountably infinite, you have the key concept.

<comment><USER8> The reals and the integers do have different cardinalities, but not for the reason you imply. In fact, the rational numbers have the same cardinality (the same infinity) as the integers, but they have the same property that you use to characterize the reals, i.e., that between any two distinct rationals there is an infinite number of rationals.

One way to see that there are as many integers as there are rational numbers is just to find a way to count the rational numbers. There are a number of ways to do this. There is a very nice and explicit way to do enumerate the positive rationals that involves the prime factorization of the integers. Suppose first that p is a prime number. We identify p^k with the integer p^{2k}. For the rational number 1/p^k (p is still prime), we label it by the integer p^{2k-1}. For a rational number p/q in lowest terms, we take the prime factorization of p and the prime factorization of q, apply the above identification to each factor p_i ^k and then take the product. This gives a very explicit bijection between the positive rationals and the positive integers.with

My favorite way, though, is just to make a grid of pairs of integers (numerator, denominator), and then count them by spiraling outward on the grid. This yields duplicates, but that's ok.

<comment><USER2> _My favorite way, though, is just to make a grid of pairs of integers (numerator, denominator), and then count them by spiraling outward on the grid. This yields duplicates, but that's ok._

Or just enumerate the naturals in base 11. Denote 9+1 by "/". Interpret "/" as a negative sign when it's the first or last base-10 digit, otherwise as division. Pick an associativity.

<comment><USER3> Oh, that's really nifty.

I first got embarassed by not knowing of that direct way here: [http://gowers.wordpress.com/2008/07/30/recognising- countable...](http://gowers.wordpress.com/2008/07/30/recognising-countable- sets/)

</comment></comment></comment></comment><comment><USER9> What is the point of the cigar section of the article?

<comment><AUTHOR> _What is the point of the cigar section of the article?_

To discuss a necessary step in mathematical induction, namely the basis.

<http://en.wikipedia.org/wiki/Mathematical_induction></comment></comment>


How a volcanic eruption made 1816 the year without a summer (2013) - <AUTHOR> https://www.macleans.ca/culture/books/what-they-did-that-summer/ <comment><USER2> TFA hints at it, but even more interesting is that there was another huge volcanic explosion 6 years earlier that virtually no-one seemed to have noticed and we still don't know where it was: [http://discovermagazine.com/2015/july-aug/29-hunt-unknown- vo...](http://discovermagazine.com/2015/july-aug/29-hunt-unknown-volcano)</comment>


Designing APIs for Microservices - <AUTHOR> https://stoplight.io/blog/designing-apis-for-microservices/ <comment><USER2> I would argue that how the actual service is implemented (microservice, monolith, etc) is not relevant to the design of APIs.</comment>


Show HN: Major Rebuild FreeSurveyCreator.com - <AUTHOR>

We Launched the rebuild of freesurveycreator.com today
History : FreeSurveyCreator.com was started by @WillEWallace as a side project with good base traction but he could not find the time to continue to develop it We took over the service and relaunching today Major changes : - Rewrite from Ruby to PHP - Moved from Heroko to Google App engine (My first project here) - Restructured the datamodel to accommodate future evolutions - updated id from nrs to hashes for better privacy
Feel free to provide feedback or ask any questions http://www.freesurveycreator.com
(my background is 15Y PHP + 8Y ops at ISP currently Marketing consultant) <comment><USER2> Looks handy. However how do you differentiate from dozens of alternatives on the market already?

Also, running your web pages through a proofreader might be helpful to give a more professional impression. While small typos on a FAQ page might seem like a non-issue they do count.

</comment><comment><AUTHOR> Original launch announcement [https://news.ycombinator.com/item?id=8131650](https://news.ycombinator.com/item?id=8131650)</comment>


TSA allows JFK passengers to bypass security checkpoint - <AUTHOR> http://www.nydailynews.com/new-york/tsa-jfk-passengers-bypass-security-checkpoint-article-1.2977418 <comment><USER2> This really isn't a problem from a security standpoint because everyone _expects_ screening; no "bad actor" will count on the possibility of an abandoned checkpoint. The 11 people who went through simply saw a weird situation and decided that they wanted to be on their way. Frankly, any attempt to "find" these people or "identify" them is a waste of time.

The only issue here is managing employees. And sometimes I see _so many TSA agents_ that I'm _astounded_ there could ever be a case where there aren't _enough_ of these people around to keep a checkpoint running.</comment>


"Valley" Dark Theme for Visual Studio Code - <AUTHOR> https://marketplace.visualstudio.com/items?itemName=TimGrochowski.valley-vscode <comment><USER2> Still waiting for the custom color theme.</comment>


A spoiler for the future – Bitcoin - <AUTHOR> http://blog.gardeviance.org/2013/11/a-spoiler-for-future-bitcoin.html <comment><AUTHOR> TLDR: The author predicts that China will crackdown on Bitcoin, heavily regulate it, and then use it to undermine foreign currencies.</comment>


Excel Solver Model for Macronutrient Optimization - <AUTHOR> http://eternityathletics.com/nutrition/meal-plans-create-one-enjoy-eat/ <comment><USER2> I love all these ads, they make the internet so much more pleasant.</comment>


Making a Menger sponge in stained glass - <AUTHOR> http://joshmillard.com/sgmenger/ <comment><USER2> My mom made some really amazing stained glass projects when I was a kid and I've always been fascinated by it. Recently I had the thought that the process could be singnificantly sped by using CNC/Waterjets or something else to help with the really time consuming cutting and fitting aspects.

I've found a few instances where people have used CNC cutters with a diamond drag bit to help score the glass, and a few industrial glass cutting applications of similar to stained glass size items, but no real start to finish projects.

This is an interesting industrial example as they were able to produce a stained glass piece that is made almost entirely from curved pieces (a near impossibility with traditional scoring and breaking) - [https://semyx.com/solutions/waterjet- applications/glass/](https://semyx.com/solutions/waterjet-applications/glass/)

Industrial waterjet glass cutting: [https://www.youtube.com/watch?v=a_qMKKwvzz8](https://www.youtube.com/watch?v=a_qMKKwvzz8)

<comment><USER3> > almost entirely from curved pieces (a near impossibility with traditional > scoring and breaking)

I was a little surprised when I read this because it means the people at my local makerspace are magicians. There are tons of examples of curved stained glass as well as a lot of howtos on how to do it. The came glasswork page on wikipedia is full of stained glass with curves: [https://en.wikipedia.org/wiki/Came_glasswork](https://en.wikipedia.org/wiki/Came_glasswork)

What am I missing?

<comment><USER4> What you're missing is glass grinders (router) and band saws. Grinders use diamond abrasive bits and flood cooling. Glass bandsaws same deal. With those you can shape flat pieces any shape you want.

<comment><USER3> But you can also cut curved glass with traditional glass scoring? And this has been so for a long time.

<comment><USER4> I tried that a couple of times, can be done. Takes skill I don't really have.

</comment></comment></comment></comment></comment><comment><USER5> Well, hey, that's me! Howdy folks.

<comment><USER6> Love the design, but I'm kind of envious of how easy you made this look! Haha. My wife and I got super into stained glass work for a while there, and while she kept getting better, I never really did. It's hard to do it well, so mad props to you for making it look so easy!

<comment><USER5> I was surprised and please how much I took to it, honestly; I went in cold and was prepared to not really get a knack for it.

But easy-looking is also a product of writing it up after the fact, and learning under good instruction; it was still a solid 20+ hours of work with a fair amount of cursing and bits of messing up and redoing stuff.

In any case, whether or not I caught on quicker than average, the process itself feels very accessible to me. I can recommend giving it a shot a lot more readily than I'd have guessed before I tried it myself.

</comment></comment></comment><comment><USER7> My father did a lot of stained glass window when I was young. When we moved countries he couldn't take it up again for lack of funds but I have fond memories geeking out with him about it. He would draw amazing things with it and I wished that it was more prevalent today. Stained glass can be absolutely beautiful.

</comment><comment><USER8> Working with glass really is a lot of fun and isn't particularly hard. I didn't realize how easy it was until I started messing with chemistry.

The material is absolutely amazing and we still don't know everything about it.

</comment><comment><USER9> That is stunning! The part about copper and solder got me wondering if it would be possible to create some primitive circuits for... something?

<comment><USER10> Glass is a perfectly good circuit board material. Here's a company offering it commercially:

[http://www.hoyaoptics.com/gcb/index.htm](http://www.hoyaoptics.com/gcb/index.htm)

<comment><USER11> That is pretty neat, it's essentially a macroscale version of a CMOS process.

</comment></comment></comment><comment><USER12> Menger sponges are neat! I once wrote up some code to procedurally generate them for 3d rendering.

[https://github.com/nickdesaulniers/prims/blob/master/sponge....](https://github.com/nickdesaulniers/prims/blob/master/sponge.js)

(See readme for a rendering)

</comment><comment><USER13> Fun fact: I was seeing pyramids in the center of faces on all pictures until I searched online to look what is a menger sponge!

<comment><USER5> Yeah, this isometric rendering has nice hints of Necker Cube illusions to it.

</comment></comment><comment><USER14> That's lovely; amazing that it was just your first project. Thanks for the detailed walk-through. My mom did stained glass before I was born, but I never got to see it done, so it was really cool to be able to see it grow step-by- step.

<comment><USER5> It's a shockingly approachable medium! I was really surprised at how much it _wasn 't_ a series of frustrating technical or fiddly bits.

</comment></comment><comment><USER15> That's some very HN material! I would totally buy a copy piece of that, great explanation about each step of the process too! :-)</comment>


Activist hosting provider RiseUp hit with a subpoena for all names, addresses - <AUTHOR> https://twitter.com/chadloder/status/1198077962630791174 <comment><USER2> Not "all names, addresses" [of all users].

The Twitter blurb is basically an incomplete quote from and a link to [https://itsgoingdown.org/dhs-and-ice-seek-to-issue- subpoena-...](https://itsgoingdown.org/dhs-and-ice-seek-to-issue-subpoena-in- asheville-nc/) , so probably the post should be updated to point there (and the title should be corrected).

"[...] Riseup.net received a subpoena requesting any and all records/information related to names, addresses, phone numbers, email addresses, IP addresses, MAC addresses, payment information _for the following email_: firstname.lastname@example.com"</comment>


Four months ago I completely quit lying - <AUTHOR> http://thenextweb.com/lifehacks/2013/12/09/four-months-ago-quit-lying-dramatically-changed-life-better/

<comment><USER2> The most backwards thing is that when I tell the truth it is seen as a lie because they never hear the truth. (In their vision whatever you answer first to their question is a lie, to cover up something bigger)

</comment><comment><USER3> To be perfectly honest, this article doesn't say much. I would have preferred more personal anecdotes about what happened when he stopped lying.</comment>


Discord Is Spyware - <AUTHOR> https://spyware.neocities.org/articles/discord.html <comment><USER2> My friends and I only use Discord because Skype devolved into a phenomenally terrible experience after Microsoft acquired it. None of us have pledged allegiance to Discord; there's simply no markedly better option out there.

<comment><USER3> that's it, same for me

<comment><AUTHOR> As far as voice quality goes, or is it all the other, more social, features that are the deciding factor?

Just random examples, but I have experienced better voice quality using Teamspeak, Microsoft Teams, and Telegram (desktop). I have commented on specifics regarding Discord's voice quality previously.</comment></comment></comment>


Drone Delivers Medicine to Rural Virginia Clinic - <AUTHOR> http://www.wsj.com/articles/drone-delivers-medicine-to-rural-virginia-clinic-1437155114

<comment><USER2> Interesting. Medical needs for FAST delivery may be one of driving forces for adopting drones quickly. I believe Matternet is also pioneering this in the developing world for vaccine deliveries and medical tests in rural field clinics.

My brain goes crazy thinking about all the ways drones could dramatically improve (and reduce the cost of) logistics and delivery.</comment>


Project over Money, Team over Project - <AUTHOR> https://strdr4605.github.io/project-over-money-team-over-project <comment><USER2> > If I am enjoying the project and/or the team at my current job, I would not > accept a 5-15% salary increase offer, as after 3-6 months I may get even > more increase at my current job

This is one of the biggest points I try to communicate when I mentor junior engineers.

It's a common trap for junior engineers to be lured away from companies they enjoy when a recruiter spontaneously offers them a 10-20% raise. Meanwhile, a common tactic among toxic companies is to lure people in with an easy 10-20% raise and then overwork them until they burn out and quit. Turnover is high, but these companies overlook that because they have a deep pool of junior candidates to lure in with those 10-20% raise offers.

The biggest companies get around this by overpaying their junior engineers so they have no incentive to leave, and then aggressively weeding out the underperformers. This only works if you have deep pockets, though.</comment>


The Pope on Panhandling: Give Without Worry - <AUTHOR> https://www.nytimes.com/2017/03/03/opinion/the-pope-on-panhandling-give-without-worry.html?&moduleDetail=section-news-1&action=click&contentCollection=Opinion&region=Footer&module=MoreInSection&version=WhatsNext&contentID=WhatsNext&pgtype=article <comment><USER2> I love this approach. The needs of the person next to me are not going to be convenient, practically or philosophically. Charity with dignity takes work, but it's worth it. Good read.</comment>


Circumventing AdBlock (2014) - <AUTHOR> https://medium.com/@buesing/circumventing-adblock-516825513d0a <comment><AUTHOR> tl;dr

> Voilà! Ads are on display although AdBlock is on. The plugin still thinks it > blocked the ads, because it did actually suppress the requests. But then we > just resent the data in base64 format.</comment>


Why I went with them and not you: feedback to an interviewer - <AUTHOR> http://jamesob.nfshost.com/2011/04/01/them-vs-you.html <comment><USER2> The degree of entitlement among new grads in the software development industry is incredible. I know because I've been there. Now I see it from the other side as an employer, and when I think of the way I acted after I graduated, I want to go back and kick myself. In retrospect, this was a sign of immaturity and self-aggrandizing.

I genuinely believed at the time that Emacs and Linux and Common Lisp somehow made me special, when in reality I just wanted to convince myself that I was a better developer than my peers. I wasn't. I was a good coder, but I was immature, wasted a ton of people's time, and refused to listen to people who wrote code that solved real problems while I was on my "let's switch to Linux and Lisp" crusade.

I can point out a ton of examples where Windows is significantly better than Linux and vice versa. Same goes for most programming languages, development environments, and software methodologies. Saying "I like UNIX more and prefer to develop in it" is one thing. Saying that a choice of the OS tells me something about an organization and that _their_ particular system of choice is somehow based on worse philosophical principles than my alternative is naive and condescending beyond belief.

The rule of thumb is to understand before you decide you've understood. If we used this principle more often, the industry overall would be a much more nourishing environment to work in.

<comment><USER3> _The rule of thumb is to understand before you decide you've understood._

Yeah, no.

The rule of thumb ought to be find your own path, go with what works for you and forget everyone else's establishments. Clearly this guy saw a job with a culture and environment that he got a good vibe from, he liked their approach, he liked their people, he chose them.

On the flip side, I personally don't know where this attitude comes from that the younger generations should have to toil and sweat and bleed before they get that opportunity engage in something that clicks with them. Life is short, but JUST long enough to get those experiences in whatever way they come along in our lives.

Personally, I'm just as sick of old curmudgeons coming along dictating to young people how they should run a career just because said old fogie had to go in a different direction just to get _his_ in the world as you are with recent grad students and their "entitlement".

<comment><USER4> Not toil and sweat but as a fresh graduate do you really have enough experience to make decision about culture? And that too based only on a couple of interviewers?

Not working on windows because you don't agree with its design philosophies is ridiculous. It's not that you are working on building windows. It's just a platform. You select the tool that works best to get the job done. Not because you agree with the tools philosophy.

If I got such a letter I'd actually retract offer to this candidate. Flexibility and eagerness to take on challenges and learn goes a long way in your initial days as a developer. Lacking these qualities is a big no-go for me at least.

<comment><USER5> I've been working in this industry for a while, and I've never regretted my decision to pretty much be a Linux-only guy. You can't do everything, and I like working with tools that are pleasing to me. I felt that way when I started working and I feel that way now.

Sure, I probably lose out on some jobs because I'm not a Windows guy, but I'm also not an Oracle guy or a SAP guy or a Cobol guy or a Fortran guy either. It's a big field, and there's lots of room. As of late, I've found that even here in Italy there are plenty of Rails jobs, so, despite knowing it, I've also made a decision to not be a "PHP guy" either.

So I don't think that sort of choice is merely lack of experience.

I think the only reason for worry is if someone decides they're an XYZ guy, and that's all they do. I've used many languages professionally, and find learning new ones fun. I have more time for that if I spend less screwing around with things I don't like.

<comment><USER6> Absolutely. When I interviewed for my current job one of the interviewers walked in, looked at my resume and said "Wow a resume with no Windows on it. Nice."

Not that I'm bashing the Microsoft stack mind you, it just doesn't interest me. I'd do it to pay the bills if I had to but there's enough depth in the industry that, as you say, I'm not terribly worried by not knowing _everything_.

</comment></comment></comment></comment></comment><comment><USER7> I think it is unwise to send a letter with this tone to someone you've turned down. I say this as someone who used to do exactly the same thing. You think you're being honest, but to be on the receiving side of this it comes off badly.

Especially as a new grad, it's not really your place to lecture someone about how Unix embodies the essence of good software engineering when they have probably been doing this a lot longer than you and have their own ideas about what good software design is.

You could have given the same feedback in a way that is much less likely to come off badly by simply saying "I've really a UNIX kind of guy and a Windows shop probably isn't the best fit for me."

<comment><USER8> I don't know that I agree: you're essentially advocating dishonesty, in my opinion. If he legitimately feels that a Unix shop by nature will espouse certain qualities, why should he hold back?

They solicited his feedback. Unless he wants to hold them in his pocket as a fall-back, I can't see why he should sugarcoat his response. Yes, you could call his opinion essentially hubris if you disagree and wanted to be antagonistic, but it's at least honest, straightforward, and not unduly confrontational.

I say this as someone who's been off-and-on involved with interviewing and sent out this kind of question to people who turned us down - the only two times I got a response, they were devoid of any information and just platitudes to butter us up. Literally not a single negative point about us or our process, which needless to say was not helpful and personally annoyed me far more than a letter like this would have done.

<comment><USER7> What about "I'm really a UNIX kind of guy and a Windows shop probably isn't the best fit for me" is dishonest or devoid of information?

This makes it clear that he prefers UNIX and that was a factor in declining the position. It stops short of passing sweeping judgements on people who do not prefer UNIX, which is very likely to annoy somebody who prefers Windows.

<comment><AUTHOR> Which "sweeping judgements" did I pass on people who do not prefer Unix? All I've said in this article is that, given the choice between Windows and Unix, I prefer Unix. I went on to add points on why I like Unix, which admittedly is a little extraneous, but I never voiced any negative judgement on Windows. Many seem to infer that themselves.

<comment><USER9> Let's be honest, you were basically singing UNIX's praises for a little bit. While I agree with them, you have to admit that saying that "Unix encapsulates, and indeed was built on, many core principles of good software design" is a sidelong criticism of Windows which you imply is not built upon core principles of good software design. I imagine this could easily be construed as an insult.

Consider if a Windows user said he didn't want to work at a Unix shop because Windows is a better-designed operating system. Would you not consider this a judgement of Unix?

<comment><AUTHOR> Good points. I agree that it's reasonable to construe what I was saying as a swipe at Windows.

What I really meant, and I guess I didn't do a sufficient job at getting this across, was that I _know_ Unix is rock-solid; I don't _know_ the same about Windows. Truth be told, I know very little about Windows since I haven't used it for 4 years. I was going for a positive point about Unix, not a negative one about Windows.

But you have a pretty good point about my praise of Unix being a vacuous swipe at Windows.

<comment><USER10> I only use Windows because I am always in too much of a rush to pass through the pain of adopting a new operating system on my desktop machine. We do deploy onto Linux.

I don't have any local Linux / Unix help.

Perhaps if you joined the team, many of the other developers would also have switched. I might have if I was from this company.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> _It may seem arbitrary, but the platform an organization uses is indicative to me of a whole lot._

Was anyone else a bit annoyed by this statement? It's a good, wholesome, and healthy thing to say "You guys use Windows and I like using Unix", but it's wrong to say "You guys use Windows, and that says something about your organization."

Why do techies have such a tendency to phrase "I don't like _x_ " as "It is _wrong_ to use x".

<comment><USER12> The majority of skilled developers prefer Macs or Linux. I've been at large conferences and not seen a single Windows machine. Some developers like Windows, that's fine, but just as many hate it. It's not wrong for a developer to use Windows, but it is wrong for a company to impose it, or even to have it as the default option.

For a company to say "at our company, we use Windows" is to say "We don't give a shit about developers". The issue isn't Windows, the issue is a workplace culture that places the preferences of management over the preferences of developers. Life is too short to work for people who don't respect you, especially when you've got one of the most valuable skills in the world.

<comment><USER13> I like how my workplace does it. Everyone gets a linux desktop. You then get the option of either a MAC or Windows 7 laptop, totally up to you.

<comment><USER14> What's the percentage of those that choose mac? I would choose mac since it can run Windows, too.

<comment><USER13> It seems pretty even. At orientation you are given a new Windows PC. You then have to trade it in for a MAC.

</comment></comment></comment></comment></comment><comment><USER15> You may vote me down but this reminds me a great deal of how things started to feel right before the last dot.com crash circa 2001. I imagine most of you are too young to recall it, but before we hit the end programmers were worth more than gold. You'd get kids who didn't even finish this CS degree looking for stock options, aeron chairs and other perks (...and do you have a sushi chef on site?). And small companies gladly did this because even getting a warm body was better than not.

And then it hit. First one company and then the next. Each week you'd read about another 100 people being laid off. You knew that even if 1 in 10 razorfish employees were decent that 90 amazing people were now hitting the streets. Our guilty pleasured was reading f*ckedcompany -- a website that just covered the daily implosions.

I hope that history won't repeat itself on that scale, but that said this point in time feels like that point in time. I see other signs too: For example a German car company just opened up a VC fund. I know that Facebook could be the next Google, yet I was recently shocked to see a content farm go public. With any luck the rest of the economy will recover to buffer an industry stumble, but you never know.

</comment><comment><USER16> I picked my first career essentially on the basis of interviewers.

My undergrad (at U.Cincinnati) required all engineering students to take a co- operative education job for 6 months a year. You pick your first job after the freshman year. At that stage in the game, I had no idea what I would find most rewarding (I was in an electrical and computer science program, which left a lot of room to choose).

Most companies sent engineers to the campus recruiting center. They tended to ask dry questions about classes and training. The guy from RCA Semiconductor was personable, warm, and knew how to sell his company. He also "got" that frosh aren't really at the stage where grilling them on technical knowledge makes much sense when deciding who to take a chance on, so he steered the conversation more toward life experiences, interests, and working style.

I went with RCA, with no reservations. Happily for me, it turned out that Tom reflected the company culture in the factory that sent him. Was it the "best" decision? I can't say, but I do know that a truly professional interviewer had a profound impact on the path I followed for many years of my professional career.

</comment><comment><USER17> I'd be interested to know if the author finds this article embarrassing in 10 years.

When I started in professional software development 10 years ago (about), I probably would have made many similar points.

I see a lot of the same attitudes in CS students today. They are just absolutely CERTAIN that the entire world can be easily categorized into their predefined concepts.

As you get older and more experienced, you'll realize that a lot of your early opinions were naive at best. I have a feeling the article's author will feel similarly in the future.

<comment><USER18> I've been a developer for just over 10 years now, and I would say the opposite for myself. 10 years ago, I would never have written a response like this. Now, I would in a heartbeat.

I do think that he will find it embarrassing in 10 years, but for different reasons (like in 10 years, Windows is a super awesome development platform, or running on Amazon Web Services is like running on IIS, or jQuery is the new VBScript, or something like that).

<comment><USER19> There is nothing about "the cloud" today that wasn't said about "the mainframe" back in the day...

<comment><USER20> Except for one big difference -- today, I or the company I work for, doesn't have to own "the mainframe". Basically its a return to the "mainframe" with the cost and exclusivity. That is a huge difference.

<comment><USER19> In the 70s you had "computer bureaus" that owned the mainframe that you would rent time on by the hour. A lot of the early MUDs ran in spare capacity on these. Exactly like the cloud...

</comment></comment></comment></comment></comment><comment><USER21> I don't get the impression that many of the commenters here are spending a lot of time trying to hire good people right now. I am, and I'd be grateful to receive an email like this.

I wouldn't _like_ it, but honest, personal feedback on an interview process is hard to find.

</comment><comment><USER22> I see many comments pointing out that it may be a good technical decision to develop on Windows. This is a good point; many skilled engineers target Windows and .NET with great success. In that case, having a Windows development environment makes sense.

However, it sounds like the organization in question was not deploying to Windows - from the article:

 _...it seemed to me that most of your development happens on Windows (though it's almost needless to say that you deploy to Linux)_

I won't judge you for using Windows over Unix (even though I prefer Unix), but I will judge the choice of using Windows for development when you are targeting Unix. I have had this experience, and it was a Management decision - _not_ an Engineering decision, and it resulted in significantly less productive work environment. Given two opportunities that are otherwise equal, I would definitely choose the company that develops on the same platform that they deploy on (assuming we're talking about Unix or Windows - there are obvious exceptions in the embedded world).

One caveat: It is common for an organization to use _both_ Windows and Linux for different tasks. In that case, the choice of development environment is more complicated.

Either way, I'd say that the candidate should have asked up front during the interview, "Why are you using Windows for development, and could I use Mac/Linux instead?", instead of judging them based on what seems like a lack of information. They may have a good reason. If they don't, your decision is that much easier.

<comment><USER23> It would be nice to know what type of shop they were, after all in some places your OS just provides a text editor or IDE where you work on files remotely and run in a browser off of a *NIX server. If that was the case it doesn't matter what OS they're developing in, as anyone should be able to develop in the OS and text editor of their choice so long as it can hook up to SSH.

</comment></comment><comment><USER24> A lot of good points that would definitely influence me in picking a company. Especially developing on windows, I would personally list that heavily in the cons column.

<comment><USER25> It would be for me as well, but there are many people who swear by Visual Studio, and Microsoft is generally very developer-friendly. I'm sure there's reasons beyond corporate dictate that many companies choose to develop in Windows.

<comment><USER26> I've used Visual Studio at work.

The first C++ program I wrote caused the compiler to segfault. It was hello world compiled as managed code using the .net string class. The solution was to wait for the next version of Visual Studio to be approved by the Internal Software Approval Team.

I switched to Haskell + Emacs and never looked back. If you're stuck on Windows, that's a damn good development environment. Miles ahead of anything Microsoft could offer. (But visual studio lets you refactor shit by right clicking. Yeah, but Haskell lets me write code that actually works.)

<comment><USER27>
      > I switched to Haskell + Emacs and never looked back.
      > If you're stuck on Windows, that's a damn good
      > development environment. Miles ahead of anything
      > Microsoft could offer.

<http://research.microsoft.com/en-us/people/simonpj/>

Yeah, Microsoft has no _clue_ what they're doing, man.

<comment><USER6> Microsoft undoubtedly has a lot of smart people and a lot of fascinating research. They also have a serious problem turning that research expertise into shipped product.

<comment><USER27> Sure, and they have that problem across the board. The Courier concept art is a fairly recent example.

But a comment praising Haskell as an experience that Microsoft can't rival while 85% of the Haskell team are on Microsoft's payroll? Too tempting.

</comment></comment></comment></comment></comment></comment><comment><USER28> I honestly don't see what the problem is with what chap wrote - it's more than 20 years since I graduated and I felt pretty much as he does about Unix, and to a certain extent I still do (even though I don't have any problem using Windows).

I've hired a lot of people over the years, for my own company and for others, and if someone wrote this to me I'd thank them for their feedback and wish them the best luck with their career.

</comment><comment><USER29> I believe that things can only be improved with honesty and transparency. I would rather work with someone who gave real feedback than give a mealy- mouthed reply.

The OP is very straightforward and - to me - non-insulting. It might be a bit of a bitter pill to swallow, but when one asks for feedback, one should be grateful when it is given...

my 2c.

</comment><comment><USER30> Interesting. It has been quite a while since i have done an interview for an office job, but I will start doing so soon. I worked in the restaurant industry as my last non-entrepreneurial career.

Seeing the developing on Windows and deploying on Linux as a big flag sounds analogous to noticing a dirty walk-in fridge, burnt-out light in the dining area, or a deer in the headlights look and lack of smiles in a busy line-cook.

Is it common for the interviewee to ask as many questions about the employer as the employer asks of the interviewee? In most business dealings or past job interviews, I have taken it as a red flag if this was not the case.

Were you able to ask why they used Windows or was it expected that you were to just answer their questions?

</comment><comment><USER31> What a little snot. He likes Unix because that's what he knows and he's not comfortable developing in Windows.

I know a lot of middling developers (I include myself in that group) that are like this. The really good devs I know don't care much about the OS. They're more interested in the problems to be solved.

</comment><comment><USER32> What I hear when reading this is "I feel a greater sense of belonging with Compant Y". Everything else could be just rationalisation after the fact, people are _amazingly_ good at rationalising why they believe the same thing as their friends.

</comment><comment><USER33> Great points. As someone hiring for a "company Y", I firmly believe in the design process and culture and try hard to make candidates feel that they would play meaningful technical and cultural roles in the company.

</comment><comment><USER34> I agree with the sentiment of your letter, I feel that it might not have been the most diplomatic thing to say, but there is a pretty good chance you won't have to worry about it. Keep improving your skills so you can voice opinions with out worry that it will kill your career.

</comment><comment><USER35> My experience has me at the point where I won't go into detail explaining why I don't take s position. I tried when I turned down a government contractor for a position maintaining a couple servers for a position where I would be responsible for a few hundred for a lot less. They just pushed the money and got offended not understanding I needed the challenge and learning experiences. I left the situation feeling a little guilty and then just figured out you need to do what's right for you and not get into explaining it to people who won't even remember you in a few months.

</comment><comment><USER36> Considering how strongly the author feels about developing exclusively on *nix, I found it surprising that it took as much as an interview for him to learn that "company X" uses Windows. Almost all software job reqs. offer reasonable insight as to what key technologies they use.

Other than that, I found his response reeking of condescension and inexperience.

<comment><USER37> _I found it surprising that it took as much as an interview for him to learn that "company X" uses Windows._

I didn't catch anything in the post saying he didn't find that out until the interview.

<comment><USER38> Then why did he interview? If it was a phone interview... sure, no biggy. But an onsite interview requires some DD by the applicant. You don't even accept the interview if there's no chance you'd work there. And if you do it anyways, maybe for practice, then you don't give this type of feedback.

It's like going out on a date with a girl you're not attracted to just for practice. And then when she asks why you didn't go on a second date saying, "Because you're frankly not very attractive." You were kind of a jerk for going on the date in the first place, but the feedback made you a certified one.

In any case either the candidate doesn't do the type of reasonable DD that I'd expect from an applicant, even a college hire. Or he's bordernline unethical.

<comment><USER37> _You don't even accept the interview if there's no chance you'd work there._

You don't know that there's no chance of working there until you know what your other options are. If you're still interviewing (i.e. you don't have offers/rejections in hand yet), you don't know what options you have. You might know that you won't accept Company X's offer if Company Y also makes you an offer, but that's quite a different situation from knowing there's no way you'd accept Company X's offer.

</comment></comment></comment></comment><comment><USER39> I got in a similar situation, I interviewed for company X & company Y. I fulfill all the requirements of company X's jobs page. But when it came to the interview, they threw 4 well known questions after a short introduction which sounded more like a pointless formality unlike a real conversation I get when I meet devs at confs.

That night I was interviewed by an employee of Y, and he did spend first 20 minutes asking me questions on two of my side projects, grilling down to details, catching up on new trends. And then there were questions to test my cs skills, and an invite to face-to-face.

Overall I loved the way interviewer from Y dealt with me. I definitely could connect more to the person from Y than from X.

</comment><comment><USER40> i'd be interested to see him revisit this letter after he's had the chance to sit on the other side of the table in an interview.

</comment><comment><USER41> Of course tools and technology definitely matter, and do influence culture, which also matters, but if someone sent me a letter like this one I'd be genuinely relieved it didn't work out.

</comment><comment><USER42> The asymmetry of the situation strikes me. Where a company which decides not to hire someone can only say "we're not following through with your application at this moment" out of fear of litigation, the candidate can freely comment on his decision to not take the job.

It would be nice when companies were able to do the same.

<comment><USER43> I live in the UK, and have gotten good feedback from jobs I didn't get. Even though they were rejections, I often agreed with their points and choices. I liked the companies more as a result. If I had solicited, and then received this email, I would be very grateful - this kind of opinion must be very difficult to find.

</comment></comment><comment><USER44> Bravo on scoring two jobs, but a little bit boastful all the same. What a show off :P

<comment><USER45> In the developer job market, I think this is OK - because they are in such high demand. If this compared jobs as entry-level marketing associates, I would've felt more dissonance towards what you mention - but in this situation, I think it was OK and not too ego-driven.

<comment><USER44> Why would an applicant care whether other employers score good developers over sating their own desire for an ego boost?

I don't buy it.

<comment><USER46> Hiring qualified people is hard. Just because you're the applicant today doesn't mean you won't be an interviewer tomorrow. It's better for all of us if there's more communication about these things.

<comment><USER44> I'm a cynic, but maybe yr right.</comment></comment></comment></comment></comment>


Multithreaded rendering on Android - <AUTHOR> https://code.facebook.com/posts/1985913448333055/multithreaded-rendering-on-android-with-litho-and-infer/ <comment><USER2> This is really nice, but it would be good if they could release some metrics for their example such as the News Feed. How much did it improve the scroll performance? The main reason is because I'd like to know if the extra complexity is worth the effort. I'm sure that from Facebook scale any improvement is important but how good is it?

It is mentioned in the article that Android documentation does not recommend doing multithreading optimizations since the UI Toolkit itself is not thread- safe, does this mean that Android's own UI Toolkit cannot be used within this context? What is the level of integration that Litho and Android's UI Toolkit can have? Also, in regards to Android's Accessibility APIs, does Litho components handle/have that capability?

I guess I should have done a bit more research/experimentation on Litho, but these are some questions I have. I'd really love to use it though.

<comment><USER3> For the record, I prefer Litho regardless of performance characteristics. The immutable data model works really well with AutoValue, which in turn works well with lots of things in Android and I find the API a lot cleaner than the default RecyclerView API (there are alternative Adapter implementations for RecyclerView that bring it's API closer to Litho)

<comment><USER4> what alternative adapter implemntations are there ? could you cite anything ?

<comment><USER3> Airbnb's Epoxy is the best one I've used:

[https://medium.com/airbnb-engineering/epoxy-airbnbs-view- arc...](https://medium.com/airbnb-engineering/epoxy-airbnbs-view-architecture- on-android-c3e1af150394)

[https://github.com/airbnb/epoxy](https://github.com/airbnb/epoxy)

</comment></comment></comment></comment><comment><USER5> Erm, android already does multi-threaded rendering via HWUI[1] at the Canvas level.

What they're talking about doing here is multi-threaded _layout_ which isn't nearly that impressive. Heck, you can call measure()/layout() off-thread right now on views, there's just an invalidate when they get inserted into the hierarchy.

Also something not mentioned is that each CPU core you spin up is eating into XX% of your battery life. So you may get a faster layout but your users may see worse battery usage because of it.

[1] - [https://android.googlesource.com/platform/frameworks/base/+/...](https://android.googlesource.com/platform/frameworks/base/+/android-6.0.0_r41/libs/hwui/renderthread/)

<comment><USER6> Indeed, moving to multiple cores is about doing more work faster which has a direct impact on battery life. You'd have to measure whether this allows you to race-to-sleep faster or not which is a delicate balancing act.

It is telling that battery life is almost never mentioned or discussed in depth anywhere. What is the battery impact of React Native? Or of this solution?

<comment><USER5> Yup, completely.

It's a really nasty problem too because power usage isn't linear. Chips tend to have voltage steps[1] as they increase in frequency so if you can do something longer and at lower frequency it uses less power than the same workload at a higher frequency for shorter time.

Compound that with the fact that you really want to bring the whole SoC to a low power state and just keep the display lit since 90% of the time users aren't actually moving something.

Arm has tried to solve this with big.LITTLE[2] to mixed results. It turns out that it's hard to build a general purpose scheduler that's power aware much like it's hard to build a general purpose memory allocator that's fast in every case.

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

[2] [https://en.wikipedia.org/wiki/ARM_big.LITTLE](https://en.wikipedia.org/wiki/ARM_big.LITTLE)

</comment></comment></comment><comment><USER7> So FB mixes this and react native in their app?

<comment><AUTHOR> We use both at Facebook! React Native works cross platform whereas Litho provides performance that beats the Android Toolkit - so they are each beneficial for different use cases. Litho is heavily inspired from RN so the programming model should be familiar.

</comment></comment><comment><USER8> The Android Framework is a bit of an old framework, not using reactive elements. Google knows this, and is building flutter a reactive UI toolkit.

Also android developers are using Reactive components more and more, but the UI is still very much statefull. So i see a bright future for this approach (maybe not the facebook library, but the approach itself)

</comment><comment><USER9> I'm not sure if I'm the only one, but since from the recent patent grant debate, the first thing I do on a Facebook git repository is to check whether there's a PATENTS file.

</comment><comment><USER4> Are there any examples of how to convert an existing project to Litho ?

<comment><USER10> We've been doing a lot of that at Facebook and we do want to document this process a bit better. Stay tuned :-)

</comment></comment><comment><USER11> Yet another steaming pile of overengineering, great.</comment>