On Shutting Down - <AUTHOR> https://blog.ycombinator.com/shutting-down/ <comment><USER2> There's a kind of shutting down not covered here: getting acquired. Too often a phrase similar to "our incredible journey"[0] appears, in which case as an end-user you know the time for enjoying the service is at an end just as surely as if the startup went bankrupt.

[0] [https://ourincrediblejourney.tumblr.com/](https://ourincrediblejourney.tumblr.com/)

<comment><USER3> It's pretty easy for founders/execs at that point to make regrettable comments along the line of 'this is going to be great for our customers'.

Sometimes being honest and taking care of your customer/employees/other stakeholders requires you to say "I don't know" or "this will be a change" instead of what you think they might like to hear.

<comment><USER4> It's not always possible to make such statements, depending on the terms of the buyout. That goes doubly so if the founders/execs have a continuing relationship with the buyers. Even if it turns out to be a short term relationship.

<comment><USER5> "I don't know" shouldn't be hard to say. If the terms require you to _actively lie_ , well, that's shameful to accept.

</comment></comment></comment></comment><comment><USER6> YC has talked about how startups die of suicide, not homicide. Shutting down is a hard decision, and there always seems to be pressure to do it. Raising money looks like success to others - so it's tough to declare later that you have made nothing of value and will close shop.

Here were my shutdown articles after I closed Staffjoy:

[https://blog.staffjoy.com/staffjoy-is-shutting- down-39f7b5d6...](https://blog.staffjoy.com/staffjoy-is-shutting- down-39f7b5d66ef6)

[https://blog.staffjoy.com/denouement- abe7d26f2de0](https://blog.staffjoy.com/denouement-abe7d26f2de0)

<comment><USER7> I guess retirement is a form of suicide. I run a successful one-man programming business but it too will need to shut-down as I would like to retire in 4-5 years.

It is especially hard as the company is totally viable, in a great location in the world and has great customers who are really happy to keep giving me work, this means I cannot really shut-down until they are taken care of by either selling off the company to another programmer who will support them or transitioning them (very expensively I guess) to another system

I wonder how many people in the same position are thinking this far ahead

<comment><USER8> Selfish response: Why not sell it?

I've worked for larger corps for most of my career but have certainly cultivated the desire to be the maker of my own success. That being said, I've had remarkably little luck in finding any side effort enough traction to get off the ground, and hit my stride the most when I can improve a system with a proven value prop. (Without sugarcoating it, I'm a terrible "idea guy")

Later in my life if I get a degree of financial stability, I'd like to buy or work for a proven small company (working for would be hard but not impossible given the aforementioned desire to be the driver and recipient of the fruits of my labor) and taking over from someone in your situation sounds almost ideal.

</comment></comment></comment><comment><USER9> YC provides a toolkit for starting up and incorporation. Do they also provide a toolkit for shutting down and wrapping up legal / tax obligations?

<comment><USER10> This is a great idea. We've thought about this a fair amount but have not yet found the right solution to implement.

<comment><USER9> In my imagination this would initially be like your SAFE template or perhaps a checklist. A legally vetted document that tries to take into account the interests of both founders and investors while covering the important bases.

I'm glad it's being thought about one way or another!

<comment><USER11> > tries to take into account the interests of both founders and investors

Customers first, employees second, founders third, investors last. You may want to think over why the last two are in that order, my reasons are simple: investors know the risks going in, and they will not eat one sandwich less. Founders need to be able to get on with their lives too.

<comment><USER12> Unfortunately, the legal obligations are almost reversed.

<comment><USER13> Which is why you have to go out of your way to do them in the order specified.

You have to operate within the confines of the laws at each step, but if you don't take care of the employees before the founders and the investors, then they're going to get screwed the most.

</comment></comment></comment></comment></comment></comment><comment><USER14> What to do when a company has found a market, reached sustainability with regard to its employees and customers, yet probably will not be providing the anticipated return for its investors? I'd like to hear about ways this has been bridged. Have there been any SV "exits" to a ESOP? Unfortunately, an ESOP requires at a minimum 30+ people to be legitimate exit option and quite a bit of administrative attention and expense. It seems an unlikely path for a technology startup.

<comment><USER15> The dreaded "zombie". Profitable enough that the investors can't pull the plug by force. Not growing enough that anyone will make any money out of it. It is my observation that because of "natural attrition" often both the management and employees tend to get replaced with B-players over time. The investors lose interest, their money is gone, their incentive to care a whit is gone, so they apply their attention where it has the chance to make a difference.

<comment><USER16> Dreaded by everyone except the users/customers, who come to depend on the service the startup provides.

<comment><USER17> ... and the people it employs? I see alot of winners in "zombie" startups. I wonder what the ROI of the average business is. Pizza places, AI shops alike.

<comment><USER18> Problem is when someone bigger comes and puts you out of business. Like a fancy new pizza place with modern decor or a Costco or amazon or Uber. You need the ROI to keep placing other bets to increase your chances of survival.

<comment><USER19> If you care for your pizza, your customers and employees, you will stay in business for a long time, regardless of who opens a shop next door. Staying power, habits: those are huge positive factors for businesses.

<comment><USER18> "Mom and pop" businesses around the country show otherwise. A few restaurants with a very loyal customer base or outlier popularity might do well, but certainly not most. Same with hotels, rental cars, airlines, retailers, etc. There's just advantages to scale that can't be matched, and if there's margin, someone is going to want a piece of it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER20> this is the best shutdown i've seen to-date: [http://vmashup.com/BDMLAWn6](http://vmashup.com/BDMLAWn6)

</comment><comment> cool-RR The author writes about the founder in an idealist way, i.e. searching for the most effective and honest way to manage a shutdown.

I'm interested in the moral dilemma, especially regarding employees.

Aaron writes: _" The biggest emotional investment that founders make – especially early on – is convincing great people to take a leap of faith and accept an offer to work their butts off on a long shot. This dynamic is why transparency around the decision to shutdown and the timeline of it is so important."_

Imagine you're a founder and your company is on its last legs. You can make a last-ditch effort to pivot and save the company, but that means that if you fail, which is likely, your employees will get shafted. Can you really communicate this transparently to your employees, and risk having them start searching for a way out, dooming your chances to succeed in turning around the company?

</comment><comment><USER21> When shutting down, founders need somehow magically to know how to do it "right" or as best possible, when they have no experience of that.

I think investors should consider requiring founders prove they know how to shut down properly before giving money to grow in the first place.

Here are the basics:

\-- what the ethical issues, how to "do the right thing"

\-- how to shut down when they can still do so without debt being incurred.

\-- what to say to which staff members and investors and when to say it

\-- what the legal obligations are

\-- how to either get acquihired, or how to find jobs for existing exployees

\-- what legal bombs to avoid and how

\-- what the biggest legals traps are in shutting down, such as leases which will remain fully payable

<comment><USER22> A lot of founders are first time founders. They barely know how to run a company let alone shut one down. I think it is fine for investors to invest in great inexperienced people.

Maybe it would make sense for the investors to mentor them during the shutdown to make sure it is done correctly, since investors have been through it many more times.

</comment></comment><comment><USER23> >Because of this difficulty, we've evolved a set of terms that often mean "shut down" without saying "shut down." In no particular order these are: pivot, hard pivot, rebrand, strategic shift, change customer focus, and platform switch.

How about "serialize"? As in "I'm a serial entrepreneur, so I'm serializing my current project, and spinning up a new one!"

</comment><comment><USER24> Building a sustainable business that meets customer demand and is able to pay employees, without the need for growth, is called a zombie and needs to be shut down?

You know, sometimes I forget that this stuff if just a "get rich quick" scheeme, but then an article like this comes along and reminds me.

</comment><comment><USER25> In the case of a startup shutting down, what would be the best way to try to resell the technology that the company has built (with the hope of recouping some money for the investors)?

</comment><comment><USER26> I once called a friend that I hadn't talked with in a while, only to find out that he was helping load their office chairs into a U-Haul for their new owner. Awkward.

</comment><comment><USER27> To be clear, since now ycombinator is in the business of clickbaiting titles, this is a blog about shutting down a company, not a blog about ycombinator or HN shutting down.

Edit: the original title was 'Shutting Down'

<comment><USER28> Most real shutting down announcements are titled with some spin that makes it sound like the opposite though like: "The next chapter of advancing Y-Combinator"

</comment></comment><comment><USER29> I think that "On Shutting Down" may have been a better choice of title here

<comment><USER10> Good edit. Hadn't thought of that. Changed.

<comment><USER30> "Shutting Down Your Startup"

</comment></comment></comment><comment><USER31> Oh man, for a few seconds when I saw "Shutting Down (ycombinator.com)" on my aggregator, I thought HN was shutting down! And then I was like, "Oh, April Fools.. wait, it is December". Man, that scare woke me up more than this coffee sitting next to me would.

<comment><USER32> I was scared that tech pedants would need to find a new place to bicker.

</comment></comment><comment><USER33> I don't know Aaron at all, but I'm curious about what kind of bonafides you must have to be a Partner at YC. Do they mean partner in the financial sense (ie: he bought into it) or in an operational sense? If it's the latter, at first glance there's a bit of strange optics to have someone in that role whose only notable experience to my knowledge in the startup world ended in failure.

<comment><USER34> When your job is to help startups, your experience of failure is much more valuable than your experience of success, because it's much easier to learn from your mistakes.

In any case, YC partners quickly accumulate enormous experience from the failures of all the startups they're helping. I bet Aaron has personally seen hundreds of startups fail, and has learned from every single failure in order to better help his next batch of startups. That experience probably eclipses whatever else he did before YC.

To me that's YC's biggest competitive advantage: they aggregate the learning experience of thousands of startup failures, and use it to keep their success rate above market.

</comment></comment><comment><USER11> To avoid further cardiac anomalies maybe change the title a bit?

<comment><USER35> I thought the same thing

<comment><USER36> Same. I was really worried for a second... semi- (unintentional I hope) click- bait....

</comment></comment></comment><comment><USER37> Fuck it. Move on.

</comment><comment><USER38> This is like a FREE BEER ad.

</comment><comment><USER39> The worst thing is to keep beating up the dead horse. At least in the gaming industry, you can clearly see some companies "milking" the brand of games, Bethesda and Blizzard have been doing nothing else recently IMHO. But as long as it sells I guess the company is still satisfied with chosen politics, even though it's profit over quality.

<comment><USER40> Blizzard released Hearthstone in 2014, Heroes of the Storm in 2015, and Overwatch in 2016. It's very difficult to characterize that as "milking". And Bethesda has Starfield in the pipeline, though it's a next-gen title at this point.

<comment><USER2> I also don't think Blizzard or Bethesda are particularly good examples of game studios "milking" it. Sure you can use the "new IP" filter to describe those who are "milking" and those who aren't, but to me it's ok to reuse existing IP if there's a significant new spin to it (rather than beating a dead horse). Take Doom 4 (2016) as an example from Bethesda via id, rather than being a knockoff it totally revived the series, capturing what it means to be "Doom" while also feeling fresh against all the other FPSes at the time. In contrast look at Nintendo's parade of 2.5D Mario side-scrolling platformers since New Super Mario Bros DS. They're all basically the same. Yet even then they can still sometimes produce something greater than that with Odyssey.

<comment><USER40> To be honest, I was trying to respond in good faith and not consider other Zenimax/BGS properties outside of Bethesda proper. And even they're doing Starfield, as I mentioned.

Fallout 76 seems to kinda suck, but that's one game.</comment></comment></comment></comment>


Apple as religious experience - <AUTHOR> http://www.theatlantic.com/science/archive/2010/07/the-varieties-of-religious-experience-how-apple-stays-divine/60271/ <comment><AUTHOR> Headline borrowed from Kottke.org.

See his summary post:

<http://kottke.org/10/07/apple-as-religious-experience></comment>


Lilium Aviation - <AUTHOR> http://lilium-aviation.com/ <comment><USER2> Why is this more likely to succeed than the other thousand flying car companies that I remember, which all failed?

</comment><comment><USER3> Nice! I do wonder how close to the end design the mockup we see is. It wouldn't seem from eyeballing it that the multiple small electric engines could generate sufficient lift for controlled VTOL. This will be a fun project to follow.

</comment><comment><USER4> Is there any engineering information on that site apart from the spec sheet? Any description of the propulsion system, or how this will accomplish VTOL?</comment>


Why I'm Frustrated with Go - <AUTHOR> https://dev.to/klnusbaum/why-im-so-frustrated-withgo <comment><USER3> I did Go for years, but stopped doing any serious work in it about a year ago.

In general, I found it a chore to maintain Go-based systems.

There's a lot to like about Go. But it doesn't seem pragmatic for the types of applications I see people using it for.

For example, the entire error thing is absurd. Anders Hejlsberg got this right many years ago: 9 out of 10 errors are "handled" by a central error handler (log + "sorry, try again"). You _can_ do this with error values, but at best it's verbose. Maybe error values makes sense for system programming, I could certainly believe it makes _more_ sense.

But, really, the main problem is the type system. I'm a huge fan of dynamic languages. I think they're so much more productive. This is especially true when your system is interacting with external data - like user input and a database. I did C# and Java for years. These interactions are, at best, painful with static languages. But they're downright infuriating in Go (poor reflection, no generics). I wrote a somewhat popular library to help deal with map[string]interface{} nonsense (2), but it's not enough.

When it comes to web/tcp stuff, I think OpenResty for any middleware-ish system and Elixir for everything else are far more productive and enjoyable ecosystems. We've been doing Elixir for about a year now, and I've never seen such a consensus on productivity and quality (everything else always had some issue: Ruby is slow, Node is single threaded, Java is verbose).

There's certainly more space than just that. Go might still be a good choice for CLI tools, and both OpenResty and Elixir have a distinct memory/threading model that precludes some use cases - but those are in the minority.

(1) - Nothing against Erlang model, but I do think it's more restrictive.

(2) - [https://github.com/karlseguin/typed](https://github.com/karlseguin/typed)

<comment><USER4> >I found it a chore to maintain Go-based systems

My opinion is the opposite. Almost every go code base I've seen is extremely consistent compared to other languages. Going from one code base to another is almost always seamless because learning Go involves learning the Go tools which forces you to follow Go coding standards. I'd choose to work on a Go code base over Java or C++ any day of the week.

I don't have much experience with elixir, but that's because I like to stay employed.

>the entire error thing is absurd. Anders Hejlsberg got this right many years ago: 9 out of 10 errors are "handled" by a central error handler

This is almost always unacceptable in production, especially when it comes to mission critical hard/software. You need to be able to handle errors in production that you may not even be able to catch in testing and that means you need to catch all the errors and think critically about what should be done when that error is encountered. "Central error checkers" are almost never robust enough for mission critical systems.

Go basically forces people to write high-quality, resilient code bases, and I like it for that.

<comment><USER5> >> the entire error thing is absurd. Anders Hejlsberg got th is right many years ago: 9 out of 10 errors are "handled" by a central error handler

> This is almost always unacceptable in production, especially when it comes > to mission critical hard/software. You need to be able to handle errors in > production that you may not even be able to catch in testing and that means > you need to catch all the errors and think critically about what should be > done when that error is encountered.

Absolutely. My approach is usually that errors are always wrapped not just returned. The wrapping itself ends up looking almost like code documentation: "could not do X: <previous error>", "error while doing X: <previous error>". Every error string is then unique in the program, easy to grep.

"Could not perform the operation", maybe together with a 500 lines stacktrace in your logs (which are maybe line-by-line bacause that's the default)... you are up to a nice middle of the night debugging session :)

<comment><USER6> The problem I've found it that _you_ might wrap errors this way, but the libraries you use don't, or approach it differently. So you're either chasing down strings that may or may not be grep'able or you're fighting with delve to track down what's happening. The whole error situation with Go is one of the main drawbacks of the language imho.

</comment></comment></comment></comment><comment><USER7> > You know how much code I'd have to write if this were C++, C#, or Java? > None. They all have reusable notions of an immutable, ordered map.

Actually C++ doesn't have immutable data unless you count compile-time constants and literals. You can declare things 'const', but that only provides a read-only (1) view on mutable data.

Also, to provide good 'const' support in containers, you usually have to provide extra read-only iterators that are largely identical to the writeable iterators. Go look at the C++ standard library. All the containers have both 'iterator' and 'const_iterator' (not just a 'const iterator').

Another approach is to just declare member variables 'const'. So you have a 'const map<int, int>' as a member variable. Except for that to work, you need to construct that member variable in the initializer list. The body of the constructor is too late. This likely means taking an already-initialized map as a constructor argument and copying it (probably exposing implementation details in the process) or writing a helper that returns the appropriate map type and copying it. Good optimizers _will_ elide many or all of these copies, but relying on quality of optimizers isn't portable.

Anyway, I'd say the complexity of the Go approach isn't significantly worse that the C++ alternatives, if it's worse at all.

(1) Of course, with casting shenanigans or use of the 'mutable' keyword, anyone can circumvent 'const' without a lot of work.

<comment><USER8> > Actually C++ doesn't have immutable data unless you count compile-time > constants and literals. You can declare things 'const', but that only > provides a read-only (1) view on mutable data.

      const std::set<int>& s // This is a read-only view.
      const std::set<int>  s // This is immutable.

> Another approach is to just declare member variables 'const'. So you have a > 'const map<int, int>' as a member variable. Except for that to work, you > need to construct that member variable in the initializer list. The body of > the constructor is too late. This likely means taking an already-initialized > map as a constructor argument and copying it (probably exposing > implementation details in the process) or writing a helper that returns the > appropriate map type and copying it. Good optimizers will elide many or all > of these copies, but relying on quality of optimizers isn't portable.

      Foo() : s(helper()) {} // This is a move, not a copy.

<comment><USER7> > const std::set<int> s // This is immutable.

> Foo() : s(helper()) {} // This is a move, not a copy.

First, I'll point out that the data of s is _not_ immutable. The fact that you can const_cast away the const and change the value makes that clear. If people do things like that (or corrupt memory or have race conditions in the code), C++ doesn't necessarily give you clear exceptions or compiler errors. Many of the ways to break things result in "undefined behavior", which might involve data corruption and crashes. I've seen both happen to 'const' objects in production code.

You have a fair point about the move. But not all projects are using C++11 yet. And your use of a 'helper()' builder was actually part of my point as well. The article complained about all the extra code needed in Go to do immutable maps. But it's not true that in C++ you can just add 'const' to a few spots and move on.

I'll also point out that having the 'const' member in 'Foo' likely makes it impossible to implement assignment operators and possibly a move constructor, depending on what you are doing. It's likely if you want to have read-only semantics in your data in C++, you'll have to be aggressive using unique_ptr and shared_ptr so that you can have things like proper move semantics. And that means you'll likely need to be checking for null data.

Point being, you can achieve read-only semantics in C++. But it's not foolproof and it's not as clean as the article seems to imply.

<comment><USER8>
      const std::set<int> s;                   // This is immutable.
      const_cast<std::set<int>&>(s).emplace(); // This is UB.

<comment><USER7> And what do the assignment operators of Foo look like?

<comment><USER8> I'm fixing your incorrect understanding of how const works in C++ and you are choosing to be argumentative.

</comment></comment></comment></comment></comment></comment><comment><USER9> So, once upon a time I wanted to associate information with http connections (as I am accustomed to in every other language I've ever written) just to enable proper http keepalive and debugging through a proxy written in Go.

Ended up with this. [0]

Turns out the Go authors don't think you should do this so I had to majorly alter and recompile the stdlib.

I still appreciate many go tools and the cross platform single binaries that work great on Solaris/Illumos. But in many cases the strong opinions of Go authors really stand in the way of getting work done.

[0]: [https://github.com/doublerebel/publictransport](https://github.com/doublerebel/publictransport)

<comment><USER10> Seems like you got work done by altering the stdlib because it was approachable enough to alter. I don't see what the complaint is here.

<comment><USER9> If you actually take a look at the many changes that had to be made due to the uncreative limitations imposed by Go, you'll see that it was was neither approachable nor maintainable. I'm just stubborn and found it hard to believe it would actually take that much work until I tried it.

This is supported by the fact that contexts have been added, and I won't be surprised to see Go reverse more of their decisions as the language grows and devs prioritize shipping over Go dogma.

</comment></comment></comment><comment><USER11> I keep getting drawn back to Go.

I left it a while back, with a lot of the same frustrations. But then I tried a bunch of other things, and nothing seemed to work better. There seem to always be some frustrations with whatever language. And I found myself craving that simplicity again.

I might get annoyed with it again, and try some other stuff. And that might stick. But I suspect Go is the worst language except for all the others [1].

[1] [http://www.goodreads.com/quotes/267224-democracy-is-the- wors...](http://www.goodreads.com/quotes/267224-democracy-is-the-worst-form- of-government-except-for-all)

<comment><USER12> I did the back-and-forth for several years with Go. What drew me in was promises and wishes, what made me leave every time was realizing I had fallen for the same stupid trick again. It only looks simple because of the features they skipped and the arbitrary limitations they decided on. Once a codebase reaches a certain level of complexity and the need for more powerful abstractions arises, the perceived simplicity is no more.

</comment></comment><comment><USER13> I think you have to work with the language you're in. I had similar frustrations when I first moved into doing some dev in Java and C# and it really bugged me that there was no compile-time guarantee that an Object reference passed as a method parameter would not be modified within that method (as I was so used to using const-refs with in C++)

In retrospect however, I was frustrated with these languages because I was wanting it to be something it wasn't. To my mind, the loss of that feature meant that programs were less expressive - particularly in large codebases - <USER2> had to read methods to work out if something was being modified or not.

To complain here about Go lacking immutability and constness features seems to be the same as complaining that it is missing in Python, Ruby or JavaScript. It's a fact that constness isn't a feature of these languages, if you want these features, use a different language.

<comment><USER14> Sometimes it doesn't cost much if anything to add a feature which improves (type) safety. Now that Python has some type annotation support, it could make sense to also add a const annotation.

Go should have had it from the beginning IMO, immutability can help avoid some coding mistakes and also makes it easier to reason about code. It'a nice match for a language with static typing.

</comment></comment><comment><USER15> The link to the immutable, ordered map that "Java provides" seems to be a link to a third-party library created by Google.

If that's enough for you to consider that a language provides a feature, just wrap the immutable ordered map implementation in your blog post in a library, publish it, and now Go provides that functionality too.

<comment><USER16> Is it possible to write a reusable version of something like this in Go without using interface{}?

<comment><USER17> If "static codegen" is considered OK, then I guess yes, and I guess you can use The Thing[0] to even make them look like actual generics.

Every user of the library will need to run codegen to post-process their source files and generate the relevant instantiations of the "generic" collection.

[0] [https://www.reddit.com/r/rust/comments/5penft/parallelizing_...](https://www.reddit.com/r/rust/comments/5penft/parallelizing_enjarify_in_go_and_rust/dcsq64p/?context=42)

<comment><USER18> So you can do it in Go in the same sense that you can do it in assembly language.

<comment><USER17> Exactly.

</comment></comment></comment></comment></comment><comment><USER19> After a year of programming with Go I have noticed that I, an old C++ programmer, have the reflex to decompose a program in terms of interacting data structures (objects) which encapsulate their behavior. I programmed like that in Go in the beginning. But when I looked at other Go code and especially the std lib code which is easily accessible, I was always amazed at the simplicity of the code. Now I try to write simple programs and this is hard after years of C++ programming.

I don't know if there is a term for Go like programming. I'm tempted to call it minimalism. It may be uncomfortable for people coming from classical programming, but the simplicity of the language and the code is a clear win in the long run.

</comment><comment><USER20> It's so interesting how the hype cycle works. Only 1 year ago, people on HN were bashing Node.js hard and saying that you should use Go instead and everyone was praising Go.

Now it seems everyone is bashing Go. Moral of the story; never buy into the hype whether it is positive or negative. I think that Go is just fine and so is Node.js.

Maybe the author of the article makes a valid point, but no language is perfect and ultimately you have to understand it well in order to use it well.

<comment><USER21> I've been reading HN for a couple years now and can't recall there ever being a consensus positive opinion about Go. All the discussions pretty much looked like this one.

</comment></comment><comment><USER22> Of course the problem he has is that it doesn't follow the hot new immutability fad, and of course he doesn't explain what he needs it for, just links to a stack exchange question which essentially says that it _might_ be useful for _some_ cases.

It seems a lot of these articles, and programming language theory in general, is just complaining about features without any thought as to why they matter. What is this "problem" stopping him from doing? Why does it matter? And why should I abandon a language that has served me very well just because some edge-case feature is not supported?

<comment><USER23> Spot on. As a card-carrying dinosaur I've found myself from time to time needing to read up on some "new" (usually turns out to have been invented in the 60's) coding thing.

Once I figure out what it is, I ask myself what problem it solves (the literature typically doesn't say). The answer tends to be one of:

1\. Saves some typing.

2\. Saves some work when refactoring.

3\. Avoids some class of bug.

4\. Highly useful in a kind of programming I don't do (e.g. compilers).

#1-2 in my experience are much more common than #3-4 and often #1-2 can be dealt with through tooling (IDEs for example).

<comment><USER24> For me, it goes like this:

1\. What the heck is this thing everybody keeps talking about, with an impressive fancy name? It must a major step forward, after all this time, I should finally have a look at it.

and then

2.a. Oh, it's just a big shiny name for something I accidentally kinda do sometimes, I didn't know it bore a name. Why is it suddenly a fad to base everything on this?

or

2.b. Hmmm... right... so in C it would mean doing this and this... hmmm... okay... and why would I want to do that? I could do it in C, if I haven't done it yet, that's because I didn't see the benefit of it, and I still don't.

<comment><USER25> Sounds like a case of the blub.

<comment><USER24> That's a reference to <[http://wiki.c2.com/?BlubParadox>](http://wiki.c2.com/?BlubParadox>)?

Possibly. But I use other languages, and I sometimes use a few of those other features in those languages, but I don't miss them at all when I come back to, let's say, C. They don't fit, or don't bring benefit, etc.

</comment></comment></comment></comment></comment><comment><USER26> Worth reading the comments where someone points out a much simpler and more elegant solution, although it's still not an ideal situation.

As noted in the post, generics could solve this, so I'm looking forward to Go 2 if indeed generics is included. There's a few QOL issues I'd like to see addressed in 2 which would make Go a lot nicer to work with, and I say that as someone who spends most of their time working on Go codebases.

<comment><USER27> Generics don't solve immutability.

<comment><USER26> No, Generics make it possible to create a generic immutable data structure which can be used instead of re-writing the same boilerplate for every data type, which is the authors complaint.

<comment><USER28> You are still talking about immutable data structures, which has nothing to do with generics.

<comment><USER26> No, YOU are still talking about immutable data structures, where as I am talking about the need to write boilerplate code in Go due to lack of Generics.

The blog posts topic was not "immutable data structures", rather the need for boilerplate code in Go because of the lack of generics. The particular example was one of immutable data structures, however that was an example rather than the topic. The author themselves notes that "generics would solve all of the issues above".

<comment><USER28> The comment i replied to :

> No, Generics make it possible to create a generic immutable data structure

I am sure i can read.

<comment><USER29> That was a reply to "Generics don't solve immutability" which was a reply to a post that did not contain the word "immutable" but does contain the word "generic"

James' comment you quote was responding to your comment, which he parsed generically as "Generics don't solve T", with a comment of the form, "Generics make it possible to implement a generic T."

I'm confident you can read, but I'm not so sure about your reading comprehension and critical thinking.

<comment><USER28> I'm confident that you have no clue what you are talking about.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER30> Go's been great for creating a web scraper. But it's been an unmitigated disaster for being able to write the data to a database due to the immaturity of ORMs.

Might as well not pretend something is an ORM if it can't do the fundamentals (like upserts), fully hydrating structs, etc.

<comment><USER9> Similar to doublerebel/publictransport, I ran into some issues hydrating structs the way I expected from other languages.

So I wrote bellows [0], a helper to flatten and expand nested maps and structs. Not quite the same but might help someone.

[0]: [https://github.com/doublerebel/bellows/blob/master/README.md](https://github.com/doublerebel/bellows/blob/master/README.md)

</comment></comment><comment><USER31> Having to encapsulate data to ensure read only semantics seems like par for the course from an OO perspective. In C# (which is 15ish years old at least) I don't think there has been an immutable map until very recently. Also (and this is probably a code style thing) I can't remember having reached for an immutable ordered map in a long career.

<comment><USER32> ReadOnlyDictionary has been around for 5 years, and even before that you could implement this with generics in a way that is re-usable everywhere rather than having to constantly 're-write the wheel' as in Go as the author laments.

<comment><USER31> Yeah lack of generics with the argument of "simplicity" is a special kind of crazy.

I was thinking of the ImmutableDictionary that's more recent. Normally in C#/Java you should rarely expose collection types directly so you almost always encapsulate the list/dictionary and provide e.g GetReservation(string id) to the outside, which makes it less common to even need the readonly types at all. Immutable ones are a whole different thing since they enable proper sharing of whole collections.

</comment></comment></comment><comment><USER33> > You know how much code I'd have to write if this were C++, C#, or Java? > None. They all have reusable notions of an immutable, ordered map.

Java doesn't do that well at all though; its immutable maps can be used in place of mutable maps, since there's no way of having a Map interface that extends ImmutableMap to add extra operations, so you can get nasty runtime surprises if you've got the wrong one. Conversely, if you want a mutable map keyed on a non-trivial structure, you have to do just as much boilerplate as the author complains about to set up private members, setters, builders, etc.

Obviously C++ can do it quite readily, but nobody accused it of lacking features.

This is really just another use case for generics, and the discussion there is well-trodden. Go probably isn't the language for you if you value generics more highly than fast compile times, native binaries, etc, but I'm not sure why that still seems to come as a surprise.

<comment><USER34> Lombok takes care of most of such boilerplate in Java.

Code generating tools for Go also exist. The difference is that they produce source code, while things like Lombok, or any reasonable macro system, never surface intermediate code, unless explicitly asked.

<comment><USER33> That's still solving the problem by working around the language though. And surely it's the job of your build system to automate and hide the codegen process? Admittedly go build & go generate don't do that well, but they aren't the only options out there.

</comment></comment></comment><comment><USER35> I am not sure where the authors exact requirements fit in the greater picture of the desired application. But one important tool which works great in Go is functional representation. If you want e.g. an immutable map, make it a structure with private fields, and give access vial functions (methods). The first comment to the article describes a nice example of this approach.

I often read criticism of Go which is based on a missing "feature". In my experience, implementing these features is surprisingly easy in Go, as the building blocks are all there. In this respect, Go has some resemblance on Lego :).

My background contains a lot of Scheme/Lisp, so abstracting things with functions comes natural to me. It turns out that Go has basically the equivalent function concept (first class functions, closures, ..) so enables all the powerful abstractions coming from them.

<comment><USER36> The author discounts this as a good solution because you'd have to re- implement the structure and functions for _every single type_ you might put in the map; i.e. that would be a valid solution iff Go supported generics, but it does not.

<comment><USER37> Go's introspection tools do provide enough support to offset the lack of generics, at the cost of having to write your own type checks, and at the cost of having runtime instead of compile time type checking.

But it can be done.

<comment><USER34> Anything Turing-complete could by definition be run on a Turing machine. But Brainf*k, a straightforward Turing machine implementation, seems less productive than almost any other language.

</comment></comment></comment></comment><comment><USER38> OT: I recently learned that the newer ETH client Parity is written in Rust and much faster than the older Go-based Geth ETH client.

Guess it is due to a different architecture and design which makes the client faster (e.g. chaindata is smaller) but does anyone know why they chose Rust instead of Go for the Parity client?

<comment><USER39> I would think having better safety guarantees is a big reason. Rustc can detect data races, which I'd say it's very useful with an Ethereum client.

<comment><USER40> Go can detect data races as well, not sure it's the reason. Probably performance.

<comment><USER41> Go _may_ detect data races if your test suite triggers them and you opt in to use the race detector.

Rust rejects programs with data races unless you opt out by explicitly marking code in question as unsafe.

Quite a bit of a difference there.

</comment></comment></comment></comment><comment><USER42> I personally tend to choose Go for newer projects as I'm looking for the efficiency of C and safety/elegance of more "modern" languages. However, I always keep an eye on D and Nim. It seems these are the only two languages that can compete with Go in both above aspects.

<comment><USER43> Go is nowhere near the speed of C. But why not consider Rust?

<comment><USER42> The Rust team decided to promote Rust as a "systems programming" language. And even though it can obviously do much more, and the bindings for most popular libraries are available [1], this label somehow attracts programmers who are more systems oriented and I think the language will continue to develop in this way, whereas Go/D/Nim will tend to try to be more general. [1] Imagine how surprised I was the other day to find Rust bindings to Allegro, a venerable game programming library from the old days of DOS and DJGPP...

<comment><USER44> Rust is getting to be popular for graphics and games, precisely because it has the performance of, and easy interoperability with, C, without GC, and in a much more modern environment.

Low memory requirements means portability to memory-constrained platforms. Interoperability with C presumably also implies easier access to low-level resources such as GPUs, and being able to take advantage of existing libraries for C, such as SDL.

People are also experimenting with Go in the same space, but it seems much less promising. Go is notoriously slow at calling C (or being called from C) due to goroutine context save/restore. It also has GC and a runtime.

</comment></comment></comment></comment><comment><USER45> I asked this same question on reddit. And I am not trying to be snarky. I have programmed a long time and I cannot think of a single time where I thought, "this would be easier with generics."

Where is the list of problems that are easier to solve with generics?

<comment><USER34> Channels, maps, and arrays are generic in Go. They solve _a lot_ if key problems.

The problem is that you can't create your own generic structure. Try building a statically type-safe red-black tree, or something like that, without copy- pastig the implementation for each new node data type.

Higher-order functions are also basically impossible.

<comment><USER17> > Channels, maps, and arrays are generic in Go.

Pointers and slices as well, and of course the various builtin operators or functions used to work on them (make, range, len, close, …).

</comment></comment></comment><comment><USER46> The OP suggests "some form of codegen" as a way of getting around the Go dev team's, shall we say ... unusual hostility toward generics. But that way lies C++ templates, which were originally meant to be implemented as macro- generation -- and which lead to the messiness and complexity of C++ builds which were one of their major reasons for doing a new language in the first place.

<comment><USER47> Templates don't help C++ build times, but the root problem is that it uses the C model for compilation (several sequential passes).

D compiles faster than Go usually and with templated generics all over its std lib

</comment></comment><comment><USER48> It's an interesting point of view that regards those four items as necessary requirements for a data structure, and then regards the 24 lines of code needed to implement it as a massive "explosion of code." It would be interesting to know what language is considered the ideal tool for someone who looks at things that way. Something functional?

</comment><comment><USER12> Go contains many good ideas that may be carried over to more pragmatic languages. Using it for anything beyond simple, self-contained command-line tools and network servers never really worked out for me. And that makes sense, since it was explicitly designed to scale over groups of inexperienced developers at any cost; the opposite of my needs. Modern C++ runs circles around Go for more complex software, and it provides the tools to add as much convenience as needed on a case-by-case basis. I recently ported a 7kloc Go codebase to C++ and wrote down some of my impressions here: [https://github.com/andreas-gone- wild/blog/blob/master/rewrit...](https://github.com/andreas-gone- wild/blog/blob/master/rewriting_good_idea.md)

<comment><USER42> Your blog entry you're referring to contains surprisingly little information to support the arguments mentioned in your posts. Maybe if you provided some specific example of why a given fragment of code works better in C++ rather than Go, we could have some interesting discussion.

<comment><USER12> I can't take responsibility for your expectations, differences between languages and their consequences for the code we write is a tricky thing to quantify. I have no proof and I'm not here to argue, only to share my authentic experience in the hope that it helps someone else. Both codebases are clearly linked from the post for comparison. Feel free to ignore my advice if Go is working out for you.

</comment></comment></comment><comment><USER49> Go was explicitly designed to be a simple language, without a rich tapestry of data structures to suit every use case.

Languages are like tools. If you need a saw, use a saw, instead of complaining about the knife you are using.

<comment><USER50> No, languages are like toolboxes, they provide you with set of tools.

<comment><USER51> No, languages are like Ogres, they have layers.

</comment></comment></comment><comment><USER52> Out of curiosity, what is the use case for immutable structs? (asking as I'm a ruby/js/go dev and as such I've never used such idiom)

<comment><USER37> It's a code safety thing. If you create it and the compiler makes it immutable, then you can't screw it up later with an accidental mutation.

Basically, something that takes coder discipline in Ruby/JS/Go is handled a compiler/runtime enforced restriction.

<comment><USER52> Oh, I see, thanks. I get now how it can be a problem when you're used to rely on it and it's not in the language.

</comment></comment></comment><comment><USER53> Where Google is SO GREAT that everyone could only follow them, never doubt any thing, or it would turn out to be that you are stupid

</comment><comment><USER54> I don't know if you are the author of this post or not but try Crystal. It fixes all the things wrong with Go in my opinion.

</comment><comment><USER55> > That's an infuriating amount of code to write

24 lines, really ?

<comment><USER56> It was down to 10 after a suggestion in the comments. Given the number of times you might actually need an immutable, ordered map (total count so far in _my_ life = 0), having to write 10 lines of code _does_ seem like an odd reason to be furious with an entire programming language.

</comment></comment><comment><USER57> In addition to what you describe, my other big complaint with Go is the attitude you find from the devs, in threads discussing these types of challenges.

"Oh, you think you want an ordered map? No you don't. Your reasons are stupid. You're stupid. Now gtfo and start using Go to write things we deem to be respectable."

<comment><USER12> Agreed, one of the most dogmatic communities I've had the misfortune of stepping into. But then that's pretty much a requirement given the amount of pretending they need to pull off to keep their bubble intact.

</comment></comment><comment><USER58> The sorted map alternative is really only viable for insert-only maps or really small maps. You'd have to remove keys from the list when they're removed from the map.

Most sorted map implementations are based on trees.

</comment><comment><USER4> In any production grade application where order and persistence is truly important you need to supply a time stamp anyway and at that point you'd want to just store your animals in a database. This is pretty trivial imo.

If you just want a very temporary ordered list you could probably use a channel.

</comment><comment><USER59> What is the perfect language?

<comment><USER60> Let's just say it can't have a type-system limited to not understanding generics.</comment></comment>


JuliaCon, first-ever conference for the Julia language - <AUTHOR> http://juliacon.org/

<comment><USER2> JuliaCon's been in the works for a while now. I'm helping organize it, feel free to leave any questions here and I'll try to give you a prompt response.

<comment><USER3> It would be great for the people that cannot fly to the US if you stream online the talks

<comment><USER2> We'll definitely record the talks and post them online -- but whether we'll have live-streaming is TBD.

</comment></comment></comment><comment><USER4> I am certainly excited. I think this will be a fantastic event.</comment>


Reactive Animation with SVG, ClojureScript and Om - <AUTHOR> https://nvbn.github.io/2015/05/28/svg-animation/

<comment><USER2> I've been pleasantly surprised by how performant clojurescript and its various react wrappers are. I'm able to sort, display and animate 10000 divs on a pretty old macbook pro with really simple code on this page [http://akjetma.github.io/#/sorter](http://akjetma.github.io/#/sorter)

cljs source: [https://github.com/akjetma/akjetma.github.io/blob/master/src...](https://github.com/akjetma/akjetma.github.io/blob/master/src- cljs/home/page/sorter.cljs)</comment>


How Being Connected Disconnects – Social Media, Depression, and Your Brain - <AUTHOR> https://stephenhaunts.com/2018/02/28/how-being-connected-disconnects-social-media-depression-and-your-brain/ <comment><USER2> Extremely informative article. For me I'd like to see sources but from what I've read over the past year a lot of what he said is true.

I wonder if VR could replicate the feeling of physically seeing someone as the author suggests to dealing with depression.</comment>


Mac OS X 10.7, still no DHCPv6 - <AUTHOR> http://seclists.org/nanog/2011/Feb/1906 <comment><USER2> The issue here is that there are two different ways to assign addresses in IPv6: SLAAC and DHCPv6. Apple only wants to support SLAAC; they think it's a waste of their time to have two different protocols to do the same thing. Unfortunately, a lot of ISPs want to only support DHCPv6, because it (easily) supports an audit trail and SLAAC doesn't.

I predict that things will turn out fine because people will converge on speaking SLAAC between OS X and the router and DHCPv6-PD between the router and the ISP. But you _have_ to have a router.

<comment><AUTHOR> Apparently OS X now supports supplying DNS servers through SLAAC. Previously this wasn't supported, so you'd still need a DHCP(v4) server to fully support a client.

<comment><USER3> > Apparently OS X now supports supplying DNS servers through SLAAC

i thought this was done via router-advertisements only. slaac is used to configure v6 host addresses, and once that is done, other network parameters e.g. rdnss etc. can be obtained either via RA or DHCPv6 (the 'O' flag in RA messages)

</comment></comment></comment><comment><USER4> To Apple's credit, they are one of the few vendors of consumer-grade routers who made it trivial to set up IPv6 (Airport Extreme/Express), including tunneling.

<comment><USER5> Also to their credit, Lion hasn't even been released yet.

</comment></comment><comment><USER6> Personally I love the first response from <http://seclists.org/nanog/2011/Feb/1907>

        what is it about ipv6 which attracts religious nuts?

<comment><USER7> What do you love about this response? What actual value does it convey besides snideness toward people that actually care about what they work on?

<comment><USER6> On what basis should Apple be forced to provide a DHCPv6 client as part of their OS? They have 10% of the market, and the number of IPv6 users I imagine is going to be a niche within their niche.

I appreciate that DHCPv6 support may be useful for some apple customers, but in the grand scheme of things it's probably in a minority, perhaps best served by the app store.

I also like the idea of references to 'religious nuts' being tied to apple users, not all but specifically of the fanboy type.

In short, I find the statement poetic. The value it adds is humour. You might not agree as humour is subjective, but it works for me.

<comment><USER8> Sorry, but are you saying "almost nobody needs IPv6, so why care"?

That's why we still can't have nice things.

<comment><USER6> No, on the contrary. What I'm saying is that IPv6 doesn't have enough traction, there's a finite number of developers and there are features that will be used by more people that should take more priority.

To put it another way, a native IPv6 client isn't necessarily as innovative as some of the other pending features. Not having DHCPv6 native isn't the end of the world and is a minor annoyance for a few. Putting a team on implementing DHCPv6 for a small subset of users takes people away from things like bugfixes. DHCPv6 is not trivial.

If Apple found a feature that relied upon IPv6 then I imagine a DHCPv6 client would be a priority. As it is, in the meantime you'll have to settle for things like <http://klub.com.pl/dhcpv6/> \- which at least works on leopard but you'll have to compile it yourself and it's not complete.

For some info on what is already possible with IPv6 on OSX take a look here: <http://ipv6int.net/systems/mac_os_x-ipv6.html>

<comment><USER8> Sorry for misunderstanding, now I see. Thanks for the explaination!

</comment></comment></comment></comment></comment></comment><comment><USER9> They don't have to yet. Really, IPv6 is not going to be an issue this year at all. That ends up just being a patch Apple can come up with later. I don't see the big deal here.

<comment><USER10> Right. The Apple developers have been working very hard on 10.7, and it's kind of sad to see a story focusing on some vague subject (which, as you say, can be applied as a patch anytime later when it becomes more relevant) that is lacking. In my opinion, it's better to offer constructive criticism on the new stuff that they've been working on for this release.

</comment></comment><comment><USER11> I thought IP assignment was built into IPv6?

<comment><USER12> Stateless autoconfig is, but stateless is bad for ISPs and network administrators because it means anyone will be able to get an IP just by plugging their machine into the network. With only 3.40282367 × 10^38 IPs available, you can see why they would want to ration them.

<comment><USER13> At current population growth, we will run out of addresses—if we give every human one IPv6 address—in only ~6000 years, or—if everybody should get 1000 addresses, for all those internet-enabled toasters and such—in ~5500 years. Obviously we already need to plan ahead and carrier-NAT IPv6.

</comment></comment></comment><comment><USER14> For those who don't know what DHCP v6 is it is the ipv6 version of DHCP. See <http://en.wikipedia.org/wiki/DHCPv6> for more information.

</comment><comment><USER15> I still care more about ZFS :/</comment>


Ask HN: How different two landing pages need to be to avoid duplicate content? - <AUTHOR> I was looking into Zapier and its strategy of creating thousands of landing pages for every combination of tools possible. I was wondering how different the pages need to be to avoid being flagged as duplicate by Google? <comment><USER2> I worked once for a company that publishes articles for different countries. Sometimes they would publish the same article in different domains because they were relevant to all. The only thing they would worry about to avoid that duplication problem was to manage rel=canonical element in every page.

<comment><AUTHOR> My problem is that I want to rank for different and many terms that do not have a lot of search traffic (10 per month).

I was looking into a wordpress plugin that can do this at scale [https://www.mpgwp.com/](https://www.mpgwp.com/) but not sure how different these landing pages need to be.</comment></comment>


Show HN: HectoFlock – Simple free email api - hf-api https://hectoflock.com/ <comment> hf-api Built a simple RESTish api over the weekend, along with a basic UI to test it out.</comment>


How MediaDefender got hacked: The Pirates Can't Be Stopped - <AUTHOR> http://www.portfolio.com/news-markets/national-news/portfolio/2008/01/14/Media-Defenders-Profile#page1

<comment><USER2> I got to this part (well in): "Sweden is a file sharer's heaven. Its laws protect internet service providers from being sued for what passes through their networks, which gives them little incentive to turn downloaders over to groups like the R.I.A.A. or the M.P.A.A."

and I thought the article is kind of interesting once you get past the smarmy bullshit. But at that particular part the bullshit seemed to overflow the container. I'm reasonably sure that in most countries, including the USA, ISPs are protected from being sued for what passes over their networks. I did read the rest of the article.</comment>


Solution driven design - <AUTHOR> http://blog.adimofunne.com/solution-driven-design/ <comment><USER3> Really nice and insightful post. Two thoughts came to mind when I was reading:

1) The temptation to write code because it will feel good to write it - <USER2> it's a really clever solution, or maybe you've been itching to try some new framework or library - is really, really hard to resist. But it's super valuable to resist it.

I find it's best to think of my job as a developer not as being to write code per se but instead to solve problems related to computation as efficiently as possible. Finding a third-party SaaS product that does what we need is almost always much better than writing a new microservice from scratch. Jeff Atwood has written some really insightful stuff about this [0].

I'm inclined to think that actually writing new code will only become a smaller and smaller portion of software engineering going forward over the next, say, five to twenty years. Between the profusion of open-source tools and third-party services developers seem to be spending more and more time stitching things together. The job seems to increasingly be about evaluating and choosing between various off-the-shelf components rather than implementing algorithms from scratch.

2) On an entirely different note:

> Never make a move JUST because it is your turn to play.

This quote made me think of a common conversational phenomenon. People will tend to talk when they feel like someone should be talking, whether or not they really have something they want to say. For example, in an interview, if you don't respond when it would naturally be your turn to respond the other person will likely keep talking after a short pause, and likely slightly awkwardly. It's kind of funny and be kind of mean, but it can be a powerful way to get a person to say more than they initially thought they should about something.

[0] For example: [http://blog.codinghorror.com/the-best-code-is-no-code-at- all...](http://blog.codinghorror.com/the-best-code-is-no-code-at-all/)</comment>


Huawei Abandons Microsoft's Windows Phone - <AUTHOR> http://www.fool.com/investing/general/2014/08/30/microsoft-loses-a-windows-phone-partner.aspx

<comment><USER2> Essentially ...

We have tried using the Windows Phone OS. But it has been difficult to persuade consumers to buy a Windows phone. It wasn't profitable for us. We were losing money for two years on those phones. So for now we've decided to put any releases of new Windows phones on hold.</comment>


How to write a simple operating system - <AUTHOR> http://mikeos.sourceforge.net/write-your-own-os.html <comment><USER2> I'm not sure why, but whenever I see a link pointing to sourceforge my instant gut reaction is that it'll be a decade+ aged code that doesn't work properly anymore. I always avoid sourceforge when searching for solutions. I don't know why I have this bias

<comment><USER3> Which is sad, that active open source projects are now synonymous with a single companies service built around a single VCS.

<comment><USER4> It's not necessarily centered around Github (although many open source projects are hosted there) -- there's also Gitlab, Bitbucket. The bigger reason that there's a reaction against SourceForge is that it has a long history of deceptive packaging practices, shady ads, and injecting malware into the packages they were distributing. Now SourceForge is under new, better management, but it's hard to kick that reputation.

</comment></comment></comment><comment><USER5> There's also "How to Make a Computer Operating System in C/C++" in a nice, readable Gitbook: [https://samypesse.gitbooks.io/how-to-create-an-operating- sys...](https://samypesse.gitbooks.io/how-to-create-an-operating- system/content/)

<comment><USER6> Unfortunately, nothing more seems to be written after the "Memory management: physical and virtual" chapter...?

[https://github.com/SamyPesse/How-to-Make-a-Computer- Operatin...](https://github.com/SamyPesse/How-to-Make-a-Computer-Operating- System)

Disappointing...

</comment></comment><comment><USER7> (2014) should be in the title.

[https://web.archive.org/web/20140719115200/http://mikeos.sou...](https://web.archive.org/web/20140719115200/http://mikeos.sourceforge.net/write- your-own-os.html)

Maybe even (2011): [https://news.ycombinator.com/item?id=2100115](https://news.ycombinator.com/item?id=2100115)

</comment><comment><USER8> If one is going to use an emulator to test an OS, why be confined to the x86 ISA and all the historic warts of the PC?

Design a decent computer first, then write an OS for it.

<comment><USER9> Or just use a simple, stack machine. Or a RISC CPU. Preferrably on an emulator or FPGA already. Oberon did this.

<comment><USER10> I would like to hear more about Oberon OS running on an emulator. Might you have a link, this sounds interesting?

<comment><USER11> I think the OP, when saying _" Preferrably on an emulator or FPGA already. Oberon did this."_ meant that Oberon (second edition; the first one ran on a NS32032) ran on a FPGA ([https://lists.inf.ethz.ch/pipermail/oberon/2013/006922.html](https://lists.inf.ethz.ch/pipermail/oberon/2013/006922.html), [https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Comp...](https://www.inf.ethz.ch/personal/wirth/ProjectOberon/PO.Computer.pdf))

<comment><USER10> I see that makes sense, thanks for the clarification and the links. The more I hear about Oberon the more intrigued I am. Thanks for the links.

</comment></comment></comment></comment></comment><comment><USER12> Well-written primer, so cool to see something complex reduced to its simplest form that captures the essence.

Funny to read how PC memory can be "millions of bytes on modern machines". To be fair, I was using a computer with only 128MB as recently as 7 years ago :-)

<comment><USER13> To be fair, that's still millions of bytes.

<comment><USER14> But, like, less millions.

</comment></comment></comment><comment><USER15> Awesome. We need resources like this to get people into low level programming.

The best class I ever took when I was an undergrad was a class where we built our own OS for a Data General Aviion workstation. Our systems staff was already under contract to help port 4.3BSD to the Aviion, and they had tons of test hardware and docs. So one of the group taught an OS class where whey basically turned us loose with a cross-toolchain and a manual and let us hack all semester. I think by the time we were done, we had something that booted and interacted with a very basic shell (but could not fork, no multi-tasking, no mem prot, etc).

If it were not for this class, I think the more theoretical OS class that I took later in grad school (all dreadfully boring queueing theory style stuff) would have turned me off to doing OS work. Instead, I've had a career doing lots of low-level stuff (drivers, OS ports to new CPUs, network stack improvements, etc).

</comment><comment><USER16> Discussed in 2011: [https://news.ycombinator.com/item?id=2100115](https://news.ycombinator.com/item?id=2100115)

</comment><comment><USER17> Some resources for writing OSes:

\- Andrew Tannenbaum's MINIX, and his Operating system books

\- The OSDev wiki: [http://wiki.osdev.org](http://wiki.osdev.org)

</comment><comment><USER18> Anyone know any such resources for the Raspberry Pi 3? Only found some for the first Raspberry Pi

<comment><USER19> Writing an OS for the Raspberry Pi is harder work that it should be because of the Broadcom SoC. It's a closed, proprietary chip that does a lot of the heavy lifting (including the initial boot mechanism). My advice to you if you want to write an OS targeting a developer board is to use one of the many open hardware platforms rather than the Raspberry Pi specifically. The Raspberry Pi's are better for tinkering with stuff that runs atop of the OS rather than designing kernels.

<comment><USER18> Which platforms (hardware) are good for this? I mostly want to mess with Linux on the Pi, but wouldn't mind trying some assembly on a cheaper board to learn more about bare metal programming.

</comment></comment></comment><comment><USER20> Readers understand this isn't close to being an operating system right? You get the first boot sector of a floppy for free from the BIOS. This isn't even as complex as the most simple boot loader. It doesn't handle loading more sectors of the floppy let alone being like an OS.

It's hello world in assembly, loaded onto the first sector of an emulated floppy. That's neat, but nothing to do with operating systems. Other than you've now learnt the very first stage of bootstrapping from a floppy disk back in the 90s. Which is cool, and good info to know and start out with.

I get the vast majority of people seeing this post have probably only ever experienced nodejs, or Ruby on Rails or something equally high level. But this is trivial with respect to an operating system or even a boot loader.

</comment><comment><USER21> Seems cool, anyone know how this compares to similar projects out there? In thinking of doing an OS course soon as a refresher.

</comment><comment><USER22> I wonder if assembly languages will have a comeback now in the era of virtualization ... ?

</comment><comment><USER23> What kind of hardware would I require to do this project on my own?

</comment><comment><USER24> That's not an operating system; it's a trivial kernel. Linux, in all its complexity, is still not an operating system; it's a kernel.

For anyone seriously interested in building something less trivial, I recommend starting here: [http://wiki.osdev.org/Getting_Started](http://wiki.osdev.org/Getting_Started)

<comment><USER25> I've always thought of the operating system basically being everything in kernel space and as user space being peripheral.

I think we both have our biases.

<comment><USER26> No, we don't have 'our biases' you're just plain wrong.

An operating system is _everything_ needed to run a machine, a kernel is the foundation on top of which all that user space code runs.

So from a unix perspective everything in /usr/bin /bin /usr/local /etc, /boot and whatever other directories are there after you install makes up the operating system. Whatever you install after you get the base system up and running are applications, the programs we run on top of operating systems.

Now, the line can get a little blurry: is 'X' part of the operating system or not? Is your window manager, are the various built ins? Probably yes, but not always.

Is a text editor part of your OS? Probably not, but there is a good case to be made for the fact that without a text editor of any kind an operating system is fairly useless. But that doesn't make 'libreoffice' or 'sublime' part of your OS, those are applications.

For myself, I draw the line where a minimum base install stops, so everything up to and including window manager for a desktop machine (for a headless machine or server much less than that).

From a very technical perspective you could have an operating system that consists of just a kernel and _one_ user space program, in that case the kernel really would be the entirety of the operating system. But that's a pretty rare case (though it can be done).

This is all written from a UNIX/Linux perspectie, for OS you might draw the lines a little different and for MS/Windows different still. But those basic principles apply.

<comment><USER27> And what about a microkernel environment where device drivers, filesystems, etc. are in user space?

<comment><USER26> They're _still_ part of the operating system.

What you are trying to get at is that everything in userspace is not part of the kernel and that is correct. But the kernel does not make a complete operating system.

This is also the reason why the whole GNU/Linux thing existed, without the userland that GNU provided the Linux kernel would have been pretty useless.

<comment><USER28> My position is a little in between, an OS is the finished you are delivering.

Linux is an OS, just a terrible one without any GNU.</comment></comment></comment></comment></comment></comment>


Tech CEO who allegedly hit girlfriend 117 times gets venture capital job - <AUTHOR> https://www.theguardian.com/society/2016/dec/19/gurbaksh-chahal-domestic-violence-new-job-venture-capital <comment><USER2> The VC firm is:

      NIN Ventures
      Silicon Valley Office:
      Hero City at Draper University 55 E. 3rd Ave.
      San Mateo, CA 94401
      (312) 953 0930
      firstname.lastname@example.com

Gurbaksh Chahal is listed as being on the Board of Advisors:

[https://nin.vc/team.php](https://nin.vc/team.php)

</comment><comment><USER3> > We have great faith in Mr Chahal and his contribution to the ad tech > industry

suddenly this story isn't so surprising.

Title should be:

Company in shitbag industry hires another shitbag.</comment>


Show HN: Project Pingback – Find and convert potential customers on Twitter - <AUTHOR> https://www.projectpingback.com

<comment><USER2> Interesting, I would pay for it if it can find a good list of Tweets. I'm using mention right now. I don't see how I can mark some tweets as not interesting/not relevant. I would really need a way to hide Tweets I don't care about, block particular user. And hopefully your service could learn over time what I link and don't like.

<comment><AUTHOR> Thanks for the feedback. We'll be adding those features sometime during September.

</comment></comment><comment><USER3> Interesting, I have built a similar product for a slightly different vertical, but we both have things in common. I'd suggest that you focus on the search algorithm so you can return bullet proof tweets and then automatically post predefined replies. I'd be happy to help, let me know.

<comment><AUTHOR> I'd have to agree. The more "solid" tweets we can find, the more feasible something like automated tweeting will be. Refining our filters will be our focus - we've mostly got data collection down, I think.

</comment></comment><comment><USER4> I wrote something similar, but Twitter got pissy about me sending unsolicited messages.

So while I could locate customers, Twitter didn't like me contacting them.

</comment><comment><AUTHOR> Keep in mind that this is in somewhat of a beta stage, so we still have a lot of work to do. We'd definitely love some feedback.

</comment><comment><USER5> the example engagement ("I've always found Alienware to be reliable....") is pretty damned deceptive. I'm not often a moralizer but this seems to step over some kind of line.

don't get me wrong, I'm not naive enough to believe this is anything new. it's just a little disconcerting to see it laid out so plainly.

<comment><AUTHOR> Why? If alienware's tweeting from their official account (which is how they should be using the site), then both sides are fully informed. This allows alienware to offer special discounts, etc.

<comment><USER6> The use-case in your comment sounds fine. The example on your page is not, as the "I've always found..." comment is not from Alienware. It's intended to be deceptive.

</comment></comment></comment><comment><USER7> I think it looks useful. But I could not edit the existing project.

<comment><AUTHOR> Thanks for letting us know. We've fixed that bug now.</comment></comment>


Can't we redo internet? - <AUTHOR> Hello, if the internet including the DNS servers are just computers tied together, and with this new legislations, can't we just group together and create a better internet? It would probably cost too much, but I guess there might be bigger companies to support this? <comment><USER3> "Cost too much" is the understatement of the decade here. Of course, if you handwave away the hypermassive problem, then there is no problem ;) Except maybe the transition between the old and the new Internet and whatnot - <USER2> IPv4 and IPv6 for a similar brouhaha.</comment>


The Difficulty of Untraining Drug Dogs How to Smell Marijuana - <AUTHOR> https://melmagazine.com/can-an-old-drug-dog-learn-new-tricks-like-how-not-to-smell-marijuana-in-states-where-its-legal-5f8293233187 <comment><USER2> >What are we going to do about all of the victims of the Drug War sitting in jail while weed entrepreneurs make bank amid the Green Rush?

This is one of the particularly nasty bits of hypocrisy our society has allowed to flourish over the past decade. We now have a situation where (almost exclusively rich white men) are making millions of dollars selling legal marijuana on an industrial scale, as red state prisons sit full of petty dime bag dealers (overwhelmingly people of color) doing decades of hard time for something that is not even a crime a few hundred miles away.

<comment><USER3> That's a tough one. And I think these sentences need to be reviewed and some of them revoked.

However, the underlying problem was that these people who are currently in jail were doing something that was illegal at the moment. Their sentences need to be revised, but it's probably not something I'd exonerate from all guilt.

According to the Ex Post Facto law [1] definition, a court could issue amnesties or pardons for scenarios like this, but I don't think it would be an automatic process over all convictions.

>> Disclaimer: IANAL

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

<comment><USER4> Given that:

Nixon advisor John Ehrlichman told a journalist that the main purpose of the War on Drugs was to attack Nixon's "enemies" and that they knew the WOD was based on lies about drugs: > "You want to know what this was really all about? The Nixon campaign in 1968, and the Nixon White House after that, had two enemies: the antiwar Left, and black people. You understand what I'm saying? We knew we couldn't make it illegal to be either against the war or black. But by getting the public to associate the hippies with marijuana and blacks with heroin, and then criminalizing both heavily, we could disrupt those communities. We could arrest their leaders, raid their homes, break up their meetings, and vilify them night after night on the evening news. Did we know we were lying about the drugs? Of course we did."

[http://www.theatlantic.com/health/archive/2012/03/the-war- on...](http://www.theatlantic.com/health/archive/2012/03/the-war-on-drugs-how- president-nixon-tied-addiction-to-crime/254319/)

I think those people should not only be exonerated, but also treated as victims of Nixon corrupt politics and given hefty compensation.

Advocating for the War on drugs should be a criminal offence.

<comment><USER5> 90% of the world's heroin supply is from the Poppy fields in Afghanistan, and everyone knows where those fields are. Do we (the USA) destroy those plants in our Drug War efforts... nah. Some reports say US troops even guard them.

<comment><USER6> Many reports.

<comment><USER5> I believe it was in the book "Everything We Had" (although I am not certain of the source, because I read about it a while ago) that the only reason we were in Nam, was so the CIA could protect the Poppy plants which they needed to fund their Black Ops.

<comment><USER7> you need to read better books

<comment><USER5> Sorry, did I say that out loud??

<comment><USER5> It seems it was not in the aforementioned book after all, which btw was a good read.

[https://en.m.wikipedia.org/wiki/Allegations_of_CIA_drug_traf...](https://en.m.wikipedia.org/wiki/Allegations_of_CIA_drug_trafficking)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I was under the impression that drug dogs we're mostly ineffective[1] anyway so this shouldn't be an issue. I guess this article would imply I'm misinformed. I'd welcome correction.

[1] [https://www.washingtonpost.com/news/the- watch/wp/2015/08/04/...](https://www.washingtonpost.com/news/the- watch/wp/2015/08/04/federal-appeals-court-drug-dog-thats-barely-more-accurate- than-a-coin-flip-is-good-enough/?noredirect=on&utm_term=.f4481f79bd6e)

<comment><USER9> Drug dogs don't need to be effective; they just need to establish probable cause.

<comment><USER10> To put an even finer point on it, drug dogs don't need to establish probable cause, and they don't, they just provide a back door around the 4th Amendment.

<comment><USER11> Yes drug dogs need to establish probable cause, that is how they meet the requirements of the fourth amendment.

</comment></comment></comment></comment><comment><USER12> Considering that laws are 'supposed to be' part of the structure that helps society be pleasant/bearable for its members...

On the one hand you have people who inhale smoke from a burning plant despite there being a law against doing so.

On the other hand you have people who want to lock a human being in a cage, sometimes for the majority of their lives, because of the abstract notion that they 'broke a law'; no matter what that law was or whether it's reasonable or justified.

I know which kind of person I'd rather be surrounded by in society. Seeing the way people toss around the concept of incarceration so lightly is somewhere between monstrous and disgusting to me.

<comment><USER13> While smoking marijuana is victimless crime selling it is certainly not. There are a lot of laws one might need to break to successfully sell drugs. Also a lot of convicts financially supported Mexican cartels and bear some responsibility for their crimes.

At the end of the day they new all the risks, chose to play this game to make fast easy money, and they lost. It is like casino where you could win $5M or lose and spend 5 years in prison. Now letting the winners to keep the money but let losers go would not be exactly fair.

<comment><USER14> >Also a lot of convicts financially supported Mexican cartels and bear some responsibility for their crimes.

Lawmakers created the Mexican cartels, and therefore bear most of the responsibility for their crimes?

>letting the winners to keep the money but let losers go would not be exactly fair.

Frankly it feels that you care much less about fairness than you care about enforcing terrible laws.

</comment></comment></comment><comment><USER15> Dogs are actually trained to always "signal" the handler. You can't swear a dog in under oath- instant probable cause.

<comment><USER16> Yeah, I assumed this was the standard mode of operation -- when officers are "sure" there are drugs, then bring in the dog as an "impartial observer" to show probable cause since everyone knows that dogs don't lie. Unless, of course, they are signaled to lie by their handler.

</comment></comment><comment><USER17> Maybe they can become companions to people who get out of prison once their marijuana convictions are tossed.

<comment><USER3> Imagine the dog going bananas every time his owner tries to smoke a joint.

<comment><USER18> As long as smoke-time includes a fun ball or toy for the dog, he'd be in heaven. They love the smell of weed cause it means a reward.

</comment></comment></comment><comment><USER19> > cocaine is odorless until its fermented in a human environment

What does this even mean?

<comment><USER20> it sounds like unsubstantiated nonsense. Cocaine, like many chemicals, has a particular odor.

<comment><USER21> I'd love to see a dog detect the odor of an undoped polycrystalline silicon wafer.

<comment><USER22> Ground silicon wafer smells like blood.

</comment></comment></comment></comment><comment><USER23> > You can't retrain dogs when it comes to marijuana," adds James Woodford, a > forensic chemist who created and patented the odor of cocaine that serves as > the industry standard when it comes to training dogs to sniff out the > substance.

That sounds like a fun job... I wonder how he did his research?

<comment><USER24> He doesn't like cocaine, he just really likes the way it smells.

</comment></comment><comment><USER25> I am not sure retraining is necessary. Even in states where weed is legal, they probably want to clamp down on "illegal" (untaxed) weed. No one has to go to jail or even lose their stash - I expect a fine would suffice.

That pushes the question as to whether "regular" law enforcement would involve itself in weed searches or if a state revenue department would handle it. Moonshiners might have a useful perspective on this.</comment>


Is my new app infringing on the copyrights of Justin Timberlake's movie? - <AUTHOR> http://fwb-game.com

<comment><AUTHOR> I made an app called 'Friends with Benefits' (fwb-game.com) and soon found out that Justin Timberlake has a new movie (fwb-movie.com) coming out in a few months time with the same title. So I decided that it might be a good idea to repackage my app a little bit to leverage the exposure that the movie will get.

But I'm not sure if I've gone too far.

The logo, for example, using the same color scheme, but I didn't copy it exactly from them, I used a slightly different font.

I'm just wondering if what I did will get me in trouble.</comment>


Google Purchases 3 Gigawatts of Clean Energy: Matches 100% of 2017 Energy Needs - <AUTHOR> https://twitter.com/Google/status/936279094605504513?lipi=urn%3Ali%3Apage%3Ad_flagship3_detail_base%3BbpkgxwfWT4qoIhDGb8SNEQ%3D%3D <comment><AUTHOR> I followed the link to Twitter from a LinkedIn post by Google's Energy & Infrastructure Senior Lead, Sam Arons: [https://www.linkedin.com/feed/update/urn:li:activity:6342074...](https://www.linkedin.com/feed/update/urn:li:activity:6342074431820701696/)</comment>


Python parallelism in one line - A Better Model for Day to Day Threading Tasks - <AUTHOR> https://medium.com/p/40e9b2b36148

<comment><USER2> It works for I/O bound tasks. For CPU intensive tasks, you have almost no improvement. I use it a lot for web scraping.

You can from multiprocessing.pool import ThreadPool. It is not well documented too, but at least the package makes sense.

<comment><USER3> I'm not sure I entirely agree with your CPU intensive statement.

Multiprocessing definitely brings Python speedups in the CPU bound arena. I've used it for everything from template matching, to building movies from still frames. Heck, my primary solution to speeding things up is throwing more cores at it rather than figuring out why my algorithm sucks ;)

A couple of quick benchmarks and you'll be a believer, too!</comment></comment>


Active Employ: instant applications for job-hunting - <AUTHOR> https://activeemploy.com
Active Employ uses a token system for employment using ''profession points'' or dubbed points for this submission.
Usage:
Users sign up and fill out a profile. They save what is applicable to them then go job hunting or post a job based on their profile type.
Once they run out of PP they can wait 24 hours for one more, Or pay to have points added. No registering to every job hunting site. Each listing is instantly applicable by trading your points. Each listing costs 1 point. One point= one chance at getting the job.
So instead of
Registering for account>uploading resume>uploading cover letter>answering job assessment>wait forever for response.. you just Click apply.
Account Types:
Manager Accounts: Managers use their points for two reasons: to post a job listing, and to send a message to the job-seeker once staff have found a good match. Managers are not charged by clicks,views & get a direct list of interested job-seekers.
Managers will also have an option later to purchase a plan which will remove the prompt of using points up to 200 contacts. (in development)
Job-Seeker Accounts: All job listing on the site can be viewed once logged in, and
Job-seekers use their points to apply.
Rules: users get one PP per login, per day unless paid. Accounts start with 4 free points. only one job posting per position. (no doubleposting) NO external links. Users are banned if links are used on their job listings.
Active Employ is a startup and seeking funding for launch.
This preview is posted for the Hacker News community to tinker with. See shared files at https://drive.google.com/open?id=0B4XtHQnWxLJgNllEbFdEaWs5ZXM
Hope you guys enjoy tinkering with this! <comment><USER2> 1\. To directly submit a link, leave the |text| field empty on the submit page.

2\. Often there is little need to explain why a link was submitted because it is assumed that the person submitting it thought it was helpful or interesting.

3\. But it is ok to add a regular comment after the story appears on the |new| page.

Good luck.</comment>


How Snapchat makes money - <AUTHOR> http://www.bloomberg.com/features/2016-how-snapchat-built-a-business/ <comment><USER2> How Snapchat makes money - Ads...

It'd be interesting to see if / what types of ads convert. Perhaps there's some money to be made here

</comment><comment><USER3> Ack, whose genius idea was it to use bright yellow as the background.</comment>


YC Application Checklist (apps due in 1 week) - <AUTHOR> http://www.giftrocket.com/blog/yc-application-checklist

<comment><USER2> Interesting article and I wanted to comment on the bit on outsourcing. Our project needed an extra hand and that's where we turned to oDesk and some good old word of mouth. Very quickly we found some coders but we stayed only with one group. The relationship moved from outsourcing to co-founderness with Tomas after a few months. He's Slovakian and studies in Poland and needed a way to get some income during his last year at university.

We've been working together for more than a year, and he's used this project to write his thesis and make some money. It raises an interesting point, as finding founders is sometime a question of good luck and great people. Regardless of where you look, its all a question of feeling, mutual trust and being open minded.

</comment><comment><USER3> One interesting point I hadn't seen before is the following recommendation:

 _Have someone in YC vouch for you_

Is this common? How's it transmitted to YC, through the application or do they specifically write PG and crew to let them know about it?

We are in a position where we can get a recommendation from two alumni but we felt it was not a correct thing to do when we submitted our app. Anyone else has experience with this?

<comment><USER4> Considering how competitive it is if you have friends willing to vouch for you then do it, with so many applicants it's very easy for you to slip through the cracks whether you should or not.

Beyond YC don't be afraid to leverage your contacts in general, it'll help you succeed.

<comment><USER5> There wasn't an obvious field to put in this information. What would be the most appropriate spot in the application for this?

<comment><USER4> Get them to do it themselves in person / by email / whatever.

</comment></comment></comment></comment><comment><USER6> This is accurate. I would add two things:

1\. Make sure your video can be watched easily on a Mac browser without plugins. Bonus if it works on Windows and Linux. I've seen a few people that use .wmv files, which end up crashing browsers. YouTube private video links are a great way to make sure thats not a problem.

2\. Same idea with the video: if you link to a document, make sure its a PDF.

</comment><comment><USER7> I wonder when we'll start seeing startups created specifically to help people apply to programs like YC. Similar to prep classes for the SAT, these could help you fill out your apps, fine-tune your answers to the essay questions, coach you on interviews, and even polish your videos. Maybe advanced courses could teach you how to launch and market your MVP before applying to YC.

<comment><USER8> YC's application process is genuinely about the factors that lead to success, with that in mind, why not just teach people to be successful and cut out the application bs?

<comment><USER7> _why not just teach people to be successful and cut out the application bs?_

I think you'll have a hard time coaching someone to be successful. I think a service like this would take people who already have the qualities of successful startup founders, but maybe lack the ability to express that through an application, video, interview, and demo. More "makeup on a model" than "lipstick on a pig"

<comment><USER8> It's pretty easy to coach someone to be successful the big problem is whether or not they really want to be successful. Most people have a list of excuses a mile long as to why they aren't successful. People have little desire to be successful for the most part they strive towards mediocrity. Being able to express yourself clearly and concisely is essential for success.

Even in myself I recognize a bunch of traits that are holding me back, and every week I evaluate how I'm progressing on those issues.

I'm not trying to be a sophist, however, the impression you leave on people is who you are. For the most part the makeup is the model. By the time you've coached someone enough to get them into YC they will be perfectly positioned to be successful.

</comment></comment></comment></comment><comment><USER9> "For a given company, the partners just need to identify that there is some slight promise that makes an interview worthwhile."

This sounds very forgiving and makes me wonder how many out of those estimated 4000 get the interview.

<comment><USER10> I think it would be great to read a couple of the ones that _didn't_ get interviews. It's helpful to also learn from those that get rejected.

</comment></comment><comment><USER11> Whether or not you're accepted, dotCloud is offering every applicant one year of free hosting for their app. In exchange we only ask that you don't give up.

Email firstname.lastname@example.com and we'll hook you up!

Good luck everyone.

<comment><USER12> That sounds great, I just emailed.

It looks like you have a free plan anyway, is this different?

<comment><USER11> Yes, it's different - we're offering a pro plan which is usually $99/month

</comment></comment></comment><comment><USER13> Excellent info, I am largely surprised that we managed to hit every point that you have mentioned. Looking forward to seeing this batch (and hoping we're involved)

</comment><comment><USER14> Thanks for the advice! kapilkale do you remember how many hours (roughly) you put in to your application?

<comment><AUTHOR> 20 hours, maybe more.

We hadn't been working on our idea for long, so we had to think about the answers to many of the questions in addition to writing them down.

<comment><USER5> Thanks for the post!

My group has been collaborating for weeks on our application. I think we must be on our 5th draft by now. At a certain point, I do feel like it's unproductive to keep second guessing how our answers will be parsed - we're just doing our best to listen to the great advice out here on HN, lay out the facts about ourselves, and hopefully make a good impression. Hopefully YC will like what we have to say!

BTW - my group of 3 is quitting Google, Facebook, and Microsoft to pursue our idea, and we will definitely do it with or without YC. It'd just be super nice to get that level of support.

<comment><USER9> sounds like a hard-hitting group. Good luck!

</comment></comment></comment></comment><comment><USER15> How many applicants were invited for an interview in the last batch?

</comment><comment><USER16> as per usual, great post.</comment>


Good-bye Chromebooks – Acer's new Windows 10 notebooks just killed you - <AUTHOR> http://www.itworld.com/article/2968437/windows/good-bye-chromebooks-acers-new-windows-10-notebooks-just-killed-you.html?phint=newt%3Ditworld_windows_in_the_enterprise&phint=idg_eid%3Da79df09f1a33afcf65306fe23bf4aadd#tk.ITWNLE_nlt_windows_2015-08-11

<comment><USER2> Tldr: "I don't understand the appeal of Chromebooks or ChromeOS, everyone loves Windows!"

<comment><USER3> Exactly. The idea that the only reason someone would buy a Chromebook is b/c of price and not being able to get Windows computer cheaper is ludicrous to me. Even if I bought one of these I'd put Linux on it before I used a bloated Win10.

</comment></comment><comment><USER4> They want me to run an infinitely misconfigurable copy of windows directly on hardware too slow for virtualization? Uh, no. Android tablets are much more likely to move into chromebook's position. With the gradual merger of APIs and store contents, I don't think that will take away much from my netbook experience.

Given the specs, I would be very interested if I could separate an RTU onto a virtual machine on a desktop and then install something else on the laptop. But even a minimized Linux with a very small VM may be sluggish and would quickly cost me more time than just finding a way to install chromium OS directly on something.

Also, I hope this doesn't signal another campaign to sabotage netbook RAM capacity in vendor designs just to push another budget license no one can actually use.

</comment><comment><USER5> This doesn't make sense. If $200 Windows laptops were as nice to use as Chromebooks, they'd cannibalize mid-range windows machines rather than ChromeOS devices (and would be bad for OEMs' margins).

I value the simplicity, speed, security, responsiveness and convenience of my Chromebook, not just the low price tag, and I'd be stunned if these new budget Windows machines offered any of those things.

</comment><comment><USER6> Windows 10 is notably sluggish on my much-higher-specced (better processor, 6GB vs. 2GB RAM) notebook (designed for and sold with Windows 8) -- also, coincidentally, from Acer.

It _might_ impair Chromebook expansion because market perception of "comes with Windows" = "more capable", but I suspect anyone who would even be considering a Chromebook (that is, someone who doesn't need desktop Office, etc.) would be much better served _by_ a Chromebook than by these.

</comment><comment><USER7> This sounds just like the already released hp streams, except with slower processors (stream has 2.16Ghz, article says Acer will have 1.6Ghz). I understand Acer may be a more desirable brand, but the stream computers have been out since 2014. Granted, they are Windows 8.1, but they have a Windows 10 upgrade.</comment>


Generate CoreOS cloud-config with Terraform - <AUTHOR> https://github.com/brandfolder/terraform-coreos-user-data <comment><USER2> Does this in any way handle the 16KB limit on user-data on AWS? (i assume not)

Great job in any case!

<comment><AUTHOR> Nope, this isn't specific to any provider. We use it both on AWS and Google Cloud.</comment></comment>