Query your local network for Chromecasts and have them play media - <AUTHOR> https://github.com/mafintosh/chromecasts

<comment><USER2> Seems like this does most of the work: [https://github.com/thibauts/node- castv2-client](https://github.com/thibauts/node-castv2-client)

<comment><USER3> There's also a fascinating (in my opinion) write-up on the wire protocol, which was presumably reverse-engineered for this library: [https://github.com/thibauts/node-castv2#protocol- description](https://github.com/thibauts/node-castv2#protocol-description)

</comment></comment><comment><USER4> Can anyone tell whether with this the Chromecast still needs to have an internet connection to work? In applications like digital signage would just want the Chromecast on a LAN - not with internet access.

I've had to roll my own stuff because of that limitation, which runs on a Raspberry PI plugged into the display. Would much rather have preferred to have a single Raspberry PI serving the content, and multiple chromecasts plugged into displays.

<comment><USER5> it should work without internet connection

<comment><USER6> I think you are talking about the posted project.

The CC itself will refuse to boot without an internet connection ..

Once it booted, it provides a limited offline functionality; if it requires to load `appID` from the internet, and it's not connected: it will block

Also since last February update, you need an internet connection to stream local content ..

 _I 'm sorry Dave, you cant do that_

<comment><USER7> > Also since last February update, you need an internet connection to stream > local content ..

I assume it phones home to Google?

<comment><USER6> Yep.

In order to develop for the platform, you need to register your application[0], and your device[1]. Also you cannot even run your own application without getting google's approval[2], which costs $5..

Then, at runtime, the device will first validate that the app you are trying to run was validated, sending the `AppID` to google.

0: [https://developers.google.com/cast/docs/registration#Registe...](https://developers.google.com/cast/docs/registration#RegisterApp)

1: [https://developers.google.com/cast/docs/registration#Registe...](https://developers.google.com/cast/docs/registration#RegisterDevice)

2: [https://cast.google.com/publish/](https://cast.google.com/publish/)

<comment><USER8> Wow, that's draconian. Are there any devices a bit more open that are in the same price range and support the same feature set?

<comment><USER6> so far I am very happy with the raspberry pi as a homebrew platform ..

PROS:

\- ports: 1x wired net, 4x usb 2.0

\- runs linux, super easy to extend/modify (access via ssh from other devices)

\- super reliable, with uptimes of months

CONS:

\- bigger in size, and not beautiful without a case (except if you like electronic pr0n)

\- requires an HDMI cable

\- requires an external power source

<comment><USER8> Can the raspberry pi run off a TV's USB port similar to the Chromecast?

<comment><USER9> I have had issues running a wifi dongle when connecting using the tv's usb port - admittedly this is with the old version and not the new one with the updated power circuitry.

However, I have had no issues using usb power from the tv with a LAN connection - this is using Kodi which I suspect will increase the power pull. YMMV

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> That is an awesome library. It didn't see any sort of documentation, but I imagine that this does not work on a local library, correct? I believe at some point I heard that there were some DNS settings on the Chromecast that couldn't be changed?

Personally, I'm really looking forward to someone creating some sort of an open-source receiver clone that I can install on my Nvidia Jetson or some other SoC. I would love to be able to use it as a (fully supported) Chromecast without the need to actually buy additional Chromecasts. I've been looking at it as a way to add decent audio and video control to a home automation system I'm building, but nothing is as easy as the Chromecast.

<comment><USER11> Maybe you can create a local dns entry on your home router, of, if google sets 188.8.131.52 on chomecasts, you can pass a "[http://192.168.1.2/npm-web- server/video.mp4"](http://192.168.1.2/npm-web-server/video.mp4") ?

<comment><USER10> I honestly don't know how the Chromecast is set up. Would that prevent me from being able to access Google Play content? I seem to be able to Cast to Amazon FireTV sticks and PS4s, though I have no idea if they work since I don't have one, nor do I know if that even works.

</comment></comment></comment><comment><USER12> See also castnow, which is a node based chromecast client.

[https://github.com/xat/castnow](https://github.com/xat/castnow)

</comment><comment><USER13> How is this different from something like BubbleuPnP or Plex? No GUI? I'm not a developer so a lot of what I see when I click through to Github is gobbledygook.

<comment><USER14> The benefit of this library is being able to play media on multiple chromecasts on the same network. So using this, a developer could create a Plex-style app for casting to multiple TVs. One use case could be digital signage at an event, where you'd want to control all TVs from one console.

</comment></comment><comment><USER11> What you guys think about pairing this awesome lib with github electron and creating a local local library desktop app?

Like a mini-plex!

<comment><USER15> We created this actually. It's called Playback.

[https://github.com/mafintosh/playback](https://github.com/mafintosh/playback)

</comment></comment><comment><USER16> This seems like a great start of having an alternative to Airplay, particularly the ability to discover all local Chromecasts, and play media to them selectively. Would be interesting to see if any latency issues popup in regards to media 'start' times.

</comment><comment><USER17> Nice! So, nodejs on Android to run this from my phone, would I want this? [https://github.com/ldesegur/nodejs- android](https://github.com/ldesegur/nodejs-android)

</comment><comment><USER18> also [http://greenscreen.io/](http://greenscreen.io/)

</comment><comment><USER19> as</comment>


Avoid the 6 Hours Sleep for a Free Heroku Dyno - <AUTHOR> https://github.com/ColibriApps/heroku-free-balancer

<comment><AUTHOR> From July 2015 on, Heroku will introduce their new pricing system which forces free apps to sleep at least six hours a day.

With this project you can easily surpass this restriction by using only one paid heroku app for all of your free heroku projects:

Just use one paid dyno that is always up to act as a load balancer. Now you can add as many apps that will be always up, because the same code runs on two identical heroku apps. Heroku Free Balancer will forward requests in the morning to your first heroku app and in the afternoon to your second heroku app.

</comment><comment><USER2> Also unlimited horizontal scalability if your app isn't DB bound, nice.</comment>


The Man Who Said No to Wal-Mart - <AUTHOR> http://www.fastcompany.com/node/54763/print <comment><USER2> This has been said in various ways in various media, but much of life has a price/performance question. If you want stuff that's cheap, pretty good and ultimately disposable, then you make one set of choices. If, however, you want something that's a little better, or a little more robust, or ... you make another set of decisions.

I've found that Wally-world is a little disorganized and has a lesser selection than other stores I shop at. Great for things like cans of corn, or sodas, or paper towels, but not where I go for tech items, books, etc. One has to balance saving that last 0.20 dollars vs. the "biological diversity" of the shopping scene.

We might see similar results between e-tailers and retailers, but so far both seem to coexist. As others have written, make sure you do a little (more) business with stores you like to try to help keep them around...</comment>


Golang Runtime for Deep Learning Deployment in TVM - <AUTHOR> https://tvm.ai/2019/01/19/Golang.html <comment><USER2> The best part is that not only is Go supported, there is also support for Javascript, Java, Python, C++ and eventually others.</comment>


Amazon's prepackaged Meal Kits are reportedly already on sale - <AUTHOR> https://www.theverge.com/2017/7/18/15988408/amazon-prepackaged-meal-kits-on-sale-fresh-prime-blue-apron <comment><USER2> It was mentioned in the article, but man, that's all Blue Apron needs right now. And yesterday's stock plunge reflects that, about a dollar drop on what used to be a $7 stock.

</comment><comment><USER3> Has anyone tested whether consumers are sticking with these meal kit services long term?</comment>


Ask HN: Are there any examples of big node.js installs? - <AUTHOR>

I am investigating using node.js for some large upcoming projects. It is obviously vertically scalable. And I know you can use multi-node for single machine muti-core utilization and of course we have our load balancers for the front end. At a proof of concept level, it has proven itself.  However, I need a case study or two to show the upper management that it is in fact all-around capable of being a rock solid production environment that can service millions of users. Does anyone know of any such proof that is publicly available? <comment><USER2> <http://news.ycombinator.com/item?id=2682750>

</comment><comment><USER3> transloadit.com uses node.js, quite effectively

<comment><USER4> transloadit appears to fall back to other languages for systems they probably aren't confident enough to use Node.js for (ex. payment processing)

<comment><USER5> Our website is written in CakePHP. That decision made sense ~2 years ago when there was no express, npm, etc. combined with the fact that we were former CakePHP core contributors.

If we were to do it again now, we'd do the website in node.js as well, as that would allow us to share domain logic. In fact, if we find the time, we might migrate even now.</comment></comment></comment>


Peter Thiel Is Wrong About Lean Startups - <AUTHOR> http://techcrunch.com/2015/05/09/peter-thiel-is-wrong-about-lean-startups/ <comment><USER2> I always confuse Peter Thiel with Chris Thile. So headlines like this really throw me for a minute until I get the two properly sorted.</comment>


Replace multiple strings, O(1) wrt number of replacements - <AUTHOR> https://unix.stackexchange.com/a/137932 <comment><AUTHOR> I was using sed to do many replacements (hundreds) in a file and it was starting to be slow, running in O(num_replacemnts). I thought that this can be done with a state machine so the runtime could be independent of the number of replacements.

I googled a bit and found this amazing gem: it uses lex to create a custom C program that does just what you want. Posix compliant. All wrapped up in bash function.</comment>


Ask HN: Is it okay to change jobs within a year of starting? - <AUTHOR> I'm a software developer and I've been working in the industry for about three years now. Initially, I started at a big corporation and moved out of it into my current employer (a mid sized company, about seven months ago. I had pretty high expectations from the company/founders and the quality of work at my current company. Unfortunately, so far I've found it nowhere close to my expectations (in terms of pay or work).
Now, that I've decided to move on, I'm interviewing with other companies, and although I don't have an offer yet, I'm quite close to getting one (or more than one).
Given that I started at my current job less than an year go, does changing jobs within a year reflect badly upon me ? <comment><USER2> So, one job at over two years, then a 7 month stint, then another role?

No problem at all.

I look askew at resumes where the longest stint is 18 months and the average is 12-15. That reads of someone who either can't stick something out, or someone that gets discovered as less-than-good over and over. Either way, I don't have a place for that.

A few 2+ year stints, a few promotions within a company, and still moving around a bit? That's normal. One bad fit job? No problem.

If you get another offer you want and you don't like the current role, switch. Life is too short. You might make it a point to stay at the next place longer than 7 months (ideally 24+).

<comment><USER3> _That reads of someone who either can 't stick something out, or someone that gets discovered as less-than-good over and over_

I agree, although "can't stick something out" is not always a negative connotation. The key is what the "something" is.

I've seen this pattern of resume for both high-performers and low-performers. Not everyone has the patience to wait for recognition and promotion that may be long overdue or just plain unavailable. By looking for those who have longer engagements, I think you'll find yourself safely in the middle of the pack.

<comment><USER2> If your longest is 18 months and average around 12 months, it seems a little hard to argue that your departures have typically been because promotions have been "long overdue", right?

(I'm not suggesting that you need to wait indefinitely for well-earned rewards, of course. It's just that I've seen a lot of "thinks they're higher- performing and delivering more value than they are" than the reverse.)

<comment><USER3> If those are the numbers being discussed, then yes, the odds are tilted towards your interpretation, but we're generalizing. There will always be exceptions.

My longest engagement is about 2.5 years. The average length is probably around 20 months. I've left every position by my own choice and to the dismay of my employer. I'm not trying to boast, but it's clear from my evals, references, and repeat business I've received since being independent that I was and am highly valued. Each job change came for a different reason (family/personal, wanting more responsibility, etc.) and was not premeditated when I took the job. I can't say for certain of course, but I have no reason to believe any of those employers regret hiring me. You can be incredibly productive and a contributor over a period of 1.5 years. In our business that's a long time.

On the other side of the coin, I've worked with many mediocre performers who, due to lack of options, have recorded long stints at reputable companies. In my experience, for people to get let go, they need to be exceptionally bad. Average people stick around a long time. That's why I think using duration as a marker is double-sided. As you mentioned, promotions can be a good marker to offset this effect.

<comment><USER4> This. My experience has been that the average to poor performers oftentimes stay comfortable at low-expectation companies because they know they will have a difficult time finding a new job.

Previous job longevity is worth next to nothing without talking to the candidate in my opinion.

</comment></comment></comment></comment></comment><comment><USER5> Moving on to a better opportunity should never be looked down upon. If you develop a pattern of short durations and lateral movements then some people will consider that a flag.

</comment><comment><USER6> > Given that I started at my current job less than an year go, does changing > jobs within a year reflect badly upon me?

Apparently not, if you're close to getting offers.

Everyone gets a rare do-over. Just don't make it a pattern.

EDIT: added parent quote.

</comment><comment><USER7> As long as you have a good reason for moving on, I wouldn't worry about it.

Some times things just don't work out. Sometimes it's the employer, sometimes the employee. Employers understand that, but they will want to know that it was your choice to leave, and what made you want to leave.

Though the pay is one thing, if somebody asks you about this in the future, it is better to focus on the work not being what was promised, and not being fulfilling, or whatever the issue was.

On a side-note, if this shortish stint (I've had shorter), comes up in an interview, try to tell the interviewer what you liked about the company as well as what you don't. I remember interviewing a guy that did nothing but complain about a former employer. He didn't get the job specifically because I didn't want to bring in somebody who had so much negativity. Byt he sounds of things, you've got a good head on your shoulders, and a couple of offers already, I'm sure you'll be fine.

</comment><comment><USER8> There are huge regional differences in what is okay and what isn't in changing jobs. I some European countries you're considered a job hopper if you change jobs every 2 years. (Industry matters too, for instance the gaming industry is very dynamic anf it's not odd to jump around their, while at financial services it is).

Bottom line; everyone can get away with a unfortunate career move. As long as you can explain why you took the job (whay you expected) and why that didn't work out. But if this happens more often, future empoyers will suspect there's something 'wrong' with you if you can't seem too be happy and productive in a place for a longer time.

</comment><comment><USER9> I would say it kind of depends on where you live. While this would be totally o.k. in the U.S. and pretty much no problem at all in the Silicon Valley, it would look fairly bad to a European employer.

</comment><comment><USER10> Yes, its fine. The key issue is making sure you are not setting your expectations unrealistically. You have to recognize every company is dysfunctional at some level, and that doesn't necessarily make it bad. The grass is really not always greener on the other side, it just feels that way sometimes.

A note on compensation, you must negotiate that up front and not expect it to change during the first year at least. It isn't that you won't get raises but get what you feel is fair up front so 6 months in you aren't feeling neglected. Also, be cautious about giving up salary for bonuses unless you can truly control the factors for the bonus. I have seen many companies claim that while they are paying you less in salary you'll make more in their bonus program. But then they tie that bonus program to increased sales when you are an engineer. That isn't a fair or valid bonus program unless you can directly impact sales, otherwise it is like saying, if Bob & Sally do their job you can see a bonus. It doesn't matter if they hit it 10 times prior, don't fall for that crap. BTW -- this is more typical to see in a SMB that is non-tech focused but it can happen anywhere.

</comment><comment><USER11> I just want to add my experience, since I was in almost the exact same situation.

With the company I'm working for now, I was considering leaving the first year as well, for both pay and for the work.

Six months later though, I was offered a very substantial raise, more responsibility, and much better work. I wouldn't trade my current position for anything, and I've recently turned down several offers for substantially more money elsewhere.

IDK, maybe sometimes expecting things to materialize within a year is unrealistic. But that's just my experience, YMMV obviously.

</comment><comment><USER12> >> Unfortunately, so far I've found it nowhere close to my expectations (in terms of pay or work).

Why was pay a disappointment to you? Did you not negotiate your pay upfront?

I stayed at a job for 6 weeks and another for 9 months. As a hiring manager now, I am likely to look past someone leaving a job if the reasons are ones I can understand.

</comment><comment><USER13> It's certainly a red flag for many companies, but due to the current demand for engineers you can probably get by just fine.</comment>


Ask HN: why is Google's StreetView is so awful in US, and so awesome in Europe? - old-gregg

I couldn't answer this question myself by googling it. Just compare:<p>Why does NYC need to look like this: http://maps.google.com/maps?hl=en&client=safari&q=bh+photo+video&ie=UTF8&sll=40.706010,-74.001274&sspn=0.096553,0.011645&ei=oaBHSs68GZPMMbnJ6bEJ&sig2=pRDX296Zs7VzKAr2SCYaDw&cd=1&cid=40752898,-73996373,7885407876687864647&li=lmd<p>... Compare that to London: http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=London,+UK&sll=37.0625,-95.677068&sspn=44.60973,83.583984&ie=UTF8&ll=51.496454,-0.142479&spn=0.007721,0.040812&z=15&layer=c&cbll=51.496467,-0.142476&panoid=Qb4nLCuQrwtkMWTjdt6MzA&cbp=12,44.86,,0,9.35 <comment><AUTHOR> Perhaps Google deployed StreetView state-side first, and then they refined their technology for Europe. Just pure speculation, though.

<comment><USER2> Wikipedia (<http://en.wikipedia.org/wiki/Google_Street_View#Development>) suggests that this is correct. New York City was added at its launch in May 2007. London did not appear until March 2009, almost two years later.

</comment></comment><comment><USER3> I don't see what you're talking about. The quality of both views looks the same to me.

</comment><comment><USER4> Maybe I'm being slow, but I don't see a difference in the two...

<comment><USER2> I think the quality of the London images is better than those in the New York sample.</comment></comment>


What Is Zig's "Colorblind" Async/Await? - <AUTHOR> https://kristoff.it/blog/zig-colorblind-async-await/ <comment><USER2> Zig's use of "async" as a _call-site_ modifier is exactly how I've long wished async/await had been done in languages like JavaScript and Rust. It completely fixes the "color" problem.

I brought it up on HN once, and apparently this was discussed as an option for Rust, but for whatever reason, people didn't like it. To be fair, Rust has certain design requirements that might not be compatible with such a system.

<comment> j-pb The reason is that it creates completely unexpected bugs, like deadlocks.

Static function coloring based in asyncronicity is a feature not a bug.

Making it "dynamic" is like saying: "Yeah we've decided that if you just treat an Option as a value, we will let you do it, and we'll also treat every Option boxing inside your map as a noop."

</comment></comment><comment><USER3> when set to .blocking

> The function is no longer async, and in fact both keywords basically become > no-ops

That sounds crazy to me, if I use a keyword I expect it to behave the same everywhere I use it. I hope I misunderstood, and that setting come kind of global const can't "disable" async for one library, but still have it enabled when used somewhere else. I would have to keep track of all these various consts to know my app is/isn't actually doing async tasks, even though I've explicitly used the keyword.

<comment><AUTHOR> It's not a switch for libraries, it's a global project-wide switch. It enables or disables evented I/O for your whole application. Libraries can read that setting and specialize at compile-time appropriately.

<comment><USER4> What I find a little bit surprising with this is that the behavior of a library can be changed outside of its view. E.g. if the library requires to always run in an evented mode (because it needs to spawn many small tasks), then the application developer settings things into threaded mode might prevent the library from working properly.

Similar questions might arise around cancellation and timeouts, which are different to perform in an async/evented environment than a synchronous one.

In most other worlds the problem is "solved" by declaring a subsystem of the application as async. And only that subsystem is running one or more eventloops. That obviously introduces a different set of issues, but it isolates parts of a program against others.

I'm really curious on how Zigs approach will work out in any bigger applications where libraries from various parties would get used.

<comment><AUTHOR> > What I find a little bit surprising with this is that the behavior of a > library can be changed outside of its view. E.g. if the library requires to > always run in an evented mode (because it needs to spawn many small tasks), > then the application developer settings things into threaded mode might > prevent the library from working properly.

In that case you would add in such library a line like this:

      if (!std.io.is_async) @compileError("LIB doesn't support blocking mode");

> I'm really curious on how Zigs approach will work out in any bigger > applications where libraries from various parties would get used.

That's an open question. In general Zig is more like C than C++ also when it comes to expectations from libraries. We'll see where this will get us.

<comment><USER4> > In that case you would add in such library a line like this:

That's certainly an approach to make sure libraries run in the correct environment. But it still doesn't seem to enable use-cases where you run an eventloop on some threads and blocking IO (or just blocking on the eventloop) on other threads, which are often found in bigger programs that are made up of a lot of heterogenous libraries.

One could say "you might not need that - just run everything async". But since we are talking about a system programming language where libraries might be exported and used in different projects I'm not sure if that lack of flexbility won't hurt long term.

<comment><AUTHOR> I think I understand what you're saying. In this introduction I just wanted to give a feeling to people about the biggest building blocks so I didn't have the opportunity of diving into the small details (the article is already fairly long as is).

Zig doesn't take shortcuts when it comes to give people control over the machine so what you describe is expected to be possible. The async part of the language is still being worked on (Zig is at v0.6.0 as I write) and the top level API will be reworked if it turns out to be problematic (that's the superpower of being at a version < 1.0).

</comment></comment></comment></comment></comment></comment><comment><USER5> It seems like this should work so long as popular libraries support both modes. That should be easier to do in Zig, but if there is a popular library that can only support one mode or the other, or worse, two popular libraries that only support opposite modes, it will constrain any downstream dependencies as well, and you have colored functions again.

But will you get an error at compile time, or will the system just deadlock?

This might be something that just needs to be handled socially, by convention, much like you're not supposed to use too much unsafe code in Rust, and you should make sure that public API's are safe.

</comment><comment><USER6> This looks like Go: The code is synchronous, but I/O uses polling under the hood, so that the programmer gets the best of both worlds.

When a Goroutine would block, it's parked by the scheduler, thus allowing an other Goroutine to execute. And it's not only about I/O: This works for any syscall, or even for CPU-bound computations.

There is no clever trick from the compiler to allow this: There is just a hook to the scheduler in low-level I/O code as well as before and after syscalls.

</comment><comment><USER7> Is there any difference in the `.evented` example and the example that explicitly uses the `async` and `await` keywords?

<comment><USER8> the async await example is python, the rest of the code is zig

<comment><USER7> Sorry, I meant this one: [https://kristoff.it/blog/zig-colorblind-async- await/#express...](https://kristoff.it/blog/zig-colorblind-async- await/#expressing-concurrency)

<comment><AUTHOR> The two examples are perfectly equivalent.</comment></comment></comment></comment>


Ask HN: Decent HN iOS app that allows collapsing of comment threads? - <AUTHOR>

Any suggestions? <comment><USER2> I haven't really found any good apps for that. After implementing this: <http://imgur.com/55D3mXH> in an app of mine I found this guys way of implementing it: [http://weiranzhang.com/blog/2013/3/hackers-a-hacker-news- app...](http://weiranzhang.com/blog/2013/3/hackers-a-hacker-news-app-for- iphone)

I think his is quite a bit better in multiple aspects, primarily because you retain a full width view of the comment regardless of how many tiers deep you are.

<comment><USER3> Thanks for the hat tip.

I did think about implementing comments like Reddit / Alien Blue, but I found that it involved too much scrolling up and down and having a button at the bottom reduced that.

<comment><USER2> No problem.

My big problem with the tiered implementation is that it only really works until like 4 tiers deep. After that you have a long column of text. I haven't really found a solution for that except a "View replies" that pushes another view controller with that comment at the top tier. Seems clunky though.</comment></comment></comment>


Introducing Qubes 1.0 ("a stable and reasonably secure desktop OS") - <AUTHOR> http://theinvisiblethings.blogspot.com.br/2012/09/introducing-qubes-10.html

<comment><USER2> Brief description from their web site: "Qubes is an open source operating system designed to provide strong security for desktop computing. Qubes is based on Xen, X Window System, and Linux, and can run most Linux applications and utilize most of the Linux drivers. In the future it might also run Windows apps." (<http://qubes-os.org/Home.html>)

<comment><USER3> In fact, the version in development already runs Windows. The blog has a screenshot showing Windows running in 'desktop mode' (as in, you currently don't have single application windows for the Windows VM).

The extra requirements for this seem to be (ignoring that this isn't yet released) that you're having vt-x support, for all I remember.

</comment></comment><comment><USER4> Previously:

<http://news.ycombinator.com/item?id=1246990>

<http://news.ycombinator.com/item?id=2645170>

This story won't see much traction on HN. The cult of Mac is too strong, and HN users generally aren't interested in secure operating systems.

<comment><USER5> Actually folks on HN _are_ interested in secure operating systems but they recognize that creating such is a Hard Problem (tm) which someone who is an unknown [1] in the field is unlikely to have achieved.

Now you can read up on Mark Miller's published papers [2] on Joule (actually pretty secure) and some of the issues associated with making things secure and get a much better feeling of solidity (for example).

So when the press release comes out that its passed the Defense department's B1/B2 review, then I suspect it will get a lot of interest here and else where.

[1] <http://www.linkedin.com/profile/view?id=10279027> LinkedIn profile, one job CEO of this thing? A blog full of black hat sort of exploits but I didn't see any peer reviewed work.

[2] <http://research.google.com/pubs/author35958.html>

[3] [http://en.wikipedia.org/wiki/Trusted_Computer_System_Evaluat...](http://en.wikipedia.org/wiki/Trusted_Computer_System_Evaluation_Criteria)

<comment><USER6> Joanna Rutkowska is famous in computer security circles and highly credible on this particular topic.

The "black hat sorts of exploits" attributed to her tend to be things like, "abusing odd, barely-documented corners of x86 chipsets to bypass hardware- encrypted trusted boot roots". Thinking less of a professional in my field for having exploits attributed to them tends to be a bad idea, but it's a _uniquely_ bad idea in Rutkowska's case.

Outside of conference presentations, Rutkowska doesn't have much peer-reviewed work in the literature. That's because Rutkowska is originally from the malware/rootkit/virus part of the industry. For obvious reasons, antivirus doesn't generate a lot of peer-reviewed academic research. One of those obvious reasons is that they're too busy printing money hats to bother. (This to my chagrin; I am very much _not_ from the AV/malware part of the field).

I'm not vouching for Qubes or even saying that I think the approach (of semi- transparently allocating secure VMs for each application or trust domain on the system) is viable. But Rutkowska is worth taking seriously.

<comment><USER7> > Outside of conference presentations, ...

Almost on topic: I have to say the team is also really cool and approachable at conferences - and for that I'm very grateful as a member of the unexperienced audience. They can really adjust the explanations to the right level for the general crowd, which must be quite hard considering the topic.

<comment><USER8> Generally security people are fairly approachable. If you're at BlackHat, all you have to do is say "I saw your presentation -- neat work, but I have some questions" or "want to grab a beer?" and you'll most likely have a good conversation.

</comment></comment></comment></comment></comment><comment><USER9> Not exactly a security guy (I'm actually a mathematician/statistician not exactly a computer engineer) how do these compare in security terms to sandboxing applications or using lxc from the linux kernel?

As far as I remember you could use different kernels for Xen VMs and the physical hardware, then the only way to compromise the system would be if I could escalate privileges on the hypervisor, right?

<comment><USER10> Right, but the point of this (I think) is to be able to be a "compartment mode workstation" -- a single X server which runs x clients themselves executing in multiple Xen VMs, with guarantees about isolation and how the windows are managed.

There's a continuum of security and usability between having (a) N machines in N rooms for N tasks to having (b) 1 machine on a single desk running N tasks. You can have a KVM switch and multiple computers sharing a keyboard/mouse/monitor, which gives you a high degree of isolation (very close to (a)), or you can have compartment mode, where windows themselves have security labels, but then you need an advanced system to protect apps in one window from other windows, including window masquerading attacks. If you do it well, it's ideally close to (a) as well.

The problem with virtualization on a desktop is that certain resources (video/keyboard drivers) don't like to be virtualized, so you end up running them in the system host area. Applications also tend to want pretty low-level access to those resources. It used to be the performance overhead of all of this was very high, but now it's not as big a deal (at least for normal 2d type apps).

The last good Compartment Mode Workstation I remember was Trusted A/UX (built on apple's first UNIX operating system) from the early 1990s. It wasn't particularly good.

</comment></comment><comment><USER11> I genuinely can't think of anything else I'd rather use less than this.

I think MAC (Mandatory Access Control) applied to a desktop environment, picking a better language than C and actually thinking about stuff is more than sufficient to get around the existing problems...

Virtualization is just another pile of complexity and performance problems to deal with. It's not a magic bullet. Consider the following as well:

[http://www.c0t0d0s0.org/archives/3651-Theo-de-Raadt-about- vi...](http://www.c0t0d0s0.org/archives/3651-Theo-de-Raadt-about- virtualisation.html)

I really don't want this solution.

<comment><USER12> I really like the idea and I just can't wait for it to be more prevalent on mobile devices.

I'm sick of the lack of control over my data I have on android (not to mention iOS).

<comment><USER11> This is not a flame or a troll, but seriously try Windows Phone. It actually gets this spot on.

<comment><USER13> Can you say anything more about this or provide a link? I'm not familiar with this aspect of Windows Phone.

<comment><USER11> Every interaction that it makes to the network is controllable via user preferences and is documented. It does not send data unless you allow it to. Each application is fully isolated from others so applications cannot read from each other by design as well.

Nice video here: <http://www.youtube.com/watch?v=pzviQLCPCG4>

An application can read the unique ID of the device (which is used for session persistence between service calls) but not access any other information unless allowed to.

Effectively there is no way for it to steal all the data in that list unless you physically tell it that it's ok to do it.

It's the mobile platform that scares the shit out of me the least. They did good here.

<comment><USER13> Thanks. That video seems to only show settings/confirmation-prompts for the usage of location data, but if you can control whether individual apps have access to the network, too, that's handy.

</comment></comment></comment></comment></comment></comment><comment> mike-cardwell It doesn't seem to support using full disk encryption during installation. I like the way it sandboxes things, but I'm not giving up full disk encryption for it.

<comment><USER14> Look again.

LUKS is used for all filesystems. Qubes was _specifically_ engineered to block the Evil Maid scenario and similar vectors for notebooks. See pg. 31 from <http://qubes-os.org/files/doc/arch-spec-0.3.pdf>:

"There are several things that all together make the storage secure in the Qubes architecture:

1\. Confidentiality, understood as preventing one VM from reading other VMs data

2\. Confidentiality, understood as preventing access to the data when the machine is left unattended (full disk encryption, resistance to Evil Maid attacks, etc)

3\. Integrity, understood as preventing one VM from interfering with the filesystem used by other VMs

4\. Security non-critical role: a potential compromise of the storage subsystem doesn't result in other system components, like other VMs, compromise. Storage subsystem is not part of the TCB in Qubes OS."

See also, Section 7.1 System Boot Process, and 8.5 Resistance to Physical Attacks (or just search for "disk encryption").

<comment> mike-cardwell Strange. I went through the install process in a VM and quit out when it started writing a filesystem without making any mention of disk encryption.

</comment></comment></comment><comment><USER15> Very cool! So how does this compare to Chrome OS and it's sandbox technique for tabs. Yes I know it is only a browser, but with offline apps, executable code (native client), and local APIs, it is more like a normal OS.

</comment><comment><USER16> I've been following this, even tried to buy hardware to support it. Fair warning though, Version 1.0 does not support Ivy Bridge architecture. There's an unsupported experimental branch that is supposed to work, though.

</comment><comment><USER17> >So, we believe Qubes OS represents a reasonably secure OS.

>(...) But then again, I'm biased, of course ;)

At least, they are honest heh

</comment><comment><USER18> Wow, talk about being out of touch with the real world. Developers, especially Linux developers, really need to give up on this whole "Desktop" operating system idea. It's not going to work. It is already dead. And I can hardly believe we are still using these ancient systems for many tasks even today. There is no future in WIMP, and people really need to stop developing these Windows clones already. It was lame 10 years ago. If you are still working on desktop OS clones today, you so are terribly out of touch with the real world there really is no hope for you or your product. Get over it.

Touch-based (and by extension, NUI-based) OS'es and mobile applications are the future. Windows always sucked. Mac OS always sucked. Every desktop OS ever built sucked because it is a horrible way to use a computer. Nobody ever really wanted to use these terrible desktop metaphor systems... they only ever did because they _had_ to.

<comment><USER19> I'm sorry but none of that is even vaguely true, as true or false as something can be when it is entirely opinion.

Touch screens are to desktops as push bikes are to tractors. You need both. Some people even use both. Or just one. Or neither.

Maybe you feel this way because you've been driving a tractor around all this time and you feel like you've been wasting your time, however some of us (I imagine a lot of us on HN) like to do farming occasionally :-)

<comment><USER18> That reminds me of the John Ford quote:

      "If I had asked people what they wanted, they would have said faster horses."

People do not desire better desktop operating systems. They want computers to disappear. It simply does not matter how good this awesome new, secure, desktop OS is because it's built for a world that doesn't exist anymore.

<comment><USER20> Henry Ford. And he appears to have never actually said it. And this attitude cost Ford the early lead in market share.

[http://blogs.hbr.org/cs/2011/08/henry_ford_never_said_the_fa...](http://blogs.hbr.org/cs/2011/08/henry_ford_never_said_the_fast.html)

<comment><USER18> Okay so I mistakenly wrote his first name... I don't see how that invalidates what I've said.

<comment><USER21> What's there to "invalidate"? You just made an assertion, not an argument.

You say that nobody wants to use desktops and people want computers to disappear. Unlike you, I don't believe that already, so do you have some evidence for it?</comment></comment></comment></comment></comment></comment>


Not Yet A Hacker - <AUTHOR> http://www.nthnclrk.com/not-yet-a-hacker/

<comment><USER2> Friend, my best advice is: Do it. Don't write about being "about" ready to get there. Be there, and show us.

Cheesy plug: YES, you can!

Piece of advice: Have a goal in mind, and plow through!

<comment><AUTHOR> I do agree, but I had to try something different this time, and I feel like the fact that I've stated this publicly (no matter how little the amount of people that will read anyway) will guilt me in to persevering in those times I'd usually drop out.

I do appreciate this though, thanks.

<comment><USER2> Good technic, there is a quote somewhere that sums up your strategy, which goes something like:

"As long as you do not speak, the word is prisoner of your mouth, once spoken, you are prisoner of your word"

Wise nthnclrk is wise :)</comment></comment></comment>


Best way to sell your Facebook profile? - <AUTHOR> http://www.bitmenu.com/blog.html?headline=my-facebook-bio-now-available We were experimenting with ways to make money on Faceboook, that weren't scam-based.  The latest experiment is in selling profiles.  Facebook lets you export your profile from the beginning of time.  Why not sell it? ... and profit? <comment><AUTHOR> It's better to let marketers, spammers, and russians handle transactions involving your personal data. Sell it yourself? Futile.

</comment><comment><USER2> Dude, you posted that!?</comment>


Ask HN: How's the world been treating you lately?Review my iPhone app:My day was - <AUTHOR> http://www.mydaywas.com

<comment><AUTHOR> I'm using all the proceeds to fund my startup: Picfiti

Picfiti helps you leave virtual notes on real world objects and places using your phone camera.

Take a photo of an object and type in a message to save it. When a friend comes along and takes a photo of the same object, they'll see the message you left for them!

</comment><comment><AUTHOR> Promo codes you can use.

JTT44H7RWFTM TK6TKLHPMAMY YAXXHMHNKNPH

(Valid only for the US store)

<comment><USER2> Thanks, nice graphics -- One question though -- is the mood data stored on your server all the time or only when I want to share it?

<comment><AUTHOR> Its stored on the server all the time. NO personal information about you is collected at all, user ID's are assigned randomly.

There are super cool social features coming up in a bit...hence the saving of the data.

</comment></comment></comment><comment><USER2> How about a promo code?</comment>


Game Engine Black Book Postmortem - <AUTHOR> http://fabiensanglard.net/Game_Engine_Black_Book_Release/index.php <comment><USER2> I have been reading Fabien's book over the past few nights and it has been enormous fun.

Programming for most of us has moved a long way from the metal our code eventually executes on. And it's quite fun to go real low level and understand at an almost atomic how to make a computer do what you want it to do.

That's why this (and Michael Abrash's earlier Graphics Black Book that served as inspiration for this)is so much fun. As an kid who grew up playing games on these machines at that time it all seemed like magic. With quality documentation and the power of nostalgia you can now fully understand (and appreciate) what the likes of Carmack achieved in the early 90s on these machines and now we too can go in and hack around and achieve the same results.

I hope the book does well and Fabien can do the proposed 486 and Pentium companion editions.

<comment><USER3> I agree, I hope this does well. Born around the time to be in "suitable age" when Amos the creator on Amiga, and similar things, where the foshnizzle.

This is a really cool thing with today though - the technical barrier to creating and publishing physical books (and ebooks too of course) is just so so low. Making it financially viable and worth it is another thing. I certainly hope this does well and will buy a physical copy.

<comment><USER2> Agree, indeed barriers to entry in computing generally is getting lower and lower all the time. The issue is that computers are so good now that the need to 'play around with them' is getting less and less. But for those of us that remember peeking and poking memory addresses and programming by trial and error can recognise how good we have it today.

<comment><USER4> Not sure I agree. Entry into computing is definitely getting easier, but it's decelerating due to a number of factors, namely the slow death of Moore's law and the huge amount of data you need to crunch to create useful solution. Tech is improving, but it feels like we're falling off the exponential into something more linear.

As computer performance improvements decelerate, we're starting to see more specialization into particular tech verticals. This specialization makes it harder for people to break into.

For example, it used to be that if you wanted to crunch more data in Excel, you'd just wait six months for the better intel chip. It was faster and easier to do that than write custom software. Now the new chips are only marginally better than the last, and we need to rely on distributed systems linking dozens or hundreds of computers.

A 10 year old kid in the 1990s could easily create and launch a website from scratch, which was the state of the art medium at the time. It will be far more difficult for a 10 year old in the 2010s to grab terabytes of data and process it easily.

<comment><USER3> But that's moving the goal posts...? It's significantly easier to launch a website from scratch today, there are even more frameworks with very easy to follow tutorials and hello world-examples to extend to also make it look good. One simple one-liner copy for eg bootstrap.

What's changed is that it is today even _possible_ "for a 10 year old in the 2010s to grab terabytes of data and process it". Wait a little while for the "easy" part :)

<comment><USER5> > It's significantly easier to launch a website from scratch today,

Write HTML, copy to server, press f5/open URL. It doesn't get easier than the 90s in that regard. You didn't even need a framework for that, so ... I'm not so sure.

<comment><USER6> I think you've really forgotten how hard the copy to server step could be in the 90s

<comment><USER5> I'm pretty sure I've used a ftp client back then too, which wasn't so hard, but sure, it's been a while, my memory may be faulty here.

<comment><USER6> I was more thinking about getting an internet connection and a server

<comment><USER7> Sign up with ISP, fill out phone number & info into modem settings, click connect, wait, use ISPs server space they provided for free to each customer. Done?

In many ways I find that easier than dealing with cable companies and their systems.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> It's a bad idea to worry about writing and formatting at the same time, you get distracted. For me, when writing papers and blog posts, it helps to break it down into three steps:

1\. First, I write just the ideas I want to convey, in bullet points. I don't worry too much about the exact phrasing of these ideas, or how they flow together. If I want to put a diagram, I just sketch a quick concept idea on a notebook.

2\. Next, I go through and turn all the ideas into readable paragraphs. This is easy because I know what I'm going to say, I just have to figure out exactly how I want to say it.

3\. In the last step, I worry about formatting, like making sure the fonts are consistent, the size and margins on images, etc. This is a purely mechanical task and it's nice not worrying about it when writing.

</comment><comment><USER9> I remember I accidentally come to know about Masters of Doom which got me interested in Game Programming. Googling around I found a number of interesting articles such as "1500 archers on a 28.8: Network programming in Age of Empires and beyond", and I eventually stumbled upon Fabien Sanglard's site. The guy is great and I waited eagerly for the release of his book (hopefully the first of a long series) :)

</comment><comment><USER10> I find the author's experience with latex very similar to my own.

The core parts of LaTeX are very simple to learn, and you get to produce high- quality documents fairly easily thanks to its sane defaults. However, once you want to get a bit advanced, all its abstractions leak and it's impossible to comprehend anything without knowing implementation details.

</comment><comment><USER11> I've been refreshing Fabien's twitter for years waiting for this book. Just ordered the physical edition from amazon. Feels good to finally get my hands on this :)

I already have the wolf3d source code building in dosbox with borland c++ 3.1. Great fun awaits!

Thanks for finishing it Fabien.

</comment><comment><USER12> I didnt know fabien was working on this, yet alone writing a book! I def. Need to picl this one up...in like 3 months...after my projects.

<comment><USER13> I'm in that same boat. Reading the title wasn't very interesting, but then I saw Fabien's name and I knew I was in for a very wonderful treat.

Hey Fabien, if you read this, you're super cool and you write amazing articles.

</comment></comment><comment> unkown-unknowns Would love to read this book. Any chance of a DRM-free ePub edition being made and put up for sale?

<comment><USER14> Why not buy the paperback edition?

He put years into making this book, you want to read it ("love"), but you won't buy it because he wants to protect his labor of love? (Not interested in arguments why DRM is ineffectual as it has no bearing on this).

Buy the paperback. I just did. If you would really and truly "love" to read it, then buy it.

But really, is the DRM just an excuse? A reason not to part with $32 dollars? A way to virtue signal that you are appreciative of his work without actually showing that appreciation in the only way that matters?

(I didn't mean for this argument to become a larger criticism of how people act to new products and services in general; but I guess that's what it has become).

<comment><USER15> As we all know, a DRM free version is available (or will be soon) from _ahem_ other sources. I personally don't have any ethical problems with buying a paper copy then downloading the DRM free version.

It would be nice though to be able to buy it in an unrestricted format in the first place.

I sometimes wonder if DRM is more successful at turning potential thieves into customers or turning away potential customers.

<comment><USER2> He gets nearly no money from the dead tree version (4%) and about 35% from the eBook.

I hate drm but I want to put money into things I want more of. So I held my nose and paid for the eBook. I hope drm free emerges later though.

Source [https://twitter.com/fabynou/status/905856105003155457](https://twitter.com/fabynou/status/905856105003155457) and [https://twitter.com/fabynou/status/905857276174413824](https://twitter.com/fabynou/status/905857276174413824)

<comment><USER16> > I hate drm but I want to put money into things I want more of.

So you seriously want more of DRM? Buying something despite DRM gives the market a clear signal that DRM is not so bad after all.

<comment><USER15> It's not clear cut. You have to decide if you want to support the author or avoid DRM. In this case, it's hard to do both.

I dislike DRM as well, but as long as I could easily remove it I was okay with it.

I've bought a lot of ebooks from Amazon for my Kindle. Now that their most recent DRM scheme (KFX) has been uncracked for a long time, I'm having second thoughts about ebooks.

<comment><USER16> > It's not clear cut. You have to decide if you want to support the author or > avoid DRM. In this case, it's hard to do both.

Tell the author that you despise DRM. And as soon as a DRM-free version appears, buy. This sends a clear signal to the market.

On the other hand: As long as the author only sells a DRM-tainted electronic version, he gives a clear signal to the world that he abhors customers who are against DRM. Why should I give him _my_ money then (or more money than necessary)?

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> This was on HN yesterday, and according to that thread the only ebook option was a DRMed PDF.

I'll buy this book in a heartbeat if either of those two acronyms goes away. Ideologically the DRM should go, but practically I'd rather the PDF would go.

<comment><USER18> PDF and formats like EPUB are different use cases.

Definitely without PDF, audiences would not benefit from the very careful editing that has been done, plus other tools associated to fixed-layout renderers, like freehand drawing.

No audience benefits from DRM, but definitely a part of it does from the PDF format.

<comment><USER19> Maybe it's more important to have some readers rather than to have a pixel perfect layout. I and others will not read it as a PDF.

<comment><USER20> On the other hand, I read a lot of things as PDF. I basically read: paper, kindle and PDF, roughly in equal measure.

I typically prefer kindle (which I read on a kindle paperwhite and occasionally on iPad, although I prefer PDF here), but if I'm reading on laptop or desktop, I prefer PDF. When possible, I like to have both Kindle and PDF formatted books, so that I can read whatever I prefer for the device I'm currently using.

But, besides all of that, if I can only choose a single of those formats, I would choose PDF.

<comment><USER19> I would read PDF if large (13+ inches) eink readers weren't so expensive...

</comment></comment></comment></comment></comment><comment><USER21> Am I the only one that jokingly thinks the book title might be just a little bit pretentious? Don't get me wrong, I love what this guy does, I follow him on Twitter, and I have no doubts that the book is great.

But the "color" books like the Red Book or the Orange Book have other actual names, and people just gave them the "color" name because they were classic references. It's like this one just presumes that it's as important as the others and has to have a classic name.

Disclaimer: This complaint is obviously not serious.

<comment><USER22> I don't know the red or orange books you mentioned, my first thought was that it was a play on 'little black book', a book of dirty secrets and hidden knowledge.

<comment><USER23> Probably that and a reference to [https://www.amazon.ca/Michael-Abrashs- Graphics-Programming-B...](https://www.amazon.ca/Michael-Abrashs-Graphics- Programming-Black/dp/1576101746)

<comment><USER24> Don't forget about the OpenGL 'red book' \- OpenGL Programming Guide

And the 'red book' of CD audio, the spec originally was in a red binder.

<comment><USER25> plus the opengl shading language is the orange book

Interestingly, the vulkan book is also red

also: graphics red books are more like anotated standards

</comment></comment></comment></comment></comment><comment><USER26> I'd love a Kindle version.</comment>


Faked Out - <AUTHOR> https://reallifemag.com/faked-out/ <comment><AUTHOR> I really enjoyed this article in general but there were (imvho) some problems with the conclusion.

In order for the conclusion to hold (e.g. "we are not doomed"), society would first needs to change whole industries like legal & forensics.

Courts are outsourcing forensics and judges are relying 100% on "experts". Because judges are so strapped for time, and usually never have the skills to verify an experts claims, cases are ruled in favor of whatever the expert says. e.g. [https://iwpr.net/global-voices/icc-unveil-new- investigation-...](https://iwpr.net/global-voices/icc-unveil-new- investigation-strategy)

Exploit tools sold to Law Enforcement via shady companies like HackingTeam & FinFisher make it easy to hack-back, but also allow the planting evidence. Question is not only if evidence is authentic, but with infinitely complex systems, how can we trust the system not to work against us.

It's infinitely complex to proof it does. What we live through is a constant and incremental power shift from the individual to the system. I highly recommend Jaques Ellul "La Technique", The Technological Society.

The conclusion for me is that we have already every reason to panic.

2 more links on the problem of courts relying to much on external specialists specifically in Germany (sorry in German, please google translate yourself)

[https://daserste.ndr.de/panorama/archiv/2013/gutachter103_pa...](https://daserste.ndr.de/panorama/archiv/2013/gutachter103_page-2.html)

[https://www.welt.de/regionales/hamburg/article3165169/Die- un...](https://www.welt.de/regionales/hamburg/article3165169/Die-unheimliche- Macht-der-Gutachter.html)

<comment><USER2> "What we live through is a constant and incremental power shift from the individual to the system"

What power did an individual serf have in 19th century Russia? What power did an individual Egyptian slave have?

</comment></comment><comment><USER3> The trouble is, we've created mind-bogglingly complex economic and political systems which we cannot model quantitatively with our current means. These are not deterministic systems unless all variables and moving parts are taken into account.

Objective truths on more abstract topics are therefore replaced with speculation based on personal bias and experiences. It might be true based on your experience, but your experience is not representative of the whole system, it is a product of your location in space and time.</comment>


Valve pulls developer from steam for reviewing its own games - <AUTHOR> https://kotaku.com/valve-pulls-developer-from-steam-for-reviewing-its-own-1822995829 <comment><AUTHOR> I find this interesting because most indie video game companies to do this. I have friends who make lots of android and iOS games and they ask all of their family, friends and employees to rate those games. Just so they have a chance of being featured on the App Store/ Play Store. While it may be unethical, this is rampant in the industry, and would it even be fair for a developer to be prevented from rating their own game. Sure, they will be biased, because they have every reason to but would it be any different from movie fanboys rating their favorite movies 10/10.

Here is the link to the original email : [https://i.redd.it/x9cnf7lbrvf01.jpg](https://i.redd.it/x9cnf7lbrvf01.jpg)</comment>


How we turn $199 Chromebooks into Ubuntu-based code learning machines for kids - <AUTHOR> http://blog.codestarter.org/post/93985346780/how-we-turn-199-chromebooks-into-ubuntu-based-code <comment><USER3> Hell yeah! This is a great initiative.

 _By university, many students have already set their minds against a career in tech. We need to reach kids earlier, when they are motivated by curiosity instead of social pressures._

This came up the other day. A 19 year old kid came to my door working for the electric company. We ended up talking a bit and he asked what I did. I explained I'm a designer/developer and I work from home. For him, that was a total mind blow and he explained how he always wanted to be a game developer. I suggested that he should try and that his current job was just a temporary thing he could use to invest in getting better.

The thing that bothered me, though, was that he didn't even think that he could do that, purely based on where he was from and what he saw around him (he alluded to being from the south side of Chicago). Stuff like Codestarter is a great step in the direction toward teaching kids of any background that they can do this stuff, just like everyone else.

Personally, I'd like to see something like this _but_ with a more down-to- earth "here's what they told you and here's why it's wrong" lesson up front.

<comment><USER4> I've got to ask -

What is the drive behind this "get everyone everywhere to code!" initiative?

I just don't get it. You don't see this kind of thing in other industries, do you? Why are so many programmers intent on getting everyone from every demographic, rich poor, black white, interested not interested, into coding?

Forgive me, but it just seems like there's this misconception that everyone should know coding like they know algebra. I understand you people like it, so do I - that doesn't mean it's for everyone.

This comment may get down voted but I assure you it comes from a place of genuine intrigue.

<comment><USER5> At this point it's almost a literacy thing. Basic knowledge and breaking that fear of computers would be enough. At that point people can decide if they're genuinely interested based on knowledge instead of (probably) irrational fear. For some people it really is a matter of just breaking that initial intimidation factor. There's more than enough time wasted in K-12 to not put at least an intro class in there for a year...

I remember getting scolded in my 7th grade (required) home education class because I had the pan's handle in a dangerous position while cooking eggs. The pillow I made was the shit though and I did learn how to make muffins so it wasn't a complete loss. But you've got to agree an Intro to Python/Java class would be a much better use of time.

And then there was that one time I broke my arm playing flag football in one of my countless years of "physical education". Teach kids diet and exercise for that "subject" to be remotely beneficial in my opinion, with an emphasis on the diet. That's lifelong knowledge. I don't play flag football anymore, also still don't have full range of motion in my left arm (it's nothing bad al all, just kind of annoying on occasion).

Or those two years I spent in French. I remember my French name was Pascal. I can tell you my name and count to three but unfortunately can't remember how to tell you bye, or anything else. Everyone should at least be introduced to code like they are to algebra. I was introduced to woodworking, close to a decade of random ass activities in phys. ed., clay classes, jewelry classes, and more I can't even remember.

A semester or better yet full year is more relevant in today's society. And frankly, is a skill that will have a subjectively higher quality of life than whatever else they were considering. Breaking the initial intimidation faction, like I said, could be all it takes. Stupid to not do that when so many other almost-mind-boggling stupid things are required.

I know my 6th/7th grade cousins were amazed this year when I told them I was making an Android app. I told them they could too and there are plenty of sites to start, told them a few, but I know they didn't believe me. I think kids around that age would love making a simple HTML5 game or something. Accomplishing that at a young age would change how they think about tech for the rest of their lives. I know my cousins will never get exposure to that outside of school because their blue collar father (not saying anything bad, my dad is blue collar as well) has them playing sports year round - football, basketball, baseball, and soccer. Now that's awesome, but over the top. Those aren't lifelong skills the same way coding can be. I hate to even limit it to 'coding', it's knowledge that can help apply logic to all areas of life while potentially creating plenty of opportunities.

<comment><USER6> > I had the pan's handle in a dangerous position while cooking eggs. ... But > you've got to agree an Intro to Python/Java class would be a much better use > of time.

Even as a programmer, you still eat 3 times a day, right? There you get your utility. I think cooking and personal finance classes should be much more prominent. The think that was useless for me was Chemistry. The subject I got the most out of - English (I am not a native speaker).

<comment><USER7> Pah, chemistry is just useless because you can't make fireworks any more without risk ending up on a no-fly list or worse ;-)

On a more serious note, I'd not remove anything from parent's list of classes -- I'd even defend the breaking of his arm (in the sense that, I'd rather have _some_ kids break arms, than playtime/phys.ed. being too cuddled).

It's really sad that he didn't feel he got anything from learning French. I suppose that's the price one pays for having "won" the language lottery (it was a little like that with German 70 or so years ago, I'd imagine). Perhaps French should be dropped from American schools and be replaced by a language that actually is more of a gateway into an alternative culture and history, like Arabic or something...

</comment></comment></comment></comment></comment><comment><USER8> The problems exposed show that being a distributor is harder than it seems;

> The "developer mode" boot screen is scary and unhelpful.

Then put your own bootloader ? You can do this by accessing the hardware: [http://www.chromium.org/_/rsrc/1381990807648/chromium- os/dev...](http://www.chromium.org/_/rsrc/1381990807648/chromium-os/developer- information-for-chrome-os-devices/acer-c720-chromebook/c720-chromebook- annotated-innards.png) and removing the write-protect screw. Of course the chromeOS team is making sure it's not easy to bypass their security features, and it has the (desired?) side effect of preventing this kind of mass-scale re-purposing.

> Kernel updates wipe out the custom kernel modules.

Then put your own kernel. Being a distributor means taking responsibility about what's running on your hardware. Make your own repositories, recompile the kernel(you can even automate it), and while you're at it, add all those packages you're installing in the script(hello .deb package downloaded over http), and VERIFY THEIR SIGNATURES with apt.

About the kernel, you could also make sure the upstream kernel supports the trackpad, and then make sure the (intermediary) distributors pick up the associated patches, so it's a burden off your plate in the mid/long term. You could also probably pay Canonical (or anyone else) to do this job.

<comment><USER9> Where is the write-protect screw in that picture?

<comment><USER10> 7.

Information for all available devices can be found under [http://www.chromium.org/chromium-os/developer-information- fo...](http://www.chromium.org/chromium-os/developer-information-for-chrome- os-devices)

Edit: re the GP post, the design is described here: [http://www.chromium.org/chromium-os/chromiumos-design- docs/d...](http://www.chromium.org/chromium-os/chromiumos-design- docs/developer-mode)

</comment></comment></comment><comment><USER11> (disclosure: I'm an Intel employee)

I love the C720. My dad got me one for xmas, and himself. I used crouton to install Ubuntu, but like your approach better. I work on the Intel XDK team and am pushing the C720 as a great development machine since we provide cloud based builds for hybrid apps. You should look into the XDK for Code Starter [https://software.intel.com/en-us/html5/tools](https://software.intel.com/en- us/html5/tools)

<comment><USER12> If developer mode for ChromeOS gives you shell access, what do you gain by installing an Ubuntu partition?

<comment><AUTHOR> Even in developer mode, ChromeOS provides a very limited set of tools, no package manager, and a mostly undocumented environment. It's not really appropriate to use as the base of a developer machine. Ubuntu, on the other hand, has all of the right things to make it easy to use and extensible for devs.

<comment><USER13> I think that in long term it will take much less effort to customize ChromeOS than Ubuntu. Initially it will be harder but after that it will require next to no maintenance. Changing the kernel sounds much more complicated than finding a way to install a package manager. Google might also be willing to participate in this in more ways than just helping set up the environment, which could be very beneficial for the whole project.

</comment></comment></comment></comment><comment><USER14> Getting rid of the nag screen is explained here: [https://johnlewis.ie/how-to- make-seabios-the-default-on-your...](https://johnlewis.ie/how-to-make-seabios- the-default-on-your-acer-c720/)

Since this _totally_ undermines the security concept, some dis-assembly is required (open the case, turn a screw, close the case), which is described in the chromeos developer documentation

<comment><AUTHOR> Yeah, I saw this technique, but it requires violating the warranty (opening the case), and we'd really like kids to be able to get their laptops fixed for free if something goes wrong. Still great that it's possible to do, and can make a fun project for kids with our laptops.

</comment></comment><comment><USER15> I have an Acer C720 myself but put ElementaryOS on instead of Ubuntu - <USER2> like a dream and looks great to boot.

A good thing about the C720 is that the SSD is upgradeable fairly simply[0], though it's easy enough to stick an SD card in as a stopgap.

I picked up a refurb (not that you'd know to look at it, feels brand new) for £130. Wouldn't get an 8.5hr lightweight laptop for anything close to that elsewhere.

[0] [http://www.thessdreview.com/daily-news/latest-buzz/acer- chro...](http://www.thessdreview.com/daily-news/latest-buzz/acer- chromebook-c720-ssd-upgrade-mydigitalssd-m-2-ngff-128gb-sc2-ssd-worlds- easiest-upgrade/)

<comment><USER16> Does ElementaryOS run better than Ubuntu on it?

<comment><USER15> I can't say for sure unfortunately as my only previous experience of Ubuntu on a Chromebook was via Crouton on a Samsung which, being ARM, was somewhat limited in what you could do with it.

Elementary on the other hand I run natively via dual boot. It's nice and slick, and I much prefer Pantheon to Unity, but I can't really give you a direct comparison on this device.

<comment><USER17> > being ARM, was somewhat limited in what you could do with it

What are the limitations and where do they come from? I suspected something like that could be true, but not exactly sure.

</comment></comment></comment></comment><comment><USER18> I quite like the work you've done here! Most computers in a school are ill- equipped for programming needs.

I'm a bit concerned that this laptop is designed with an experienced programmer in mind. I don't think the *nix Terminal is friendly to noobs, considering it comes with no safety nets. Additionally, a teacher who is unfamiliar with Ubuntu is likely to have a hard time helping students. I tweeted a few more thoughts here: [https://twitter.com/dshankar/timelines/497091774792228864](https://twitter.com/dshankar/timelines/497091774792228864)

In it's current state, perhaps this laptop would be better suited at college students who are already familiar with the basics? At middle school/high school, students & teachers need a more friendly introduction into the programming world, not the real & scary one that is modern day Linux. However at the college level, students need tools that will prepare them for the industry and Codestarter packages all the tools one will likely use.

<comment><AUTHOR> Thanks! We're targeting an age range of 7-17 years old, and distributing these laptops to kids that are attending learn-to-code programs like CoderDojo. For the very young, most will choose to boot ChromeOS and use online programming tools like Scratch, which is totally great. Installing Ubuntu gives more advanced kids a place to go further, with no limitations, and that's why we do it.

<comment><USER18> That makes sense. Considering how popular Chromebooks are becoming, this could be quite valuable for schools.

</comment></comment></comment><comment><USER19> For the driver problem: You should look into DKMS. That's a better stop-gap than holding back the kernel modules. What DKMS does is to re-compile your kernel module each time the kernel is updated. It can also move aside kernel modules with the same name in the base kernel. See [http://linux.dell.com/dkms/manpage.html](http://linux.dell.com/dkms/manpage.html)

<comment><AUTHOR> I did come across DKMS during my research on solving the problem, and spent some time trying to figure out how to get it set up, but fizzled out in my attempts to get it working. Do you know of any more extensive tutorials on the matter? Real-world examples would also be hugely helpful. I couldn't find much. Thanks!

<comment><USER19> Arch linux has a decent tutorial: [https://wiki.archlinux.org/index.php/Dynamic_Kernel_Module_S...](https://wiki.archlinux.org/index.php/Dynamic_Kernel_Module_Support)

As for a _simple_ example.. At a previous job, I did dkms support for a driver. Grab [https://www.myricom.com/pub/Myri10GE/myri10ge- linux.1.5.3.p5...](https://www.myricom.com/pub/Myri10GE/myri10ge- linux.1.5.3.p5.tgz) & look at dkms.conf and read linux/README.dkms

For more complex examples, look at zfs-on-linux. I know that is also how nvidia packages their hybrid binary blob drivers.

<comment><USER20> I really love Arch, even though I don't use it on a daily basis anymore the community wiki is the best resource I've found for guides on how to do a large number of tasks with the kernel that can work in most other distros.

</comment></comment></comment></comment><comment><USER21> It's good to see Minecraft mentioned--a friend of mine recently ran a two-day Saturday class on beginning programming in Python, using Minecraft on Raspberry pis.

Kids had a lot of fun making functions to do cool things in Minecraft. Gamedev is probably the most rewarding way to learn programming.

<comment><AUTHOR> That's rad. Minecraft is such a great gateway for getting kids into programming, it's awesome to see educators taking advantage of that. Does your friend have their curriculum available anywhere? I'd love to take a look at how they ran it.

<comment><USER22> I'd also like to see the curriculum!

<comment><USER23> mewtoo^w me too

</comment></comment></comment></comment><comment><USER24> Cool project but sublime text is not free software and a nag screen isn't exactly fun to see quite often especially for kids.

<comment><USER25> Also if you want to be taken serious you shouldn't be advising people to use a trial version for free without paying.

I guess you can legally say you're trying it out for any amount of time but it's still unethical.

<comment><AUTHOR> These are both fair points, and we'd like to offer free Sublime Text licenses to recipients of our laptops, I just haven't had time yet to explore the best way to make that happen. Once Atom has a competent Linux version, we'll likely switch to installing that instead, as it's open source but still very friendly for novice developers.

<comment><USER26> Why not just use Gedit or Geany or any of the other many free software text editors available on Linux?

<comment><USER27> Probably the same reason they're using Ubuntu and Chrome: the alternatives, while free, aren't fashionable enough.

<comment><USER25> Except Ubuntu and Chrome are both really good products while still being fashionable.

I'd use Sublime any day of the week over Gedit even if it wasn't "cool"

<comment><USER28> Gedit is pretty bare-bones and not really a programmers editor despite a few features in that direction.

Geany, on the other hand is everything a beginner needs and without proprietary concerns.

</comment></comment></comment></comment></comment></comment></comment><comment><USER29> You can buy Toshiba Satellite 15.6" with 4GB Memory and 500 GB hard drive for $229 [http://www.bestbuy.com/site/toshiba-satellite-15-6-laptop- in...](http://www.bestbuy.com/site/toshiba-satellite-15-6-laptop-intel- celeron-4gb-memory-500gb-hard-drive-jet- black/7351008.p?id=1219265947912&skuId=7351008&st=categoryid$pcmcat247400050000&cp=1&lp=1)

<comment><USER30> I just stumbled on this:

[http://www.groupon.com/deals/gg-acer-116-chromebook- with-14g...](http://www.groupon.com/deals/gg-acer-116-chromebook-with-14ghz- dual-core-processor)

$129.99 for a refurbished 11" Acer Chromebook. Crazy.

<comment><USER31> This guy seems to have a big inventory of them for $120:

[http://sacramento.craigslist.org/syd/4584307735.html](http://sacramento.craigslist.org/syd/4584307735.html)

</comment></comment></comment><comment><USER32> OA says Java is being included.

Would processing (processing.org) make a good added extra? Has a lot of example 'sketches'. Has audio as well as graphical code examples. Lots of example projects around, some ambitious[1], exhibit Web sites, plenty teaching material available, peer reviewed/published stuff (might help with school committees). Comes with an integrated IDE and docs.

Might act as a bridge between the simplified graphical environments and Java/Eclipse while developing code concepts further.

[1] [https://www.ibm.com/developerworks/opensource/library/os- dat...](https://www.ibm.com/developerworks/opensource/library/os-datavis/)

</comment><comment><USER33> I know I can donate, but why can't I buy one through you? If you've already done the effort to develop the product, why not sell it to the "savvy developer looking for an inexpensive laptop to travel with", reduce your per- unit costs, and make some profit you can pour back into the project?

<comment><AUTHOR> We'd very much like to, but we're only a few months into this endeavor, and we want to make sure that our product is really polished before we start selling them in quantity. We'll get there! In the meantime, if you're willing to put $300 towards a ready-made Codestarter laptop, I'd be game to put one together for you and have any proceeds go towards the program. If you're interested, email me: firstname.lastname@example.com.

</comment></comment><comment><USER34> I'm a mentor for a Lego robotics team and have been for years - this year's season will mark my eighth year of Lego Robotics. I love to help the kids learn and I even try to teach them (to some extent) how to code.

This looks great, and I'd much rather get four of these for my team than a new laptop for myself. However, it's crucial to have Mindstorms software, which only runs in a VM [0]. Can you test if it's at all possible (speed-wise) to run the NXT-G software in a VM? I don't care if it's a bit sluggish or if it takes five minutes to start as long as it's usable.

If so, this would be absolutely revolutionary. So many teams don't have enough computers or have to share one computer.

If you don't have the software or an NXT, I'd love to buy one from you guys, test it out, and evangelize it to everyone I meet. My kids would go crazy for another computer.

[0] [http://superuser.com/questions/364864/is-it-possible-to- run-...](http://superuser.com/questions/364864/is-it-possible-to-run-nxt-g- software-under-linux-using-wine)

</comment><comment><USER35> When I bought it this Acer C720 was like an experiment, at first I was skeptical.

Now it's my main dev machine: its very little weight enables me to carry it wherever I go, the battery lasts 18h (18 HOURS, CRAZY!) if I read only PDFs, the 2gb of ram and the dual core are just perfect (but not tempting about running virtual machines on it), and with the SSD it performs better than more powerful machines with HDs. Oh, and I just love the 12" format.

(Of course I have thrown away ChromeOS, now I run elementary OS)

<comment><USER36> How good is development on it (& elementary OS). I've only used Ubuntu/OSX for serious development.

Does the 2GB RAM cause any issues?

<comment><USER35> I think it's just perfect: the zero-bloat of elementary OS allows me to get my multitasking work done flawlessly, keeping firefox+sublime+atom+a-lot-of- terminals open without a glitch.

Also the dual core Celeron is fast in compiling things for elementary dev (of course just don't think to run Gentoo on it), while moderates the desire to play games.

About the 2GB RAM: as devs we are used to systems with 8/16 GB today; if you can accept that even RAM is a finite thing so it isn't an issue.

Anyway I try to preserve my SSD, so I keep my ~/Downloads folder in RAM, and at first I disabled the swap volume: the system just freezed too often. So I re-enabled the swap, but I reduced the swappiness and I plan to move it on an SD card.

<comment><USER37> > Anyway I try to preserve my SSD

You really don't need to do that anymore.

<comment><USER35> Why? Any writing cycle consumes it.

And trust me, the Downloads folder in RAM is one of the best thing you can do to reduce the bloating of files in a system: you learn to copy away the things you really need, and leave the others there; at the next reboot they'll be vanished.

</comment></comment></comment></comment></comment><comment><USER38> I got an ARM chromebook, and one of the biggest downsides is that I cannot run Sublime Text. Very disappointing there is no ARM build.

<comment><USER39> This was a huge problem for me as well. If I couldn't apt-get something, I was stuck. Also, it was hard for me to install things locally since my directories were all mucked up from the hacky installation. It ended up being more trouble than it was worth.

<comment><AUTHOR> The Intel Celeron processor is what finally made me interested in the latest Chromebooks. For development, ARM is still a pretty painful thing to have to deal with.

</comment></comment></comment><comment><USER40> I think crouton is a much better-integrated experience than dual booting. You can set up the Ubuntu chroot exactly the same way you have in this, but you don't have to reboot if you want to watch Netflix or use Chrome OS. With the crouton integration extension (synchronized clipboard, open links from Ubuntu in Chrome OS), Chrome OS will feel like "just another app" (even though Ubuntu is the "app"/chroot).

Another benefit of using crouton (with an SD card) is that if the user accidentally hits space during the boot warning and developer mode is disabled, they can simply re-enable developer mode and nothing is lost in the Ubuntu chroot. Unfortunately, the C720 has an extremely slow SD reader, so you'd probably want to go with the Dell Chromebook 11 (same processor, ~90MB/s SD reader, better battery and build quality, $70 more) if you wanted to go this route.

<comment><AUTHOR> It is very nicely integrated, and that may very well be the best method for a more experienced developer. For our recipients, the simplicity of the dual- boot setup is nice and makes it easy to understand what's going on under the hood.

</comment></comment><comment><USER41> Here is a refurbished C720 for $130 if that helps

[http://www.groupon.com/deals/gg-acer-116-chromebook- with-14g...](http://www.groupon.com/deals/gg-acer-116-chromebook-with-14ghz- dual-core-processor)

</comment><comment><USER42> Awesome! Reminds me of this article on my blog

[http://blog.zfeldman.com/2013-10-05-setting-up-a- chromebook-...](http://blog.zfeldman.com/2013-10-05-setting-up-a-chromebook- development-laptop/)

<comment><USER42> Also, I totally faced the same problems which is why my Chromebook is basically bricked now - when people press space all of the changes are erased...there needs to be a more user friendly way to make this process work. I'd be interested in collaborating on this process perhaps, shoot me an e-mail at zach (at) nycda (dot) com

<comment><AUTHOR> Great post! I'll definitely take you up on the offer, thanks!

</comment></comment></comment><comment><USER43> Do people remember Edubuntu? Maybe there should be a version called Codebuntu.

<comment><AUTHOR> That would be amazing, and it's something I'd love to pursue in the long run. It seems a natural evolution of our current approach.

</comment></comment><comment><USER44> I wanted to mention that you can install Scratch 2.0 offline—it runs as an Adobe Air app. See [http://scratch.mit.edu/scratch2download/](http://scratch.mit.edu/scratch2download/)

The offline editor also lets you import extensions, which means that if you're adventurous, you can hook up Scratch to your NXT, your Arduino, your LEAP Motion, your Sphero, your Kinect, anything. That should be pretty exciting for new coders. A friend of mine's speaking about this at the Scratch conference now-ish.

</comment><comment><USER45> One of our sdk devs broke his mb air and got one of these as a temporary replacement. Seemed to work really well, used it over a week long sprint. Wish they came with more RAM though

<comment><USER46> The original Acer version had 4GB. I tried to buy one a month or two ofter they were released, but 4gb versions ended up being sold out because of the switch to the current 2GB version. So I never ended up getting one.

</comment></comment><comment><USER47> In programming there are doers and thinkers.

Thinkers also write code, but they have a perfect understanding - breadth and depth - of the application, the environment, the tools they use, the purpose...

They have full autonomy and initiate things.

They have passion and basically do not need any formal education in CS.

Doers receive requirements and implement using the framework they have being told to use.

Most people who have been told to do CS because it is financially rewarding or a good job end up in this category. It is any-office-job for them.

</comment><comment><USER48> I have the Acer C720 and installed Linux on it. It is an excellent development machine for what it is. Cheap but sturdy, light enough to carry places that I'm afraid to bring my Chromebook Pixel, cheap enough that I wouldn't be too bothered if I were to lose it instead of the Pixel, and fast enough to do most of what I want.

</comment><comment><USER17> Are you sure you won't run into limitations of 2GB RAM? That's the thing that worries me most about these Chromebooks, if the SSD is indeed expandable. I routinely run over 2GB on 32-bit Ubuntu with regular office and internet browsing tasks; sometimes over 4GB.

</comment><comment><USER49> I'm wondering, technically you're supposed to buy Sublime Text. Are you just running the (infinite) trial version of Sublime, are you purchasing a license for every laptop, or do you have some kind of sponsoring by the guy behind Sublime?

Same question goes for Minecraft.

<comment><AUTHOR> I'd love to offer free licenses of ST and am working on a way to do that. Until then, the trial will suffice for a lot of kids, and pre-installing it means they can easily try it out. But yes, a better long-term solution is needed.

<comment><USER50> Github's atom might be a good long-term solution when it becomes more stable.

<comment><AUTHOR> Absolutely, and I mentioned that in a different comment. I'd love to provide Atom on our laptops.

</comment></comment></comment></comment><comment><USER51> Everything was going fine UNTIL.... one accidental press of the space bar and you wipe everything out! Yikes. :) Still looks great, but something tells me this would be in my kids' hands for about 3 days until everything accidentally got wiped out.

<comment><AUTHOR> To be fair, pressing SPACE gets you a 2nd confirmation screen that must also be accepted, before your fate is sealed. And even then it just places you back into normal ChromeOS mode. The installer can easily be re-run to get you back to Codestarter-factory-settings, and is actually a pretty nice learning experience all on its own. But, yeah, those are all rationalizations for what is a non-ideal experience. I'm hoping to find a good solution to the problem.

<comment><USER51> But what about all your saved work? Reinstalling and losing everything could be a real tear jerker for kids. In fact, it's unlikely they would start over, possibly resulting in giving up on it completely given the emotional side effects.

Maybe the solution should have a cloud backup option built in that uses Dropbox or something to clone all your data. Then at least you are just a couple-hour restore away from being back online.

</comment></comment></comment><comment><USER52> Sorry for my lack of knowledge, but will this leave ChromeOS side-by-side with Ubuntu? If so, is this because it's technically not possible to only run Ubuntu, or because of other (legal, warranty, etc.) issues, or simply by choice?

Thanks.

<comment><AUTHOR> Our installer will leave you with the ability to boot either ChromeOS or Ubuntu. It is possible to wipe ChromeOS completely and boot just to Ubuntu, if that is your goal.

<comment><USER36> Are there any driver issues with a clean Ubuntu 14.04 install? (the post had mentioned some issues with the touchpad)

</comment></comment></comment><comment><USER53> Why _must_ it run Ubuntu? Especially if you're gonna turn around and make Chrome (not Chromium) the default browser anyway?

Is it for the Minecraft (which, by the way, encourages a construction mindset, not an engineering mindset, since Minecraft takes numerous liberties with the laws of physics)?

That seems like the only good reason, because you can already learn to code just fine on Chrome/Chromium.

</comment><comment><USER54> Im not a kid but I may look into this to learn a bit of code myself.

<comment><AUTHOR> That's amazing! Let me know if I can help in any way.

<comment><USER54> Coming from an almost totally Windows experience, how restrictive is 2GB of RAM going to be in Ubuntu, because Im not even sure a Windows machine would function on 2GB these days haha.

<comment><AUTHOR> For browsing the web and simple development tasks, 2GB is sufficient. More is better, but if you're working on a budget, then 2GB will get the job done.

</comment></comment></comment></comment><comment><USER55> Or do it the easy way without messing up the bootloader and Os: Set them up with Nitrous.io and get right to coding.

<comment><AUTHOR> Yep, and still totally possible by just booting into ChromeOS and firing up Chrome. But we want these kids to have the opportunity to explore a full operating system and see what makes the machine tick. It's also really important to us that kids can learn to program without a full-time internet connection (not all of our recipients have internet at home), and Ubuntu allows for that.

</comment></comment><comment><USER56> I'll probably get a bunch of hate for this, but I honestly think this is a bad idea. My main concerns are the phrases "It must run Ubuntu", "It must have Google Chrome as the default browser", and "It must support Minecraft", and I have minor concerns with the solutions to the other statements.

* Ubuntu: why ubuntu? because it is _popular_? that's a bad reason, and it's magnified that this is supposed to be a teaching tool. How can you justify teaching kids to do something because it's popular?

* Must have Chrome: I read this and laughed. As a fairly large supporter of the free software foundation, I am frankly appalled that you want to use chrome when there are many better and more free alternatives. There is of course firefox, which is free, but if your real desire is the webkit rendering engine or v8, then there is always chromium or DWB.

* Minecraft: I play minecraft, and I think it's fun. I write mods, and I run servers. But to include video games on an educational computer is repulsive and you should be ashamed. So what if kids like it? Kids like refined sugar too, lets just give that to students as a way for them to enjoy food.

Some other points: _The wide variety of programming languages is good, but the list you provided is noticeably lacking C (the most widely used language) or any systems language. Programming is about much more than stupid hello world programs and writing silly kiddie games, and should be treated as such. I also noticed a lack of purely functional languages, which bothers me more than I can effectively express in words._ The lack of internet is good, but you completely missed the existence of man pages and virtually all compilers work offline as well. _Having a great editor is fantastic, and I use sublime text (I even paid $70 for the license!), but as many people have said, you shouldn 't. That $70 is much better spent on better hardware for the computer, and shipping with unlicensed software is wrong. Vim and Emacs are both more than capable of doing EVERYTHING sublime does and are much lighter weight, and free. _Including the paragraph about the 'custom sidebar' is laughable. Aside from the fact that I dislike Unity and that the sidebar can be configured by students already, I don't think it's appropriate to coerce students into using the software YOU want them too. That flies so hard in the face of the unix philosophy. _the function keys are easy to remap. I suggest looking into sxhkd as a replacement for the bloated tools you listed. It 's free software and can be found on github. It is written by the same author as bspwm. _developer mode screen: so reformat the laptop. I did it with arch and it works fine and has no 'scary screen' as you put it. *trackpad support is not the responsibility of the kernel, and a kernel update will not in fact remove support. This problem can easily be solved by distributing modified versions of the apt-get remote upstream lists.

My final remark is that every time I hear someone refer to themselves as a 'coder' rather than a programmer, I die a bit inside. Please take this profession seriously and don't encourage what are commonly know as 'skript kiddies'.

<comment><USER57> Ubuntu's popularity is actually a benefit - popular things have more resources, both in terms of software/documentation, and in terms of eyeballs that can help out when things go south.

In addition, Ubuntu is a good choice because it's target audience is naive users. If you want to be a hardcore developer, you can use Ubuntu, but you're not its _target_ audience. It also has official support lasting for years for appropriate releases, which not all distros do.

You seem to be personally offended by a lot of personal choices - for example, calling preinstalling text editors 'coercion'. I wonder what this 'coercion'-free system you're imagining looks like? Is it just a boot screen that says "insert SD card with distro installer of your choice"? Then you can install whatever you like, with no-one pushing any particular software on you.

<comment><USER58> _> Ubuntu's popularity is actually a benefit_

Except it's often exaggerated. I doubt Ubuntu is even the most popular distro these days. Also, lately Ubuntu (or rather Canonical) diverged from the global Linux community with efforts like Mir and so on. So they are quite controversial, and using them as a recommended distro for new Linux users is now more questionable than before.

<comment><USER57> What do you think is a more naif-friendly distro?

As for popularity, whenever I encounter projects on the web, they almost always have an ubuntu .deb (usually specifically ubuntu and not debian), with redhat/centos being in second place. It's not as common to see installation sections for other distros. At a conference, when a speaker does the who-uses- what-distro question, more hands go up for ubuntu than others. I'm not sure which distro you're thinking of when you suggest others are more popular, to be honest.

In any case, the OP's point was that _choosing on popularity_ was a bad thing - selecting another popular distro in place of distro X would not change that line of reasoning. I disagree, for the reasons I gave: more willing hands to help out, more appropriate resources available. Given the OP is an FSF fan, maybe they go for gNewSense... which doesn't have much mindshare. "I'm having problems with my gNewSense install, can you help?" isn't going to hit as many resources as a popular distro (and on a tangent, why would you ever name your distro a homonym to the word 'nuisance'?)

<comment><USER58> _> I encounter projects on the web, they almost always have an ubuntu .deb_

Ubuntu got a lot of hype in the past, and Canonical put an effort in PRing it. However it doesn't really mean that it's actually most used. I never really saw some conclusive studies on that. It surely is the most PRed / hyped. Or rather was until recently. That hype cooled off somewhat lately because of various controversies like Mir. Mint is commonly perceived as most popular distro these days (I'm not a Mint user for the reference, I use Debian), though again - it's hard to prove it globally.

I don't equate PR with actual size of the user base. It's probably more proper to use the term "most used" than "most popular" for such kind of evaluation. Making a choice based on PR / perceived popularity works to some degree, but it's not a precise method therefore it can be disputed.

 _> What do you think is a more naif-friendly distro?_

I'd recommend Mint or may be some KDE centric distro for new users, openSUSE for instance.

<comment><USER57> Mint is popular, but it's popularity is largely because it's basically a skinned, traditional-desktop version of Ubuntu - it's binary compatible, so the various .debs advertised with Ubuntu also work for Mint. So in terms of resources available, the two use the same resources (ubuntu PPAs work fine in mint, for example).

But in terms of user experience? Depends on what you want. I prefer a traditional desktop (debian/kde myself) so I'm not fond of Unity and loathe guh-nome 3. But for a naive just learning about how to deal with computers, unity might be good for them - it's pretty simple, and works the same on touchscreens or with a mouse. That would be something worth testing, actually - do the kids using these laptops work better with a Unity-style interface or a traditional desktop? Which one allows them to use their computers more effectively?

<comment><USER58> _> do the kids using these laptops work better with a Unity-style interface or a traditional desktop? Which one allows them to use their computers more effectively?_

Hard to say. I personally think KDE is better for both purposes (experienced users and beginners). Unity style UI is too limiting and I don't like the direction it takes.

 _> Mint is popular, but it's popularity is largely because it's basically a skinned, traditional-desktop version of Ubuntu_

It's more than that. Mint is also not managed by Canonical, and therefore they are distanced from related controversies. They are sticking to the global community in choices like Wayland and so on.</comment></comment></comment></comment></comment></comment></comment>