Neither Microsoft, Nokia, nor anyone else should fork Android. It's unforkable. - <AUTHOR> http://arstechnica.com/information-technology/2014/02/neither-microsoft-nokia-nor-anyone-else-should-fork-android-its-unforkable/ <comment><USER2> The "android isn't very open source" sentiment really bothers me and I see it a lot here. It is a complete and fully functional mobile OS under extremely permissive licensing. Pull it! Change it! Build it! Fork it! Whatever! AOSP _is_ open source.

Look at the closed source services google adds. As far as I know they are all related to google services(Someone please correct me if I'm wrong). Their store, their maps, their email, their location services. This isn't needed in the open source distro and it works great without them. Also there are a lot of restriction on the brand and how you use it when release an Android product. That isn't unique to Android. See firefox vs iceweasel.

Sure sometimes it gets annoying that a lot of Android design decisions are made behind closed doors and in working in the framework sometimes I have to play the game of "Guess what the Google engineer was thinking" because documentation can be scarce. Also from what I've heard sending changing upstream isn't an easy process. These things are nice and make it an easy product to work with... but aren't required for it to be truly open source. The code is there in a series of open git repos and under Apache license. That is open source in my book.

<comment><USER3> I think the issue is that all of those Google services are really what makes Android Android. An Android phone lacking integration with Gmail, Google Calendar, etc, without something else to make it compelling (like the Kindle Fire), would be a pretty tough sell I think.

<comment><USER4> You could say the same for GNU. What is Linux without a DE? And a fancy DE like GNOME Shell pulls in _a lot_ of dependencies, the latest furore in that area is GNOME&systemd.

Difference between systemd and GMS is, developers aren't making money off of systemd being in their control, Google relies almost wholly on it for Android profits.

Android is a _fully_ functional Linux based operating system. To expect GMS to just be handed out like it was a keg party flier without considering the actual economic reality of running Google is ridiculous.

OEMs like Samsung weren't fooled back in ~2004 to think they'd get an amazing OS for their phones for free, and the deal Google is offering is beyond amazing compared to how other (tech) firms do business. imo.

<comment><USER5> Wait, isn't GNOME a part GNU Project?

</comment></comment></comment></comment><comment><USER6> Microsoft is just not going to abandon Windows Phone, for fundamentally these reasons:

"If it's a core business function – do it yourself, no matter what." [http://www.codinghorror.com/blog/2008/10/programming-is- hard...](http://www.codinghorror.com/blog/2008/10/programming-is-hard-lets-go- shopping.html)

MS certainly will view "a computer in every pocket, and all of them running MS Software" as core to their future. If they _do_ abandon Windows phone, it will be because that has changed.

In the meantime, MS is a company with a track record of plugging away until version _x_ of the product is good enough to succeed.

<comment><USER7> You forget "Embrace, extend . . "

The other mobile ecosystems are now so far in front they have no viable option other than the embracing and extending. Android happens to be flexible enough at the software layer (not just licensing) to make such a thing remarkably easy to do, given the resources.

<comment><USER6> > The other mobile ecosystems are now so far in front they have no viable > option other than the embracing and extending.

That's your opinion. I doubt that it would get any traction inside MS.

It just doesn't make sense - are MS more likely to take the android kernel and reskin it to look like WinPhone, or continue to believe that writing OS kernels is a core company competence ... which it is, really. If one day MS could not write OS kernels any more they would be in serious trouble. It's a core business function, so they do it themselves.

How would re-skinning android help MS get "in front" anyway? They have technically solid product in Windows Phone, they need other things to make it win, and they know it. Hence, the whole Nokia deal.

<comment><USER8> "they need other things" \- like the extremely strong app eco-system of Android (in comparison to Windows Phone, specifically). WP is a strong OS with some great design choices etc (IMO, obviously); it's main downfall from my point of view is the lack of apps. Forking Android (not necessarily just "skinning" but a step beyond that) is an obvious solution to that issue.

<comment><USER9> The entire article is all about how it's not really an obvious solution at all. Amazon is forking Android, and they have rewritten many of the GMS APIs, and yet, many of the apps do not run on Kindle Fire like they do on Android.

</comment></comment></comment></comment></comment><comment><USER10> I want to like the article, because the idea that Microsoft should fork Android is kinda silly. The idea that nobody should do it is even sillier, though.

The article, in the course of explaining why it can't be done, names two major examples of where it already has been done successfully -- Amazon's Kindle ecosystem and any number of Chinese OEMs. It doesn't mention other (admittedly less successful) forks, like B&N's Nook tablets or the Ouya. It also doesn't mention how far along the road Samsung was to having the ability to ship Android without Google Mobile Services, until Samsung and Google made a peace treaty that involved sending Motorola off to live with Lenovo.

Yes, if you fork Android, you lose Google's ecosystem. It's not impossible to duplicate, though -- Amazon's done it, Samsung just about did it. And Microsoft already owns all the things it'd need to do it -- that's how Windows Phone has an ecosystem. Losing Google's ecosystem isn't the downside of forking Android, it's the entire point.

Once you've done it, though, you need to convince people to use your fork instead of Google's. Microsoft's success at prying people towards Windows Phone and away from Android can basically boil down to:

1) The ability to run on lower-powered and thus cheaper hardware and still provide a polished experience, and 2) Nokia's build quality.

Switching OS cores to AOSP instead of the current Windows Phone OS wouldn't entirely solve Microsoft's app problem (look at the Amazon app store), and it would piss away the only competitive advantage their platform (as opposed to their OEM partner) has against Google's Android experience. Microsoft isn't Amazon -- they aren't a cloud company looking for an OS to give to consumers, they already have an OS. They just need to make their ecosystem more appealing, and giving up on Windows Phone now wouldn't do that.

<comment><USER11> > 1) The ability to run on lower-powered and thus cheaper hardware and still > provide a polished experience, and 2) Nokia's build quality.

The Moto G has put a price floor on things. Even if Microsoft/Nokia could limbo under it, why would anybody buy a basically-the-same Nokia for $150 instead of $179 Real Android? Its too late, these are commodities.

<comment><USER10> You can get a Nokia 520/521 for a little over a third of $150.

<comment><USER11> From its wiki page: "The price was halved to $50 (£70 in the UK) for the holidays"

So its $100 and only roughly comparable. And that's rather my point, few people from developed countries will opt for it to save $79.

<comment><USER10> From "developed" countries? No. From countries with subsidized handsets, maybe. But Europe is certainly "developed," and that's where Windows Phone is making its biggest inroads:

[http://www.zdnet.com/windows-phone-takes-more-of-europes- sma...](http://www.zdnet.com/windows-phone-takes-more-of-europes-smartphone- market-amid-signs-of-a-nokia-comeback-7000021335/)

</comment></comment></comment></comment></comment><comment><USER12> I don't have much to say about the forking issue, but it want to say this: I own and LOVE my Windows Phone (Nokia Lumia 822). I started on android (Droid X) after deciding the iPhone was too small, bought another one (Droid Razr Maxx), and finally ended up at Windows Phone after playing with it on some online simulator.

I wouldn't go back to android or ios. I don't think they're as usable or fit me as well.

Anecdotally, my wife also joined me on Windows Phone recently after dropping her android phone. She started on iPhone, lost it, was gifted my Razr Maxx, then broke it. She liked the UI of ios, but loved Swype on android and said she'd never go back to ios. Then while we waited a couple weeks for our phone upgrade, she played with my phone and ended up really liking it. She now says it is her favorite phone (Nokia Lumia 920). She likes the camera and the excellent apps from Nokia.

Obviously I don't want MS to switch to android. There may be more apps, but so many are of such poor quality that it is entirely irrelevant to me. Same goes for the apple store. It's almost overwhelming how many bad apps there are.

<comment><USER13> What feature or features of Windows Phone drive you to love it? How would you to describe the experience in relation to Android or iOS?

Are there multiple web browser options?

<comment><USER12> Live tiles, arranging my start screen to show exactly what I want without having to open any apps, I think is the single biggest feature that I love about WP. I also love the text prediction and correction when typing. I haven't seen any other mobile OS do it as well.

Android and iOS are pretty much one and the same for me. They do similar things and they come stock with a very similar UI. I'm not big on the list of icons/folders and multiple pages setup.

Regarding ios7, I don't like the new text-as-button thing they have going. It's hard to find them sometimes. I also really dislike the difference in pre- ios7 apps and ios7 apps as far as UI goes. It's jarring to me. It'd be like having a windows XP window pop up in Windows 8, or an OS9 window pop up in OSX.

I am also not a fan of the all-caps ios keyboard. Windows Phone keyboard displays the characters exactly as they're about to appear, but in ios they are always capitals (just differently sized) and it makes for a good bit of errors for me. I still have an ipad with ios7, so I interact with it second- most of all mobile operating systems.

<comment><USER13> Do you think an alternative launcher for Android that featured a similar approach to live tiles would capture that advantage? As opposed to all the Newton/Palm style launchers out there.

<comment><USER12> I suppose they could, but every good launcher I had on android wanted donations or an up-front + theme fee. The best android devices are really expensive, whereas you can get a brand new windows phone for wicked cheap (mine was $50 when I got it, my wife's was free).

</comment></comment></comment></comment></comment><comment><USER7> It's not a poor idea at all. The main example used to be Amazon, but now it's China. China are going to be the source of a lot of Google headaches, thanks to their inability to operate there leading to a majority of Android devices shipped there not including their services at all, giving a critical mass to the market for applications without their components.

Hugo Barra ended up at a Chinese company (Xiaomi) and Google just invested in Lenovo, but unless there's a big policy change on the way the Android/China beast will get further and further out of control.

MS absolutely should weigh in with a privacy hardened Android with great Exchange and Active Directory support (and Nokia Maps). It would be huge, and it would force Apple and Google right on to the defensive.

<comment><USER14> But it would have lousy app compatibility... so what advantage would it offer over Windows Phone?

<comment><USER7> It would have about as lousy app compat as the Kindle Fire, which is to say nothing like as much as Google would like you to believe.

I'll say it: the Amazon APIs are actually better than some of the Google equivalents too. MS can play exactly the same game, but with the muscle of small business users.

Windows Phone simply has negligible actual interest from the dev community because it's too much of a technical island, and tied to the whole Metro disaster.

</comment></comment></comment><comment><USER15> This has been an ongoing cycle for all of Android. First people complain about Android lagging behind iOS so Google starts moving their services to GSM so they can avoid having to send updates through manufacturers. Then people complain Google isn't open enough so they start baking it into ASOP which takes forever to rollout. On the cycle goes..

<comment><AUTHOR> An alternative would be to use GSM as a shim, that just calls through to AOSP if the functionality is there, or fills in the functionality if it's not.

But I'm not seeing the advantage to Google of doing that - as everyone gets GSM if they go for the major phones.

<comment><USER16> There is one factor that causes what's going into GMS and what into AOSP, that the article conveniently glosses over:

Functionality in GMS requries server side support. It can be computational capacity or server-side dabatases (fused location with wifi and cell towers? Google caller id? Map tiles? Storage? Server side push? Cloud support for games? All of them require something on the other side of connection).

Unless someone is willing to step in and provide this, there will be no AOSP equivalent.

<comment><USER17> >Functionality in GMS requries server side support.

Really? My calendar client, mail client, and launcher require server side support from Google?

<comment><USER16> Launcher certainly does - where do you think that Google Now prepares it's data?

Launcher without Google Now is part of AOSP.

Both Calendar and Email are available in AOSP, Play Store has their binary builds for those that for some reason do not have current Android version. They can have at least current apps.

<comment><USER17> They could have made google now a plugin.

Calendar and email in AOSP suck.

</comment></comment></comment></comment></comment></comment><comment><USER18> Microsoft could build a fully functional Mono-based Windows Phone experience on top of the AOSP core minus the Dalvik VM.

The only question would be "what for"? They'd gain nothing from it. They already have a more or less portable kernel upon which they can build phones.

<comment><USER19> It sounds to me like what they need is exactly the other way around: Dalvik VM + all the Java APIs in Android, on top of the WP kernel (or they could go with Linux, but I think the kernel doesn't matter as much).

<comment><USER20> This.

But there is one problem with that strategy: if Microsoft would support running Android apps on Windows Phone, there would be little incentive left to write native WP apps. Everybody would only write for Android, making it hard to differentiate the platform.

<comment><USER21> I wonder if it would be feasible to support Java and maybe some (most? some well-defined base of?) Android APIs in "native" Windows apps, in a similar way to how JavaScript and HTML are supported via WinRT's notion of language projections. Although this would mean narrowing the goal from "making Android apps run on Windows" to "making Android apps easier to port to and maintain on Windows".

</comment></comment></comment></comment><comment><USER22> The author mentions "you can have control or compatibility, but not both". That's basically another way or saying "you can fragment the platform all you want, or choose compatibility (i.e. let Google control the platform across OEMs)". Remember when people were yelling from the rooftops "Android is so fragmented, and why it's always behind iOS! Google, give us standardization already!!"?

Linux' biggest problem has been that Microsoft moved much faster to get Windows on as many PCs as possible through certain corporate deals, but in terms of gaining market share, the Linux ecosystem has also worked _against_ itself, but allowing everyone to fork it into hundreds of different distributions, all doing different stuff, and with barely even a weak app store across several distributions.

Linux is "everywhere", _because_ everyone can fork it, and Android has certainly benefited from this strategy in the early years, too, but that seems to be an antithesis to an "ecosystem". As we can observe, even though "Linux is everywhere" in all sorts of devices, there's no significant "ecosystem".

Google wants to keep and evolve the Android ecosystem, because that makes it much easier for users, and also developers to develop on top of a well standardized ecosystem of devices and OS images. I guess for an proper ecosystem to thrive, it needs to be controlled and standardized as much as possible, with restrictions for OEMs and carriers.

The only alternative for the others, if they really want to start from the Android base, will be to form their own ecosystem, but that's very hard, unless we get to the point where only the web matters on mobile devices, too.

<comment><USER23> > The author mentions "you can have control or compatibility, but not both".

Or you can be like Apple, controlling everything while still taking the liberty of shitting down developer's throats (who are delighted to be at the receiving end, for some reason).

</comment></comment><comment><USER24> Dianne Hackborn (who works on Android) responds in the comments:

[http://arstechnica.com/information- technology/2014/02/neithe...](http://arstechnica.com/information- technology/2014/02/neither-microsoft-nokia-nor-anyone-else-should-fork- android-its-unforkable/?comments=1&post=26199423#comment-26199423)

</comment><comment><USER25> The title is a bit of a linkbait for sure. I don't think anyone at this point can say that Windows Phone is a non-player. It's going to be around and it can only get better.

Suggesting that Microsoft would fork Android is more wishful thinking than anything else.

Why not just say - "Android is unforkable" and leave it at that.

<comment><USER26> From [http://www.theguardian.com/technology/2014/feb/07/satya- nade...](http://www.theguardian.com/technology/2014/feb/07/satya-nadella- mobile-windows-phone-android) , which is linked at the beginning of the article:

"To add to all the advice being ladled out to Satya Nadella, Microsoft's new chief, here's another piece: stop bothering with Windows Phone. It's a waste of money which will never pay off.

Instead, focus the efforts of Microsoft and soon-to-be subsidiary Nokia on forking Android .."

So at least someone with an audience is saying that MS should fork Android, and Ars is responding to that.

<comment><USER9> People with an audience say all kinds of idiotic things. Arguing that Microsoft should fork another OS is like saying that Ford should license the Toyota Prius design and concentrate on their core competency of putting Ford badges on cars.

</comment></comment></comment><comment><USER27> Well since that is a comment that pop up in here very frequently (that Nokia and now MS should fork Android) I am very happy to see that I am not the only one who thinks that would be a bad idea.

</comment><comment><USER28> This piece seems to imply that only full source compatibility with Android (including Play Services) would be valuable to the Windows Phone platform. I don't think that's the case. I think getting 80% of the way, combined with the Microsoft brand plus quality devices Nokia would be enough to entice plenty of developers to the platform.

I think a more interesting question is whether Microsoft should fork AOSP as a whole, or place an Android compatibility layer atop Windows Phone, a la BlackBerry 10.

</comment><comment><USER29> Amazon has obviously forked Android successfully and has sold a lot of tablets. OPhone is an Android derived OS used in China, and other Chinese OEMs without access to the Google ecosystem have to do similar things.

<comment><USER30> Amazon is a special case. They don't care about compatibility, since they're building a very focused, special-purpose platform of their own. Like the original iPhone, the Kindle is attractive enough that people will buy it without any apps. Android was just a way for them to cut their time-to-market.

Microsoft has a different set of problems. Windows Phone is already shipping, so adopting Android would actually delay the next release. What they need is a stronger ecosystem—more apps to bring users and more users to bring developers. Adopting Android might help them achieve that, but at the cost of ceding control to Google. At the end of the day, why would anyone buy Android from Microsoft instead of Google?

If they can't make a success of Windows Phone, MS would be better off to just can it and provide apps and services to both iOS and Android.

<comment><USER30> Another fork of Android that makes sense is Firefox OS. They take the Android kernel and drivers to get hardware compatibility, and layer a new set of APIs and apps on top of it. They don't care about compatibility, because they're interested in promoting web technologies rather than selling hardware, promoting services or making money from licensing.

<comment><USER19> I wouldn't exactly call Firefox OS an Android fork. Android is more than just the Linux kernel, it's also Dalvik and a large set of Java APIs. From an app developer perspective, the language and APIs matter much more than the kernel; Firefox OS is completely different from Android in this regard.

</comment></comment></comment></comment><comment><USER31> Oh, another Peter Bright ("Microsoft Editor at Ars Technica") clickbait article. Yay. The author of such fine pieces as:

"Firefox ships, but we shouldn't really pay attention"

"Android OEMs should hear Microsoft, Nokia out on Google-Motorola combo"

"Android tablets may provide sales, but profitability is another matter."

etc

Sadly, judging by the old argument rehash going on here so far, it looks like it's working :(

</comment><comment><USER32> Hm. It sounds a little like Google would be doing really bad to seize control over their infrastructure. But since they do, the whole Android world has improved, at least in my opinion. Think about the upgrade complains we had a few years back. As far as I know that's gone now.(?) So I think it's actually good what Google is doing in that regard.

From my own experience with developing FOSS is also that other people don't try to integrate their solutions into your system. Everybody heads off and makes their own stuff.

Stupid forking is no problem for a project like GCC. But Android is a brand name. And if other people fork it and head off doing their own stuff and fail, then it is always Android that fails.

And really as a developer I also fight for the freedom of software, but as an end user I want to be able to go to a shop and buy an "Android phone" and it just works. Therefore, yes, please, Google take control! Good job!

</comment><comment><USER33> Interesting article. I'm intrigued as to how CynaogenMod handles the lack of Google Play APIs - it seems to be skirted around on their website.

<comment><AUTHOR> If you run it on your existing phone then it extracts the Google Play apps from it and re-uploads them afterwards.

However, their new phone is actually certified, and therefore gets them "properly": [http://www.androidpolice.com/2013/12/19/the-oppo-n1-is- offic...](http://www.androidpolice.com/2013/12/19/the-oppo-n1-is-officially- the-first-google-cts-certified-cyanogenmod-phone-can-run-google-apps-suite- officially/)

<comment><USER33> That's, hmm, interesting from a competitive and privacy advocate perspective. It means that whilst Prism Break and similar websites are advocating it, the key parts which report back to Google are still in place, since they aren't the bits being replaced.

</comment></comment></comment><comment><USER34> Many companies produce Android devices without google maps, gmail, play store... It solves a lot of privacy issues.

In 5 years smartphones will be cheap commodity and there will be also good opensource community fork. I can see Debian on Android.

<comment><USER35> Five years? You can buy smart phones for 30$ in shenzhen electronic malls today. I don't know your threshold for cheap, but considering feature phones sit at 25 to 20 in the same places.. The future is now :-)

<comment><USER36> >>>You can buy smart phones for 30$ in shenzhen electronic malls today.

1) That's in Shenzen. Might as well be Mars for most people. When Shenzen hardware is sourced by global brands, they usually have a generous markup where that "$30" quickly disappears.

2) How long do they last? "Oh, but they're cheap. If it breaks in 3 months, just buy another!" No. People just don't want to go through possibly losing data and having hardware just suddenly drop dead on them.

So, yeah. I'll go with the guy who said five years. That's for stuff that won't drop dead in three months.

<comment><USER23> > That's in Shenzen. Might as well be Mars for most people.

Ah, yes, if only some smart people could invent some kind of global network for people to buy things remotely, and created some site where you could order these things. They could call it, for example, Ali Baba.

<comment><USER36> Still Mars. Unknown companies, unknown quality, unknown warranties (as in mostly non-existent). And sending it back to China to exchange a defective unit? Suddenly that $30 isn't.

<comment><USER37> A wide range of these products are available at reasonable markups via a variety of Amazon Marketplace resellers.

That's how I got my first one. But since then I've started ordering direct from Alibaba/Aliexpress and for many products the savings are large enough to "self insure" and still be worth it with a good margin.

</comment></comment></comment></comment></comment></comment><comment><USER38> Interesting analysis but I think he overcomplicates the situation.

From a third party app point of view you can build your against Android API level X, or a corresponding 'Google api' release associated with the given API level. An app built against API level X will work seamlessly on the corresponding AOSP release.

So far, unless you're interested in more tightly integrating into Google services, you don't need to build your app against the Google api, but obviously Google are interested in app developers using their custom apis.

As far as the increasing integration of core applications into GMS is concerned, it is rather overblown to call the AOSP versions broken or buggy. AOSP remains the base platform for the hardware ecosystem to develop their reference designs, AOSP has to work and does work well.

The hardware domain is a big problem for rolling your own OS from scratch, the associated software stack to support a given piece of hardware is non-trivial. Even generic Linux is now being supplanted by Android variants in the embedded space especially if you're interested in graphics or multimedia.

However, also consider that the most successful player in the Android space, Samsung, have pursued a strategy of lightly forking Android with their own features and customizations without breaking compatibility deliberately.

</comment><comment><USER39> Has Microsoft, Nokia, etc considered some kind of app api bridge or outright code converter tool for Android/Java apps into their own native SDKs?

Seems that if a lack of apps is your main problem then easing the time to port an app to your ecosystem should be a high priority. Sure you'd have to re- implement some proprietary api features, but they likely already have equivalents in the Windows phone SDK (location services, in-app purchasing, etc).

</comment><comment><USER40> As the developer of a couple of small Android apps, I know that I would rather post them to a Microsoft or Nokia Android app store than port them to Windows Phone. Of course, it helps that I specifically avoided using the Google Play Services APIs, but even if I had used those APIs, it would be easier to make my apps Google-independent than to port them to a whole other platform with miniscule market share.

</comment><comment><USER41> the article author does not know what eff they are speaking about: The AOSP counterparts are buggy, feature deprived, and by at least some accounts, barely maintained.

If that sentence was true than stuff like the phone app would not work, obviously it does :)

Author does not realize that AOSP is a snapshot of the full android OS

</comment><comment><USER42> Didn't Google won the the "Oracle vs Google" case on the ground that APIs aren't patentable?

What prevent MS(or any other big player) to re-implement GMS?

<comment><USER43> The "Oracle vs Google" case isn't over, it's up for appeal...

</comment></comment><comment><USER44> AOSP is open source, period. Just because Google apps aren't doesn't make the entire thing closed. The binary blobs and baseband firmware might as well be on any "open" phone. The issue here is not whether Android phones are open or not, it's whether phones in general can truly be "open" or not.

</comment><comment><USER13> There's a response from Dianne Hackborn (hackbod) of Android.

[http://arstechnica.com/information- technology/2014/02/neithe...](http://arstechnica.com/information- technology/2014/02/neither-microsoft-nokia-nor-anyone-else-should-fork- android-its-unforkable/?comments=1&post=26199423)

</comment><comment> mkr-hn Not having Google Play hasn't limited my Kindle Fire experience so far. All the important apps are on the Amazon store, and most of the rest are low quality IAP bait.

</comment><comment><USER22> So Microsoft should fork Ubuntu Touch then. Problem solved ;)

</comment><comment><USER45> "typed on my Kindle Fire"

</comment><comment><USER46> What do they mean unforkable? Cyanogen Mod[1] has been doing it for years.

[1]: [http://www.cyanogenmod.org/](http://www.cyanogenmod.org/)

<comment><USER47> Amazon also did it.

</comment></comment><comment><USER48> The guy that ran windows phone is now the head of the entire windows division. His name is Terry Myerson. I doubt very seriously that he is going to shitcan windows phone.

<comment><USER49> Windows Phone is already shit canned. MS just isn't smart enough to get it.

<comment><USER50> Quick, give us more of your amazing market insight!

<comment><USER49> Sure, no problem. Windows Phone will be cancelled in 2015 after MS realizes it's been a massive failure. They'll also lay off 30,000-40,000 people in 2014. And they'll quietly sell off the device division they bought for 7 Billion dollars and take a massive loss.

<comment><USER48> I think that you missed my point. The guys that was in charge of developing Windows Phone 8 is now the guy in charge of Windows. Windows Phone won't be canceled, it and Windows will become the same thing...just with form factor differences. Same thing with XBOX OS. It's Windows. Things that make sense for the desktop won't be on the XBOX or the Phone...and vice versa. You sound like you aren't a metro fan...They do need to make sure that the desktop is still a useful tool...but here's the thing. In 5 years you will be hard pressed to find a monitor of any size or type that isn't touch enabled.

As to selling off the device division...I don't see that happening either. MS needed Nokia's supply chain, and delivery systems. They needed to have a division that knows how to take a device from the drawing board to the shelf quickly...which Nokia should be able to do now that it doesn't have to make money. It's weird, but taking a long term view with the device department just like bing and xbox gives the people in that org some room to move.

I find it crazy how much people dislike one company while another company...also a legal fiction that exists solely to make money...that company is ok. They "get" me...or "it". Like Google's PR moves like "solving death"? Seriously? They sell advertising. Meaning that they sell YOU. I"m under no illusions about MS prior behavior. I'm also under no illusions that Apple or Google are somehow different. They aren't.

</comment></comment></comment></comment></comment><comment><USER51> Android is already forked[1].

      Gingerbread: 20%
      Ice Cream Sandwich: 16%
      Jelly Bean: 60%
      KitKat: 2%

1: [http://developer.android.com/about/dashboards/index.html](http://developer.android.com/about/dashboards/index.html)

<comment><USER43> Not forked, fragmented.</comment></comment>


ASK HN: Would you like to be interviewed for Made with React Native? - <AUTHOR> Hey guys. I just launched madewithreactnative.com . It's a site where I want to showcase apps which were made using react native and interview developers and teams about their experience working with react native. Would anyone be interested or know someone who might be interested in being interviewed and and having their app(s) listed on the site? <comment><USER2> We're about to release MemPa [1], a deterministic password manager, which is built with RN.

It's going to be more like an MVP than a fully featured app, but if you like it I'd be very interested in participating in an interview. So far there's not much info about MemPa, I'm working on web page, app store copy, etc., all I wrote was a blog post a couple of months ago that sparkled everything else [2]. Maybe we can talk more in a month or so?

[1] [https://expo.io/@0x0ece/mempa](https://expo.io/@0x0ece/mempa)

[2] [https://hackernoon.com/how-i-manage-my-passwords- technical-v...](https://hackernoon.com/how-i-manage-my-passwords-technical- version-8549dc1bde1e)

<comment><AUTHOR> Yeah let's do that. I'm going schedule contacting you in a month from today :). How do I best reach you?

<comment><USER2> Email in the profile works great. Thank you much!

<comment><AUTHOR> Thank you too. Talk to you on January 2nd 2018 :)

</comment></comment></comment></comment><comment><USER3> You show 7 apps that apparently are built with react native but have no interview: walmart, vogue, tesla, ubereats, instagram, soundcloud pulse, airbnb. Have you tried to approach them?

<comment><AUTHOR> I have for most of them, and will do so for the others, just haven't gotten around to doing it yet, because I posted something similar to r/reactnative and have been busy talking with those interested in doing an interview, as the response was was greater than I had expected.</comment></comment>


Falcon 9 Reusable 1000m Fin Flight - <AUTHOR> https://www.youtube.com/watch?v=DgLBIdVg3EM

<comment><USER2> What amazes me is how little shudder there is while the rocket is firing.

</comment><comment><USER3> Love the cows at the end, hanging there as if nothing was happening :-)</comment>


Iconize Textlinks with CSS - <AUTHOR> http://pooliestudios.com/projects/iconize/

<comment><USER2> For those who only care _how_ it's done...

        a[href $='.pdf'] {
           padding-right: 18px;
           background: transparent url(icon_pdf.gif) no-repeat center right;
        }

        a[href ^="mailto:"] {
           padding-right: 20px;
           background: transparent url(icon_mail.gif) no-repeat center right;
        }

CSS can match the beginning or end of attributes ("href") of a certain tag ("a"). Pretty simple, but neat.

</comment><comment><USER3> I wonder if this could be hacked together, browser side, so all links display like that. That would be a pretty neat thing to have.

<comment><USER2> That's what this does, with CSS. See my other comment.

<comment><USER3> Well, I meant that it would be cool if it was integrated with your browser so all links on all web sites would display like that. I never got in to user css files, so I'm not sure if that is something possible or not.

<comment><USER2> In fact, I just tried it and it does work with user CSS stylesheets. Just copy the CSS to a file, change the URLs for the images to an absolute URL on the web (possibly local?), and set your browser to use that CSS file.

However, it doesn't work well for every site, sometimes the icon is placed behind the link text.</comment></comment></comment></comment>


Ask HN: How to finish personal projects? - <AUTHOR> Hi HN, how do you do this? My current workflow is this:
1) Begin a new projects
2) Work in this project 1 or 2 days
3) ...
And that's it... Do you work everyday in your projects? You decide to work X days in a project and then "is finished"? Maybe you have a feature list and once everything is ready you stop working?
How you do this? :)
Thanks! <comment><USER2> I've always lost motivation sometime shortly after starting on a new side project.So what I've done lately is when I think of something I'll then determine if there is a way to get it built and usable by the end of the day, even if it is just a simple script. This way I can actually later use the thing and when I have another idea to expand on it I can take that on later as another day's work.

This might not work for everyone but for me I've actually built a few useful tools that I use everyday and have been able to continue building on. The only 2 requirements needed before I undertake something is 1) that it is something I see myself using on a semi-daily basis and 2) that I can build it within a day.

<comment><USER3> Discipline replaces Motivation

</comment></comment><comment><USER4> Three steps to make sure you get more than 1 or 2 days out of it.

1.) Make it very crappy, and put it live for the world to see.

2.) Be embarrassed that this thing you made is so crappy.

3.) Use that embarrassment to make it better.

However, I suspect that the problem might be something else.

They say you should always be working on your best idea. Maybe you are jumping from project to project too fast?

Maybe you need to take more time to think about why you're starting certain projects.

Maybe the answer isn't finding more time working on projects. Maybe the answer is spending less time working on projects and more time thinking about possible projects.

Some random thoughts here. Sorry that it sounded a little Seth Godin-ish.

<comment><USER5> Thats how I do it for my website projects.

I usually plan the main process (User entry => Checkout) and make sure its working, and leave things like design and user experience for later. I always add live chat support on my projects so users and prospect-buyers can complaint anytime.

Embarrassment + Money makes good source of motivation to make my websites better. Also another good thing about this approach is you never waste time on bad ideas.

</comment></comment><comment><USER6> My recent workflow has been this:

1\. Put the project in a private GitHub repo. Paying for it adds incentive to work on it.

2\. Break up the work into small tasks and add them as issues in the GitHub project. Aggressively separate them into milestones to stay focused (Milestone 1 == MVP, less important stuff in Milestone 2, etc).

The reason I think this works is that it is easy to get overwhelmed by all the work on a side project, and you have limited time to work on it. Now when you have time, you grab a ticket, complete it. Each ticket should be doable in a few hours or the scope of your ticket is too broad.

<comment><USER7> Tip; if you have a home server check out GitLab-CE.

I run it in a docker on my Unraid (file)server, all easily managed via webinterface.

</comment></comment><comment><USER8> Here are my suggestions:

1\. Work on your project _most_ days. It doesn't need to be long - 15-30 minutes. This is mentally doable most days, and you'll find days that you just work. After a while, this becomes part of your daily routine and it gets easier. It might be even easier if you do right after something else you do every day - yup, make it a habit.

2\. Have a variety of tasks to choose from when you can. This helps with the motivation as well.

3\. Be able to congratulate yourself for getting chunks done - or something similar. Whatever works for you.

<comment><USER9> Inevitably, you will miss a bunch of days in a row. Then what? #1 changes quickly from a positive to a negative pressure producer.

My preference most of the time is to optimize for discontinuity since it is usually inevitable and I want to minimize negative pressure producers. "Being in the flow" is great for productivity and all but I'd rather not count on it or optimize for it. Instead:

#1 When exiting a work session, I write on a Post-it note the next immediate steps/chunks/steps in order of priority. I usually also write down the next theoretical milestone/goal these steps are part. Sometimes I'll even write down the tentative 2nd milestone.

Note that this is separate from my Github-based task tracking and kanban board. That system is for when I'm in the flow and can have reasonable expectations of continuity (and when working with others).

This technique minimizes "spinning up". Instead of having to mentally conceptualize the project and all its tasks to start working, I just start working and let the full scope of the project flow into my brain as I progress.

If I enter flow state as a result, great. If I don't, no biggie — something gets done and I'm off to the next thing in life. #2 and #3 fit right in here. Rinse and repeat.

Disclaimer: I like colored Post-it notes.

</comment></comment><comment><USER10> I've fit this pattern for most of the things I build, though I'd replace "days" with "weeks" above.

The things I have finished are nearly all things I have put a price tag on.

They may have been done before I shipped them, but most weren't. But once there's the threat of real users sending you money and expecting things to work, that's incentive enough to actually wrap up loose ends and polish what's there.

Notice that what actually happened was a slight redefinition of "finished" to include all the features that currently work, with non-working features hidden and no pointy bits sticking out the sides. As distinct from "all the things I wanted to include are now working to my satisfaction."

Eventually you can work toward including all those other things, but step one is to polish what's there. Then it's just a matter of polishing each additional feature after they're built and before they're exposed to users.

</comment><comment><USER11> 3) Make a list of what you think your project needs before launching, but put as much as possible off until after launch, recognize that you can still work on it then

4) Do something on that list

5) Go back to #3 until you are launched

By postponing additional work you give those ideas time to mature while making concrete progress and finishing your project at least to some sort of functional state. By the time you're up to those tasks you will probably have identified why most of them weren't ever worth doing let alone derailing projects for.

</comment><comment><USER12> I'm struggling to finish writing my third book right now. Here's what works best for me:

* Know the definition of "done" from the start. Working against a moving goalpost is a motivation killer.

* Have a consistent way to measure and track progress (word count, features completed, etc), and graph it over time.

* Break the big project into smaller, bite-sized projects. Each time you mark a small part as complete, you'll feel a sense of relief.

* Make progress every day. Even if it's just a bit, it'll feel good to know that you're that much closer to finishing.

</comment><comment><USER13> Finish the minimal viable part of the project very quickly.

Add the housekeeping parts and extra features later (if it's worth it i.e. being used by you or others).

Eventually when you do enough personal projects you will find that the housekeeping parts are the same and can be bolted on easily. That's another reason it's not worth doing anything except the minimal viable part of the project.

</comment><comment><USER14> I've found the nature of the idea is quite important as well.

For example for a long time I used to do very "philosophical" projects.

Huge ambitious ones where before you even start you already know it's by definition going to take years for it to get to somewhere worthwhile.

Except I wasn't ready to commit to such things, and I knew it.

That tiny half-assed part of a huge project will not amount to anything.

So overtime I accumulated a great graveyard of "this would be cool if I had worked on it for a year instead of 2 weeks" projects.

On the other hand if the idea is small and practical you can work on something for 3 weeks and have something nice and practical that is a concrete achievement.

So if finishing is your goal and you don't have tons of time to dedicate to a project my advice is to ask yourself how practical and realistic is it for you to finish an implementation of that idea in your desired time-frame?

If it's a huge idea you have to accept the reality that in your amount of time you can't finish a significant % of it.

And 5% of a huge project is often not as useful or impressive as 120% of a tiny project.

</comment><comment><USER15> I had never really finished a side project until recently. First one was something I was going to sell. It took over a year because of changing UI and redoing a lot of stuff (unnecessarily) but I managed some sort of soft launch. My most recent project was writing a mix task in elixir. It solved a pain point I was having and gave me a better insight into the Elixir language. I'm working on another library for Elixir that I plan to use in a website I'm working on that I want to set up in hopes of making money.

Bottom line, both of the projects I've started and finished have had monetary gain to it. The product and then the task. The task is helping with contracting I'm doing so making my job easier is sure a big incentive.

</comment><comment><USER16> Two approaches:

1\. Solve an actual problem. E.g. I built a library based on some use cases I saw at a training session I did at Cisco. Building yet-another-thing-that- has-900-implementations doesn't count.

2\. Set a really hard deadline or limit. E.g. "must be feature complete by end of the weekend."

The goal either way is not to end up in place where it's 20% done: either you have problem or a deadline to keep you focused on completion

Longer writeup: [https://codewithoutrules.com/2016/09/09/side- projects/](https://codewithoutrules.com/2016/09/09/side-projects/)

</comment><comment><USER17> 1\. Time box it. Pick a date that you will release, go live, ship, whatever. Pick a date.

2\. Break it into smaller tasks.

3\. Prioritize those tasks and start with the easiest.

4\. This is not time to learn, this is time to build. Use only tools that you know. Even if you know there is a better way, do it the best worse way that you know than the better best way you have heard of but don't know and will have to stop and learn. This is key, separate learning and building.

5\. Work on it everyday, at a consistent time, preferable first thing in the morning.

6\. Since you will be waking up early, go to bed early too and get enough sleep.

7\. Work on only one project at a time, meaning, you can't work on other projects in between. Everything else goes on hold till this is completed.

8\. Find ways to motivate and inspire yourself when you are feeling mentally down and low and focus is hard to come by. If you really like music, don't listen to it all the time. work without it, when you find yourself drained, that's when you should turn on music. Unless you absolutely can't work without it. Whatever that gives you extra boost, hold off from it till you really need it. Coffee? Don't drink it, till you need it. Think of it like power up. Save it till you need it.

9\. Is it ship date? Release it, only 70% done? Release it!

</comment><comment><USER18> If I haven't launched in 3-4 months I'll dump it and work on something else that is more exciting. If you can't launch in 3-4 months you've either bitten off more than you can chew or don't give a damn about it.

On a day to day basis, I dedicate 2 to 3 hours to my side project (side business). This includes maintenance for previously launched projects and work on the "new" project.

I only ever have one "new" project going that hasn't been launched.

</comment><comment><USER19> A few things that seem to work:

1) Define a single, easily understood high-level goal. Something that's easily understood and can be accomplished in a timespan of days or weeks. It's important that this is not defined technically, but in terms of _what the application can actually do_.

2) Repeatedly ask myself whether what I'm doing is directly contributing to the current goal, or is required to reach it. If it's not, stop doing it and figure out what's going to get me there the fastest.

3) Wake up early and work on my project _before doing anything else._ Every morning I wake up, take a shower, kiss my partner on the forehead and then I am out the door to work on my project at the cafe down the street. This is the part of the day where my mind is the most fresh, and it's not possible that something else has taken my attention and distracted me from the goal at hand, or tired me out so much I don't have the energy to work on it. Also once you get in the habit it's hard _not_ to work on it once you wake up.

</comment><comment><USER20> I've spent many many years half-completing things... I think it's a really common pattern. I recently, finally, completed something and launched it ([https://schezzle.com](https://schezzle.com)). The trick is to just make yourself launch. Stop thinking about the business aspects, or scale, or really anything other than launching and just do it. I made a New Years resolution and held myself to it, and it feels great. Instead of watching TV or reading in the evening, pour a cup of coffee, make a TODO list, and start checking things off!

</comment><comment><USER21> Just like it you do at a company..

1-Plan, prioritize, schedule; 2-Use a scrum.. even if you are the master, the team, the stakeholder all at the same time. Tip: don't forget the stand-up meeting.

I've learned it from a German colleague (and great friend) who even use scrum to manage his own house activities... yeah he was kind of sick.

<comment><USER22> Nah, he was just very German.

</comment></comment><comment><USER23> If you're procrastinating your brain is telling you it's not important. You can push yourself with motivational tricks but you might won't get anywhere.

It might be better to get some value out of it and/or convince your brain why it's worth doing.

</comment><comment><USER24> I treat personal projects like therapy. Doing something for me, trying something new makes me feel good. Even if I just have a working prototype I have the sense that I've accomplished something. It doesn't matter much if nobody sees it. If that were the case, those personal projects would turn to work and I have enough of that already.

That being said, I do finish side projects from time to time, mostly because I can still see the potential after working on it for a couple of ours.

</comment><comment><USER25> Wake 2 hours earlier every morning and make that your scheduled time for the project. You would be surprised how quickly a project can move this way.

</comment><comment><USER26> What I do is spend a bit of time, and write down all of the features I could possibly want in my program as GitHub issues. I sort them in the order of usefulness/ones I want most, and I set a timer for 25 minutes and write as many features as possible (the code can get a little messy but you can fix it up later.) Rinse and repeat until you're burned out.

</comment><comment><USER27> Do people find it worth the time to read books on productivity like Getting Things Done, Eat that Frog, etc.? And learning more about things like Org mode? Or are those essentially procrastination enablers? Is see that most people are working on software personal projects. Anyone have thoughts getting "hardware" projects done?

<comment><USER28> I bought Getting Things Done and I regretted it. If you're constantly forgetting things and completely unorganized then it's probably worth it. I'm a naturally motivated, self-starter kind of person and I found GTD was just overkill for me.

</comment></comment><comment><USER29> My strategy is to push out the first working version in that first 2-3 days and get feedback. I have recently, compiled and published my experience and thoughts on this exact topic as a book : [http://amzn.to/2iUYaOH](http://amzn.to/2iUYaOH)

</comment><comment><USER30> increase human to project ratio! Humans keep humans accountable. Find people fun to work with.

Choose to work on projects that help other people, or are inspired by others' passion.

Keep a list of tasks always visible next to your bed, to remind you to work on stuff when you have time.

Be okay with taking a few months break if you need it. Guilt for not working on your own projects accrues, only making it worse. You have to be able to easily alternate between actively working on it, and not.

</comment><comment><USER31> My workflow is usually to lose interest and motivation right around the time I have it rough, ready and working. Rather than do the last polish and site to release I would end up doing other hobbies.

It's been frusrtating.

</comment><comment><USER32> I suggest you read "Just F*cking Ship".

It's pretty good, and it goes into details on why we can't launch products/finish personal projects.

</comment><comment><USER3> Start it and never stop it until it is released, and after it is released based on response - keep continuing it.

</comment><comment><USER33> By not adding features.

</comment><comment><USER34> If a hand gets tired, and stops.</comment>


Django Security Release - 1.5.4 - <AUTHOR> https://www.djangoproject.com/weblog/2013/sep/15/security/

<comment><USER2> Sometimes we do releases that fix things that are kinda hard to exploit, or mostly are just hardening existing stuff to make it even better.

Sometimes we do releases because there's a serious exploitable thing in the wild.

This is the latter: it's a DoS vector, and it got out via a posting to a public mailing list. Please do not hold off on upgrading.

</comment><comment><USER3> FYI,

\- bcrypt can have passwords up to 72 bytes (depending on implementation) due to its nature of feeding password into a block cipher, and Blowfish having max 448 bit keys but some implementations allowing 576 bits (see [https://en.wikipedia.org/wiki/Blowfish_(cipher)#The_algorith...](https://en.wikipedia.org/wiki/Blowfish_\(cipher\)#The_algorithm))

\- scrypt accepts passwords of unlimited length, however the computational/memory cost doesn't depend on password length, as the first step in scrypt is expanding (or compressing) password and salt with 1-round PBKDF2, which is basically HMAC in counter mode.

</comment><comment><USER4> Some people deride it as "C programmer mentality" when fields have a fixed maximum size. I too used to think having no limits at all was the best approach in most scenarios. But for many user input data, there is a point at which a longer value is complete nonsense. The 4096-character password length limit Django will now employ seems quite a bit longer than absolutely necessary; hopefully it sufficiently addresses the bug. As for the choice of 4096, well, I would have chosen 4000 (or 1000) simply because it's more comprehensible from an end-user perspective.

When designing such systems, also consider that users sometimes accidentally copy-paste entire documents into text fields--given the number of users Django has, if a site has no input-field length limit, it's downright likely that someone will eventually paste a megabyte "password" in there with no ill intention.

<comment><USER5> "As for the choice of 4096, well, I would have chosen 4000 (or 1000) simply because it's more comprehensible from an end-user perspective."

Why should an end-user need to comprehend a limit in bytes at all? Good points though!

<comment><USER6> Specifically with UTF-8 it depends on the content how many characters fit in these 4096 bytes.

<comment><USER7> From the patch, it doesn't look like it's bytes, but characters.

<comment><USER6> Where do you see this? In [https://github.com/django/django/commit/aae5a96d5754ad34e48b...](https://github.com/django/django/commit/aae5a96d5754ad34e48b7f673ef2411a3bbc1015#L3R405) they specifically mention bytes.

<comment><USER8> MAXIMUM_PASSWORD_LENGTH is used as the max_length of CharField. CharField are unicode, and thus if one reads no further than django/contrib/auth/forms.py and doesn't see MAXIMUM_PASSWORD_LENGTH is also used on KDFs input (which work on bytes) one may get the impression that it's a limit on code units.

<comment><USER9> Then it's Unicode code points, which are still am abstract concept to users. The only thing that's meaningful to users is graphemes — and with Unicode one grapheme can be formed of a potentially infinite number of code points (continuation characters stack, and can be repeated indefinitely), so you cannot practically use that for any limit.

<comment><USER8> "characters" is an unfortunately common shortcut for "code points" as that's what unicode-based "char" types tend to mean.

And my comment was an explanation of an other user's, nothing more.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Just for kicks, I timed how long it took to hash a 1Mb password on an EC2 small instance:

>>> timeit.timeit('make_password(a, "asdfasdfasd")', setup="a = 'a' * 1024 * 1024; from django.contrib.auth.hashers import make_password;", number=1) 206.77019500732422

</comment><comment><USER11> What I believe to be the relevant post that prompted these releases: [http://www.mail-archive.com/django- firstname.lastname@example.com...](http://www.mail-archive.com/django- email@example.com/msg38236.html)

<comment><USER12> Yep, I was the doofus that posted to django-developers, rather than security@. Sorry if I complicated anyone's weekend.

<comment><USER13> Well, thank you for noticing and bringing it to the attention of the development team even through it was through the wrong channel. :-)</comment></comment></comment>


Twilio Powered app umake.me sends free sms and lets you check status if read - <AUTHOR> http://umake.me http://umake.me is a twilio powered app that lets you send 100% anonymous flirtation txt msg's and lets you know if its read. check it out and let us know what you think. <comment><AUTHOR> I submitted this for twilio's weekly contest. Let me know what you think</comment>


Ask HN: Designing New RPi for Doing HPC, ML, etc.? - <AUTHOR> Hi guys,
I saw lots of people clustered their RPis for different purposes (e.g. data mining, machine learning, big data storage and Hadoop and so on ...). As you know RPi has it's own drawbacks. For example lack of enough RAM or high speed IO busses (e.g. USB 3 or GbE). So I was thinking about a brand new board with these kind of capabilities at the same price and size. However as a trade off we have to remove some other stuffs from the board (i.e. HDMI, IO pins, 3 other USB ports, Audio Jack, power input -> we can use Ethernet cable/port instead).
What do you guys think about the idea? Is it even possible to design such board at around the price of RPi (~$35)?
Thanks <comment><USER2> Not at $35. I would get a zynqberry and learn fpga programming if I was serious about the form factor. Otherwise I would get a used server on ebay and max out the ram.

</comment><comment><USER3> I would buy several thousand of these, raspberry Pi ML is one of the biggest limiting factors of my business.

<comment><USER4> Are you currently running a fleet of thousands of RaspPis? Would love to hear the use case / battle stories!</comment></comment>


Introducing AIY Vision Kit: Make Devices That See - <AUTHOR> https://www.blog.google/topics/machine-learning/introducing-aiy-vision-kit-make-devices-see/ <comment><USER2> Very cool! Ahhh this could have been a nice Christmas break side project but it seems it's not available until Dec.31st :(</comment>


Print this file, your printer will jam (2008) - <AUTHOR> http://nedbatchelder.com/blog/200811/print_this_file_your_printer_will_jam.html <comment><USER3> Reminded me of "The case of the 500-mile email": [http://www.ibiblio.org/harris/500milemail.html](http://www.ibiblio.org/harris/500milemail.html)

<comment><USER4> Or the "Car allergic to vanilla ice cream" tale.

[http://www.cgl.uwaterloo.ca/~smann/IceCream/humor.html](http://www.cgl.uwaterloo.ca/~smann/IceCream/humor.html)

<comment><USER5> Or the "OpenOffice can't print on Tuesdays" bug [https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/255161...](https://bugs.launchpad.net/ubuntu/+source/cupsys/+bug/255161/comments/28)

<comment><USER6> That one reminds me of the system I worked on years ago that wouldn't accept credit cards that expired in August or September (of any year).

<comment> T-hawk I bet it was a Javascript system that tried to interpret month numbers of 08 and 09 as octal because of the leading zero. Am I close?

</comment></comment></comment></comment></comment><comment><USER7> One of my first jobs was QA for some printer-scanner-copier machines at HP. My favorite bug that I found was that I had an 8x10 photo of my girlfriend at the time, scanning which bricked the device. We were never able to find another way to reproduce so that photo ended up in the regression suite's archive of assets (maybe it's still there).

The relationship didn't last, so the morale of the story ended up being always trust software defects when it comes to relationships. This turned out to be especially true later when a pretty egregious Myspace bug introduced me to my wife :)

<comment><USER8> The notion of a printer/scanner group, or producer, or team doing QA is one that makes me want to laugh, then cry.

Printers are such unimaginable sources of pain, such a crippling tax on everyone forced to interact with them in any way, that it's hard to imagine anyone working to produce them in any standard, structured way.

<comment><USER7> "Printers are such unimaginable sources of pain"

Well either you've a severely lacking imagination or have had a really comfortable life. I hope for the latter :)

Kidding though, yeah printers are frustrating and cobbling together a printer- fax-copier-scanner into one device is even more terrible. HP was really serious about process though! The test group was literally bigger (more people) than the dev team.. by probably a factor of almost 2.

HP was really big on Model Based Testing [1] and we read books and maybe even had a class on it when joining. The QA team was all in all pretty high functioning, if memory serves.. but the products would still get shipped with _four figures_ of open bug reports (I am not kidding or exaggerating).

The sort of bugs at the start of the cycle were downright terrifying, too. If your printer has never caught fire, or vomited all of it's ink on your desk in the middle of the night... thank your friendly HP QA employee!

Mostly in my era the problems with the products were that they were done on a pretty tight schedule (6-12 months) for what tended to amount to more complex/new hardware than folks would initially expect. The testing cycle also started pretty late because the initial "get it barely working" cycle ate up a couple-few months, and the non-firmware software (drivers and crapware utilities) got very little attention by the a-players on the team.

[1] [http://en.wikipedia.org/wiki/Model- based_testing](http://en.wikipedia.org/wiki/Model-based_testing)

</comment></comment></comment><comment><USER9> Reminded me of a problem I had been debugging ages ago. The initial complaint was that the particular file transfer through a firewall was hanging. Further tests: it hangs at the same place.

More testing: not just this file, some other file transfers from unrelated places as well - and always at the same places within the file (but different across different files).

Take the tcpdump on both sides - always the same segment of data within each of the file transfers does not make it through the PIX. Take the offending segment and convert it into a small file of its own - this file is impossible to download through, gets dropped.

Needless to say, this all was observable only on that particular setup - <USER2> in the lab.

Finally I noticed that the CRC error counter on the inbound interface increments by one every time I try to push through the offending small file.

Replacing the Ethernet cable connecting that interface had solved the problem with all of the "hanging" transfers.

We did not do any further research into the root cause (the user did not want to put back the previous cable), but the working theory was that the initial cable was made bad, but not bad enough to not work at all - and the fault only showed up on particular sequences of data.

Given that neither 10BaseT nor 100BaseT used scrambling, this seemed plausible enough of a theory, but was quite fascinating nonetheless.

<comment><USER10> Three fun connectivity issues I've diagnosed:

1) Problem report was: "I can login to remote host fine, but my interactive session hangs when I type 'ls -l'." Some diagnosis indicated the hanging only occurred when packets were above a certain size. This only happened when a command was run that had a large amount of streaming output. Turned out our provider's frame relay network had become misconfigured. Had to reduce the MTU at both ends as a workaround until I was able to convince our provider that something was wrong with their frame relay.

2) My home Linux box unable to talk to a Verizon pager gateway, but my Mac was fine. Turned out Verizon's firewall was dropping packets that had the ECN bit set. Had to disable ECN on the Linux box.

3) A Solaris host that was sporadically reachable over the LAN. It could always connect to other hosts, but orher hosts could only sometimes reach it. Turns out you can disable ARP replies on Solaris by deleting the "publish" entry for the box's own MAC addr from its ARP table. And someone or something had done that by accident. So the box was only reachable on the LAN till its MAC timed out of the other hosts' ARP caches. However, if the host in question first initiated a connnection to another host, the destination host would then learn its MAC again.

<comment><USER9> Troubleshooting the issue similar to (1) was one of my interview questions for a while - though with HTTP. It's a treasure trove of discussion at very different levels.

Another "fun" (and hard to debug for the first time) is the problems triggered by duplex mismatch - though the asymmetric ~1/10 difference in performance quickly becomes a signature once you met it once or twice. Also good anchor where you can go into many types of discussions.

The very similar to (3) I've seen manifested in IPv6 - due to Neighbor Discovery working over multicast, and potentially asymmetric ways of multicast propagating within the L2 segment (different L2 switches on two sides, etc.)

But very interesting to learn this asymmetricity in Solaris stack, thanks!

</comment></comment></comment><comment> bulte-rs "Reminds me of the time when ..." printing a file with some patched up negative page count actually upped your printing quota in university.

<comment><USER11> I found something similar at my university where you could underflow the unsigned short they used to track your quota.

The system would of course refuse any single job that took you over quota but, if you wrote a script that pounded a few jobs slightly below quota right after each other, two or more would get through, underflow and you'd suddenly have 65k pages left.

I know when you left the school you could get reimbursed for any remaining pages left on your ID but I wasn't crazy enough to try that. 65k * $0.05 = a chat with the police, I'd guess.

</comment></comment><comment><USER12> Some similar bugs, the later one looks like an urban legend:

"Printer won't print on Tuesdays" :[http://mdzlog.alcor.net/2009/08/15/bohrbugs-openoffice- org-w...](http://mdzlog.alcor.net/2009/08/15/bohrbugs-openoffice-org-wont- print-on-tuesdays/)

"A member of the famous Black Team manages to create a sequence of operations that topples over the tape drive": [http://www.penzba.co.uk/GreybeardStories/TheBlackTeam.html](http://www.penzba.co.uk/GreybeardStories/TheBlackTeam.html)

<comment><USER13> The Black Team link inside your link is broken, [http://www.t3y.com/tangledwebs/07/tw0706.html](http://www.t3y.com/tangledwebs/07/tw0706.html) is blocking all robots so no Web Archive copy either. I think this is a copy of it: [http://www.t3.org/tangledwebs/07/tw0706.html](http://www.t3.org/tangledwebs/07/tw0706.html)

<comment><USER14>
        > The Black Team link inside
        > your link is broken ...

Fixed - thank you.

</comment></comment></comment><comment><USER15> In college I shared an apartment with some friends. Every few weeks, when somebody was watching a movie it would spontaneously rewind part-way into the movie. It happened infrequently enough that we didn't really investigate until one night when a bunch of people were over. The movie would rewind whenever the lights in the living room were off, and somebody pulled the cord on the ceiling fan to change its speed. It was 100% reproducible, but baffling.

After much investigation, we traced the problem to a Rock Band drum set foot pedal. It has an AC adapter plugged into the wall, and also acts as pressing L on the PS3 controller when it's triggered. Somehow, pulling the cord on the ceiling fan made the foot pedal act like it got kicked, which would rewind the movie playing on the PS3. Unplugging the foot pedal or drum set solved the problem.

<comment><USER16> Wow I am old. The entire time I was picturing a VCR.

<comment><USER17> It's caused by the "rewind" word. I never owned a VCR but still thought about one :). The software started to use other terms for the action, like "jump backwards" (VLC media player). Probably because the actual rewind action (show the movie backwards very fast) is not easy to do in compressed video (to show the last frame before a keyframe you have to seek the previous keyframe and recompute all the frames until the desired one).

<comment><USER18> It's too bad that current media formats don't allow you to scrub (at least, the ones I usually come across - I have no idea what makes a compression format "scrubbable"). IIRC, this was one of the selling points of Quicktime.

<comment><USER19> Only key frames and no frames that are in any way predicted by what came before it. That's actually the major point that differentiates formats intended for consumption and those intended for editing. If you usually only watch something from start to end, you can vastly increase compression ratio by re-using parts of earlier frames that changed very little. However, this means that to get to a particular frame you have to find the last keyframe before that and then decode from there.

</comment></comment></comment></comment></comment><comment><USER20> _Just because a bug seems impossible doesn 't mean it is._

Why would anyone who has used a printer more than once think it would be impossible to reliably jam a printer...

<comment><USER21> Because it seems strange that anything involving a printer would be reliable.

</comment></comment><comment><USER22> My favourite impossible bug was during a autonomous robotics course in which we had to design a small robot which would collect balls and move them within a target area using quite simple sensors.

One of these sensors was a simple conductive sensor which sensed metallic tape on the floor of the arena.

One of the teams had a freezing issue that they couldn't get to the bottom of, until they realised that it froze when their back roller (a sphere in a cage so it can rotate in 2 directions) went over the metallic tape.

The theory goes that the moving lego parts generated static electricity which was then conducted somehow down to the metallic tape, which caused some fault in the single board PC we used.

I wouldn't have believed it unless I'd seen it. Replacing the metal roller with a lego piece cured the issue.

</comment><comment><USER23> This reminds me of an article I read some years ago about the powers and pitfalls of genetic algorithms. I don't remember the details, and I'd love to find a link to it again. The main thing was that these guys were using GAs to generate circuits to perform a simple signal-processing function. They worked fine, but they were blindingly incomprehensible, the physical equivalent of undocumented spaghetti code.

One of them memorably had a wire or a resistor or something that wasn't connected to anything else in the circuit. So they removed it.

The circuit stopped working.

They put it back in.

It started working again.

The best anyone could figure was that that bit of metal was interacting electromagnetically with the rest of the circuit in some immeasurably small way that the entire thing depended upon.

<comment><USER5> It was a tone discriminator and the experiment was run by Dr. Adrian Thompson.

[http://discovermagazine.com/1998/jun/evolvingaconscio1453](http://discovermagazine.com/1998/jun/evolvingaconscio1453)

Shorter article: [http://www.damninteresting.com/on-the-origin-of- circuits/](http://www.damninteresting.com/on-the-origin-of-circuits/)

</comment></comment><comment><USER24> Related random printer bug: [https://news.ycombinator.com/item?id=8171956](https://news.ycombinator.com/item?id=8171956)

</comment><comment><USER25> Nice, I remember the LPS-20 :-) My favorite though is the person who figured out you could pwn a printer by printing the right document on it [1]. For network attached printers you could print this guy's resume and he would then have a node under his control on your network. Scary and cool all at the same time.

[1] [http://events.ccc.de/congress/2011/Fahrplan/events/4780.en.h...](http://events.ccc.de/congress/2011/Fahrplan/events/4780.en.html)

</comment><comment><USER26> "I cannot be printed on printer X"

[http://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach#Themes](http://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach#Themes)

:)

</comment><comment><USER27> > _Just because a bug seems impossible doesn 't mean it is._

How true.

</comment><comment><USER28> TL;DR: The render time of that file caused the drum to have to stop just briefly enough so that it couldn't start properly again.

<comment><USER29> Except this post wasn't "too long" at all.

<comment><USER28> I didn't mean to imply it was, just trying to be helpful for those who are curious but don't have time.

<comment><USER30> If they don't have time they probably shouldn't be spending it on HN, ;).

</comment></comment></comment></comment><comment><USER31> I can't see an attached file. I would like to try it out. Did I miss something?

<comment><USER32> It was 20 years ago: the bug is long since patched and the printer put out to pasture.</comment></comment>


Rockmelt - another Web Browser - <AUTHOR> http://www.rockmelt.com/index.html

<comment><USER2> This looks like a Swiss Army-knife of "Social Media" functions which, by the way, happens to have a web browser attached. As computing is slowly moving to the pocket, I see discrete cooperative components as more of a solution than an uber desktop umbrella with tiny embedded dedicated functions. But take my opinion with a grain of salt since I actively limit my "Social Media" foot print.

</comment><comment><USER3> I've actually found myself moving in the opposite direction of integrating the social media stuffs. Now I visit the sites if I want to check up on things or post something. Requires more effort but that keeps me from wasting too much time with it.</comment>


When can I use... (Browser Compatibility tables - HTML5, CSS3, SVG, & new tech) - <AUTHOR> http://caniuse.com/

<comment><USER2> I love articles with such a heavy focus on data visualization. Any chance you can provide a .json file containing all the information as well? Every time I see a post containing great data I always want to play around with the information myself but having to parse html to get at the data (using python and beautifulsoup) is such a time investment.

<comment><USER3> Check out <http://caniuse.com/data.js>

</comment></comment><comment><USER4> I like 'bashing' IE like the next guy, but IMHO time scales of Far Past/Past/Present/... tags are different per browser...

</comment><comment><USER5> WebGL? I know it's not finalized but it be useful to see WebGL included.

<comment><USER6> WebGL is mentioned on that page. I'm not sure if it was updated since you looked.

"Conclusion: Not ready*. Waiting for Internet Explorer 8, Firefox 3.6, Chrome 4, Opera 10.5 to expire"

</comment></comment><comment><USER3> It looks like IE7 and Safari 3 are the next IE6.

They're both blocking CSS3 tables, WAI-ARIA, postMessage, Web Storage, CORS, and appCache. (Opera 10.1 shares the blame on a few of those too.)

IE7 is the furthest behind by far. I'd root for IE8 adoption, except that it's not much better. :(

</comment><comment><USER7> AKA, "IE continues to retard progress on the web."</comment>


GNU Guix package definitions for Gov.uk software and systems - <AUTHOR> https://github.com/alphagov/govuk-guix <comment><USER2> "There's no one else in GOV.UK that uses Guix to develop"

[https://github.com/alphagov/govuk- guix/issues/32#issuecommen...](https://github.com/alphagov/govuk- guix/issues/32#issuecomment-331483255)

<comment><USER3> From the related discussion:

 _I think it 's important for us to move on in this discussion, so I'm going to reject this RFC.

This RFC proposes to use the govuk data tool to aid people in getting local development repo. However, the generation task of govuk data uses govuk-guix, which is a personal project built by Chris. We, as tech leadership of GOV.UK, have decided not to add guix to the GOV.UK stack.

There's a lot of value in the example of the guix data tool and this discussion. We'll make sure that it informs the discussions we're having right now about work on the GOV.UK developer environment for next quarters._

[https://github.com/alphagov/govuk- rfcs/pull/101#issuecomment...](https://github.com/alphagov/govuk- rfcs/pull/101#issuecomment-500828466)

So, it seems to be once person's project and the gov.uk leadership seem to have rejected Guix. Still a shame though, Guix and Nix are great for reproducibility and setting up development environments. But I also understand that they don't want to introduce Guile Scheme, which most of their developers will not have a background in.

<comment><USER4> Yes, a Ruby port might have had a better chance given the number of Ruby contractors working for gov.uk.

<comment><USER5> A Ruby port of Guix?

<comment><USER6> As in Linuxbrew, Homebrew of Linux?

<comment><USER5> I have no idea what you're talking about.

I was replying to a comment that, if I understand correctly, was suggesting "porting" Guix so that packages could be defined in Ruby instead of its native Guile, for the purposes of maintainability. But I may not have understood correctly, because I don't see how anyone could think that would improve maintainability. Hence the question.

<comment><USER7> Homebrew, a pretty dominant command line package manager for mac osx, has its package definition/install scripts written in ruby.

It doesn't do the functional dependencies aspect well, but it is the package manager for macs.

<comment><USER5> Oh, I didn't know Homebrew is scripted in Ruby. Thanks, that's the connection I was missing!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> We're trying something similar - to provide a set of curated services with example deployments for cities or municipalities. We build on NixOS and use morph for deployment. Services include simple-nixos-mailserver, Redmine, Sympa, owncloud with LibreOffice Online and many more. If you're working on something similar or your're interested in helping with this cause feel free to contact me via email or IRC.

<comment><USER9> I think I know the answer but any reason why a maintained docker image isn't good enough?

<comment><USER10> Not GP, but an advantage of a NixOS module is that it has a strongly-typed, explicit API for configuration options, whereas a Docker image would require documentation ala "set those 10 env vars" or "give a YAML config file that looks like this".

<comment><USER11> And even apart from that, it's really hard to make deterministic build processes for docker images without something like Nix.

<comment><USER12> I'd argue that you don't need that kind of determinism from docker images. It's nice, but we've been just fine without it.

</comment></comment></comment></comment></comment><comment><USER13> "anyone stumbling upon these repositories (both inside and outside GOV.UK) may assume this is needed to build and run GOV.UK"

[https://github.com/alphagov/govuk- guix/issues/32#issuecommen...](https://github.com/alphagov/govuk- guix/issues/32#issuecomment-330627857)

<comment><USER14> "Ok. I'll delete these repositories at the end of the day on Monday." (;,;)

<comment><USER15> GH comment dated Sep 22, 2017. Looks like UK bureaucracy is a bit slow...

</comment></comment></comment><comment><USER16> gov.uk was already brilliant in terms of browsing ergonomics, now they're gone even higher.

</comment><comment><USER17> For software designed to be hosted in a datacenter (rather than distributed to an end user) is there a reason why Guix is better than some containerization framework? With things like Nix there's reproduciblity guarantees. With containers it (appears) simpler to package and reproduciblity ship your software.

What is Guix's main selling point?

<comment><USER18> Nix and Guix are extremely similar. Guix is a fork of nix that is rewriting it to be guile all the way down.

I personally like Nix's syntax better than a lisp, but that is just a preference.

The core of how they operate is the same. Just look at their build/ci system.

[https://hydra.nixos.org/](https://hydra.nixos.org/) [https://ci.guix.gnu.org/](https://ci.guix.gnu.org/)

<comment><USER19> Yeah but if I had the option of Docker or something nix based, why would I not choose Docker? Particularly as deploying to most Clouds is pretty easy if an app in already in a Docker Container.

<comment><USER3> You can easily build Docker images using Nix. Benefits: (1) reproducability, if you pin to a certain nixpkgs, you always get the same set of packages; (2) layers don't have to be full filesystem diffs; (3) the image only contains the computed closure. E.g. I produce Docker images an NLP program with Nix. The image only contains: glibc, tensorflow, my program, word embeddings, the model. No other system files or dependencies. Since the image build expression uses Nix expressions, I can also directly use the same models on my Linux workstation, Linux servers, macOS, etc. without Docker.

This is a good starting point:

[https://grahamc.com/blog/nix-and-layered-docker- images](https://grahamc.com/blog/nix-and-layered-docker-images)

</comment></comment></comment></comment><comment><USER20> I've sent them a pull request with some spelling corrections.

[https://github.com/alphagov/govuk- guix/pull/35/files](https://github.com/alphagov/govuk-guix/pull/35/files)

<comment><USER21> Thanks for informing us

</comment></comment><comment><USER22> Can someone familiar with this explain what it is? I've read the guix page and it's a package manager - so is this a graphical or command line tool to do UK government stuff (with no screenshots)? Or something else?

<comment><USER23> Guix is a tool for declarative and reproducible software deployment. You can view it as a package manager, but it's also an OS configuration management tool, a container image provisioning tool, and more.

Guix 1.0 was released just two months ago. The announcement summarizes what it can do for you in these areas: [https://guix.gnu.org/blog/2019/gnu- guix-1.0.0-released/](https://guix.gnu.org/blog/2019/gnu-guix-1.0.0-released/) .

<comment><USER22> That doesn't answer the question. What do these guix gov UK packages do?</comment></comment></comment>