I don't want to be a Real Programmer - <AUTHOR> http://verybadalloc.com/blog/2014/03/18/i-dont-want-to-be-a-real-programmer/ <comment><USER2> The viewpoint in this article is disillusioned at best. A real programmer is not someone who loves programming and attends hackathons to build iOS apps that map the sewer rats in NYC for fun. That stuff might be fun to the hipster who just learned iOS, sure. But I doubt someone who's been programming for 15+ years wants to build an app for bullshit. Every line counts more, because the capability is higher. Wasting time is dreadful, when one has been programming for so long.

I've been programming for nearly 16 years; code is not as fun as it used to be, and most programming jobs are inconsequential bullshit of buzzwizardry and magic frameworks, agile standup chicannery and the dread of dealing with the zesty pimple pricked CS graduate who just loves AngularJS and thinks he can code his way out of a paper bag when he's never done reverse engineering. Never made a web scraper. Never messed with shell code or assembly. Never wrote a game hack using hooks/detours. Never written a line of C. Etc etc. Programming is full of happy go lucky adult kids. Real programming is for getting shit done, that's all it ever was and will ever be to a seriously learned seasoned programmer. Whether it's building something, destroying something, modifying something, binary or source, the seasoned programmer has the skills; but don't expect him not to sigh when you bring up your giddiness surrounding menial programming labor for worthless causes; or just plain repeats of the last decade.

<comment><USER3> This might be the single greatest comment in the history of Hacker News.

</comment></comment><comment><USER4> In my experience there are two kinds of programmers. Those who program (largely based upon practices they are told are good) and those who also really think about their own programming and try to develop their own paradigms in response to their own problems.

The latter tend to be, in the long run, far more productive than the former. However, this takes both motivation and it takes extra time between iterations to think about what problems you are having with development and how to solve them. Continuous iterations get in the way of it, but it isn't clear that the heavy engineering waterfall model gets people to do it either.

Sometimes you need some distance so you can come back and ask "is this good code? What can I do better?" Without distance, it is like editing your own essays.

After 10 years of coding professionally and over 20 years of programming experience, I find that that capacity, which is entirely independent of how many hours someone actually spends coding, is the best indication of how productive someone will be.

If I am ever hiring programmers, my questions won't be puzzle questions. They will be questions like "how do you decide what needs testing?" or "when and why do you comment your code?" Those questions are likely to tell me more about how much someone has thought about their own code experiences than whether they can solve a certain puzzle or not.

<comment><USER5> Learning 30+ years of CS knowledge from scratch doesn't sound very efficient. The truth is, anyone who constantly delivers must have the capacity to understand _why_ but they'll still be largely benefiting from the trails marked by others.

<comment><USER4> Certainly we all learn from others. However there is a difference between those who sit back at the end of the day and say "what worked well?" and those who say "We should do things this way because it's a best practice."

</comment></comment></comment><comment><USER6> It can be quite humbling to realise how large a particular field is, but it in no way makes one an 'imposter'.

Pro tip: Those 'Real Programmers' who's JS experiments make your CSS look quaint _aren 't the world's best programmers_. They're 'yet another frontend guy' to, for example, those who write Java servers. Guess what, those writing the Java servers are 'just end-users' as far as the JVM hackers are concerned. Likewise, the JVM hackers are 'just end-users' for the OS developers. The OS developers are 'just end-users' for the hardware guys. The hardware guys are 'just making an interchangable commodity' as far as the sysadmins are concerned, as they virtualise everything away. And, of course, the frontend devs laugh at the sysadmins for not being programmers.

You might think of some Node.js guy as a demi-god, but I've never heard of him since I don't particularly care about Node.js. Likewise there were a lot of tributes being paid recently to a Ruby developer who passed away. It's touching to see how many people he'd positively impacted, but again, I've never heard of him because I don't particularly care about Ruby.

Am I an 'imposter' since I don't care about these things? Not at all. I have a high-level knowledge of what they are, and I even played around with Node.js a bit (unfortunately it was just after 0.4 had broken compatibility with most libraries in NPM!), but I can't go too far down those rabbit holes because they're not the stacks I use. Likewise, I don't expect those who are deeply into Node.js and Ruby to care about, for example, the recent death of John Reynolds, or Robert Harper's kidney transplant.

Just stick with the rabbit hole you've chosen, as long as you're enjoying it; let the work of others guide you down, and if you reach the bottom you'll suddenly find yourself to be a 'Real Programmer' who can help with the digging. Alterntively, if you disagree with or don't understand some of the decisions/conventions on the way then you should absolutely start digging in your own direction, even if it doesn't go anywhere.

PS: Knowing APIs inside-out does not make one a 'Real Programmer'. My day job is PHP, but I still tend to Google the most basic built-in functions (which, admittedly, is an artefact of PHP's poor API). You should instead strive to understand your _problem_ inside-out, from multiple perspectives, then you can pick and choose any API/stack you like and let the docs guide you through the tedious act of plumbing it all together. Or write your own :)

<comment><USER7> A sufficiently high-level static-typed language is similar to Math. Are mathematicians 'just end-users' to someone? In your world of abstractions you are the god.

<comment><USER8> Never more relevant... [http://xkcd.com/435/](http://xkcd.com/435/)

<comment><USER9> My friends made an improvisation to the comic:

[http://i.imgur.com/etuhc8z.jpg](http://i.imgur.com/etuhc8z.jpg)

</comment></comment></comment></comment><comment><USER10> Nonsense like this

> For sure, they are plenty of Real Programmers out there, who easily agree to > the 80+ hours/week workload.

has to stop.

I think the opposite is true: if someone is working 80 hour weeks they either overcompensate for their lack of skill or are being willfully exploited.

<comment><USER11> Agreed. If there's one danger to our industry, its notions like this.

(Most) humans aren't supposed to work 80+ a week. I say most because there are always those superhumans you come across that just seem to be able to do it; but most can't.

I always try to look at statements like this through the eyes of a would-be programmer. If I was about to start down the programming route and was told I could never achieve my aims without accepting an 80 hour work week then I'd run a mile.

<comment><USER10> > (Most) humans aren't supposed to work 80+ a week. I say most because there > are always those superhumans you come across that just seem to be able to do > it

I don't think they're superhuman, they are people who have no lives and will burn out in a short period of time. I can only feel sorry for them.

<comment><USER12> This thread seems to assume that there's a clear distinction between 'work' and 'not-work'. That isn't always the case as it's entirely possible that someone can love what they do to the extent that the lines completely blur (yes, that means those people could be exploited for that passion).

An example of this is academia where every prof I've met 'works' insane hours but are completely (and happily) absorbed in their fields. The whole thing feels like a hobby to them. The only thing they'd want to get rid of is the paperwork (research assessments, etc) so they could spend that time with students and research.

<comment><USER13> The "work is their passion so it's not work" contrarian-ism is certainly not uncommon. But the argument against 80 hours is generally stress-induced health and productivity related. Given, if a person "loves what they do" then the stress part is probably lower, reducing the negative effects of the first.

But the other argument is that, after so many hours, returns on effort are reduced, and I don't see a good argument for this being not true whether a person is in love with their vocation.

I would posit that a likely scenario, is that the 80-hour-a-weeker's passion for their work their concern for efficiency. They don't get as much done per hour, but they don't care as much because they love the parts even where they are just plodding along.

<comment><USER14> You have to be doing something for all the hours in the week. We don't get stresses out playing tennis or having sex (well...) or going to the movies.

So its got more to do with extended concentration on one task, vs the actual hours? If the work has several tasks (e.g. rehearsing, the gig, songwriting, negotiating) then maybe its not the same as sitting in front of a screen the same time.

<comment><USER13> I'd ask the professional tennis player or porn star if their jobs are/would be stressful at 80 hrs per week... but in the spirit of it I can definitely agree.

The multitude of tasks bit is true. Where my BS meter starts to twitch is when it's a developer telling me that they've been hacking 12 hours a day for x years and feel fit as a fiddle. In those instances, I've gotta imagine the quality output vs. time quotient is lower per capita than the average 30-50 hour per week dev.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> The real issue is a guy who has been programming for 3 years is trying to compare himself to people who have programmed for 30. Practice makes perfect - if you've only been coding for 3 years, I can almost guarantee that you don't understand a big chunk of the code you use. Once you've been coding for awhile though, you really can get to a stage where you understand everything from the bottom up. At that point, creating new frameworks, languages and algorithms becomes an obvious task.

I've noticed the best programmers are the ones who have actually coded their own compiler, frameworks, etc even if they were only toy implementations. The understanding that comes from building a 3D engine or high performance message bus is usually impossible to obtain in any other way.

<comment><AUTHOR> I have a feeling that feeling satisfied with one's knowledge will also come with experience. I couldn't agree more on your second sentence though: not only will you learn a lot more, you will be able to hone your problem solving skills, which is what I wish to achieve now.

</comment></comment><comment> vezzy-fnord A prolific Node.js developer is what constitutes a "real programmer" these days? Honestly?

No offense to Holowaychuk, he certainly does appear to have contributed enormously to the server-side JS ecosystem, but I do not care for JS, so I have not heard of him. This is all assuming he's not a collective pseudonym.

I agree with the user goldenkey in this thread, and will quote him:

 _Most programming jobs are inconsequential bullshit of buzzwizardry and magic frameworks, agile standup chicannery and the dread of dealing with the zesty pimple pricked CS graduate who just loves AngularJS and thinks he can code his way out of a paper bag when he 's never done reverse engineering. Never made a web scraper. Never messed with shell code or assembly. Never wrote a game hack using hooks/detours. Never written a line of C. Etc etc. Programming is full of happy go lucky adult kids. Real programming is for getting shit done, that's all it ever was and will ever be to a seriously learned seasoned programmer. Whether it's building something, destroying something, modifying something, binary or source, the seasoned programmer has the skills; but don't expect him not to sigh when you bring up your giddiness surrounding menial programming labor for worthless causes; or just plain repeats of the last decade._

I find it disturbing that "real programmer" is being reduced to a trendy magpie web developer code monkey who goes to hackathons. Lord.

Ultimately though, you just have very warped definitions of what this whole thing constitutes. My advice is to relax, keep doing what you love doing and let go of these false ideals.

</comment><comment><USER16> Its interesting to hear from someone who's more of a hobbyist programmer. You don't meet so many, mainly I think because once you become half-decent at programming you have access to a range of well paid jobs. Of course as you say, those jobs come with certain conditions that aren't for everybody.

I've often thought of quitting _professional_ programming and it to become a hobby instead. I think sometimes great things come from playing around and working on projects you want to and enjoy working on as opposed to the 'drudgery' of implementing someone else's vision. In my experience although the job has its perks, very few 'real' programmers actually care much about the products they work on. Sometimes they do when they start but it doesn't take long for the pressure of getting something done vs. getting something done you have real pride in generally breaks you eventually.

At the end of the day I think if you can write some code, you are a programmer, whether you are a hobbyist or not. Some of the best developers hack on open source projects and live off very little and they're pretty happy with their lifestyle. A lot of paid-up programmers are in fact more like 'impostors' than these guys.

<comment><USER17> I'm a hobbyist programmer, but I'm able to use my programming in my work - even though it's not strictly related.

Programming skills can be a nice extra to a creative or administrative skillset, especially in smaller & boutique companies.

<comment><USER18> The job title gets thrown around as "data scientist" sort of evolved out of a mix of "Professional Programmer/Amateur Statistician" and "Professional Statistician/Amateur Programmer" types.

Anyway, for me, programming has always been something I do, not something I am... I think this might lead to the exclusionary nature of our field a bit - I know I've looked around and seeing people who identify as programmers, not really doing the same, and wondering if I belong...

<comment><USER17> > programming has always been something I do, not something I am

I think this is important, it's the kind of thing that I read and think "Yes, how obvious, of course!" but in practice I wouldn't think of it myself. A very healthy way of seeing things.

</comment></comment></comment></comment><comment><USER19> It seems the OP is trying to compare himself with the internet. We may hear about great achievements every day, but often those achievements while only taking minutes to read about took years or even decades of work and labor and were hardly achieved by one person alone.

A Real Programmer is simply one who keeps on learning and doing. It is important to look back occasionally on what you have achieved, instead of what you have not.

<comment><USER20> Agreed. Reading it, looks like OP is reading too much into things yet fails to understand that each person he listed, those folks have spent years understanding and developing.

I fell into the same trap in the past. I started learning one thing, others were quick to comment on that I should learn this , this, this, and that as well! That caused me to spread out way too thin.

Programming can be overwhelming. Once you start digging into it, you'll then realize how much you don't really know and how much of it is out there.

<comment><USER21> One of the most revealing lessons to me, as a young programmer, was when my uncle (worked on the Java project when it was Oak, published his own network architecture, distributed systems professor, etc. etc.) asked me which content management system he should use for an important project, and I was able to help him out with that. You'll always know something that the "Greats" don't.

</comment></comment></comment><comment><USER22> > If you are anything like me, you want to become as good as TJ.

Who?

If you pick up a guitar because you want to be better than Jimmy Page some day you're going to burn out. You might not even realize that you don't even like playing guitar until years later when it becomes apparent that you're not achieving the success and fame you thought you would.

We're all subconsciously reinforced to believe that with hard work, perseverance, and that hidden spark of special talent in each of us that we can achieve our dreams. This fantasy is the perfect entry way into our brains to implant desires and ambitions. You want to believe you're the hero of your own story because the reality is certainly not preferable.

Don't get caught up in it. Create your own narrative. If programming is only interesting because you want the attention showered on other people then programming is not going to be interesting to you in five, ten years when your fantasy fails to materialize.

Programming will always have it's greats just as any field, industry, or art form. Learn from them. Don't try to be them. Many of them are about as talented, smart, and clueless as you anyway.

Donald Knuth didn't spend half a life-time and counting writing TAoCP just to speak at conferences. That kind of work takes dedication that only an intrinsic love of the craft can produce.

</comment><comment><USER23> Time. Work. Those two things are the only things that can deliver on your aspirations. By your definition I'm a real programmer, and yet after well over 20 years programming I'm still humbled by what I don't know.

There's so much I could write here about where to focus (focus on a real problem, forget about agile or lean, focus on the joy of the moment, worry less about whether you chose the right stack), but I've got work to do...

I will leave you with one thought - every time I finished a project badly I learnt something profound that was scarily relevant in the next project, and made that next project successful. It's that continuous motivational cycle that's so addictive.

<comment><USER24> There do seem to be a lot of rather "precious" induhviduals coming into the industry these days who seem to easily get obsessed with trivial stuff whilst missing the bigger picture.

<comment><USER25> coming to the industry? I am working with a bioinformatics team leader who seems to be obsessed with his hipster stack Mongo, Node , Angular, hang on... nope, changed to Tokyo Cabinet, Nope, its Elastic Search this week.

Its basically a relational problem we are trying to solve, but because it is moderately big data (will be a few terabytes in the end), we NEED to use NoSQL.

<comment><USER26> Don't worry, it won't be Node for long either.

<comment><USER25> The filesystem is the database. Because we need to use NoSQL.

</comment></comment></comment></comment></comment><comment><USER27> > Since I started about 3 years ago

Let's get some perspective here. If you were an undergrad you'd just be about to graduate. Nobody would expect you to be particularly good at programming at this stage -- your career is literally just beginning!

</comment><comment><USER28> Well attended a JS conf last year and I got to be at the same room as TJ Holowaychuk. I had no idea who the guy was and ended up asking where he came from, what he works with, etc. Shame on me haha.

</comment><comment><USER29> 80 hour weeks? Hell no, if that's what it is then I don't want to be a real programmer either. Maybe it's because I'm old and cynical, but you young guys can knock yourself out. If you're working that hard you better be working for yourself, otherwise you're just being taken advantage of.

</comment><comment><USER30> I would be curious to see if there has been any study to see which profession has the most skilled workers who think that they are "imposters". I have to admit that I fall into this category and I have been seeing increasingly more people also admitting to this in our industry. It's nice to know that others feel this way, and it's nice to see many of the encouraging comments that allude to the thought that imposter syndrome may be more a matter of perspective, rather than one of performance.

</comment><comment><USER31> If you are really a programmer for just 3 years, then being lean was hot long before you even thought about starting to program. Currently hot means big data.

To get on topic: Don't give up just yet! Yes you can not be awesome at everything that you read here on HN. But if you, e.g., care about squeezing out great pixels out of your CSS, you can certainly become awesome at that. Maybe it's more awesome in your eyes to churn out a new iPhone game every week, then you certainly can be good at that. You just can't be good at most things you do. Either you are mediocre at everything, or quite good at one thing and quite bad on the rest. If you think a programmer is so much better at everything, learn to know these people better. You'll see that they might be awesome Node developers, but they might not know even part of what you know about bash and vim. Or English might be their mothertounge, while it is actually your second fluent language, etc. Most of the awesomeness you see in people on stage is biased observation.

And certainly you don't get to be awesome if you slave away at 80+h/week. Better stay in the 30-50h/week range and spend the rest of the time to prioritize tasks, stay healthy, networking, etc. With the first approach you will be nothing more than a machine after just 2-3 weeks. With the second approach you can learn and get better every week of the year.

</comment><comment><USER32> By saying you don't want to be a real programmer, I'm hoping you don't mean a good/great programmer.

Isn't it interesting how we're telling everyone to learn how to code, but then people feel like impostors? Well you can't learn good programming and cs standards in a few days or weeks, even in a few years. So no wonder a lot of people feel like impostors.

Having said that, it takes quite some time to really develop as a software engineer into a real software engineer. You need to know architecture, design, best decisions, security, caching and more. That's what I call a real programmer. Can you design a search service? If you can't, can you learn enough to design it? How would you even start? Everyone can code, but not everyone can design a system that is scalable, fast, robust and secure.

In addition, to be a real programmer, I think you need to start thinking about the future...how will people want to use a browser in the future? If I'm a developer, how can I make XYZ easier and faster to build for other developers? How can I make it so that the code is reusable? Will a framework make it easy? How should that framework be built? How are people going to use it? Etc...

Some of it is deliberate thinking and some of it is work experience.

So a lot of this kind of thinking comes from real problems software engineers faced while working. Discussions, debates, etc... They found a solution and it was elegant enough for others to use.

That's how I think someone goes from an impostor to a real programmer.

</comment><comment><USER33> Newsflash, your hero TJ Holowaychuk probably does not even exist. Seriously imo this guy tries to compare himself to everybody else on the internet, which is dangerous.

<comment><USER34> Huh?

<comment><USER33> [http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ- Holowaychuk-...](http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-Holowaychuk- so-insanely-productive)

</comment></comment></comment><comment><USER35> I would usually never respond to so,ething like this. But.. "programming" isn't just one thing. "Real programming" is pretty specific to your own values as a programmer.

Look around, find out what interests you.. probably look away from the web, because the web is over-caffeinated with a lot of churn that resembles real progress. (Not that there isn't a lot of cool stuff on the web, just that it's a confusing ecosystem to measure yourself against.)

It's an art and a science.. it's not about 80 hour weeks and writing 10,000 libraries a year. Maybe there's something you have to contribute that you only work on for 5-10 hours a week and it takes you 2-3 years to complete it and it still blows our socks off.

</comment><comment><USER36> Mother I'm afraid

I do not want to malloc

Mother I'm afraid

I do not want to learn ARM

Mother, I am afraid

Waking up as Tron Guy

Waking up as Tron Guy

Waking up as Tron Guy

</comment><comment><USER37> It's this exact type of blog posts, that are constantly on HN front page, that make me feel like an impostor.

>Oh look i do hackathons, OSS contributions at all times of the day, try new stuff, etc etc, and feel like an impostor.

Shit man, how does that leave me?

</comment><comment><USER38> Want to b a "real" programmer? Don't be so attached to your code. It doesn't represent you. It does represent where you are and it does indicate where your going but it doesn't define you. If you identify as a programmer, then you are. Physics tells us that, to a large extent, we create Our own realities and our perceptions of such. Put your code out there and don't give a shit what people think. Is there a better, newer way? Yep. Always will be. So keep learning and don't get comfortable with your current skill set.

</comment><comment><USER39> TJ isn't real. You can't be like him.

</comment><comment><USER40> great essay. ime, the best programmers are equal part artist and hacker. but, the synthesis would be impossible to describe or even recognize by most non- programmers. and: conversations about their abandoned or unrealized projects are sometimes more interesting than their completed ones.

<comment><USER41> they are also engineers and computer scientists. Even in these fields creativity allows one to look at problems from different angles, and through experience, recognize or innovate solutions. This may not always be a vocational skill picked up by anyone over a few years

</comment></comment><comment><USER42> I enjoyed reading this. I must have 10 to 15 years on Anas, but I can confirm the feeling doesn't dwindle all that much. The important thing is that you make sure you're enjoying it.

Incidentally, think the presentation on that page is excellent. And I like the domain name too.

</comment><comment><USER43> something about this aspirational mumbo-jumbo rubs me the wrong way. there are plenty of objective standards to judge one's self against, most of the best ones are available to the general public in one form or another these days.

</comment><comment><USER44> For reference about real programmers: Real Programmers Don't Use PASCAL [http://www.ee.ryerson.ca/~elf/hack/realmen.html](http://www.ee.ryerson.ca/~elf/hack/realmen.html)

</comment><comment><USER45> I wouldn't fall into the trap of thinking more hours = more production. I find I am most productive and efficient when I don't work 80 hour weeks, that's when the code I write creates problems.

</comment><comment><USER46> OP: just would like to point out that you might get some weird looks when mentioning your domain name to the portuguese speaking crowd. Visually it looks a lot like "very badalhoco".

<comment><AUTHOR> Google translate did not return any result. I assume it is some kind of swear word?

<comment><USER47> I actually laughed when I realized. :)

"Badalhoco" translates to naughty.

</comment></comment></comment><comment><USER48> I'm switching between superior and imposter all the time.

The people at the small company I worked for made me feel like I'm a JavaScript guru.

Last month I did some small stuff for Mozilla and felt like an idiot.

</comment><comment><USER49> This 'Real Programmer' thing is a dumb strawman.

</comment><comment><USER50> just wanted to point out that according to the top comment on the link to quora you posted ([http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ- Holowaychuk-...](http://www.quora.com/TJ-Holowaychuk-1/How-is-TJ-Holowaychuk- so-insanely-productive)), it seems that TJ is a hivemind. Are you sure you want to compare yourself to that?

</comment><comment><USER51> A real Programmer is a machine that does all the work for you. I do understand that you want to be that. I don't either.

</comment><comment><USER52> OP is indeed not a real programmer. I guess that ends the conversation.

</comment><comment><USER53> I think the only solution is to code if it makes you happy.

</comment><comment><USER54> if(happy){ continue; } else { try{ somethingElse(); } catch (e) { fastFood() || parentsCouch(); } }

</comment><comment><USER55> I don't want to be a Real Anything.

</comment><comment><USER56> You failed when you gave up.</comment>


Would a professional web company use Google Chart API? - <AUTHOR>

http://code.google.com/apis/chart/
When I first saw this API I thought it was a really useful and powerful tool  However, as I started using it in a webapp I'm building I started thinking it would look cheap to reuse a charting API like this.
Could a professional web company that charges for access to its service use the Google chart API?  Would it be seen as taking an unnecessary shortcut and a  lack of technical skills in setting up a proper charting/graphing package? <comment><USER2> I don't think the graphs look cheap on their own, but they do have a "look", which if overused could begin to look cheap - like the standard blogspot templates or an excel graph as examles. I don't think that is the case yet, nor may it ever be (you have to be a programmer to use these).

Here is another positive: the graphs are fast. Really Really fast. You get the multiple-hosts pipelining trick for free. You get the fact that Google hosts these graph servers local to wherever your customer is. Google buys better network connections than you can likely afford. Also, some engineer(s) at Google's job is to make sure that the rendering itself (server-side) is wicked fast which is more than you can say about your company or graph library you are using.

Speed is valuable and looks _very_ professional.

</comment><comment><USER3> They're not so bad and they're easy.

When working on charts for a site and you're looking for wicked ROI, why not toss in these until you have a little extra time to change them to something you prefer more?

</comment><comment><USER4> "Would it be seen as taking an unnecessary shortcut and a lack of technical skills in setting up a proper charting/graphing package?"

It would be seen as making the best use of available resources. I see two key benefits to using Google APIs

1.) It will establish a sense of familiarity with non-technical users. They see Google, they feel a bit more secure in the application's ability to perform and deliver

2.) It will show developers that you recognize effective solutions based on the depth of development, and how well you implement the system.

I think a pro company could very well make use of these technologies, even if they have the competence to create the solution themselves. If the idea is to deliver results in the highest manner possible, and they feel comfortable using Google APIs, go for it.

</comment><comment><USER5> I would say if you are showing the charts in your web-apps that means lot to the end user e.g. analytics data. It is one of the important aspect of application and that decides whether people like it or not. In such case it would be good to have in-house expertize on charts/some library e.g. JFreeChart for java or Flot(JQuery) JavaScript << good for minimal charting capability>>. That helps to keep control and plan ahead. I mean same applies for google charts too. But in that case you are loosing out control over some part of your application as you are delegating this important task to third party(google). If it is part of product/portal; I think lot of clients wont approve such decision.They will prefere custom-build/coded part for that in the application.

</comment><comment><USER6> I don't think lacking technical prowess in setting a proper charting package to be a significant reason. That would be like saying you are cheap for using a web framework instead of writing your own would be cheap as well. Just this case, it's a "framework" (it's techinically and API, I know) for displaying charts.

They do look cheap though. You could maybe count on the fact that they would improve the chart's presentation without changing the API, but that could never happen.

If your app is simple and doesn't value presentation too much, you can go ahead and save the extra hours you'd spend on a charting package on some other features that people want.

They are too simple for me to use in my apps, though.

</comment><comment><USER7> To me, it would look cheap. I would not use it as part of my offering, because a) it relies on Google's servers which have no guarantee of uptime and b) decent charting packages are already available for a reasonable price.

On the other hand, I doubt that most users would care as long as it works.

<comment><USER8> Google's servers are far more likely to be up than yours, that's just not a valid reason. Those charts are nice, there's nothing cheap looking about them, the real issue is load, will your load exceed what Google allows per day, if so, do your own charts, if not, nothing wrong with using Google.

<comment><USER7> You're right. I should rephrase. I meant uptime more in the control sense of the word. If Goog were to decide to stop allowing this API to run or in some way change their terms of use, there would be a problem. I guess it's the control freak in me.

<comment><USER9> Well, then you'd have to do something else.

</comment></comment></comment></comment><comment><USER10> isn't it limited to 10 000 requests a day? Assuming you build something that becomes popular, than that limit will be soon reached. What you going to do when that happens? Re-write it with something of your own?

If you are writing a small-ish webapp, then fine, but if you are building something that is going to be popular (or at least you are hoping it will), then using that API doesn't seem a good idea.

Java, Php, Python all have pretty decent chart generator apis that can do the same, or even more, so I really don't see the point of using the google api.

<comment><USER11> Basically, there is no 10,000 request limit. but, even if there _was_ one, it would still be very easy to cache 10,000 unique graphs on the server, and then serve them up without making new requests to the chart API. Here's an excerpt from its Terms of use:

4.5 You acknowledge and agree that while _Google may not currently have set a fixed upper limit on the number of transmissions you may send or receive_ through the Services or on the amount of storage space used for the provision of any Services, such fixed upper limits may be set by Google at any time, at Google's discretion.

<comment><USER12> Right on the front page:

 _Usage Policy

Use of the Google Chart API is subject to a query limit of 50,000 queries per user per day. If you go over this 24-hour limit, the Chart API may stop working for you temporarily. If you continue to exceed this limit, your access to the Chart API may be blocked._

<comment><USER11> the request to the chart's url will be made by the client browser, which is a unique ip for practically every visitor. so, maybe that's 50,000 charts per day _per visitor_? unfortunately they don't really clarify what they mean, as they could be tracking the request referrer.

<comment><USER13> According to a Google Group forum post by a Google Employee, the 50,000 limit refers to the webpage, not the person who visits the site: [http://groups.google.com/group/google-chart- api/msg/b53c39a5...](http://groups.google.com/group/google-chart- api/msg/b53c39a571fda6c8)?</comment></comment></comment></comment></comment>


How Much Starbucks Do We Really Drink Every Year? - <AUTHOR> http://blog.instavest.com/infographic-how-much-starbucks-do-we-really-drink-every-year

<comment><USER2> Great perspective on how big Starbucks actually is.</comment>


Array Indices: Start from 0 or 1? - <AUTHOR> http://xkcd.com/163/

<comment><USER2> What is your name? Bill Gates

What is your quest? To conquer the world with Visual Basic.

At what index shall arrays start? One... no, zero... (arghhhhhhh.....)

<comment><USER3> There was lots of Visual Basic code written in the 90s. Not all of it has been rewritten.

Was it thrown away?

Is it... still running? {o_O}

<comment><USER2> Imagine the problem that certain companies (who have delayed investing in their products) are running into now that Microsoft has announced no VB runtime will be in Windows 7 (optimistically due in early 2010).

I hope they're starting their migration/risk mitigation strategies now.

<comment><USER4> I don't understand what they mean by "no VB runtime". My impression was that the VB installer always included all the DLLs necessary to run on a generic Win32 system. If they change something to break VB programs, they'll also be breaking lots of other Win32 software, too.

</comment></comment></comment></comment><comment><USER5> Sadly my compromise of using 0.5 was flat out rejected.

</comment><comment><USER6> 1-based arrays always make me think of the _Numerical Recipes_ books, specifically the one using C. They jump through all sorts of hoops to have 1-based arrays:

\- Array allocations are done using helper macros which invoke malloc and return a pointer to memory one element before the beginning of the array. (I'm pretty sure this is undefined behaviour according to the standard btw; it just happens that the format of pointers isn't data-dependent anymore these days)

\- Array accesses are just as usual in C, except array[1] is the first element.

\- Freeing memory is again wrapped in a macro to calculate the actual beginning of the array.

\- Multidimensional arrays are layers of this crap.

<comment><USER7> This is because most of the most important numerical libraries (e.g. LINPACK, EISPACK, LAPACK) are written in FORTRAN. There's (literally) decades of work in these libraries, and everyone uses them, and it's simply not worth trying to rewrite them in whatever the language _du jour_ is.

<comment><USER6> I realise that, although I'd have to say it's not exactly the way I would have handled the situation. In my experience, linking binary Fortran libraries against C code doesn't lead to interfaces that expect such array pointers, and when porting Fortran code to C, I would have probably handled the index numbering issue with a macro for element access where converting to 0-based notation isn't completely foolproof.

Actually, I probably would have provided the numerical recipes code in two versions, one in the 1-based format, the other in idiomatic C.

But then I'm more of a software engineer than a computational physicist even though my degree certificate claims otherwise.

</comment></comment></comment><comment><USER8> I think it would have been more appropriate to have linked directly to the XKCD comic in question instead of to blog spam.

<comment><AUTHOR> Sorry, I can't seem to change the url. Here's the original url <http://xkcd.com/163/>.

</comment></comment><comment><USER9> I grew up thinking all array indices started at 0. That belief was held up until I met Lua of course.</comment>


Show HN: Nines – Insanely Detailed Uptime Monitoring - <AUTHOR> http://www.nines.ws/ <comment><USER2> Is ping the only thing this does?

What kinds of probes are possible?</comment>


Procrastinating? Find the Next Step Up - <AUTHOR> http://www.mostlymaths.net/2010/10/procrastinating-find-next-step-up.html

<comment><USER2> I noticed a pattern with many of my side-projects: I would work furiously in my spare time for a few months, and wind up with something "very nearly done". Then I'd take a break for a week or two, just to get some perspective and figure out what really needed to be done to "finish" the project.

Of course I never returned to any of these projects.

My new approach is just to do _something_ on my current side project, without fail, every day. There is no "finish", there's just work, and it really is more enjoyable.

<comment><AUTHOR> This is the best approach. I already wrote about that in my blog (I called it Continuous Improvement) and for me it is also the most effective way to deal with side projects (like, say, improving my blog ;)

</comment></comment><comment><USER3> This feels like a big insight, that when my current project has a "cliff" after which it will end and cease to be important (to me, or so it feels), motivation is very difficult.

I will be thinking about this at work today, and of ways to convince my brain that there isn't actually a sharp end.

</comment><comment><USER4> Honestly, Nike's had it right all along: Just do it. Tough to make yourself sometimes, but still true.

<comment><USER5> Second this, all the thinking and planning in the world often pales compared to:

Sit down where you need to do the work / Open the tool you need to do the work / Do the work.

I don't program, but I paint / illustrate outside of my day job and the only way I've ever, ever gotten over the 80% hump is to just physically be where I need to be and force a handful of actions to get moving.

Also, resetting the "done" point is important - sometimes you're lagging because you've actually finished, you just need to call it, clean it up and ship it, even if it means sacrificing some of the ideals / nice to haves you had planned.

</comment></comment><comment><USER6> It is actually just the opposite for me - a clear, clean completion to a project makes it easier for me - at least it has a definite and obvious goal and end-point to work toward. It is more open-ended projects that I find hard to work on as I should.

<comment><AUTHOR> Interesting! You don't subscribe my love to "open ended paths" (i.e. activities with no end in sight, like karate, guitar playing, etc)? Or you just refer to work specific projects?

<comment><USER6> I am an autodidact and try to work on open ended paths studying maths and so on, but discovered I need to have some specific end point to work toward or I tend to flake around doing easy reading and stuff rather than staying focused.</comment></comment></comment>


Apple: Secrecy Does Not Scale  - <AUTHOR> http://dashes.com/anil/2009/07/apple-secrecy-does-not-scale.html <comment><USER2> " _I can't hear you over the continual sounds of the cash register..._ MS and Apple continue to be enormously profitable doing business the way they do." [http://www.kottke.org/09/07/whos-up-for-a-little- microsoft-v...](http://www.kottke.org/09/07/whos-up-for-a-little-microsoft-vs- apple)</comment>


Field magnetic drive motors - m_p-engineer

would humanity benefit from 'free', clean energy? <comment> m_p-engineer i am welcoming any and all comments and questions; if it is not understood then ask me about my project. understanding comes from knowledge. tell me what any of you think.</comment>


RMS: A GNU manual, like a course in history, is not meant to be a "safe space" - <AUTHOR> https://sourceware.org/ml/libc-alpha/2018-05/msg00017.html <comment><USER2> We all have and want "safe spaces".

I'm pretty sure that Stallman wants an FSF conference to be a safe space where he doesn't have to hear people talking about "Linux" instead of "GNU/Linux", or praising software hoarders.

Instead, "safe space" is all too often used to mean "I want to do something and won't let you stop me by saying it shouldn't be done here."

</comment><comment><USER3> I think it would be good to stop considering the opinions of RMS as worthy of discussion as long as they don't pertain to matters of free software. (I say this as a GNU maintainer.)

Unfortunately, GNU has a number of people who like to argue, and who like to argue fervently about and against simple and little measures to bring GNU a tiny step closer to a more welcoming environment for other people.

</comment><comment><USER4> Related YC thread here: [https://news.ycombinator.com/item?id=17015644](https://news.ycombinator.com/item?id=17015644)</comment>


Man's half face is forever young after getting hit by particle beam - <AUTHOR> http://gizmodo.com/what-happens-when-you-stick-your-head-into-a-particle-a-1171981874/1174437474 <comment><USER2> clearly bollocks. Both sides are aged, but the particle-beam side is paralyzed so the wrinkles don't show as much.</comment>


What happens if you leave Google--do you have to interview again? - <AUTHOR> http://theaccidentalengineer.com/preparing-tech-interviews-paul-carleton-stripe/ <comment><USER2> Worst interview ever, jesus. This ramblier than Rick-and-Morty. This needs to be excerpted into 2 pages tops. I couldn't even find the section where he says how the interview process has changed and whether he got an offer the 2nd time.

<comment><USER3> It's kind of annoying when you're listening to an interview and the subject is cut-off by the interviewer.

It's really fucking annoying when you're READING and interview and they transcribe the cut-off verbatim.

<comment><USER4> What do you expect them to do? Transcribe what would've been said if they hadn't been cut off?

<comment><AUTHOR> These are legitimate complaints (I'm the interviewer)--if you guys have got any suggestions about how to improve the format I'm all ears.

Like lgas says, transcriptions are tricky beasts.

<comment><USER2> I mean I'd just recommend turning it into two-pages of the most interesting material that was said in that conversation. The title is interesting, I'd rather read a 2-paragraph article on just that than a 10 page article that answers a bunch of mostly-unrelated stuff.

But if the answer to the question isn't shocking (e.g. he got rejected after re-interviewing) then I'd just recommend asking different questions because the tech industry is outrageous and full of crazy stuff (e.g. Silicon Valley gets it).

</comment></comment></comment></comment></comment><comment><USER5> I actually like reading interview transcripts without any sort of editing. I can be active(because I am reading, not listening), and also get what was exactly said.

</comment><comment><USER6> Not edited for length or clarity.</comment>


Anti-RDBMS: A list of distributed key-value stores - <AUTHOR> http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/

<comment><USER2> The author praises Scalaris - it promises a lot of things, unfortunately its performance sucks based on my own benchmarks (that isn't published anywhere, but you could try to do 100.000 sets and compare it vs. CouchDB or that like).

One of the most impressive k-v databases I have read about and used is Tokyo Tyrant ( <http://tokyocabinet.sourceforge.net/tyrantdoc/> ). It's coded in C, has been in development for about 2 years and is used in production on Plurk.com and mixi.jp. It also offers master-master replication.

<comment><USER3> We use TC for our site. The C server is a thin wrapper over it and does 8000 write requests per second on my 1st generation MacBook with the benchmarker running on it as well.

The client is written entirely in javascript and does the expensive operations like joins.

Were hoping we will be able to run the site off of one server forever. People complain that "developer cycles are expensive" but so is purchasing and managing a bunch of servers.

</comment></comment><comment><USER4> It all sounds rather not-ready for prime-time. Might it not be better use of time to _get-over_ those six "reasons". They're hardly insurmountable. Not likely to drag me away from generalized RDBMS solutions that can work with either MySQL or PostgreSQL.

<comment><USER5> It's not that they aren't ready for prime-time necessarily. Technologies like memcached are great compliments to any RDBMS-backed website. For a little theory: an RDBMS will store data and allow you to query it. So, when you say, get me article #15, it scans through its index in approx. log(n) time and finds the row you're looking for, fetches the row and gives it back to you. Memcached, on the other hand, will do hash(#15), grab that row. That's all done in O(1) time and so it's a lot more scalable. However, with an RDBMS you can say something like, "get me the articles written in the past month" and you can't do that with memcached. Memcached allows key lookups only.

A lot of it is a tradeoff between scalability and convenience and using the right tool for the job.

<comment><USER6> O(log n) tree search vs. O(1) hash lookup is _not_ the reason for any scalability differences that might exist between RDBMS and key-value stores. RDBMSs with hash indexes are commonplace, and allow O(1) lookups and a b+-tree lookup over a few million rows only does a few I/Os (the fanout in a typical disk-based tree index is on the order of 100, and the nodes in the first level or two of the tree are likely to be cached). Any differences in _scalability_ has more to do with architectural differences (easier to do horizontal partitioning with key-value stores, no need/expectation of ACID transactions, no need to parse + optimize queries at runtime, no need for a complex query executor, etc.)

But I agree that a SQL RDBMS allows much more flexible ad-hoc queries than a key-value store does.</comment></comment></comment>


Can hand sanitizers like Purell really stop people from getting the flu? - <AUTHOR> http://www.slate.com/id/2245896

<comment><USER2> Dup: <http://news.ycombinator.com/item?id=1175331></comment>


PC/GEOS - <AUTHOR> https://github.com/bluewaysw/pcgeos <comment><USER2> I'm really happy to see this. I wrote a story about PC/GEOS, also known as GeoWorks, a few years ago, and the end of the story was somewhat sad, as the death of one of the founders of BreadBox effectively left the future of the operating system in flux.

[https://tedium.co/2016/04/28/geoworks- windows-3-1-competitor...](https://tedium.co/2016/04/28/geoworks- windows-3-1-competitor/)

Hopefully open-sourcing it will keep this great operating system alive. It should have beat Windows 3.1.

<comment><USER3> What makes it great in 2018? Why keep alive?

<comment><USER4> It could function as a great alternative to Windows or FreeDOS for those of us who don't want to pay a Microsoft tax whenever we buy a new computer.

It might be useful as the basis of a new mobile-phone operating system.

It is certainly interesting to the archaic-computer users out there who are maintaining old systems as a means of consolidating computing culture, as we lean more and more towards homogenisation ...

<comment><USER3> What makes an 80s/90s era 16-bit OS great in 2018? If you want free/open source, why not run Linux or FreeBSD or any if the many modern alternatives that have 64-bit support, preemptive multitasking, protected memory, modern VM, new software actively being developed for it, drivers for modern hardware, support for SSDs and USB 3.0 and nvidias, etc etc?

Similarly, there's nothing about geos that's appropriate for a mobile device. If you want to start with something existing, Android is already open source and has a ton of existing software. Or try fuschia if you want more bleeding edge.

Now if you say it's for a hobby, or fun, or whatever then I can understand.

<comment> david-given GEOS would run on systems _three_ orders of magnitude smaller than the ones you describe. It was intended to work well on machines with a single megabyte of RAM, and did.

I have an Android ADP1 phone on my desk at work; the first Android phone which was ever released (the G1 with the custom paint job on the back). It's a paperweight; there's nothing useful I can do with it, and it won't even talk to the Google servers any more. However, obsolete as it is, it's still staggeringly _more_ powerful than anything GEOS ever ran on.

The biggest thing systems like GEOS do for the modern developer is to be an example: to demonstrate just what you can do with a tiny, tiny amount of code.

(Oh yeah, GEOS also had virtual memory and preemptive multitasking.)

<comment><USER5> PC/GEOS didn't have virtual memory the way people think about it--it was a handles based approach so that memory could be moved when it wasn't being actively used.

<comment><USER6> Windows and MacOS did something like this too. The memory APIs worked in terms of blocks of memory identified through 'handles' rather than pointers.

To get a pointer, there were additional calls that would enable blocks (identified by handle) to be locked and unlocked. The lock calls provided pointers that were deemed valid until the block was unlocked.

The net of this is that the OS could do things like relocate and page blocks that weren't locked, and do it without hardware assistance.

It really was a nice, minimalistic way to approximate some 'big iron' features on modest hardware. (Although it's hard to imagine anyone wanting to go back. :-) )

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> The source code for the C64 version is available here too:

[https://github.com/mist64/geos](https://github.com/mist64/geos)

<comment><USER8> There is a Mega65 computer with a GUI based on GEOS at [http://mega65.com](http://mega65.com) that is a Commodore 65 clone. The 65 has a 64 mode and 65 mode for better color and sound.

</comment></comment><comment><USER9> I wrote the business plan for my Arizona based ISP on PC/GEOS back in '92 on a IBM PC AT.

[https://www.dropbox.com/s/n78x5cp8na4iilq/InternetDirectIncP...](https://www.dropbox.com/s/n78x5cp8na4iilq/InternetDirectIncProscpectus_akaInternetHutInc..pdf?dl=0)

<comment><USER10> I was in college at the time. Wrote a /lot/ of technical papers with GeoWorks. The word processor and draw had great integration.

<comment><USER10> Also had a Tetris that is still the nicest clone I've ever played. For years after, I'd load my GeoWorks onto an old PC just to play the Tetris. I probably have the GeoWorks disks in my garage still.

<comment><USER11> I'm 100% confident I've played that exact Tetris, but on Linux with Motif on X. So I think you'll find, if you poke around enough, that source code is alive and accessible.

<comment><USER5> I doubt it. Ours was written in our homegrown x86 assembly language for our own OS kernel.

</comment></comment></comment></comment></comment><comment><USER12> "Their newest PC/GEOS, 4.x, is now a full productivity and Internet suite, including Web Browser and Email"

[https://en.wikipedia.org/wiki/GEOS_(16-bit_operating_system)](https://en.wikipedia.org/wiki/GEOS_\(16-bit_operating_system\)) has more history. I played with it around Windows 3.1 times.

</comment><comment><USER13> There is still a (quiet) mailing list covering all things GEOS, NewDeal Office, Breadbox Ensemble etc. here: [https://groups.yahoo.com/neo/groups/geos- talk/info](https://groups.yahoo.com/neo/groups/geos-talk/info)

</comment><comment><USER14> I remember running Geoworks on my 8086 panasonic desktop (as souped up an 8086 as their can be, vga card, 40MB hard disk (then doublespaced!). I remember it coming with the Pre-AOL AOL client.

With that said, all the apps I had for it were the ones that came with it, so in a sense it was just a glorified version of micrsoft works + some games. It was cute and in a way gave a longer life to the 8086 machine than it deserved having, but, they missed the microsoft concept of "developers, developers, developers"

<comment><USER5> Actually, to be more clear... The original graphical AOL client for the PC was a PC/GEOS application. It booted GEOS and straight into the AOL GEOS application.

<comment><USER6> Interesting. Was there any carryover between that and QuantumLink/QLink (via Commodore GEOS). I'm assuming not...

<comment><USER5> Technologically, no. Business-wise, I don't recall.

<comment><USER6> Thanks... tbh, it was the technology that interested me more.

I remember pretty amazed at GEOS on the C64, but have never fully understood if there was a connection to the other GEOS implementations (or the nature of that connection if it existed).

<comment><USER5> Commodore GEOS was created by the same company as PC/GEOS. I only worked on PC/GEOS.

</comment></comment></comment></comment></comment></comment><comment><USER15> Geoworks came packaged with my 386sx 16mhz magnavox pc. I also remember this software package called "America Online" that I could connect to with my 2400 baud modem but it was way too expensive so I didn't sign up.

<comment><USER16> I thought I was the only one with a Magnavox 386 PC. It was back when they had John Cleese as a spokesman, as I recall.

</comment></comment><comment><USER17> There was also the OmniGo 100, an HP LX series machine that had GEOS in ROM:

[http://www.hpmuseum.net/display_item.php?hw=200](http://www.hpmuseum.net/display_item.php?hw=200)

</comment><comment> david-given Now, there's a name I haven't heard in a long time...

Back before 2000 I did a tonne of stuff with GEOS; wrote a couple of terrible programming languages, some not-so-terrible games, a bunch of hacking, and even managed to write a Linux system call emulator allowing you to run Linux binaries under GEOS. (Well, ELKS. That still counts as Linux, right?) (In hindsight I should have gone for Minix binaries instead, as nobody back then had heard of ELKS, or now, and it would have let me run the Minix C compiler under GEOS.) See [http://cowlark.com/geos-software](http://cowlark.com/geos- software).

It's an exceptionally elegant system, providing a multi-threaded, object- oriented system with outline fonts, full vector graphics support (based on things called GStrings), virtual memory (including virtual memory _files_, so disk I/O is done for you by the system), long filenames and symlinks, and a component-based architecture allowing for massive code reuse, all on a 640kB PC/XT running at 4.77MHz. On a faster machine it simply flew.

The core of it is a smart linker/loader which allows code and data segments to be loaded, patched together on the fly, and dropped on demand. All data is relocatable, allowing it to be rearranged or swapped out. The core language is 'object-oriented assembly' \--- assembly with high-level features for message sending and deserialising objectes; the OO system has some very nice tricks up its sleeves, such as the specific/generic UI mechanism. Your app describes its UI in generic terms using classes like Trigger; these have holes in their inheritance tree. When your app gets loaded, the system fills in these holes with matching classes from the UI system. So a Trigger can turn into a Motif button, or an old-school GEOS button, or the Brother UI button, etc, depending on what it's loaded on.

You could also write in GOC, which is a proprietary preprocessed C not dissimilar from Objective C; it was, um, interesting. The code it generated had to be compiled with Borland C, which was expensive. The entire development environment wasn't great: there was a command-line debugger which had to run on a completely separate PC connected to your main machine with a serial cable. I rarely bothered with it.

Sadly the whole architecture is intrinsically tied to the i86 segmented architecture. Although, modern machines are so fast that I'm sure you could cross-assemble the i86 code to a modern architecture and just do the segmentation in software. The system's so well designed (and small and fast) that it'd probably still be an order of magnitude lighter than, say, LibreOffice. I still miss GeoDraw.

(I got a job offer from Geoworks once! I turned them down to stay with Tao, an equally doomed operating system startup...)

<comment><USER18> Nice testimonial.

Do you know of any documentation online that covers the loader and other good bits?

Also, what is/was Tao?

<comment> david-given Tao was a UK OS company that produced operating systems call Taos and int _e_ nt (emphasis theirs); their killer feature was binary portability and assymetric multiprocessing, so you could have multiprocessor machines built of several different random architectures and treat them all as a single message- passing system. Code was converted from bytecode to native machine code at load time. It was small, elegant and very cool.

Turns out people didn't want to buy that.

</comment></comment></comment><comment><USER19> I _loved_ GEOS and annoyed all my friends ranting about it in the early 90s. It really made me appreciate that with skill you can get orders of magnitude more functionality out of the resources at hand.

</comment><comment><USER20> I had GeoWorks on a C64 and was amazed by what it could do. Felt much more cohesive than Windows 3.1 in terms of being a consistent desktop environment.

Anyone remember KeyDraw? GEM-based vector graphics package for DOS, based on the GUI libraries from GEM Desktop which was the descendant of GEOS / GeoWorks, if I recall. Fantastically learnable program that introduced 5-year- old me into the world of vector art.

(On that front, anyone remember Aldus Intellidraw? Even better, _still_ a better UI than Illustrator, though held back by lack of antialiasing and weak postscript support).

<comment><USER21> GEM predates GEOS by many years. It was a product of Digital Research, and was started in the early 80s by Lee Jay Lorenzen who had worked (or interned?) at Xerox on the Star and wanted to bring those concepts over to commodity x86 desktop machines.

Lorenzen went on to create the successful DTP program, Ventura Publisher, which itself used a bundled copy of GEM.

The wikipedia article on GEM has a good chunk of history: [https://en.wikipedia.org/wiki/Graphics_Environment_Manager](https://en.wikipedia.org/wiki/Graphics_Environment_Manager)

A 68000 port of GEM and GEMDOS (which itself was a kind of fork of DR's own CPM/68k) were the basis of the Atari ST operating system "TOS". Some of the tales of how that all went down are documented by one of the participants here:

[http://www.dadhacker.com/blog/?p=995](http://www.dadhacker.com/blog/?p=995)

[http://www.dadhacker.com/blog/?p=1000](http://www.dadhacker.com/blog/?p=1000)

All of this an entirely separate effort from GEOS/GeoWorks, though in some respects the two efforts are similar in that they aimed to bring the full WIMP experience to fairly low-powered machines. But the philosophy was quite different. PC/GEOS was written in a lot of assembler, specifically for x86 (after they'd done something similar for the C64 in 6502 assembler in fact), specifically for commodity PCs. GEM was written in C with some amount of portability in mind (in theory), and ran on top of DOS, CP/M, or GEMDOS (I believe there was also attempts to get it to run on top of Unix). The first version of GEM was developed and ran on the Apple Lisa hardware.

<comment><USER22> I recommend reading the entirety of the dadhacker site. It's amazing.

</comment></comment></comment><comment><USER23> lol, back in the days I found GEOS on a disk for my C64.

I was blown away to see a desktop/gui for the first time in my life.

It felt like going back to the stone-age when I got a PC and it just had DOS and Norton Commander, haha

</comment><comment><USER24> GEOS-SC sounds interesting as a potentially more portable "modern" version - did MELCO wind up owning the rights to it? If not does the source for that still exist...?

</comment><comment> amiga-workbench I'll have to get this compiled and installed on my IBM AT, nice to see something compatible with my 286.

</comment><comment><USER25> Now we need to make it compile with gcc (or clang) and run on a Unix-like OS.

<comment><USER26> Given the fact that it is mostly written in weird semi-custom x86 macro assembler it would entail significantly more work than you expect :)

<comment><USER4> Yah, the assembly language is going to be a bit of an issue. But I wonder if there wouldn't be some interested parties to turn it all into portable C code ..

<comment><USER25> You can always compile it to function calls that emulate x86 opcodes. Considering the difference in speed between a 386SX (which ran GEOS acceptably) and a Core i3, it'll probably be fast enough.

Besides, the whole environment can probably run from within the cache of a modern CPU.

<comment><USER4> That's a neat idea, and probably kind of feasible .. I wonder if anyone will take up the challenge and produce a clean C-portable version .. I'm guessing some of the folks around ContikiOS might be intrigued by this idea. Off to other forums to discuss it further ..</comment></comment></comment></comment></comment>


Mark Cuban says AI will reduce the demand for computer science degrees - <AUTHOR> https://www.cnbc.com/2019/05/30/mark-cuban-says-ai-will-reduce-the-demand-for-computer-science-degrees.html <comment><USER2> Why is everything always portrayed as either/or? Why not both? There is such a thing as a double major and if you go the classical route of pursuing a computer science degree it would be conferred from a mathematical science department that's part of a liberal arts college - the same liberal arts college having all those humanities degrees Mark Cuban thinks will be so valuable in the future. It's easy to double major within the same college so go ahead and major in history, literature or music or whatever along with your computer science degree.

This strategy has the added benefit of helping you choose a college to attend: look for the ones offering a quality computer science degree from their liberal arts college. They're solid gold. Double major and you're prepared for your immediate future as well as for the long-term.</comment>


Hong Kong government granted US consulate a rare 999-year lease in the 1990s - <AUTHOR> https://www.scmp.com/news/hong-kong/article/2158709/us-consulate-hong-kong-staying-put-billion-dollar-site-lease-has <comment><USER2> It came to mind that Hong Kong was "leased" for 99 years too.

<comment><USER3> The New Territories were leased for 99 years in the 1898 Second Convention of Peking. Hong Kong Island was ceded in perpetuity in the 1842 Treaty of Nanking. Kowloon, except for the walled city, and Stonecutter's Island, were ceded in perpetuity in the 1860 Convention of Peking, Article 6.

<comment><USER4> > Kowloon, except for the walled city

I thought Kowloon _was_ the walled city.

<comment><USER5> Nope. The Opium wars and the subsequent status of the Kowloon Walled City are really cool stories. Funny to think that the fortunes of today's Hong Kong got rich selling drug.

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

</comment></comment></comment></comment><comment><USER6> It's purely symbolic. A lease is still a contract between 2 parties. If one or both cease to exist so goes the lease.

<comment><USER7> That may not always be the case. It's not like Castro was a big fan of Guantanamo Bay...

<comment><USER8> Great point. The final arbitrator of all contracts is the threat of violence. If you can't back it up, it doesn't matter what the contract says.

Also the Mexican land grants in California. The US still respects the terms of those agreements.

<comment><USER9> Eminent domain exists and is frequently used in China (as in the US). Do the terms of this lease somehow exempt the US consulate from it?

<comment><USER10> They are saying that the nature of the party (global superpower) is the final exemption criteria for every kind of obligation if you play that card.

</comment></comment></comment></comment></comment><comment><USER11> My god. It's an actual, blatant violation of the Rule Against Perpetuities. [0] And here I thought I'd never use this knowledge outside of a Property Law exam.

0\. [https://en.wikipedia.org/wiki/Rule_against_perpetuities](https://en.wikipedia.org/wiki/Rule_against_perpetuities)

<comment><AUTHOR> Very interesting. But can lifetime be measured on "corporate persons"? Like a company , or org

</comment></comment><comment><USER12> That's some confidence.

What's the likelihood that China or the US will be around in 999 years?

<comment><USER13> > What's the likelihood that China or the US will be around in 999 years?

What's more relevant is what is the chance that each will either be around _or_ have a successor in in interest around in 999 years; the likelihood of the latter are much higher.

(Of course, it's also less confidence than acquiring freehold title—an option the US had under the original lease—which assumes that the granting authority or one upholding it's decisions will exist forever. People do that with land all the time.)

<comment><USER3> The Lindy Effect predicts that their future life expectancies are proportional to their current ages. Although the People's Republic of China was founded in 1949, China has been around in one form or another since 1600BC. The USA has only been around since 1776 (or 1783).

<comment><USER14> People existed in the American landmass before 1776 too. ;)

<comment><USER12> In fairness, most of those were Native Americans. Most of those nations are already, effectively, gone.</comment></comment></comment></comment></comment>


Bill Gates: Books I Read this Summer - <AUTHOR> http://www.thegatesnotes.com/GatesNotesV2/Personal/Books-I-Read-This-Summer <comment><USER2> I'm finding that writing reviews, even very surface-level reviews, of books I am reading is helping me to derive a lot more value from them.

Firstly, while reading, I find myself reflecting more on the book. After all -- I will be writing a review, I need to be an active participant.

Secondly, I find that books will often spark some thinking on a topic and the review will essentially morph into an essay. I wrote a 3000-word review of one book[1] that diverged into fuzzy logic, theories of jurisprudence and a few other areas in order to properly explain my reaction. Right now I'm writing a review of _Waltzing with Bears_ that will diverge into financial accounting and a pet theory of mine about how tools create paradigms that shape entire bodies of knowledge.

Third, books can often be connected to one another. I find that my reviews tend to link to each other. Not because I am trying to drive internal link traffic (I'm basically a nobody in internet terms, it's not worth the bother). But book A will have tangentially touched on the topic of book B; or perhaps book C illuminates something only poorly discussed in book D. To the point where I refer to books from before I started reviewing with an "unreviewed" annotation.

Finally, some people find my reviews useful. My hobby is Olympic-style weightlifting and I do a lot of reading both on it directly and on allied subjects (eg, anatomy). Fellow strength nerds have found my reviews useful in helping them select books for their own libraries. It's nice when people give you positive feedback on something like that.

[1] <http://chester.id.au/2012/04/09/review-drift-into-failure/>

</comment><comment><USER3> Any thoughts on that Moonwalking With Einstein book? I'd love to improve information retention in my day to day life, especially in software. I'm not so much interested in remembering the to-do list as retaining broader concepts for long periods of time. I'm lucky enough to get to learn a ton of things every day, but my long term retention of them is terrible unless I spend considerable time applying these ideas in practice, which is often not practically possible. This leads to a lot of wasted time, it's as if I never even read the darn thing.

Often, and this is the sad part, I won't even bother reading something because I know I'll forget it almost immediately, unless I have a block of time available to dedicate to trying it out in practice.

For example, I'm really fond of the underpinnings of programming language design and compilers, and it's thousands over thousands of pages of information (most of it very interesting and useful to me), but I fail to retain the vast majority of the great info and need to continuously go back to the texts whenever I'm in doubt about something. There were a couple of valuable techniques recommended in Pragmatic Bookshelf's Pragmatic Thinking and Learning, such as "now pretend you have to teach this concept to your former self who knows nothing about this", which supposedly helps with retention and internalization into the brain's "web of known facts".

Is there anything like that in the book? Would it be of any help?

<comment><USER4> You should look into Anki and "Spaced Repetition."

The gist is that you submit a bunch of facts you want to remember to a computer program, and that program applies an algorithm to figure out when you are likely to be about to forget something. The program quizzes you just as you were about to forget (but before you do), and the act of responding to that quiz renews and strengthens the memory.

Powerful. I've been using it for myself and my 9 year old daughter, and it has been very effective. Many use it to build foreign language vocabulary, or memory of Chinese pictographs.

(Note: This is not the subject of the "Moonwalk with Einstein" book -- I mention it as an additional tool for helping with the memory goals you stated).

Some Links:

Anki: <http://ankisrs.net/>

<http://en.wikipedia.org/wiki/Spaced_repetition>

Article on Piotr Wozniak and Spaced Repetition: [http://www.wired.com/medtech/health/magazine/16-05/ff_woznia...](http://www.wired.com/medtech/health/magazine/16-05/ff_wozniak?currentPage=all)

<comment><USER5> I'm really glad you brought up spaced repetition since spaced repetition and the techniques described in Moonwalking with Einstein happen to be two of the items on my relatively small list of the most amazing things humans are capable of that they neglected to teach me in kindergarten. I'm sure most people on HN are unfamiliar with both, so I'd like to give a brief overview of what they are and how they work.

The techniques described in Moonwalking with Einstein require serious time investment up front, but allow you to cultivate a memory that rivals that of people with savantism (who incidentally tend to use the same general techniques but do so naturally). Spaced repetition doesn't produce _as_ amazing results but doesn't require initial time investment and is a far more efficient method of memorizing data than conventional approaches. The only downside to spaced repetition is that most software implementations of it require daily review and don't work optimally if you miss a day (recent versions of the proprietary SuperMemo, Piotr Wozniak's own software, are supposed to be much more forgiving), but you don't need to invest much time each day.

So how exactly do these two memory techniques work? Spaced repetition is predicated on the notion that the longer you wait before reviewing data, the longer that information will stick in your head. That is, as long as you are able to recall the data when you review it. If you wait too long, you'll completely forget the data. So there exists an optimal length of time to wait before reviewing a piece of data, and as with the American game show The Price is Right, you can approach that optimal value by increasing your estimate, but the moment your estimate exceeds that optimal value, it becomes less useful than all possible underestimates. The goal of spaced repetition systems (SRS), such as the software programs SuperMemo, Mnemosyne, and Anki, is to adapt to the user's mind and figure out this optimal interval to wait before showing a flash card again, as opposed to conventional flash card systems that review each card every day. Not only does spaced repetition greatly increase the value of each time you review a card by committing it further into your long term memory, but it also greatly decreases the number of flash cards you need to review each day.

The art of memory (aka method of loci), which is the technique described in Moonwalking with Einstein, works by taking advantage of the fact that our visual and spacial memory is far better than our memory for arbitrary facts. The gist of the technique is to convert data that you want to memorize into vivid images (the funnier or cruder the better) and arrange those images at discrete points in a predefined order along a spacial layout you know well (the layout is called a "memory palace", but it can be your home, school, office, neighborhood, favorite video game map, etc.). To recall the data, all you have to do is retrace your steps and remind yourself what each image means. Combining this technique with spaced repetition, you can commit thousands of pieces of data to a memory palace, wait a few hours to retrace your steps to recall the information, retrace your steps again the next day, then again a few days later, then again a week later, then a month later, etc. In this way, about two or three hours distributed over 5 or so weeks (maybe with one more review the next year) will let you memorize thousands of pieces of data permanently. The stuff you can do with your mind once you know more efficient memory techniques is truly amazing.

<comment><USER6> I'm having trouble figuring out what kinds of "vivid images" you would use for memorizing foreign language vocabulary words.

For example, I'm trying to learn German right now. It seems obvious that you would use images of the English translation in your memory palace, but then you would just have the problem of remembering the German word that each image signifies.

Or going the other way, from German to English, what images would you use in your memory palace to represent German words? How would you tie them back to English?

help?

<comment><USER5> Figuring out how to encode various classes of data into images is one of the more challenging aspects of the method of loci. Also, memorizing an associative array of data is less natural in the method of loci than memorizing ordered data since the way you recall the data is by tracing your steps through the memory palace in your mind. I guess you could place two images at each location, functioning sort of like a LISP alist (list of pairs where the first element in each pair represents a key and the second a value), but that still doesn't answer your question about how to create the images. Maybe go syllable by syllable? For example, if you wanted to remember that kochen is kitchen, you could visualize a macaw perched on the shoulder of Barbie's boyfriend while the latter flipped burgers on a toy grill. The "caw" sound in my dialect of English is identical to the "ko" in kochen, and Barbie's boyfriend Ken would be enough to trigger my memory of "-chen", so I'd be like "Right! This was illustrating that the German word kochen means to cook."

Spaced repetition lends itself a lot more naturally to memorizing foreign language vocabulary words than the method of loci, so you might want to use that approach instead. Within spaced repetition, you can also use vivid images as a sort of scaffolding to increase the odds you'll remember the word before the next review, and you can eventually let that image go once you start recalling it easily. The more connections you form to other thoughts, the more firmly a fact will be anchored in your mind, so you might as well use mental images if you can come up withthem, even in spaced repetition. James Heisig uses visual mnemonics to teach several thousand Chinese characters in Remembering the Kanji[1] (Chinese characters for use in Japanese) and Remembering the Hanzi[2] (Chinese characters for use in Chinese), and communities like AJATT[3] and Reviewing the Kanji[4] advocate combining Heisig's approach with spaced repetition.

[1] [http://nirc.nanzan-u.ac.jp/publications/miscPublications/Rem...](http://nirc.nanzan-u.ac.jp/publications/miscPublications/Remembering_the_Kanji_1.htm)

[2] [http://nirc.nanzan-u.ac.jp/publications/miscPublications/Rem...](http://nirc.nanzan-u.ac.jp/publications/miscPublications/Remembering%20Hanzi%201.htm)

[3] <http://www.alljapaneseallthetime.com>

[4] <http://kanji.koohii.com/>

<comment><USER6> Thanks. So I was understanding it correctly then, it is difficult to use this type of memory method with foreign languages.

I will stick with spaced repetition =)

</comment></comment></comment></comment></comment></comment><comment><USER7> It's kind of funny that he recommends: "Awakening Joy: 10 Steps That Will Put You on the Road to Real Happiness"

Step 1: Be worth billions of dollars

On a serious note, I realize that money doesn't buy happiness. Proven scientifically over and over again, people get used to their situations usually within 6 months, good or bad, and get back to their "normal" happiness levels regardless.

<comment><USER8> If I remember correctly though - there is a "happiness-threshold" of income, below which life-satisfaction and income are positively correlated.

I think that number for most of the US was around $70k or something. So below that number, income is correlated to happiness. Above that threshold, and the two are unrelated.

It makes sense. Different things start to matter once you have your basic physiological needs in place. But you have to secure that base.

<comment><USER9> The study you're thinking of noted that $75k was the level above which additional income would not significantly impact "happiness".

While there are a multitude of caveats needed for any such claim, the most obvious is the fact that $75k means very different things depending on where you live.

The WSJ adjusted the number for cost of living, below :

[http://blogs.wsj.com/economics/2010/09/07/what-salary- buys-h...](http://blogs.wsj.com/economics/2010/09/07/what-salary-buys- happiness-in-your-city/)

All of the above should be taken with a grain of salt, but the basic TL;DR is that the figure is actually ~$100k+ in most major US cities.

<comment><USER10> The flip side of this is that you can also achieve many of the same objectives (i.e. things that impact happiness) on a smaller budget by paying attention to the relevant research on what really makes us happy. The value of happiness research is where it shows us how bad we are at predicting our own preferences. Incorrect predictions are expensive.

</comment></comment></comment></comment><comment><USER11> I find it very disturbing and revealing that such a high level and respected guy did read no real book, I mean real books that will be read in 50 years, literature or philosophy, or classics like Seneque, Proust, Montaigne, Austeen.

It maybe he read them all already? Probably not, because if you read Austeen you probably can't spend all your holidays reading self motivation books.

<comment><USER12> > I find it very disturbing and revealing that such a high level and respected > guy did read no real book, I mean real books that will be read in 50 years, > literature or philosophy, or classics like Seneque, Proust, Montaigne, > Austeen.

Bill Gates is reading about how much college students learn in college instead of reading Kant and sipping wine by his fireplace and being a pretentious douche-bag.

Oh, the horror. What has the world come to.

EDIT: If it didn't occur to you, the definitions of _real_ , _classic_ and _important_ are different for a random punk on an internet forum and Bill Gates. Also, Bill Gates doesn't seem like a guy who would read classics so that he can make blog posts about it.

<comment><USER13> gbog sounds a bit like the main character from Verne's _Paris au XXe siècle_ , a classics scholar who is shunned for searching for timeless truth in a modernist, materialist world that focuses only on technology and business.

The classics are classics for a reason: they are universal and timeless, and contain deep truths about the human condition that resonate forever. If Gates had read them early in life, maybe he would not have developed the predatory personality that characterized his business career and Microsoft in general?

<comment><USER11> Yes, that's my point, and the anti-culture trend I can feel on HN, while somewhat justified, because there are culture douche in some places, is missing the bigger picture: culture, classic books, and so on, are the only way to build a better world.

<comment><USER12> > and the anti-culture trend I can feel on HN

What do you mean by anti-culture trend?

<http://en.wikipedia.org/wiki/Culture>

Of all the definitions listed here, what on earth would anti-culture mean? This is the 20th century definition:

 _In the 20th century, "culture" emerged as a central concept in anthropology, encompassing the range of human phenomena that cannot be attributed to genetic inheritance. Specifically, the term "culture" in American anthropology had two meanings: (1) the evolved human capacity to classify and represent experiences with symbols, and to act imaginatively and creatively; and (2) the distinct ways that people living in different parts of the world classified and represented their experiences, and acted creatively._

If by culture, you mean the practices which have been followed for some time(won't that be tradition?), count me in as anti culture and tradition. "Something exists for a long time, hence it is useful" is bullshit. Culture and traditions are mostly dynamic, and people who think of a them as a static rather than ever changing snapshot of current human behavior are some of the biggest, bigoted assholes I have ever seen.

> culture, classic books, and so on, are the only way to build a better world.

Do you have anything other than your personal opinion to back up culture(whatever that means) or classic books building better world?

<comment><USER11> There is another meaning: culture is what a cultivated man has. I think this meaning is continental, French and German. It is something one person gains with time by broadening his familiarity with the best products of the human mind, like classic books, paintings, etc.

<comment><USER12> > There is another meaning: culture is what a cultivated man has.

Cultivated as in "educated and refined"? And somehow who doesn't give a shit about Kant isn't educated or refined?

> It is something one person gains with time by broadening his familiarity > with the best products of the human mind, like classic books, paintings, > etc.

Expanding your horizons is good. Claiming reading obscure books is the way towards a better world is douchebaggery.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Surprising to me is that Amazon is charging _more_ for the Kindle version than the hard cover of "Awakening Joy" ($19.34 vs $17.16): [http://www.amazon.com/Awakening-Joy-Steps-That- Happiness/dp/...](http://www.amazon.com/Awakening-Joy-Steps-That- Happiness/dp/055380703X/ref=sr_1_1?ie=UTF8&qid=1347758067&sr=8-1&keywords=Awakening+joy)

<comment><USER15> Weird, it's showing up as $15.99 for me.

<comment><USER14> Seems like there a general trend toward lower pricing transparency in online retail. Airlines have been doing this for years...sucks that it's spreading everywhere.

</comment></comment></comment><comment><USER16> I find it amazing that Bill Gates seems to still have the time and passion to read books that will help him grow as an individual with everything that he probably has going on in his life and everything he has accomplished. Over the past couple of years, I have personally have had a hard time keeping up with reading habits due to school and job demands. I still read, but look to reading as a relaxing activity as in picking up Game of Thrones for an hour when I have it. I guess that's what makes Bill Gates who he is.

<comment><USER17> What? He's a retired multi-billionaire.

If he doesn't have all the time he wants to read whatever he wants, then he's doing something very, very wrong.

</comment></comment><comment><USER18> Thanks for posting this! I look forward to reading Bill's full review of Academically Adrift - higher education is ripe for the disrupt.

</comment><comment><USER19> It's amusing to see Bill Gates upset about college students not learning much and many not finishing. He's a billionaire. But he's also a dropout. And now he's reading self-help books.

I'd like to see Bill Gates go back to school and earn a degree or two. Is that a bad thing to do? Why? He obviously has the time and money. But how dare I even suggest the idea? Who am I compared to Bill Gates? A mere plebian. So why would I suggest it? Beause it would be a great example to set. In my opinion. Not sure if he is a believer in setting examples and the tendency of young people to emulate "role models". Like, e.g., billionaire dropouts.

<comment><USER6> That would also be a good way for him to see what college is really like, since he is so intent on fixing it.

(I'm a dropout too)

</comment></comment><comment> at-fates-hands The academically adrift book was quite interesting, although I disagree with the conclusion. For the most part, I find the first two years of college are really more about filtering out those who are there to party and those who are there to learn and get a degree. If the same results were achieved on third or fourth year students (assuming most students are in for 5 years these days), then I would be concerned.

</comment><comment><USER20> What's curious is that none of the links to the books are on Amazon. I wonder if he did that intentionally.

All of them go to the publisher - which seems a bit odd.

<comment><USER21> Other than the fact that the Publisher's link is 'more right' to link to, it may just be the fact that Amazon's a competitor in the tablet space.

<comment><USER20> I know it may be 'more right'...but if some random 'tech famous person' were writing this post, which links would they use? More likely than not, they would use Amazon's links.

This seems like it took extra effort to look for these titles on each of their publisher's sites.

<comment><USER21> _"I know it may be 'more right'...but if some random 'tech famous person' were writing this post, which links would they use? More likely than not, they would use Amazon's links."_

I don't think Bill Gates needs the referral link revenue from Amazon ;)

<comment><USER20> I wasn't alluding to affiliate revenue. Rather just an easier experience for users.

</comment></comment></comment></comment></comment><comment><USER22> Is there a HN filter to weed out "rich man has opinions" type stories?

<comment><USER12> > Is there a HN filter to weed out "rich man has opinions" type stories?

Yes. The title says "rich man has opinions". Don't click the link, don't read the comments and don't post comments about how you didn't want to see this.

</comment></comment><comment><USER23> On Kindle Store:

A Nation of Wusses: [http://www.amazon.com/gp/product/B007OWRBEK/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/B007OWRBEK/ref=as_li_ss_tl?ie=UTF8&camp=1789&tag=asdfdsa-20&creative=390957&creativeASIN=B007OWRBEK&linkCode=as2)

Moonwalking with Einstein: [http://www.amazon.com/gp/product/B004H4XI5O/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/B004H4XI5O/ref=as_li_ss_tl?ie=UTF8&camp=1789&tag=asdfdsa-20&creative=390957&creativeASIN=B004H4XI5O&linkCode=as2)

The Art of being Unreasonable: [http://www.amazon.com/gp/product/B007WLU96A/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/B007WLU96A/ref=as_li_ss_tl?ie=UTF8&camp=1789&tag=asdfdsa-20&creative=390957&creativeASIN=B007WLU96A&linkCode=as2)

Academically Adrift: [http://www.amazon.com/gp/product/B004LE9ILS/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/B004LE9ILS/ref=as_li_ss_tl?ie=UTF8&camp=1789&tag=asdfdsa-20&creative=390957&creativeASIN=B004LE9ILS&linkCode=as2)

Awakening Joy: [http://www.amazon.com/gp/product/B0030DHPDO/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/B0030DHPDO/ref=as_li_ss_tl?ie=UTF8&camp=1789&tag=asdfdsa-20&creative=390957&creativeASIN=B0030DHPDO&linkCode=as2)

</comment><comment><USER24> The Road Ahead first edition? You know the one where you forgot to mention the world wide web and had to recall it?</comment>


How Zano Raised Millions on Kickstarter and Left Most Backers with Nothing - <AUTHOR> https://medium.com/@meharris/how-zano-raised-millions-on-kickstarter-and-left-backers-with-nearly-nothing-85c0abe4a6cb <comment><USER2> Read the whole damn thing thinking this is way too long. Then at the bottom, he summarizes the whole thing. ugh

<comment><USER3> Well he does say in the very first paragraph there is a tl;dr at the bottom...

<comment><USER2> I need my eyes checked</comment></comment></comment>