How To Spot a Breakthrough: Tips from Early Amazon Investor Nick Hanauer - <AUTHOR> http://www.xconomy.com/seattle/2008/12/03/how-to-spot-a-breakthrough-tips-from-early-amazon-investor-nick-hanauer/ <comment><USER2> Something I'm wondering - how do you spot that "transformational" value in foresight, when the next element ("social disruption") is all about how these huge shifts in value creation are never really apparent at first glance?

For example, I think that YouTube is easily a 10x improvement over things like VHS tapes. I was just hunting for the opening credits of children's shows that I watched as a kid, and I found every single one (except Voyage of the Mimi ;-)) in about 15 seconds. My _dad_ has been searching for the songs he grew up with, in the 40s, and they're all there. It's like a vast nostalgia library.

But that didn't exist until enough people started using YouTube that basically everything became available online. When I first saw YouTube, around the fall of 2005, I was basically like "What's the point?" You were limited to 10 minute clips, and it didn't have anything I wanted on it. Even when Google acquired them for $1.6B, many people say they overpaid. Heck, people _still_ say they overpaid.

And Google Video, which came out before YouTube and offered a very similar feature set, never really caught on. Nor did the zillion other video-sharing startups.

Ideas? My cofounder once talked with Clayton Christiansen about this (who's done a lot of work on disruptive innovation), and he said that on a micro level, it was basically all luck. You know what _doesn't_ work, but finding out what _does_ is basically just a matter of trying lots and lots of ideas and letting the vast majority fail.

<comment><USER3> YouTube succeeded because it's a good brand and good enough software. If Google had just integrated video results more tightly into search, thus making it a feature rather than a distinct product, and made uploading straightforward, they might have won. They still could, actually; a lot of people I know use Google to find YouTube videos in the first place.

I've noticed that whenever Google launches Google _, where _ isn't a search filter, it more often then not fails. It's the branding. I think that for a lot of people Google = web search. Google Image Search is popular because it's an easily comprehensible feature of search. Google Docs is a shit brand; if I only knew about Google search and Gmail, I'd guess it's document(ation) search. Or just a word processor. It's not immediately clear that it's a web- based office suite.

A large part of Gmail's success was in creating a distinct brand; my hunch is that if it was launched as just Google Mail, it wouldn't have been nearly as successful (technical merits aside).

<comment><USER4> Youtube was hemorrhaging cash. If someone wouldn't have bought them, Youtube would have been in big trouble. especially if we had been in a recession.

</comment></comment></comment><comment><USER5> Interesting that despite numerous cases of success, he still believes in the big ol' bag of luck. Highly successful people usually loathe to admit the part of luck in their lives.

<comment><USER6> I've found that the people who are most successful are those that ascribe their success to good luck. And when things fail, they examine what they did wrong: externalize success, internalize failure.

Those that believe that luck has "nothing to do with it" are generally endowed with a huge ego and no way to see around it. Strangely, they're also the ones most likely to blame _bad_ luck when things go wrong: internalize success, externalize failure.

The advantage to internalizing failure is that you can learn from it.

<comment><USER7> From an optimistic (and even mental health) perspective, externalizing failure and internalizing success - aka "I did the best I could but the situation did not materialize" - is much healthier than internalizing failure and blaming yourself when things go wrong. Externalizing success never gives yourself due credit when things go right, and internalizing failure always blames yourself when things go poorly. See the problem?

This is not to say one should have an inflated sense of value or "don't learn from your mistakes", but it is much healthier to optimistically look at failure as not a personal thing, but something external.

People who have succeeded and are confident in themselves are never afraid to look back and admit that a little bit of luck (and opportunity) was part of the equation. But by no means will they discredit their own personal influence and attribute the entire success to something external.

<comment><USER2> I recall a psych study on this. They found that people who externalize failure and internalize success are _happier_ , but those who internalize failure and externalize success are _more successful_. And yeah, they did find the corollary that more successful people tend to be less happy. Makes perfect sense really.

<comment><USER7> I could understand that study. When one roots their personal value in something external, like a measure of success, they spend their whole life working ridiculously hard and sacrificing everything to validate themselves based on the measuring stick of that externality.

The only problem is the measuring stick always keeps growing taller. So what is "success" to that specific individual when they can't enjoy it or even recognize it as "good enough"? Others will tell them they're an amazing success, but they'll never believe it was enough of a success. That definition of being _more successful_ is based on the others' perception.

Not only that, but you'll notice the study did not say internalizing success means you'll be _less successful_. It's possible to be content by valuing yourself in foundational principles like "hard work, integrity" etc. and through that achieve both success and happiness.

I'd be interested to see that psych study, but it does seem pretty common sense, though. The more you value an outcome in life the more you'll spend your life chasing it - and the higher probability you'll reach it.

</comment></comment></comment></comment></comment><comment><USER8> Using the 10, 100, or even 1000X better rule leads to some interesting, dangerous thoughts about how to solve some of the world's toughest problems. Kudos to Ganauer for mentioning Qliance- a dangerous new model for treating non-catastrophic health problems that might just mortally wound the fat-cat insurance companies.

Here in Canada everyone gets free health care, and Scandinavian countries are even more progressive than we are. Residents in some Scandinavian countries attend university for free. Free university and health-club-style medical for everyone!

<comment><USER9> this is a startup focused news site. we're all aiming to be one of the fat- cats one day.

</comment></comment><comment><USER10> This stuff is as much better than the average advice post as this guy is more successful than the average investor.</comment>


Google is killing Fabric in mid-2019, pushes developers to Firebase - sahin-boydas https://venturebeat.com/2018/09/14/google-is-killing-fabric-in-mid-2019-pushes-developers-to-firebase/ <comment><AUTHOR> This is one area where self hosted solidly wins over anything service oriented: you are in control to the point that _you_ , and not some company somewhere can make the call on when a product is no longer viable. The decoupling that we had with licensed software that you run on infrastructure that you control is pretty close to ideal for the customer. You give the provider of the software a one time payment and after that it literally is your problem. At the same time that is what enabled SaaS, companies do not like it when they have one-shot income over something that might generate recurring revenues, and end-users do not want to have to deal with the hassle of installing, maintaining, backing up, keeping secure and updating all this software.

Even so, every time I sign up for some SaaS component I am very much aware that I'm giving up something precious in terms of control, and every time I read an announcement like this one (or the Inbox one the other day), I'm happy that we do our best to use as little services by outsiders as possible.

<comment><USER2> Saas can get a product out fast. But yes, unless one has some kind of special contract with a Saas company ensuring the continuity of the service as long as one needs it, never rely on Saas for too long, unless the solution is open source. For all we know Firebase could be gone in 2/3 years...

<comment> crooked-v This is why I really like now.sh. They've put a ton of effort into fitting the patterns already in use for self deployments, with only a tiny bit of overhead on that for env vars and domain configuration (~10 short lines of configs for one of my current projects).

<comment><USER3> Your post made me checkout now.sh which does look really cool, but it really is a poor example here.

* It's a SaaS with monthly fees.

* now itself doesn't support self-hosting (i.e. the `now` binary will always use the now.sh backend)

* Consequently, if now.sh closes down you can't continue to use it.

* When it comes to hosting the code you upload, it appears to require you to use a cloud hosting provider (Aws, Azure, etc). You can't point it to a box of your choosing.

</comment></comment></comment></comment><comment><USER4> Dammit not inbox. I've been using it since the beginning. You know this is the kind of stuff that prevents me from diving too deep into there tech and products. I love flutter but I'm scared about its fate.

Flutter, Dart, Fuchsia these are some great technologies but they might end up in bin some day.

In the end, I tell myself, I'm just a user. Imagine what must be the state of developers who spent years working on these products but then this happens in entire industry. It's just I expected better from Google.

<comment><USER5> These things come and go. One could have been just as wrong to focus on Silverlight, OpenSolaris, SmallTalk, etc, etc, etc, or even your own company's ABI....

And is it really wrong to spend a couple of years becoming an expert Plan 9 user just because it doesn't take over the world? I still think it's all (mostly) time well spent.

<comment><USER6> > _And is it really wrong to spend a couple of years becoming an expert Plan 9 > user just because it doesn 't take over the world? I still think it's all > (mostly) time well spent._

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

<comment><USER7> it's hard to gauge opportunity cost, since architectures fade in and out of popularity and patterns succeed where the frameworks that introduced them fail.

I doubt Rob Pike and Ken Thompson would give up the experience of writing Plan 9; its lessons persist in Go and other systems they've designed. Google's tech stack was pioneered by systems programmers who built their career writing for supercomputers, forced to target commodity hardware.

Patterns have a much longer shelf-life than their originating products.

<comment><USER6> > _it 's hard to gauge opportunity cost, since architectures fade in and out > of popularity and patterns succeed where the frameworks that introduced them > fail._

It might be hard but it's also necessary. That's true for many other things that are hard.

What would the opposite be?

Have people adopting any new technology and losing several years of their lives studying a doomed fad because without evaluating its long term potential and opportunity cost because it's "hard" and "architectures fade in and out of popularity"?

Instead, we should encourage people to do the hard thing, and evaluate things that they intend to study and their opportunity cost before they devote any substantial time with them.

Some will still get it wrong and invest in the wrong tech, but overall doing due diligence before jumping in will be better than just blindly going for whatever catches their fancy or is hyped.

> _I doubt Rob Pike and Ken Thompson would give up the experience of writing > Plan 9; its lessons persist in Go and other systems they 've designed._

That was their job and they were paid for it. And Plan9 was also their own creation and original research.

That's not the same as some third party devoting themselves to a new technology just because it looks cool, it's hyped at the moment, etc.

</comment></comment></comment></comment></comment><comment><USER8> Phew, I was worried they were somehow killing [http://www.fabfile.org/](http://www.fabfile.org/).

<comment><USER9> Wow, it looks like they finally added support for Python 3.4+. I had kind of abandoned Fabric due to the lack of support past 2.7...this is fantastic news!

</comment></comment><comment><USER10> Firebase is revolutionary. If you haven't used it, it means you can remove your reliance on all the server side logic you currently maintain. It is a huge philosophical change but is the perfect complement to serverless architectures.

This is smart by Google. AWS AppSync provides much of the same functionality but gives you the benefit (if you already know Graphql) of Graphql. Or, it forces you to learn about graphql, which is also the downside. Forcing Fabric customers into the firebase ecosystem makes it look like this was a cheap acquisition from Twitter after all.

The huge win with either platform commitment is you simply focus on your data and forget about the challenging problem of syncing that data across all the platforms. That's (multi client sync) a big, big, big challenge and no one does it well on their own.

<comment><USER11> I've found it's only good vs your own stack for small prototypes and MVPs, and that the debt builds up faster than anything else I've ever used (the cost too!) but YMMV.

I use the analytics heavily though, the built in network reliability and performance analytics you get for 1 line have literally saved my company millions of dollars. Mentally it was hard to ditch direct GA but it's really so great.

</comment></comment><comment><USER12> Why move to firebase when it will be shutdown when it becomes useful?

<comment><USER13> Firebase seems to be pretty integrated with Google's GCP strategy, as well as Android push notifications with FCM.

Not saying concern over Google's commitment to various tools is unfounded, but it seems that generally things that are tied into their core goals are pretty safe.

GCP is very important to Google, Inbox was an interesting UI built on top of Gmail.

<comment><USER14> FCM is only the third in a row of push notification solutions for Android (preceded by C2DM and GCM), and it'll be replaced someday, too.

</comment></comment></comment><comment><USER15> Just a reminder that, if you critically depend on a IaaS/PaaS/SaaS, you should be able to trivially replace it, sometimes as quickly as overnight. Having the service be completely open source so you can self-host generally helps, as does open protocols and standards.

Especially important when it's a Google service given their historical speed of deprecation and abruptness in announcement.

<comment><USER16> If you can trivially replace it with something else overnight, the SaaS might be a bit too simplistic to use in the first place, no?

<comment><USER17> Or there is healthy competition in the space.

I think OP means you should write your interfaces with SaaS such that changing to a different provider is relatively easy (just rewrite a little client code or something to fit the new provider to your abstractions).

</comment></comment></comment><comment><USER18> The first step to using Google is to seek an alternative or to accept the reality that at some point the good times must come to an end.

</comment><comment><USER19> In 2020: Google is killing Firebase in mid-2021, pushes developers to [NextGreatToolWhatever]

<comment><USER20> In 2025: Google decides to focus only on Search, Maps, and Mail; shuts down or divests all 243 other "side projects".

<comment><USER21> Including Angular 57.

</comment></comment></comment><comment> sahin-boydas In 2019: Google decides to focus on Google Analytics and shuts down Firebase

</comment><comment><USER22> Firebase is the worst name ever. Literally it describes absolutely nothing. I really wish Google would take a look at naming.

<comment><USER23> Google acquired that company.

And the name even has half the word "database" in it, which is much more descriptive than most tech names.

<comment><USER24> You know what else happened around Firebase?

I was a customer of Divshot, a "static web hosting service" that was merged into the Firebase team at Google, so it's not quite as clear as made out.

<comment><USER23> My point was Google didn't name the product.</comment></comment></comment></comment>


The Rise of the Not-Just-Freelancing Freelancer - <AUTHOR> https://www.bloomberg.com/view/articles/2017-10-17/the-rise-of-the-not-just-freelancing-freelancer <comment><USER2> The bottom gets squeezed more.</comment>


What programming languages do you know and which ones do you want to learn? - <AUTHOR> <comment><USER3> I've found I can only know one programming language at a time.

However, I can go back to languages I've used before and relearn them more quickly the nth time around.

<comment><USER4> When you go back and pick up a language you haven't used in a while, you find yourself magically much improved because of the fundamentals you improved on in other languages. I find that very rewarding.

</comment></comment><comment><USER4> • Used but suck at (or at least I think I suck at them): C, a bit of a niche form of assembly, all kinds of strange application-specific languages

• Know but rusty: C++, C#, Python, AS3, Java, GLSL

• Currently use: JavaScript, Typescript, PHP, SQL, HTML/CSS

• Playing with: Nim, D, Rust

• Want to learn: I'm honestly trying to decide what to learn next. Might jump into Nim but I also have to go back and give Rust more of a chance after escaping the inconvenience of lifetime annotations. D seems nice but it seems to be pretty colossal in a similar way to C++ and I don't have time to dig into something like that right now.

One thing I'd love to do is go lower level than what I've ever done (C memory management / kernel-y stuff), but I have no project which would justify doing it and I'm time constrained.

</comment><comment><USER5> I know Python, Ruby, JavaScript, and PHP. I often work in all of those in a given month. PHP is my weakest of the four.

If I could choose a new language to know, I would choose Clojure. I want to know a lispy functional language, and I'd get a lot of the benefits of the java ecosystem.

C or Java or C# might be a better choice, though. They would enable me to do a lot of things I can't currently do, and I'm not entirely sure Clojure would do that.

<comment><USER6> > They would enable me to do a lot of things I can't currently do

What kind of things?

C for low level work and c#/Java for?

</comment></comment><comment><USER7> I don't "know" any language. My goal is to "know" C in the next 5 years. My reach goal is to understand how the "computer works" in the next ~10 years.

Not in my wildest dreams can I imagine me "knowing" C++.

</comment><comment><USER8> Know fluently and use almost daily: Ruby, JS/CoffeeScript, Sass, PHP (moving away from this one), Bash, Regex (lol).

Know pretty well, but haven't used in production: Go, C#.

Wish I knew more of: Python, Elixir, C.

</comment><comment><USER9> _know_ \- Clojure (first language, one I know best via book learning / theory) _know_ \- Scala (The one I have the most experience in as I've used for most of my almost 3 years of professional programming career) _done-a-bit-of_ \- XQuery, Java _like-to-learn_ \- Rust, Elixir, miniKanren/core.logic, chez/Scheme, Idris

</comment><comment><USER10> Want to learn: C++, Rust, Haskell, Go

Funny enough, learning C++ these days is arguably harder because of modern C++ standards. Reconciling the best practices between old and new can be difficult at times, especially if you don't care to embrace everything modern C++ has to offer. Multi-platform build systems also tend to be incredibly complex.

Rust solves all this, but its ecosystem isn't exactly mature at the moment. Sadly very few people in game dev take Rust seriously right now.

<comment><USER11> Why would you not want to embrance modern C++? That's what makes C++ (potentially) worth learning today.

<comment><USER12> Do you have good resources on modern C++? I'm in the same boat of wanting to learn either Rust or C++ but I'm finding it hard to focus on what's makes up modern C++ and what I should avoid.

<comment><USER10> As a fellow passenger on that boat:

The 4th edition of Stroustrup's classic was updated to reflect modern practices. [0]

Scott Meyers, author of _Effective C++_ also wrote _Modern Effective C++_. [1]

Lastly for pure online reference, cppreference.com. [2]

[0] [https://www.amazon.com/C-Programming- Language-4th/dp/0321563...](https://www.amazon.com/C-Programming- Language-4th/dp/0321563840)

[1] [http://shop.oreilly.com/product/0636920033707.do](http://shop.oreilly.com/product/0636920033707.do)

[2] [http://en.cppreference.com/w/](http://en.cppreference.com/w/)

</comment></comment></comment></comment><comment><USER13> Scala, Java, Rust, Javascript, Typescript, Bash. Not an expert in either of them and no matter how much I work with Scala and Rust to some extent I always find something new and usually annoying, but that's the nature of the profession. Pushing your Sisyphus rock uphill and all that.

</comment><comment><USER14> I know Python, Clojure, C#, Java and to some extent (not so modern) C++. Python and Clojure is what I use on a daily basis.

I'd love to learn Haskell, and I've actually started, but I've come to the realization that I should focus more on CS fundamentals instead of just hoarding languages.

</comment><comment><USER15> Know & use: (these days) R, most of the time.

Wish: I'd like to explore rust, Scala, (oh yes) JavaScript/typescript, C#/F# for writing extensions for my R code when R is too slow or fragile. I'd like to avoid C++. I'd be interested in comments on/experiences with that.

</comment><comment><USER16> In the order of fluency: C#, C++, Java, Javascript, Python. I know each enough that I have pet projects in each language, not all the tricks and syntax shortcuts. I use C# almost exclusively at work. I'd like some chance to learn functional language, F# may be a start.

</comment><comment><USER17> These days I mostly use C, Python and JavaScript. In the past I've worked with assembler, Fortran, Pascal, Modula-2, C++, Java, Tcl, PHP. I've toyed with Lua, Go, Scheme, Smalltalk, Haskell and ML but I'm not planning to learn any new languages at present.

</comment><comment><USER18> I'm proficient in: Python and JavaScript.

I'm rusty in: PHP and Java.

I'm mediocre in: C, C++, and C#.

I want to learn: Rust, Nim, and Lua.

</comment><comment><USER19> Know: Javascript, Python, Java, C/C++/C#, some basic knowledge of Common Lisp and a few others (quickbasic, various scripting or special purpose languages like Matlab)

Want to learn: Clojure, Haskell, x86 assembly, webassembly, shader languages (e.g. GLSL)

<comment><USER19> Personal anecdote: the weirdest language I've ever used was a domain specific language that was adapted from punch cards used by a bank. It was basically a really weird assembly language. All the variables had 3-letter names, there were exactly 256 of them and they were all globally scoped. There was a custom IDE, but you couldn't freely edit the source as text, the programming was done via drop menus, where you selected the operation you wanted to perform, then scrolled through the list of 256 variables to select which variables to use as arguments...

</comment></comment><comment><USER20> I am fluent in C, C++, and C#. I am currently learning Swift for iOS development. I will study F# when I am good enough with Swift. I will probably have to learn JavaScript eventually but am holding out as long as possible.

Edited for grammar.

</comment><comment><USER21> RPG, COBOL, Fortran (IV, 77), BASIC, BBX, Pascal, Object Pascal, Delphi, C, PHP, Javascript, assembly for more processors than I can remember.

Yeah, I'm old.

I'd love to learn C++, Python, Erlang, Lua, Ruby, and probably lots more.

</comment><comment><USER22> I know C++,python and some F#. I mainly learn new language to leanr to think differently is so, I want to learn a lisp (probably racket/scheme) , a term rewriting language probably 'Pure'

</comment><comment><USER23> I've been using Powershell for awhile but I've been trying to learn GO. I've certainly realized my lack of CS fundamentals has made it quite an uphill battle.

</comment><comment><USER24> I know C++, Rust(I'm comfortable using it, but I still find out new and better ways of doing things than what I know) and Python. I want to learn Haskell/Ocaml.

</comment><comment><USER25> Know (in decreasing order of expertise): C++, C#, HLSL, F#, Python, JavaScript

Want to learn (in decreasing order of interest): Haskell, Rust, Elm, TypeScript

Zero further interest in: Go, Java, Kotlin

</comment><comment><USER26> Python and Javascript primarily, but also some Bash and Clojure. I want to go deeper into Clojure, and learn Haskell, C and maybe Rust and Go among others.

</comment><comment><USER27> Know: C, Python Wish: Rust, Prolog, Common Lisp, Ocaml, Perl PS: my wishlist includes fluency, not only "to know something in it"

</comment><comment><USER28> Know: Python, Ruby, Elixir, Javascript, (deprecated knowledge: Java, C/C++, OcaML, Scheme)

Want to learn: Haskell, Go, even more Python and Elixir

</comment><comment><USER29> Fluent, use everyday: Scheme, Python, C

Can use, but probably not the best code: C++, JavaScript, CofeeScript, Java, Clojure, Rust

Wish I knew: Scala, Ada

</comment><comment> tony-allan I know Python well and want to learn Go. I can write simple programs in many languages (Stack Overflow is my friend!)

</comment><comment><USER30> I know "ASP Classic" and want to learn PHP as need to learn new tech. Any suggestion on learning PHP?

<comment><USER31> "want to learn new tech" "PHP"

something doesn't add up

<comment><USER30> Then what's your suggestion for person who is working on 17 years old tech.?

</comment></comment></comment><comment><USER32> Current daily: Elixir (Phoenix), Javascript (Vue)

Recent-ish daily: Ruby (Rails)

Before that daily: AS3/AS2 (many), PHP (WordPress, Yii, others),

Throughout: HTML/CSS/JS, SQL,

Side note: I was surprised at how short my list was. It feels like it should be much longer (edit: as if I'm forgetting a bunch).

As far as wanting to learn? I've only scratched the surface on Elixir (~1yr). Will continue unwrapping that awesomeness for now.

<comment><USER33> Can you explain (as much as you're able) what kind of application you're building with Elixir + Vue? I've been casually picking up both of those and I think it's a stack I'd like to make a lot of use of, so I'm curious what your experience with it has been.

<comment><USER32> I'm building a process engine.

It started out as me building a scheduler (with a focus on repetition) on to the functionality of Workflowy. Now I'm growing it in to a multi user tool for knowledge exchange, scheduling, and completion review.

Elixir/Phoenix/Vue have been amazing, every step of the way.

It took me a few months to grok the power in Elixir, but it's amazing to work with now. Learn the pattern matching. Enum is your friend.

I've used Vue components from day 1, and it's been enough for this former AS3 developer to finally feel ok about Javascript development. So many JS solutions along the way have felt like rickety messes. Using Vue components has been a sane middle ground that brings everything together logically without too much inter-dependence.

I'm not looking to replace this stack anytime soon!

<comment><USER33> Thanks, I really appreciate the response. I want to settle into a stack and commit to finally building some things, and I think this is the one I'll go with. I really enjoy some of the Haskell/Idris I'm picking up, but I think in a middle ground between mindshare and power this will work out pretty perfectly. I agree regarding Vue: it's the first front end thing I've looked at that hasn't felt wrong somehow.

</comment></comment></comment></comment><comment><USER34> JavaScript and I want to become seriously proficient in it before digging deep into other languages.

</comment><comment><USER35> Java, AS3, JS, TS, CS, Perl, Python/Jython

Right now I'm focused on learning Angular2 and mastering DDD

</comment><comment><USER36> c# is what I know best, but I've done c++, java, javascript, vb.net and maybe a few others commercially. Apart from dusting off my c a bit lately I want to learn rust next.

</comment><comment><USER37> Php and JavaScript. And a little bit of Java. I want learn either java or c++ in the future, but the truth is if I'm going to learn another language is highly possible that it will be Swift.

</comment><comment><USER38> Know well: Ruby, Python Rusty: Java, C, PHP, Go, C#

</comment><comment> jo-soft Use on a daily basis: JavaScript, Coffeescript, Typescipt, CSS, HTML. Konw: Python, Erlang, Boo, C#, Visual Basic. Want to learn/improve: Erlang, Go, CSS

</comment><comment><USER39> C# and Delphi. I want to learn Rust.

</comment><comment><USER40> know: Javascript, C#, Bash, HTML/CSS, SQL, Powershell.

previously: Java, Groovy, VB.net.

been learning: Rust, ASM

</comment><comment><USER41> The languages I used tied pretty heavily to the computers I used.

In chronological order:

\- 7-8 ('98-99): Accidentally broke the menu system on a random old DOS machine I was given. The person who gave me the box wrote a new menu for it in QBasic 1.1. This person did not know about "QBASIC /RUN" \+ "SYSTEM", so gave us instructions ("Alt, F, X") on how to exit QBasic. Of course I _didn 't_ exit QBasic, I tinkered with the menu system. This machine was eventually returned to the person who gave it to me (along with another).

\- 8 (99): Was given an old 486-25 by a friend; this ran DOS 6.22 and Win3.1. I think it was assembled by a local computer retailer; the VGA ROM BIOS had "Eagle Systems Australia" burnt into it. Very curious as to that worked out. I'm not certain but I don't think this machine had QBasic on it. Windows eventually fell over (I have no idea why), so I stuck with DOS. I don't remember much of what I did with this box at this point.

\- ~11 (02): I vaguely recall finding out the machine had something wrong with it internally (I was _not_ knowledgable to any degree at this point), and someone from a local church (IIRC?) offered to fix it, which turned out to mean replacing the HDD (...ah, that explains why Windows fell over). Not quite sure if the old HDD was copied to the new or how that worked out, but I remember a parallel cable and Microsoft Backup (although I didn't know that's what I was looking at at the time), but it had QBasic on it when I got it back, so I continued tinkering. (A second PC also manifested sometime around this point, but I didn't have any floppy disks to copy QBasic onto it from the other machine IIRC.)

~14 (03): Started visiting the local library. I would _so_ like a copy of my Internet history from back then! Somehow stumbled on QuickBasic 4.5 and was able to download it onto a floppy disk; didn't use many of its additional features myself, but tinkered with (and completely failed to understand) some programs I found online that did. Filled a "QB" directory on my disk full of embarassing half-finished .

~15: Was randomly given an old Celeron which got me my first exposure to Win98. Somehow discovered Resource Hacker while at the library one day. This wasn't a language, but I redesigned the UIs of things like Sound Recorder and this taught me about visual UI design and got me wondering why program UIs couldn't be fundamentally edited in some semantically consistent way while they were running.

\- Found Word on the machine and stumbled on its "Save as HTML" option, kicking off my foray into the Web. I tried to copy Word to another HDD but that of course didn't copy the sprawl of 10000 random directories and Registry keys that accompany an Office installation. Ended up digging StarOffice 5.1 off of a CD that came with a magazine that had been purchased several years earlier. I learned HTML and JS off of SO, and loved its "desktop" type UI (it really filtered distractions!). I'm super glad Word broke; I only learned about the kind of "markup" it produces several years later. If I had've ever looked at Word-emitted HTML I don't think I would ever have gotten to the point where I let go of SO and started editing the HTML myself. Once I got to that point I also began to learn simple JavaScript.

\- While researching Basic-like languages I found VB-DOS on a website one day, but forgot to download it. Eventually re-found it some time later on another website that also had Visual Basic (for Windows) 1.0, which I grabbed for lulz. Ended up deciding VB-DOS was too disjointed (takes several seconds to switch between the code editor and the form designer) and tried VB 1.0. I.... may or may not have a "VB" directory with ~100 unfinished projects in it. I had a 450MHz Pentium 3 at this point and my first properly working CD-ROM drive, but the library Internet download speed was rather slow, I had no idea how to "find things", and I had no idea how to burn ISOs anyway, so eg VB6 wasn't in my sights at all.

\- ~16-17: Asked the similarly clueless and directionless bunch of kids I was hanging out with on IRC for language advice, and somehow began to set my sights on PHP... of all things. (This was where my IQ began its steady decline. I am not joking.)

\- ~17: Installed Linux, began tinkering. Learned about shell scripting, which immediately clicked.

\- ~17-19: Somehow managed to grasp pointers after years of trying, and began to tinker with C a bit. I found it generally required too much attention span so didn't do much with it.

\- ~22-23 (2013-2014): Found an old Toshiba on the side of the road (the 333MHz Celeron in it was _removable_) and tried to install Slackware on it from a somewhat scratched CD. PHP was on the scratched part. I wanted to write a fast package selection utility; the only thing I was aware of on the machine besides bash was sed and grep. IIRC, I had to abandon my attempts after less than a week due to all the grep and (multiline!) sed expressions giving me a headache because it collectively looked like modem line noise, but I learned regular expressions in the process :D

\--

I'd like to learn so many languages I don't honestly know where to start.

\- I recently read about the golang SSL key-verification incident, and must say the devs' reaction inspired a lot of confidence. I've also been reading a Go ebook for the past month or two. This is the language I plan to use next.

\- I'm also reading a Lua ebook too. This language is awesome.

\- I've come to realize I've been treating PHP like Perl. Half of me wishes I'd gone back and learned Perl instead, and that it's sad Perl doesn't have fast Web server integration or even standard FastCGI (at least I'm not seeing that it does). One the other hand, reading things like [http://blog.schmorp.de/2016-12-29-griefing-the-perl- api.html](http://blog.schmorp.de/2016-12-29-griefing-the-perl-api.html) and the 2nd half of [http://blog.schmorp.de/2015-11-12-tidbits-why-coro- crashes-o...](http://blog.schmorp.de/2015-11-12-tidbits-why-coro-crashes-or- how-perl-6-deals-with-bugs.html) scares me off of both Perl 5 and Perl 6.

\- Erlang seems really interesting both from the standpoint of being message- passing-based and also due to the fact that it runs its own kernel. I'm wondering whether to just deal with Erlang's variable immutability (a linguistic paradox!) or whether I should play with EFL or Elixir.

\- Obviously Lisp is somewhere in there. I'm unsure which one(s) to learn though: I want to get a good idea of Lisp's history, understand its context, and fully grasp what it is about it that everyone likes, so I have a bit of a Star Wars problem - what order to learn everything.

\- I'm very very turned off of Python due to the 2.x/3.x debacle.

\- Assembly language has been on my todo list since I was about 14. This one's a sore point; I've read more assembly-language tutorials than I could care to recount but always end up near-tearfully confused with eyes glazed over. Hopefully I can figure out what it actually is that I'm blocking on one of these days. Maybe I should skip asm and just go straight for machine code.

\- I recently discovered the Forth family of languages. I have to say I really really like the Forth approach to programming - creating shrinkwrapped applications that perfectly trace the specifications of whatever you're trying to build, with zero architectural overhead. I'm going one step at a time with the RPN thing though. :P

\- I recently realized that Ruby is easy to abuse to "be cute" but that it can also be written straightforwardly and consistently. I didn't know that, I like this a lot (because its syntax _is_ nice). I remember reading Why's Poingiant Guide to Ruby a few years ago and being heavily turned off by the way the guide made things seem dramatic and complicated. (I now realize my attention span was being spammed by the guide's presentational style.)

\- I'm guessing I should probably pick up Java at some point, since it will probably come in handy in industry.

\- On the subject of the JVM, I could probably do worse than to learn Scheme.

\- C++ has been on my todo list for some time, but my computers are still quite old (I'm on an 11 year old laptop as of today), so slow compilers are doubly+ slow for me, so I have little incentive to pursue this.

I have a lot of problems with indecision, as you may have noticed :) - <USER2> something has surface-level issues, I shy away. I will admit that this is in open contradiction to the fact that I continue to learn PHP...

My main challenge is in finding a language I can enjoy working with that doesn't require a consistently clear brain to work with: I frequently have a foggy head due to various health issues (which are expensive to fix - and, hilariously, are also why I don't have a job).

<comment><USER29> > My main challenge is in finding a language I can enjoy working with that > doesn't require a consistently clear brain to work with: I frequently have a > foggy head due to various health issues (which are expensive to fix - and, > hilariously, are also why I don't have a job).

There aren't many. I say this as someone whose head also gets screwed over by health.

Really, probably the language you are most familiar will fill the niche, because of muscle memory and the like.

However, the languages I find easiest on my bad days (not the worst, because programming is impossible on those):

* Python, because I know it really well

* Scheme, because it can't get much simpler. You can learn 90% of syntax, macros, types and functions in a (good) day or two. Edit: Look for Chicken for fast compilation, and Racket for many libraries. (Racket is Scheme+more, so not really scheme.)

* Forth, basically the same reasons as Scheme.

* Awk. It's a lispy C. The docs are fairly decent, and though its way of handling stuff can be a bit unusual (BEGIN, END, and in between that, something that runs on every line of input), its pretty effective as a programming language, and hasn't changed for a long time, making all tutorials and docs up to scratch.

Of all of those, Scheme is the simplest when my brain refuses to count to 5. (Seriously, it gets stuck at random points if I try on a bad day).

<comment><USER41> > _There aren 't many. I say this as someone whose head also gets screwed over > by health._

Interesting. Maybe we should compare notes sometimes. I have a bit of a story with finding alternative-type stuff.

\- I've been contemplating tackling Python, in spite of the 2.x/3.x thing. There's the perfect vacuum where versioning shouldn't be a problem, and the practical real world where knowing Python and the differences between the two will let me actually do interesting things.

\- Thanks for the tidbit about Scheme - and about Chicken vs Racket!

\- ColorForth is particularly interesting, and I found BigFORTH a little while back (which needed to be compiled with -O0 in order to not segfault, yay). Of course "make my own Forth " is in there somewhere :P

\- I completely forgot to mention Awk (!) mostly because I have no idea at what point I began to pick it up, but I did get a basic idea of how it works a while ago, and I've been factoring it into shell pipelines more frequently lately. It's great for when I need to do something that sed can't express well (and I just _properly read_ about how match() a) returns the index and b) _also works apropos to grep_ recently, which is great)

(As an aside, Lua is ~200K and awk is ~632K. That is just _wrong._ [Mumbling about rewrite])

I'm reasonably familiar with the "not wanting to count to 5" thing... heh. Interesting about the Scheme thing in that context. I'll definitely have to give it a look.

<comment><USER29> > Interesting. Maybe we should compare notes sometimes. I have a bit of a > story with finding alternative-type stuff.

I really like the theory of programming, and am constantly looking for languages that are

a) easier to write

b) amazingly expressive

Its always finding what's out there.

> \- I've been contemplating tackling Python, in spite of the 2.x/3.x thing. > There's the perfect vacuum where versioning shouldn't be a problem, and the > practical real world where knowing Python and the differences between the > two will let me actually do interesting things.

Thankfully, that's mostly gone now. Few enterprises still holding out, but most of the big libraries are 2/3 or 3 only.

And 3 is a lot more thought-out. Most of the warts are gone.

> \- I completely forgot to mention Awk (!) mostly because I have no idea at > what point I began to pick it up, but I did get a basic idea of how it works > a while ago, and I've been factoring it into shell pipelines more frequently > lately. It's great for when I need to do something that sed can't express > well (and I just properly read about how match() a) returns the index and b) > also works apropos to grep recently, which is great)

Awk is different, but great.

I had a boss at a previous job who'd used it for at least a decade for everything, so I had to learn the nitty-gritty.

I ended up building a CGI application that basically ran the entire website in Awk. Big learning experience, but rather cool.

> (As an aside, Lua is ~200K and awk is ~632K. That is just wrong. [Mumbling > about rewrite])

Mmm. That does hurt.

But, at least Lua is an amazing language too, if a bit odd at times.

> I'm reasonably familiar with the "not wanting to count to 5" thing... heh. > Interesting about the Scheme thing in that context. I'll definitely have to > give it a look.

Scheme is stupid simple. Which is awesome.

Everything looks like:

( function arg arg arg )

So, Hello, World!

(display "Hello, World!")

Also, if a function ends with !, then it modifies state, and isn't really functional.

(set! varname value)

And finally, Scheme's macros are hygienic (don't interfere with variables that exist), and fairly simple:

        (define-syntax (syntax-rules (swap! x y)
          (let ([tmp x])
            (set! x y)
            (set! y tmp))))

After working a little while with it, those parenthesis won't be as scary, and you probably won't even notice them.

SICP also has lectures on Youtube [0], if you want a more formal way to get to grips with Scheme.

[0] [https://www.youtube.com/watch?v=2Op3QLzMgSY](https://www.youtube.com/watch?v=2Op3QLzMgSY)

<comment><USER41> >> I've been contemplating tackling Python, in spite of the 2.x/3.x thing. (...)

> _Thankfully, that 's mostly gone now. Few enterprises still holding out, but > most of the big libraries are 2/3 or 3 only._

Oh okay. I think I got got mildly tangled by [https://news.ycombinator.com/item?id=13019819](https://news.ycombinator.com/item?id=13019819) a little while back.

> _Awk is different, but great._

> _I had a boss at a previous job who 'd used it for at least a decade for > everything, so I had to learn the nitty-gritty._

> _I ended up building a CGI application that basically ran the entire website > in Awk. Big learning experience, but rather cool._

Oh _nice_. That's kind of awesome.

(I was referring to gawk when I mentioned the 632K thing.)

> _But, at least Lua is an amazing language too, if a bit odd at times._

I seriously don't understand why they won't allow ++ and -- and similar conveniences we've grown to almost expect from other languages...

 _(info about (Scheme))_

This syntax looks fairly familiar (Lisp syntax is after all incredibly reductionist) and I remember ! from Ruby.

> _After working a little while with it, those parenthesis won 't be as scary, > and you probably won't even notice them._

Haha, I remember someone telling me that about {} in C-like languages (PHP) a decade ago. I still notice them... but I know where to use them and what they're for now.

I don't think my brain will sprout a number-of-closing-parens-needed checker anytime soon; [https://en.wikipedia.org/wiki/Subitizing](https://en.wikipedia.org/wiki/Subitizing) is generally established to be mentally impossible for >4 items, so... (putting (everything) in parens) is fun, but s)t))ac))))ki))n)g) the closing ones onto single lines is... well all my brain's coming up with is a slightly incredulous blank stare.

\--

By the way: I'm not quite sure how relevant this is to wherever you are (which I haven't been able to concretely ascertain), but I'm in Sydney. Curious to learn how far away I am from you, perhaps via email.

(I may have poked through some of your tales... and now I have to deal with a brain that's scrambling around trying to find a signup button so I can trail along with you sometime. =P)

PS. Just hit HN's post ratelimit for the first time, which was why this took a while to appear. Sorry!

<comment><USER29> > which I haven't been able to concretely ascertain

I do have fun befuddling geo stuff online. But these days, somewhere around Melbourne.

> I may have poked through some of your tales...

There's a website, with RSS in my HN account. Have fun!

<comment><USER41> >> which I haven't been able to concretely ascertain

> _I do have fun befuddling geo stuff online. But these days, somewhere around > Melbourne._

Ah, cool.

>> I may have poked through some of your tales...

> _There 's a website, with RSS in my HN account. Have fun!_

Will definitely be reading through all of them ^^

Thanks very much for explaining what you did. I really appreciated that - I've never been able to compare languages by "easiest to understand when not mentally having a good day" before, which was great.

(NB. It's currently tricky for me to meet people IRL, so I'm always on the lookout when I say hi to people in the same country :) No worries!)

</comment></comment></comment></comment></comment></comment></comment><comment><USER42> Know: Scheme, Python, Javascript

Want: Rust

</comment><comment><USER43> know: java, groovy, javascript --- want to learn next: python

<comment><USER44> Python's certainly a more standard language for doing scripty things with than Apache Groovy is.

</comment></comment><comment><USER45> Know: Python (daily) C (enough to avoid the dragons most of the time, not enough to slay them) C++ (only the bad parts) x86 asm (rusty, did real-mode asm for thrills in a bygone era) BASIC (because I'm old)

Want to learn: Racket (for the parentheses) one of the MLs (for the types) Lean (because theorem provers are magic) Rust (at least enough to respond intelligently to "just rewrite it in Rust!")</comment>


Fuchsia, a new operating system - <AUTHOR> https://github.com/fuchsia-mirror <comment><USER2> The repo at [https://fuchsia.googlesource.com](https://fuchsia.googlesource.com) reveals a rather interesting UI story for this new operating system.

It seems like the intention is to use Flutter [1] as the UI layer. Flutter uses the Dart language, so there's a Dart environment included in Fuchsia too [2].

For rendering, Fuchsia includes a project called Escher [3] which is described as a physically based renderer that supports soft shadows, light diffusion and other advanced effects. Looking at the source code, Escher is designed to use either OpenGL or Vulkan as the underlying graphics API. (There's an iOS example project included in Escher's source tree. Would be interesting to build that.)

It's not immediately obvious why a lightweight operating system would need a renderer that can do realtime soft shadows and light effects...! But I think the idea here is to build an UI layer that's designed from scratch for Google's Material design language. Shadows and subtle color reflections are a major part of that "layered paper" aesthetic.

So, the stack seems to be: Dart is the language for GUI apps, Flutter provides the widgets, and Escher renders the layers.

The underlying application framework is called Mojo [4]. It already offers bindings for Go, Java, JavaScript, Python and Rust in addition to Dart, but maybe those languages are meant for services rather than GUI apps. (At least I can't see an easy way to create Flutter widgets from something like Rust without loading the Dart VM.)

[1] [https://flutter.io](https://flutter.io)

[2] [https://fuchsia.googlesource.com/dart_content_handler/](https://fuchsia.googlesource.com/dart_content_handler/)

[3] [https://fuchsia.googlesource.com/escher/](https://fuchsia.googlesource.com/escher/)

[4] [https://fuchsia.googlesource.com/mojo/](https://fuchsia.googlesource.com/mojo/)

<comment><USER3> > Shadows and subtle color reflections are a major part of that "layered > paper" aesthetic.

They're a part of design language, raw elements of design. This can get much bigger than the Material Design of now. It can make sure that the subtle or even zany, domineering design of tomorrow has just the right level of refinement for its intended audience.

IMO as a graphic designer and as someone who has been doing 3D rendering as a hobby for 15 years, it's pretty awesome to think about PBR moving into the area of UI.

<comment><USER4> PBR == Physically-based rendering?

<comment><USER5> Yes

</comment></comment></comment></comment><comment><USER6> I'm calling it now: this is for augmented reality displays and similar. You want an RTOS for loss and predictable latency. And current GUIs aren't really suited to 3D environments you can walk around inside.

This is Google's next Android, with a low latency rendering pipeline for the next generation of mobile devices.

<comment><USER7> Wouldn't that be nice after Google has affirmed again and again that Java would be the only supported way to develop Android apps, even though they keep Dart funded internally...

Hey, I'll bite. Let's see.

<comment><USER8> When did they "affirm" that? They've said a couple times that "Java at this time is the only way to build apps," etc. They never ruled it out for the future, AFAIK. Please feel free to prove me wrong, but I would honestly be surprised if you found anything.

Having been to the last several I/Os where the question is asked at the fireside chats, the answer has always been "right now...". No one is saying dump Java, but if we could get some native hooks through something like Dart, that would be pretty awesome.

<comment><USER9> "Java at this time is the only way to build apps" is the right answer for Android OS, because the Android OS is a combination of an app runtime and a Java middleware layer. Adding another runtime to Android would make it a second class citizen, or it would involve building a parallel middleware. What they really mean is that the result would be messy, and it wouldn't be Android-as-we-know-it.

You can, of course, move the Android middleware layer to other OSs, for Android compatibility. Which is how you can run Android apps alongside Tizen apps: [https://youtu.be/nmiHPcHGgSM](https://youtu.be/nmiHPcHGgSM)

Android was designed for one runtime, Dalvik and later ART. But there is nothing preventing a new OS being designed for multiple runtimes that includes runtime support for Android apps.

I'm generally not sympathetic to Java complainers. If you have Android Studio, or any other decent IDE, verbosity isn't a problem. But an OS built for Dart apps and a Dart UI stack would be the logical next step.

</comment></comment></comment></comment><comment><USER10> Fuchsia is not a combination of pink and purple. It is the color your brain comes up with when it sees contradictory color signals (such as very high and very low wavelengths without the appropriate middle stimulation). It's the only color not in the rainbow. As you can see from this additive color program ([http://trycolors.com/?try=1&ffb5d9=0&c31cff=0](http://trycolors.com/?try=1&ffb5d9=0&c31cff=0)), pink and purple create a lavender color. Whereas fuscia is what happens when you combine colors in an unusual way ([http://www.exploratorium.edu/sites/default/files/ColoredShad...](http://www.exploratorium.edu/sites/default/files/ColoredShadows_DSC_9965_H1v2.jpg)). Normally I wouldn't be this pedantic, but this _is_ hackernews after all.

<comment><USER11> A rainbow starts at red and ends a violet. In your brain, the rainbow wraps around in a circle, connecting red and violet. This is not the reality of the wavelengths, so your brain makes up a color that fits between red and violet.

<comment><USER12> It's also almost an octave of color---I cut my brain some slack

</comment></comment></comment><comment><USER13> Some useful bits from IRC:

[16:21] <ocdtrekkie_web> Why's it public (mirrored to GitHub even) but not announced or even documented what it's for?

[16:22] <@swetland> ocdtrekkie_web: the decision was made to build it open source, so might as well start there from the beginning

[16:22] <lanechr> ocdtrekkie_web: things will eventually be public, documented and announced, just not yet

[16:23] <@swetland> currently booting reasonably well on broadwell and skylake NUCs and the Acer Switch Alpha 12, though driver support is still a work in progress

[16:24] <@travisg> yeah and soon we'll have raspberry pi 3 support which should be interesting to some folk

Sidebar comment: I wonder how much more activity this thread would be getting if the subject line had "by Google" in it. LOL

<comment><USER14> Hmm, Travis Geiselbrecht of NewOS, Danger and BeOS fame and Brian Swetland of BeOS fame as well? Interesting.

<comment><USER15> I did also work on this Android thing that shipped on a few phones over the years, as well as on Danger/HiptopOS.

(Not that I'm not proud of my BeOS work, but that was almost 20 years ago now...)

Travis should get credit for work on iOS and WebOS too, if we're keeping score, I suppose!

<comment><USER14> Hehe, sure, and you could say Android is HiptopOS-the-next-generation. FWIW, I've also omitted Travis's Jawbone work. I mean, it was very public where Travis worked after Be, but I didn't really know what you have been up to, sorry that I didn't know more.

BeOS stands out to me, and I honestly don't care how long ago it was. WebOS was nice, but Android and iOS don't even register on my personal radar of cool tech. I hope you're not offended by that. For instance, while it was possible to do low-latency audio on BeOS in 1998, it's only possible with a lot of trickery on Android. You can do low-latency audio on Linux and Windows too, but again it needs special tooling and config, though not as hard as on Android's Java-based stack.

Think of it like this: people will remember artists for certain work during specific periods because it touched them in a special way. BeOS was that during my formative years, and you could say it was the Amiga of the 90s. Sadly, there's nothing that replaces the innovative features of it, even though we've improved other parts of the stack.

It's just such a shame that BeOS is locked in some IP locker in Japan (Access Ltd) now.

<comment><USER15> Not at all offended. BeOS did a lot of neat stuff and was ahead of its time in many ways. It had its warts too and sadly did not survive, though the Haiku folks have been working hard to re-create it over the years. Much of that has surfaced in other platforms since then (node monitoring and a true device filesystem were big features of BeOS I liked a lot that are available in Linux today, for example).

BeOS got me out on the west coast and doing OS development for a living. I learned a ton of stuff while working at Be and got to work with a bunch of amazing people (some of whom I still work with today).

<comment><USER16> Pink = mobile, Purple = PC

Warm?

</comment></comment></comment></comment></comment></comment><comment><USER17> I remember a post earlier today about how open source projects needed better marketing. prime example. I had to dive in to know what was the project all about...

<comment><USER18> The problem isn't marketing. It's culture. While there are many benefits to free and open source software it encourages a take-it-or-leave-it attitude where software is released that's user unfriendly, full of bugs, and has little to no documentation. If someone dare ask about a problem they are having, often the closest thing to help they receive is "Why didn't you just use [esoteric Linux command]? Are you an idiot?"

<comment><USER19> Maybe the cultural problem is actually that people like you expect open source projects to be like companies except that you don't have to give them money? Most open source code is written by someone because they want it and then they release it so others can see the code. Of course there's a take-it-or-leave-it attitude... why would they care if you take it? They don't get anything if you take it, you taking it was never their goal. You're just some entitled guy on the internet who decided he wanted to use the software, had a problem and now thinks the developer should do some free work for him.

<comment><USER18> That's a huge problem. Some times we end up shitty solutions to problems because the people who wrote the software do not care to fix its bugs and there's a lack of investment in creating better solutions because the free, open source solutions exist. Just look at the state of version control software.

Other times we end up with a good, expensive commercial product and a free, crappy open source product with a huge gulf in quality and price between. Examples: Photoshop and GIMP, MS Office and OpenOffice.

<comment><USER19> You're always going to end up with shitty solutions to some problems. Making open-source projects good requires several people to devote their lives to it. Very few projects achieve critical mass and all the other ones languish in obscurity. There's always going to be way more failed projects than successful ones. If you consider their existence a huge problem in open-source then it seems the only fix would be to stop trying. I don't think crappy solutions dissuade people from making better ones, if anything all they do is cause people to think: "These guys obviously got nowhere with this project and I don't see what I'm going to do better." But given the amount of duplication in open-source I don't think people really even think that either. It's just that they attempt to make a better version and fail leaving the world with another shitty project. Or, in rare cases they actually succeed and we do wind up with something great. But we wouldn't ever get there if we didn't make 10 of those "shitty solutions" along the way.

</comment></comment></comment></comment></comment><comment><USER2> _> Pink + Purple == Fuchsia (a new Operating System)_

Pink [1] and Purple [2] were both Apple codenames for operating systems. Probably not a coincidence, but I don't see an obvious connection...

[1] [https://en.wikipedia.org/wiki/Taligent#Pink_and_Blue](https://en.wikipedia.org/wiki/Taligent#Pink_and_Blue)

[2] [http://www.phonearena.com/news/Did-you-know-that-the- codenam...](http://www.phonearena.com/news/Did-you-know-that-the-codename-for- the-original-iPhone-was-Purple_id57876)

<comment><USER20> Purple - A system with high performance graphics, low-latency input, and a beautiful UI.

Pink - An incredibly modular system for developers and users.

If you hang out on #fuchsia long enough you will realize that we are all a bunch of OS nerds that have worked on many, many systems in the past (BeOS, ChromeOS, Android, webOS, QNX, DangerOS, iOS, MacOS, ...).

<comment><USER2> That explains it. Thanks, congratulations on the release, and welcome to HN! :)

</comment></comment></comment><comment><AUTHOR> Hosted on [https://fuchsia.googlesource.com/](https://fuchsia.googlesource.com/) is what looks like an early in development operating system.

Mirrored on Github where it's described as Pink + Purple == Fuchsia (a new Operating System)

The kernel component 'Magenta' reveals it "targets modern phones and modern personal computers with fast processors, non-trivial amounts of ram with arbitrary peripherals doing open ended computation." [1]

[1] [https://github.com/fuchsia- mirror/magenta/blob/master/docs/m...](https://github.com/fuchsia- mirror/magenta/blob/master/docs/mg_and_lk.md)

</comment><comment><USER21> > It is good alternative to commercial offerings like FreeRTOS [1]

FreeRTOS is GPL with an exception for static linking making it effectively free if you make no modifications. There is, however, an onerous clause prohibiting the publication of comparative benchmarks. [2]

[1] [https://fuchsia.googlesource.com/magenta/+/HEAD/docs/mg_and_...](https://fuchsia.googlesource.com/magenta/+/HEAD/docs/mg_and_lk.md)

[2] [http://www.freertos.org/license.txt](http://www.freertos.org/license.txt)

<comment><USER22> There doesn't seem to be much point to that benchmark clause.

If it's GPL the source is effectively mine to do what I like.

I could make a trivial change to the source (or not perhaps), and call the result a FreeRTOS derivative and publish my derivative's benchmarks.

<comment><USER23> No, you couldn't because it's not GPL. It's a license that is nearly identical to the GPL, but slightly different.

I think that added restriction actually makes it GPL incompatible, and disqualifies it from being an actual open source license.

<comment><USER24> > No, you couldn't because it's not GPL. It's a license that is nearly > identical to the GPL, but slightly different.

Then they actually are not allowed to call it the "GNU General Public License" (or in fact, they are not allowed to modify the license terms). It's the first condition in the license text of the GPL, I'm surprised their lawyers didn't notice that little chestnut.

<comment><USER23> You clearly have a better understanding of this issue than I do.

My reading was that they were calling theirs the "FreeRTOS open source license", and it just referenced the GPL.

<comment><USER24> Hmmm. I'm not sure what the FSF's opinion on it would be. Since they don't call it the GPL (I must've skipped over that part) then they might be in the clear -- though they're still modifying the license text by prepending restrictions to it that make the rest of the license text contradictory.

<comment><USER25> I'm very glad to have found this discussion, as I have concerns (as expressed above) with FreeRTOS for some time. I would be really interested what FSF would say too. cyphar, emmelaich, slavik81, et al. - would anyone of you be interested enough in this case to actually try to follow with FSF/related parties? Please reply here if you're interested, or feel free to get in touch at pfalcon-at-users.sourceforge.net.

<comment><USER24> I emailed RMS. His response was that he will investigate it. If it becomes a thing there'll probably be a post on HN describing what went down.

<comment><USER25> Thanks for response cyphar, and thanks for taking an action. And glad to hear RMS reads email and even replies, I'd think one would need to chase FSF's legal advisers to bring up this matter.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> The only thing that really bothers me with this new OS is that the kernel is no longer GPL. With a GPL kernel like Linux we had a chance of getting the kernel source code ( some companies don't care if it's GPL anyway ) for our devices but if it's Apache or BSD good luck with that.

<comment><USER13> I suspect that's intentional. Google seems to prefer Apache-style licensing, as that's what they used with Android. By not relying on the Linux kernel, they get to avoid the whole copyleft kerfuffle.

</comment></comment><comment><USER27> Written in C. What a shame.

edit: Thank you to all of the repliers, I had no idea that most OSes were written in C. Er, actually, I'm more than well aware of that fact and I'm familiar with the number of CVEs that have occurred over the years because of the lack of memory safety involved in that C code.

Sorry, I simply don't get the appeal of writing more operating systems and network-exposed code that isn't written in a safer language. Say like Rust; see Redox.

<comment><USER28> I love Rust immensely, and it is perhaps my favorite programming language as of late.

However.

This is a microkernel. There is very, very little code inside a microkernel which, if written in Rust, would not end up inside an unsafe block. You are building the safe abstractions here; that code is inherently unsafe.

You could use Rust as a C replacement, but it is a worse C than C, and unsafe rust contains more perils (i.e. UB) than C.

<comment><USER29> Redox is microkernelish, and used to have a lot of unsafe, but has cut it down significantly. You'd be surprised :)

That said, this is pretty much an open research question at this point, so you're right to be skeptical.

(I would also argue that unsafe Rust has more _unspecified_ behavior than C, but not more undefined behavior, but until we get those semantics truly nailed down, can't say for sure. See above "open research question" comment)

<comment><USER28> I took a quick peek at the redox source code and found kernel mode audio and network drivers. This is not a microkernel.

As for UB: Maybe it has less, but that which exists (e.g. noalias on mut refs) is very dangerous.

<comment><USER29> Yes, they're in the middle of some refactoring stuff; they had to put some things back in the kernel. Should be back out when they're done.

</comment></comment></comment></comment></comment><comment><USER30> Its a new RTOS...

Basically that means more than just cell phones as you have embedded systems in vehicles that use RTOS, watches, medical devices, etc.

Its the operating system that runs the baseband cpu/chip other wise known as the BaseBandProcessor.

<comment><AUTHOR> Is it? I'm not so sure. Certainly the presence of LittleKernel, a lightweight real-time kernel suggests it's an RTOS but that kernel is wrapped by something called 'Magenta' which says "Magenta targets modern phones and modern personal computers with fast processors, non-trivial amounts of ram with arbitrary peripherals doing open ended computation." [1]

[1] [https://github.com/fuchsia- mirror/magenta/blob/master/docs/m...](https://github.com/fuchsia- mirror/magenta/blob/master/docs/mg_and_lk.md)

</comment></comment><comment><USER31> Does anyone have an idea of what kind of technical problems this is trying to solve?

It sounds like it's trying to be a RTOS for phones and modern hardware. But I know there has to be more to it than that.

</comment><comment><USER32> There's a distinct lack of information in their repos README's.

</comment><comment><USER33> Actually this compiles pretty easy. It however only runs on the provided qemu. And actually without adding some user space tools you only can use kilo which is akward to handle under a MacOS terminal :( But it's really really easy to setup and even integrate userspace programs. kind of extremly simple to do useful stuff on it.

<comment><USER20> It runs on some Broadwell and Skylake hardware. Docs are coming for [http://www.acer.com/ac/en/US/content/series/switchalpha12](http://www.acer.com/ac/en/US/content/series/switchalpha12).

<comment><USER33> actually I don't have had a Broadwell / Skylake which I can play with. I have a MacBook Pro 2013 Late (Haswell). But I wouldn't try out something on my production laptop anyway ;)

I also have a two Xeon Sandy Bridges lying around, but I didn't tried em, but I guess even with some changes it would run on it. I just didn't had time, after it compiled it already was 2 o Clock at night.

<comment><USER15> It will likely boot on earlier Intel platforms, though some tinkering may be necessary. The focus has been on Qemu and on some modern UEFI based systems (and the latter booting with gigaboot20x6, also part of the Fuchsia repos). Debugging early boot / bringup issues is massively easier if the machine has a standard serial port.

</comment></comment></comment></comment><comment><USER34> Put Fuchsia and Android green on a color wheel. I dare you.

<comment><USER35> Heh. As a young kid, "pink and green" was how I'd describe how I felt to my parents when I was nauseous.

(they still 'bring that up' 40+ yrs later)

</comment></comment><comment><USER33> Apache2 and MIT. Sounds interesting

</comment><comment><USER36> Would someone most kindly provide a VM?

<comment><USER37> It's fairly easy to build one on Mac and Linux.

<comment><USER36> Not sure why I'm being down voted here.

Its nontrivial to build it. I see the developers saying it's got a beautiful UX, and I'd love to play around with it, but Not everyone can devote as much time.

</comment></comment></comment><comment><USER38> >> It seems like the intention is to use Flutter [1] as the UI layer.

Flutter already ready for use? If Flutter is not ready for use then how it can be used?

<comment><USER20> There are people using it already. Inside and outside of Google. [http://flutter.io/](http://flutter.io/)

<comment><USER39> Probably you mixed Flutter with Dart.

<comment><USER20> Nope. I also don't think that our statements are at odds with each other. Flutter isn't done yet but that isn't preventing a lot of folks from using it for real work.

</comment></comment></comment></comment><comment><USER40> I'm (not) eagerly awaiting the day when some IoT thing "Fucks ya".

</comment><comment><USER41> No screenshots?

<comment><USER15> Not terribly exciting, but here's a shot of virtual console 0 with the tail end of the boot log on an Acer Switch Alpha 12: [http://i.imgur.com/LqDRoyG.jpg](http://i.imgur.com/LqDRoyG.jpg)

</comment></comment><comment><USER42> I'm working on a Twitter client that only runs on this OS. Wait a sec... Oh, I see. Time machine was NOT set to 2010.

Working on a Pokemon GO client that only runs on this OS.

<comment><USER43> Twit Plays Pokemon (GO)? :)

(no slur intended)

</comment></comment><comment><USER44> Fuchsia = deep mind + Ai

(Getting to there Ultimate goal) we can also expect updated Google glass too

</comment><comment><USER45> Well, if it takes off, it'll have the side-effect of getting more people to be able to spell 'Fuchsia' correctly...

<comment><USER46> Easy to remember if you know that fuchsia is named after a German botanist by the name of Leonhart Fuchs.

(Lionheart Fox, how badass is that name?)

<comment><USER45> It's a hell of a lot classier than the mnemonic I currently use: "trying to spell fuchsia really 'fucks ya'"...

Thanks!

</comment></comment></comment><comment><USER47> I consider myself fairly tech savvy, and have done a little programming here and there.

But from the linked page I couldn't figure out where any of the documentation of this "thing" is, nor how to install it, nor what platforms it's for.

Was it just me?

<comment><USER48> Instructions for getting and building the code are here:

[https://fuchsia.googlesource.com/manifest/+/master/README.md](https://fuchsia.googlesource.com/manifest/+/master/README.md)

It runs on arm, arm64, and x64.

<comment><USER49> I tried the Ubuntu instructions on a Debian box but it errors out with:

fuchsia/.jiri_root/tmp/src/v.io/x/lib/cmdline/cmdline.go:236: undefined: os.Unsetenv

I suspect it is because the version of go in the repo is too old, I tried manually installing the newer version but still no joy

</comment></comment></comment><comment><USER50> Well, it may be difficult to fathom what this project is all about but, at least, I've learned one thing. I've been spelling FUCHSIA wrong all these years. I always thought it was FUSCHIA.

[As I have several growing in the garden, this is an important development]

</comment><comment><USER51> -

<comment><USER52> That's basically the non-endorsement clause from the BSD license. Nothing unusual about that.

<comment><USER53> The license is not unusual. What _is_ unusual is that Google appears to be writing a new mobile operating system. Is this someone's 20% time project? What is the use case for Google?

<comment><USER54> Google needs an OS that works better for realtime applications like VR/AR and robotics. Note how they spelled out how it is designed for a non-trivial amount of RAM. This is in contrast to the tiny hardware that a realtime OS would typically run on.

Personally, I'm hoping that this is a cleaner foundation for Android that we can all use to build more advanced AR and robotics applications.

<comment><USER55> I'd like to see another big player in the os market. Something really new, not based on UNIX (don't get me wrong people...).

Just for the sake of diversity. And maybe the illusory desire of a clean slate.

</comment></comment></comment></comment></comment><comment><USER56> I have not looked in to this and don't have expertise, but my first split second thought was "how are they going to keep up with security exploits?" Sad when my first thought it that someone's going try to steal from people using it.</comment>


Ask HN: Best cheap hosting for a low traffic local business? - <AUTHOR>

I've been building some websites lately for small local businesses that want an internet presence. For simplicity, I have the clients register the domain and pay for the hosting themselves. Where should I direct them to buy the hosting?<p>Thanks all.
Nick <comment><USER2> Don't let clients anywhere near their own domains and hosting.

Before you know it, you're drenched in trouble, trying to get some hack-cheap- registrar to unlock domains or whatever, while the client is desperate because his e-mail doesn't work, or figuring out why the website broke, only to find out the boss's nephew tried to install a BT tracker on the site, and by the way, no, he doesn't have a backup, didn't you take care of that?

Get a small VPS at SliceHost and host the sites yourself. Forward their e-mail to GMail accounts, or setup apps for your domain. Charge $20 a month, paid a year in advance. One billing round a year, if it takes you more than half a morning, you're doing it wrong.

The only point of contact the client has is you, the only bill he gets is from you, and you're pretty soon pocketing a few $100 a month simply by not screwing up the server.

<comment><USER3> I've been down this road before and I agree with everything said here. Just to clarify something, I think mseebach meant that you should charge $20/month for _yourself_ \- and have the company pay for the Slicehost account. The smallest slice on SH is $20/mo so if you don't do that you won't be getting any compensation.

<comment><USER2> No, I meant charge $20 for everything from the client, and host them all on the same slice. A 256 vps easily hosts 10s of low traffic sites. Local business usually means mostly static, and on the scale of dozens of visits a week.

<comment><USER3> Ah, ok - right on.

</comment></comment></comment></comment><comment><USER4> Make sure the client knows what they're doing with regards to a web presence: E.g. they can manage e-mail / hosting set ups. If they don't, they're likely to get burned, even with your advice.

I would advise getting a small VPS from Slicehost. Set it up so that it automatically backs up (they charge like $5/month to do machine replication, but having an always-ready-to-go daily backup of your client's machine should be a closer).

If you're going to go for old-school hobbyist shared-hosting, I'd suggest Myhosting.com or <http://www.nobullshithosting.com/>

I'd also advise you to stay away from Dreamhost.com. Their servers have terrible bandwidth, lose emails, and their TOS is ridiculously restrictive to the point where they can justify closing your account for any reason -- the primary one being that you're actually costing them more they're paying (e.g. using more than half the "promised" 500GBs of space their $9.99/month account gives you).

</comment><comment><USER5> I tend to point any clients that want low cost hosting towards GeekStorage.com - they have a $35/yr plan. Another is A Small Orange, but I have had much more problems with ASO than I have with GeekStorage.

If you're looking for something 'beefier' - I'm currently with WebFaction.com - awesome guys, great if you need some cheap hosting for your Django/Rails apps (and don't want to pay for a VPS)

</comment><comment><USER6> All the cheap hosting places suck. Dealing with the customer and the non- responsive $5 / mo hosting place takes more time and effort than just hosting it yourself.

If they are truly low traffic, just host them yourself on a business class connection. You can pack a lot of low traffic websites on one machine. Graphics will load slowly unless you pay for more bandwidth, and you have to do your own backups, of course. Have your customers buy the domain themselves, but then have them log into godaddy or whoever they used and do the setup yourself.

Should the business relationship end, they control the domain and can just point it somewhere else, and you can mail their backup to them on a CD, and thus not be accused of holding anything hostage.

</comment><comment><USER7> Why not Weebly?

<comment><AUTHOR> Forgot about weebly, I've been on the site before but didn't think about it because I associated it amateur sites. Can you paste your own html?

<comment><USER8> We currently have the ability to upload your own theme and customize existing themes, in development. Shoot me an email, chris (at) weebly.com, and I'll give you access. Otherwise, this feature should be live early next week =)

</comment></comment></comment><comment><USER9> Whoever you choose, make sure you always have an up-to-date local backup of everything on the site. Cheap webhosting is prone to loosing customer files when something goes wrong.

</comment><comment><USER10> I use Apisnetworks.com. You can add as many domains as you want to one account. Servers are fast and I haven't had any problems with them.

</comment><comment><USER11> A Small Orange are great :)</comment>


Announcing Heroku PostgreSQL Database Add-On - <AUTHOR> http://blog.heroku.com/archives/2010/11/10/heroku_postgresql/ <comment><USER2> Congrats to the Heroku team, I know they labored over this with an incredible passion. They even put thought into the number of dashes/colons in the command line tools.

It was very interesting listening to the team talk about their development and release process, which they "formalized" and put in place for people developing addons for heroku.

I definitely recommend anyone curious about how heroku pulls off their image (and interested to do the same for their startup) look into it.</comment>


Two New iPhones Coming; One May Be Aimed at Verizon  - <AUTHOR> http://online.wsj.com/article/SB10001424052702304370304575152242601774892.html?mod=WSJ_hpp_MIDDLETopStories

<comment><USER2> I'm sorry but this has absolutely no content. The title of the article tells you everything in it's content and all of that information is stuff we already knew.

We know Apple is going to release a new iPhone because they do so every summer. We know there MAY be a CDMA version because that's been a possibility for years.

But there are no specs here, no product details, no specific launch dates and no confirmations. They give the name of supposed Taiwanese manufacturers but that's about it (and really, who cares which Taiwanese manufacturer is doing the work anyhow?)

</comment><comment> a-priori So basically the only news here is that the Wall Street Journal is now printing rumours.

<comment><USER3> WSJ has been pretty on-target with the validity of their sources when it comes to the iPhone, if I recall correctly. While many other outlets can speculate about a new iPhone come summertime, if it's been printed in the Wall Street Journal, it's about as good as hearing it from Apple. Likewise, with the CDMA- iphone bit - if it doesn't come out, it'll be because it was killed off internally between then and now, not because the WSJ published incorrect information.

In short: No, these aren't rumors.

</comment></comment><comment><USER4> Article summary:

Apple has released a new iPhone every June or July since 2007. "People" have been "briefed with the matter" and they say it will be available on Verizon's network. Apple has had an exclusive relationship with AT&T giving them a competitive edge. This article from the WSJ reaffirms previous reports that the new iPhone would be available this summer, but doesn't provide any new information.

[http://hnsummary.com/2010/03/29/new-iphones-this-summer- mayb...](http://hnsummary.com/2010/03/29/new-iphones-this-summer-maybe-on- verizon-too/)

</comment><comment><USER5> AT&T gave up its exclusivity contract with Apple for the iPhone, last year. One of the common complaints about the iPhone is that it's tied to AT&T, so it makes sense for Apple to produce a Verizon iPhone.

AT&T pays Apple a lot of money for the exclusivity deal, and that deal is part of the reason that Apple has more cash than they know what to do with.

AT&T dropped the exclusivity for the iPhone because they picked up a new deal with Apple for the iPad, which they are almost certainly also paying a lot of money for.</comment>


Tech Company With $39 In Assets Now Worth More Than $6B - <AUTHOR> http://techcrunch.com/2014/07/10/tech-company-with-39-in-assets-now-worth-more-than-6b

<comment><USER2> Nobody should ever care about volatile pricing in a company with such incredibly small volume. It's very likely the result of algorithmic trading and tells us nothing about whether there's a bubble or not. Go ahead and try to short it if you think the market is being inefficient (this is not investment advice!).

</comment><comment><USER3> Why isn't a very big pile of very smart money short CYNK, reducing its value to zero? Do these things take more time than I'd expect?

<comment><USER4> Looks like this is not listed on any major exchange, it's an OTC(Over the Counter) stock, which means trades are processed manually and many brokerages charge hefty fees and trades are settled many days later(if they're are settled at all). Shorting needs stock to borrow and sell, if shares are not available to borrow for a decent fee, you can't "naked" short sell the stock which will get you into trouble with the SEC.

I am guessing the owners are trading with themselves to pump up the stock to do some fishy stuff, like borrowing against their stock assets and then disappearing or something.</comment></comment>


Some Advice for President-Elect Trump on Immigration Policy - <AUTHOR> https://gborjas.org/2016/11/13/some-advice-to-president-elect-trump/#more-5099 <comment><AUTHOR> Context - Possibly the most widely cited and influential economist on topic of assessing the labor market impact of immigrants.</comment>


How many slack groups are you a member of that are not work-related? - <AUTHOR> https://twitter.com/dpaola2/status/1251304125754556417 <comment><USER2> Is there a list of good ones?

</comment><comment><USER3> All the active ones</comment>