How to Convert Old Film Reels with a Raspberry Pi - <AUTHOR> http://spectrum.ieee.org/geek-life/hands-on/how-to-convert-old-film-reels-with-a-raspberry-pi <comment><USER2> I'm really blown away at the quality considering a raspberry pi camera module was used. Based on the green ribbon (as opposed to blue in the previous model) I'm guessing they used the second version of the camera module. This version uses a Sony IMX219 8-megapixel sensor [0] which is pretty much a smartphone camera. (it was also used on the Nexus 9) Though considering that the module costs around $20 it seems fair. (I usually just associate the RaspPi with "cheap")

[0]: [https://www.raspberrypi.org/products/camera- module-v2/](https://www.raspberrypi.org/products/camera-module-v2/)

</comment><comment><USER3> I tried a very similar setup using a beaglebone black a couple of years ago. It never quite worked, and it's since sitting in the "pending projects" drawer. After looking at this, I'll definetly try again using your methods.

Using the projector lens in reverse is a great idea, and doing multiple exposures and combining them is just genious, I never would have come up with this, great job!

</comment><comment><USER4> This is a really good effort. My father had my family's 8mm & Super 8 transferred to DV about 10 years ago. The quality was just okay. This is absolutely amazing. He sort of talked about it, but one of the issues is the frame rate mismatch when trying to capture with a DSLR set to video (or video camera). Also, I would like to know what extra lens was used for the pi.

<comment><AUTHOR> I took a look at his wiki to see if this information (extra lens used) was mentioned. There is a section on Parts Selection [1] which mentions a discussion about the Pi Camera and Lens [2] but that only sends me to a blank page.

Maybe he will update it with more information in the future.

[1] [https://github.com/jphfilm/rpi-film-capture/wiki/Parts- Selec...](https://github.com/jphfilm/rpi-film-capture/wiki/Parts-Selection)

[2] [https://github.com/jphfilm/rpi-film-capture/wiki/Camera- and-...](https://github.com/jphfilm/rpi-film-capture/wiki/Camera-and- Optics.md)</comment></comment>


Why ev decided to stop exercising in the morning - <AUTHOR> http://blog.lift.do/post/52576829173/workout-when-youre-least-productive-productivity-tip

<comment><USER2> Ah yes, welcome back to The Highly Effective Work Habits of People Flush with Silicon Valley Cash.

How does this help the rest of us who have to be in the office during core hours, no more than an hour for lunch, or else look for a new way to feed our families? In a down job market?

<comment><USER3> > Ah yes, welcome back to The Highly Effective Work Habits of People Flush > with Silicon Valley Cash.

I think this is very unfair and a bit childish. Many programmers have flexible work hours they can use. You don't need to be in Silicon valley or have a pile of cash to work in a flexible work environment.

> How does this help the rest of us who have to be in the office during core > hours, no more than an hour for lunch

Well in this case it doesn't. However, it doesn't mean the advice isn't good advice for people who can use flexible hours.

I used to work out at 2pm each day at work. My work had no problem with it.

My current job means I can't leave my seat during trading hours( 9:30 until 4) so I now work out at 4.

However, the old saying that everyone has the same number of hours in a day to use, its up to you to choose how to use them.

Like tptacek said about pricing earlier today:

> The most common pricing fallacy on HN (perhaps after cost-plus pricing) is > the idea that every product must be targeted at all people to make sense.

You can generalize this to advice as well. Advice doesn't have to be targeted to all people to make sense. If you can't or won't take the advice then its just not for you.

<comment><USER4> > _Many programmers have flexible work hours they can use. You don 't need to > be in Silicon valley or have a pile of cash to work in a flexible work > environment._

Yes and no.

Many programmers can start work when they want, and end work 8-10 hours after that. One segment.

Only the very well off or upper management are able to truly work _flexibly_. Show up in the morning for a few hours, take off and go to the gym or home, show up later and work for a few more hours. No problem for the founder of Twitter.

</comment></comment></comment><comment><USER5> I was doing this for a while. I used to go after work, then started going at lunch.

But the place I go doesn't have a shower, so even after I dry of with a towel and take a hobo shower with some baby wipes, I'm still kind of icky when I get back to work. I don't really like being even a little bit stinky out of respect for my co-workers.

It also causes me to take another 20 minutes for lunch or eat at my desk, and in the summer it takes me a good 20 minutes for my body temperature to come back to normal.

It works but as always there are compromises to be made.

</comment><comment><USER6> This is a smart idea, but it made me think: I'd like to see some productivity/exercise/lifehacks for those of us who are stuck with inflexible managers or retrograde office cultures. I know I'd be vastly more productive if I could knock off around 2:00pm for a thirty-minute nap (or jog, depending) every day but unfortunately my company takes an Office Space-style approach to personnel management. It'd be great to see what people who have worked years in similar environments have been able to come up with.

<comment><USER7> Even at flexible workplaces, it's hard to find a place to nap unless there is a free room/couch somewhere. I tried taking a nap on a bench at Yerba Buena Gardens once but was kicked off the bench by the Park Guardians. :(

When I can't fit in a nap, a brisk walk gives me a good energy boost or even switching to standing at my desk... in fact, I'm about to switch to standing now. Have you tried that?

<comment><USER8> Need a standing desk?

</comment></comment></comment><comment><USER9> Ev has a lot of good productivity tricks. I think this is one of his favorite topics, plus he's had a long career with important things to work paired with tons of people trying to get his time.

I tried to get him to give his philosophy on saying no. He's apparently very good and systematic about it. But somehow he still manages to know when to say yes.

<comment><USER10> If found this brief bit: "Say no to most things: Features. People. Partnerships. "Coffees." Projects. Only a few of them really matter. (Yes, it's hard to know which.) Don't get distracted."

[http://addicted2success.com/success-advice/evan-williams- the...](http://addicted2success.com/success-advice/evan-williams-the-creator- of-blogger-and-twitter-shares-his-advice-for-amazing-success/)

But it would be great if you could get him to speak about this in more depth.

</comment></comment><comment><USER11> I have found that working out in the morning is very good for my productivity. I've written a blog post about it: [https://medium.com/better- humans/50c835e15244](https://medium.com/better-humans/50c835e15244)

The keys for me were doing so for only 10 minutes, with 2 of those being very intense, otherwise you get too exhausted.

I've lost 15lbs in 3 months also. By working out in the morning you get over the cortisol peak, grogginess and get off to a good start.

I need to finish that blog post series, but I'm actually working on a mobile app to help me keep track of some data.

To manage those energy/focus swings (especially after lunch), instead of working out, I go for a walk or step outside the office to work with fresh air and some sunlight.

</comment><comment><USER12> I completely agree with this (although I did happen to exercise early this morning). Nothing is better for a long day of coding than a good ride, climb or surf in the middle. Lunch can really slow me down, and taking time to get exercise is a great remedy.

</comment><comment><USER13> "If there were more travel time involved, it might not be worth it (or it might be worth switching how you exercise)"

Which for 95% of us out there, is the case. So this is a rather pointless article.

</comment><comment><USER14> I think it really depends on the person. I always get an energy boost heading to the gym and I find my mind is clearer from the endorphin rush. Some people are clearer out of bed; I have had allergies to pollen and the environment all my life, so going to the gym clears it for me and I find I am more productive as a result. I go to the gym twice a day, akin to getting a cup of coffee to helping me focus.

Exercise and fitness is different for everyone. I don't think there is a single categorical way to approach exercise other than that you do it.

</comment><comment><USER15> It depends on what works for you. I find that working out in the morning is better just so you can get it out of the way. I tend to be the in the zone throughout the whole day when coding so it would feel like an interruption for me.

</comment><comment><USER16> Evan Williams isn't even swole. Why is he qualified to give workout advice?</comment>


Haskell: OOP vs type classes - <AUTHOR> http://www.haskell.org/haskellwiki/OOP_vs_type_classes <comment><USER3> Haskell doesn't really do inheritance, unless you somehow get O'Haskell to work on a modern machine.

In place of inheritance, you have two mechanisms: algebraic data types and type classes. They work great for many programs, but neither of them is an exact fit for Java-style object-oriented programming.

An algebraic data type has a name ("Bool", in the first example below), and several constructors ("True" and "False"). Constructors can take positional and named arguments, and they can take type parameters:

        data Bool = True | False
        data Shape =
            Square { l :: Int, t :: Int, w :: Int, h :: Int }
          | Circle Int Int Int
        data Maybe a = Just a | Nothing

Once you define an algebraic data type, you can't add new constructors. But you can write functions which match against the existing constructors at runtime, giving you a form of runtime dispatch vaguely analogous to method lookup:

        boolToString :: Bool -> String
        boolToString True = "true"
        boolToString False = "false"

So algebraic data types work great if you have one abstract interface with known set of concrete subclasses. It's a _really_ great way to think about complex data structures with multiple types of nodes.

A type class is a little bit like a C++ template protocol: It says that a given type implements a set of functions. But as with C++ templates, it's effectively resolved at compile time. (Well, the implementation is quite a bit different, but that's the rough idea.)

Now, ADTs and type classes are great. But if you find yourself using crazy hacks to recreate an OO class hierarchy in Haskell, you're probably fighting against the language. Either structure your program differently, or find a different language.

<comment><USER4> I agree - type overloading says templates to me rather than inheritance. C++'s tuple class lets you do some of the cool listy type things you can do in Haskell. Using typedef tuple<double, double> FloatPoint and taking it from there seems a lot more like the Haskell example and would be less code - <USER2> line each for the typedefs and a one-line function to implement <<. (Not taking anything away from Haskell, which I'm completely in love with.)

<comment><USER5> The typedef tuple strategy doesn't let you distinguish between types except by the types and ordering of their fields. If you later have a constructor for another ADT (or even the same one) which also takes two Float arguments, you end up with multiple typedefs for tuple<double, double>.

</comment></comment></comment><comment><USER6> Well then, the expression problem. The guys who created scala and OCaml have opinions about this, no surprise (why not OOP and typeclasses?

[http://stackoverflow.com/questions/2807629/handling- incremen...](http://stackoverflow.com/questions/2807629/handling-incremental- data-modeling-changes-in-functional-programming)

(message 20) [http://groups.google.com/group/scala- debate/browse_frm/threa...](http://groups.google.com/group/scala- debate/browse_frm/thread/96193eacf013a103/)

<http://lambda-the-ultimate.org/node/4400>

\</comment><comment></comment><comment>---

and "ADT" i think real world haskell is correct in reservign this for abstract data types

[http://book.realworldhaskell.org/read/defining-types- streaml...](http://book.realworldhaskell.org/read/defining-types-streamlining- functions.html#deftypes.adt)

</comment><comment><USER7> It is unfortunate that two completely different concepts both happen to use the word "class" in their name. A related example is "return". People coming from a background in, say, C++ or Java will naturally have preconceptions about what these words mean, and will almost inevitably start by trying to apply them in Haskell world where they don't work.

It is particularly unfortunate because, with the wisdom of hindsight, I think classes as used in C++ and Java have been responsible for many problems over the years. This is fundamentally because they take two very common, very useful ideas -- modular design (separation of interface and implementation) and compound data types (struct/record/variant/etc.) -- and try to use a single tool to implement both at the same time.

Unfortunately, that creates all kinds of presumptions about how you write your functions, where the emphasis is always on one object being paramount or one data type controlling everything. For practical programming tasks, it may be more useful to model a situation using a set of related types to hold the data and a set of algorithms defined in terms of one _or more_ of those data types (or more generally _collections_ of one or more such types) to manipulate that data.

It's probably not an exaggeration to say that almost all of the most common modelling problems with C++/Java style OOP -- the "diamond pattern" with multiple inheritance, for example -- are due at least in part to this unwarranted emphasis on this/self/whatever you want to call it. Much of the rest is due to over-use of inheritance, which again has an underlying subclass-or-subtype ambiguity in what it represents -- and which again is perhaps emphasized by the whole one-object-to-rule-the-world philosophy even when what OOP would call containment or aggregation is a clearer way to model the situation.

Languages such as Haskell have never had this history of conflating modular design with structuring data, nor the resulting false friend of emphasizing one object/value/whatever in any given modelling context. IME, this is the big conceptual leap that is sometimes hard for those with a strongly everything- is-an-object background to make, though it's perhaps a little easier these days for anyone who has used C++ templates or Java generics. Once you make the jump, type classes and algebraic data types make a lot more sense.

</comment><comment><USER8> There's a tech talk with Simon Peyton Jones giving an introduction to type classes in Haskell as well as discussing how it relates to OO at [http://channel9.msdn.com/posts/MDCC-TechTalk-Classes-Jim- but...](http://channel9.msdn.com/posts/MDCC-TechTalk-Classes-Jim-but-not-as- we-know-them)

</comment><comment><USER9> I think it is a bit silly to try to re-create OO with type classes or vice- versa. They are just two different modes of thinking and represent two different ways of architecting your program. Personally, I do find OOP a hoax, which leads to just horrendous code, but I'm sure either approach can be used to solve the problem at hand as long as you don't try to fit the round-peg in the square-hole.

For a case against OOP read : <http://c2.com/cgi/wiki?ObjectOrientationIsaHoax>

</comment><comment><USER10> I haven't had time to read through the whole article (and I already know how type classes work :)) so I just have one little point to add.

As correctly put in the article, type classes can provide default implementations. However, one cute thing that was missed is that type classes can provide default implementations for _every_ function, referencing each other:

        class  Eq a  where
        (==), (/=) :: a -> a -> Bool
        x /= y     =  not (x == y)
        x == y     =  not (x /= y)

This way you can implement == _or_ /=, and you get the other for free.

For me, the one new idea that made me understand why type classes are awesome was the read function: it's polymorphic on its _return type_. This means that you always give it a String and it returns whatever you need. This also means that you can have polymorphic constants--maxBound is the maximum of _any_ bounded numeric type, so you can use it as an Int or a Float and it will always have the right value.

Overall, I now think that type classes are awesome. However, I also don't think a parallel to OOP is particularly helpful--I also learned OOP well before functional programming and found it easier to understand type classes by looking at how they were used than by comparing them to interfaces or templates.

</comment><comment><AUTHOR> Speaking as someone who's brain has been broken by OOP, I found this article quite illuminating and would love to see more of the hardcore haskell/ML/FP guys weigh in.

<comment><USER11> * The Haskell guys can use Algebraic Datatypes and type classes to achieve many of the desirable properties of OOP.

* The ML guys can use OCaml, where the O is Objective. Ocaml contains a concept of OOP built into the language already (namely structural subtyping - someone could call this typed duck-typing). The ML guys in general also have another tool for abstraction at their disposal: ML-style functors.

* Erlang programmers often use processes which are self-contained concurrently executing "objects". In Erlang a process is lightweight enough to be considered a "heavy" object in OOP so you often structure your programs around several processes messaging each other to carry out solutions to tasks.

Different languages provides different tools as a means of abstraction. It is all just about unearthing the alternative.

</comment></comment><comment><USER12> I always thought OOP vs other paradigms is simply structuring the program, with enough time and work you could make a any program in any paradigm you wish. Why not pluggable paradigms?</comment>


Ask HN: What distinguishes Hacker News culture? - <AUTHOR> <comment><USER2> No jokes, shenanigans, memes, etc. except for extremely witty and situational humor. It's refreshing.

</comment><comment><USER3> The mods seem to spend an enormous amount of time curating the posts and comments. This is an opinionated mod team, and that's what makes it work.

</comment><comment><USER4> From [https://news.ycombinator.com/newswelcome.html](https://news.ycombinator.com/newswelcome.html)

> _The most important principle on HN, though, is to make thoughtful comments. > Thoughtful in both senses: civil and substantial._</comment>


Why your company should have a single email address - <AUTHOR> http://blog.asmartbear.com/one-email.html <comment><USER2> The problems the post describes are not really about email. They're actually about the difficulty of setting up a proper CRM system.

All incoming and outgoing email should be stored in a way that anyone can easily see the conversation history (and people should be checking it before they respond). As I see it, that's the problem the post is actually describing. Having one email address is a method of trying to achieve this but IMHO it's not how it _should_ be done.

The problem with CRM systems as I see them is that most of them require users to click _away_ from the email to read the full conversation history. Even worse than that, employees usually have to manually add a conversation to the CRM to begin with.

A better solution might be to automatically save incoming email to the company CRM and also append outgoing messages to the appropriate contact. That way, no-one has to remember to add records. The next step would be to expose that information directly in the email client so employees don't have to go hunting for info (if they can even be bothered).

I don't think most customers actually care _where_ their reply comes from (e.g info@, sales@, bob@...) as long as they get a response and their issue is resolved.

Edit: I agree with the post that customers should not have to figure out which address to use from the website. Just give them one

<comment><USER3> Isn't that what Zendesk and the CRM mentioned in the article do? I haven't tried them, but that's the impression I get, because it looks like people send emails from within Zendesk when replying to my support enquiries in various companies.

<comment><USER2> I haven't tried them either but from my first impressions there's still a wall between the conversations people are having via the support system and those that people _remember_ to add to the CRM. e.g. the sales guy trying to up-sell someone to v2.0 may have no idea that the customer already has two open support tickets from the 2.0 beta program.

The problem here is that these are fragmented systems, each trying to solve specific needs for the _company_ (tracking sales/prospects, tracking support queries) rather than looking at the customer's perspective.

</comment></comment></comment><comment><USER4> This is a really good point. I feel a lot of the time, I end up having to think which email I should email someone at. When a contact page has 8 emails on it with contact@, info@, support@, sales@, etc, it gets really confusing. I usually just end up emailing sales@, since I remember when I was working at Admiral, new customers got better treatment and response times than existing customers.

<comment><USER5> Agreed. It's why we only have one friendly public-facing email address at our company - hi@

<comment><USER6> That's a really inviting email, I love it! Feels much more welcoming than info@ etc.

</comment></comment></comment><comment><USER7> I don't buy it. If a pre-sales technical enquiry comes into multiple addresses, including 'support@...', 'sales@...' etc. and the sales & support teams do not talk to each other or share business intelligence, then there has been a failure of internal process, or a lack of proper systems, rather than it being the case that the email address design and structure is broken.

It's not hard for a Sales team to circulate a regularly- updated list of current prospects and their pipeline stage, or to have this as an Intranet page etc.

<comment><USER8> It's also not hard to have a single public-facing email address. In fact, that sounds a lot easier for the Sales team than remembering to circulate and regularly update that list.

I agree that the issue is one of internal process and lack of proper systems, and I don't see why you exclude email address design and structure from those categories.

<comment><USER7> Well, we have an Intranet page that's updated dynamically from our CRM system - no need for anyone to remember to update or circulate anything.

</comment></comment></comment><comment><USER9> I dealt with this recently. Emailed email@example.com and got a response from email@example.com. Some time later, I emailed the same company at firstname.lastname@example.com and got a response from firstname.lastname@example.com.

WTF?

</comment><comment><USER10> I'm not entirely convinced by the arguments here. I think I'm more inclined to think this is a good idea because it does remind me of companies that partition their websites into shards for "personal", "small business", and "large business", because their sales force is divided into these categories. This is absolutely infuriating to navigate. I know what I want to buy: let me look at what you have to offer and let me buy it without having to care about how you structure your sales force.

</comment><comment><USER11> I think this is a real YMMV subject - using a single email address can be a little dangerous if your startup has a chance of "going big" (and don't they all??). Even 50 extra messages a day can be overwhelming and you may find yourself skipping over important messages as you struggle to move them off your plate quickly. Even worse if it all lands in your primary inbox folder, distracting you from focused work (this is _especially_ important if you're "two guys/gals in a garage" where productivity & focus really, really matters).

I actually set up multiple email addresses for support in this way on purpose, based on platform. I find I'm far more efficient if platform 1 goes into folder 1 and platform 2 goes into folder 2. No need to make giant cognitive leaps in jumping from one message to another, and you can sit down and respond to everything all at once, not interrupting your flow...you're more productive, less overwhelmed, and contacts get their answers faster (and their emails don't get buried in your overwhelmed primary inbox).

If you are a consumer Internet startup and have a single downtime, you will completely understand where I'm coming from here...

<comment><USER3> I don't know, if that's too big of a load just use a CRM with email integration and have people pick new emails according to their position, or have an assistant/secretary route the emails to the appropriate address.

That sounds much more reasonable, not to mention that you won't use _your_ email address as the single contact, rather you will set up a different one that will act as a dispatch.

<comment><USER11> I actually find Groups within Google Apps mail to be pretty easy to set up and effective for our needs--setting up private groups is a really cheap & easy way to sort mail for free. I have groups like:

\- productA-support (which is really just "support@")

\- productb-support

\- info/hosting/privacy/twitter/etc (not all aliases are publicized, but tend to match what people would make up when attempting to send email to us)

The support aliases forward to me and to a dedicated support account. I always use the "Send As" feature so that nothing has my name on it unless you're nosy & look at the headers.

The info and other aliases go to both myself and to my partner. We both want to catch biz dev inquiries and any special snowflake requests, but I handle all support to ensure morale stays high.

If we add staff, we can add them to the groups pretty easily. Though at some point thereafter, we'd likely need some solution for determining what's been handled. It's a little hokey, maybe, but cost-to-benefit works well right now.

<comment><USER3> Ah, good idea, I forgot about that function. However, I would be a bit worried about who handled what, since (as you already mentioned) there's no good way to say "I've got this one".

</comment></comment></comment></comment><comment><USER12> Concerning the questions / concerns raised here and within the comments of the original post, I posted a quick follow-up at [http://vermorel.com/journal/2011/7/4/why-your-company- should...](http://vermorel.com/journal/2011/7/4/why-your-company-should-have- a-single-email-address-guest-po.html)

</comment><comment><USER13> A long time ago when I was setting up my first business website, I listed email aliases for a bunch of fake departments: sales@, support@, press@, jobs@, etc. At the time I saw this as what bigger businesses did, so to legitimize my new business, I followed along.

A decade later, I'm now just using hello@ for everything even though my business has grown a lot since then.

It's much easier to funnel all incoming emails through a single point of contact than juggle a bunch of aliases.

Our replies come from the same hello@ address even though the actual person replying varies. Each email has a code to group threads together.

Only when email goes personal does it get pushed to a specific person's mail account. The vast majority of our emails are centralized. It's great.

</comment><comment><USER14> The OP also recommends against using "hellish" webforms, and I wholeheartedly agree... one "oops" with my browser and the message I was writing is gone.

But I see them all over the place, and they take some work to implement whereas posting your e-mail address doesn't. Is there some argument to be made in favor of these which escapes me?

<comment><USER15> Good question. Perhaps web forms are thought of as a kind of CAPTCHA, the idea being that any ol' bot can send e-mail, but it takes a human -- or a bot specifically written for the site by a human -- to fill out a form.

 _Note: I'm not endorsing this thought; I'm just trying to get inside the heads of the people who make these awful things._

EDIT: Another possibility is that they want a way to easily tell how to route a communication from a customer. And web forms can contain those menus that tell the reason for the communication. (Tragically, those menus rarely work for me; my reason is not usually not on the list.)

</comment></comment><comment><USER16> 9:30 Club in Washington DC uses "firstname.lastname@example.com" as their single address. I haven't seen that anywhere else. What a great idea.

</comment><comment><USER17> If I ever have a company, I will have one email address -

email@example.com

I will then use a service like Amazon Mechanical Turk like to distribute the emails to proper internal addresses.

<comment><USER18> Using MT to sort email sounds like a terrible idea. You don't know what kind of sensitive data users send along with their support e-mails, you don't want to risk one of the mechanical turkers exploiting that.

</comment></comment><comment><USER19> This has nothing to do with how many public email addresses are exposed and honestly... solving it in this way shows a lack of understanding of the problem. The problem is maintaining effective communication across sectors of your business. A conversation between an external user and your company should be transparent... but not from an email address standpoint. As long as you can log into your CRM software and see the history of my conversation... who cares what email address it came in on.

Having one email address just changes the problem. Now instead of having no context for the conversation you have a jumbled email chain that you're having to centrally monitor, distribute, pass around to other people... if anything it seems vastly inferior than having a new email to email@example.com causing that customers email history and a notification from being sent to the billing support supervisor.

<comment><USER20> Seriously, learn how to punctuate. Ellipsis are not used this way and your placement of them makes no sense whatsoever.

<comment><USER21> Have you not seen how much improper grammar and spelling is on this site? Who cares? Don't be such a jerk.

<comment><USER22> We use correct grammar, spelling and punctuation here for the same reason we refrain from making silly jokes and calling each other names. It's part of the culture that we're trying to maintain, and it has value.

The grandparent could have simply downvoted the distractingly punctuated comment (as a few people have downvoted your namecalling), but he chose to help the user out instead by pointing out what he'd done wrong.</comment></comment></comment></comment>


I introduced my 5yo and 2yo to startx and xmonad. They're delighted. - <AUTHOR> http://changelog.complete.org/archives/7562-i-introduced-my-5-year-old-and-2-year-old-to-startx-and-xmonad-theyre-delighted <comment><USER4> Reading the story, and the comments, there seems to be a disconnect between why the kids were delighted - it is not that they are delighted about Linux or XMonad. Or that they are learning valuable life skills.

They are delighted to be spending time with _dad_. Doing something fun, that dad seems engaged in.

As a dad, too much time seems to go on the mundane or the boring. Raising up the enthusiasm level, is a marvellous thing for dads and kids. It does not matter if that is installing Linux, writing blog posts, foraging for mushrooms, bird-watching or football.

Plus one for spending quality time with the kids. _what_ we actually do it seems is less important than doing it.

Enjoy

Edit: clarity

<comment><USER5> Exactly! I could be screwing in a screw and my son would enjoy it and be delighted about it.

<comment><USER6> My daughter was overjoyed with excitement to help me put a mouse-trap outside by a hole. She didn't even touch anything, but then runs inside to tell mommy "I helped daddy!".

<comment><USER7> I work with a guy like that I do something, he stands there watching and when the boss walks in he says _"We fixed it!"_

</comment></comment></comment></comment><comment><USER8> This isn't especially surprising, I probably learned to use command line when I wasn't much older. That wasn't because I was some genius, just that this was the only way to use a computer at the time.

There seems to be a popular misconception that a command line interface represents some kind of advanced brain surgery when in fact for many tasks it's simply easier.

I have done tech support jobs a few times in my life and it's a lot easier to guide someone in using a command line than it is a GUI "Click on Edit , click on Tools , Click the "advanced" tab , right click on the picture of a gear, now drag this thing into that place on the left" vs "type this in exactly how I dictate it".

Also CLI tends to be more predictable, I've seen so many people's computers where they've accidentally dragged interface elements all over the place and have no idea how to find anything.

<comment><USER5> I think you are underestimating how few people actually would do such a thing at a young age.

<comment><USER9> I was booting and operating my father's Apple IIe at 4 by myself and I don't consider myself exceptional, but rather having experienced exceptional circumstances.

The year was 1985. Against his hierarchy decision, my father bought one for work under cover of some big carbon paper order (that was used a lot at the time, so it really did go unnoticed) and hid it at home.

Bundled with the computer were two floppies with games, one with a rabbit in a maze and the other I can't remember. He booted them for me a few times. Then one day as he was gone at the office, I booted the thing on the DOS floppy, inserted the rabbit game floppy and started the game. I was caught red-handed when he came back. Boy was he angry (what if I screwed up and destroyed weeks of work?). It's actually the first time I can remember being scolded. Later when he cooled down and realized I could actually get it, he briefly showed me more things like LOGO and BASIC, which I enjoyed a lot. He did not know much on the programming front (he was more of a MultiPlan and WordPerfect user) so I was on my own on that front. I remember creating chains of GOTO to generate infinite loops on purpose, and genuinely trying to understand and build very crude purposeless but exploratory programs. Yet at that age and completely by yourself you really can't do much.

Then, less than a year later the computer gained its due recognition and went at the office, at about the same time we moved far away. I was not to touch a computer again for eight long years.

<comment><USER8> Wow, that's a sad story.

</comment></comment></comment></comment><comment><USER5> Great and inspiring piece (I have a 3 year old) but I disagree with this:

 _And then it occurred to me: the perfect GUI for a child would be simply xmonad (a tiling window manager that can be controlled almost entirely by keyboard and has no need for mouse movements in most cases._

The perfect UI for a child and for all other people unfamiliar with a computer all in all is the touch screen.

The reason why the children have problems with the icons being too small and accidental dragging is because the mouse represents an extra layer of abstraction.

If you think about it your brain goes horisontal to vertical and not even in a one to one relationship.

<comment><USER10> > The perfect UI for a child and for all other people unfamiliar with a > computer all in all is the touch screen.

And how does one become familiar with computers if they only live in that world? This is no different than any other professional bringing their kids to the shop/office to learn what daddy does.

<comment><USER11> Except that in this case, it's more like "daddy is a woodworker, so here's some stone tools"

<comment><USER12> xmonad is more like an ultra precision electronic saw. Difficult for most people to use, but amazing productivity tool to the expert.

Now he just needs to teach them emacs.

<comment><USER13> In my opinion, save the configuration, XMonad is simpler to use than mouse- based window managers.

You can open and close programs, change their layout, move between and resize them. All with, what, 7 shortcuts?

With mouse-based WM's there's click to focus, click and drag, right click, lots of buttons and icons everywhere and you have to constantly work to make the relevant information visible.

There's a reason why people don't go back after using tiling WM's - they're _easier_ and more efficient to use than their mouse-based counterparts.

Consider that mobile phones use a similar approach by getting rid of the concept of windows and they are, by a long shot, easier for most people to get to grips with. Tiling is a similar concept except that more than one application is visible at the same time. The lack of a window stack helps. Navigating a big physical table covered with pieces of paper (i.e. all applications on the same layer, where the table split into segments - <USER2> desktops) is infinitely easier for a human than a stack of paper (i.e. finding something in a binder or book is more annoying and slower).

<comment><USER12> They are indeed easier to use, but more difficult to learn. Tiling window managers are like giving someone a control system with no labels on the buttons. Users need to consult a manual to know what they're doing - <USER3> isn't something people generally like doing.

You don't need a manual to figure out how to use a touchscreen or whatnot though, which is generally why they're preferred by the masses, despite being inferior.

The same thing applies to emacs and vim too - they're capable of mostly everything IDEs do and much more, but it's non-obvious how to do things without taking the time to learn, read, search - something that people are less likely to do with age - but kids don't have a problem learning.

There's other issues like consistency too. With stacking based UIs you have some consistency built in, but you don't necessarily have it with the tiling window manager and minimal UI applications - take for example the difference in keybindings between xmonad and emacs. Another problem is that some apps can "hijack" your WM keybindings.

You can fix those issues by modifying the configs, but that's an even further level of learning that most people have no chance of ever doing.

<comment><USER13> >but you don't necessarily have it with the tiling window manager and minimal UI applications - take for example the difference in keybindings between xmonad and emacs.

There should be a formalised standard for keyboard based navigation. In fact, two standards might be a better approach - vi-like and emacs-like, since each of them caters to one of the major ways that people think. Having said that, with a little bit of work, you can get most of your daily applications to use vi keybindings (plugins for FF, Thunderbird and Chrome, Vim itself, custom keybindings for the WM, vi-mode for Zsh - in combination they create a programmer's version of Zen).

Thinking about it, I wonder if peoples' preference for these things might come down to their personality type - <http://en.wikipedia.org/wiki/Myers- Briggs_Type_Indicator> I'm not aware of any studies attempting to draw correlations between these things but, given how predictable people can be, it wouldn't surprise me if they existed.

>You can fix those issues by modifying the configs, but that's an even further level of learning that most people have no chance of ever doing.

When it comes down to it, the current generation of hardcore tiling WM's are experimental prototypes paving the way for the desktops of tomorrow. Just as many aspects of functional programming are seeping into popular languages, so tiling window management is seeping into popular desktops. I don't know about OS X but Windows 7, Gnome and KDE all support dragging a window's titlebar to the left-most or right-most edge of the screen to vertically tile it. It's extremely basic but it's an obvious influence.

<comment><USER12> I don't agree that there should be some standard layout - it should be based entirely on the user's preference - so emacs, vi, or whatever you like should be possible. The flaw is that every app decides it's own keybindings, and ignores the preference the user has set for his system.

Rather than a standard, we need a better API abstraction for keybinding, where users can control their keybindings from a single point, and it'll affect all their apps at once. App developers shouldn't tie functionality to specific keys, but to some abstract keys which the user controls.

I use Dvorak layout, but I generally prefer the conventional key locations for common tasks. So for example, cua-mode in emacs, I expect undo/cut/copy/paste to be in the locations of z,x,c,v on qwerty, except they're ;qjk on dvorak. It's awkward to make each app support this configuration - particularly when they all require a different language to configure.

Also, when a user configures his layout, he should be able to specify whether individual applications can override those keybindings or not - apps should request key combinations rather than assume they're available.

\---

The personality types is an interesting thought, but I don't think it's really a big deal, because if you can't predict people, you just need to set a trend and make them predictable :p.

The editor wars are really blown out of proportion because of popularity or fashion rather than their technical merits. People are emotionally attached to their tools and aren't interested in the other anyway. I mean, who has the time to learn both emacs and vi enough to compare them objectively anyway? I've not used vi enough to really assess it's capabilities.

Maybe the personality type could give an indicator of a default setting for developers to put in. I'd be surprised if there's no research in this area, considering every desktop developer claims "we're building what users want after conducting usability tests." (I'd like to know who the audience for GNOME's testing was.)

\---

I do hope tiling features will make it into desktop systems. Bluetile is an interesting example for gnome integration, although completely broken for gnome3.

Another interesting app is Opera. Their tabs have been based on MDI since day one (mid 90s). It basically has it's own internal WM, which includes some tiling features. (Opera's initial tabs were really tiles before they became the tabs we all know now.)

I think the other desktop environments are a bit slow on the takeup with tiling, and it's perhaps come to a grinding halt with the focus on tablets and touch now. We probably need to start experimenting with introducing touch into our tiling WMs to support heterogeneous inputs rather than exclusively keyboard too.

Probably the biggest joy about tiling WMs is that they're not some fixed system we're forced into using by the trendsetters, but they're more like APIs for developing your own personalized WM in. Until we build some customization abilities that don't require modifying code though, they probably won't become too popular - only minor features leaking into other systems.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> I feel sick to read this. The kids learned the world in a twisted way. I really think kids should know how transistor work before work on computer. Otherwise he took too much unreal things for granted.

<comment><USER15> You really think it's feasible for a 2 year old to have an idea how a transistor works when all they want to do is watch videos of kitties and puppies on YouTube?

<comment><USER16> I believe ww2 was facetiously pointing out that the father in this piece chose to introduce his kids to an arbitrary point in the abstraction chain under the premise that anything higher is hiding too much of the implementation.

That said, while you could _try_ and have your 2 year old build ENIAC out of from-scratch vacuum tubes I doubt you'll have much luck - I'm pretty surprised at the degree of success the author had with text terminals at that age, to be honest. As the father of a nearly-2-year-old this definitely has my gears turning...

<comment><USER15> And here I was playing with Legos as a tot.

</comment></comment></comment></comment><comment><USER17> > I didn't want our boys to skip an entire phase of learning how their > technology works

I don't think they're necessarily learning "how technology works", what they are learning is that they have control and can interact in different ways. I think that will be the most valuable thing in the future. Hacking is all about taking something and using it in different ways to "normal", teaching this concept from very early on (by introducing multiple interfaces) will be a great way to ensure in the future that they understand problems have multiple solutions and that technology works for them.

<comment><USER18> It seems to me that starting on a GUI, or even more so on a touchscreen, teaches the mindset of "My computer tells me a bunch of things it can do. I pick one from the available selection."

Meanwhile, the CLI has a very different underlying message: "My computer asks me what I want it to do. I can tell it to do pretty much anything."

That strikes me as the real value in teaching CLI use at an early age -- it reinforces the idea that your computer can do whatever you want it to do, not just whatever it was set up to do when you got it.

That's a very important lesson, particularly in these days when so many of the big players in technology seem keen for consumers to forget it.

<comment><USER8> Well command lines can be quite stubborn when they don't want to do something.

CLIs were more interesting to poke at though and allowed you to be much more specific about what you wanted to happen. For example say you want to move all of your .mpg files from all subfolders of a particular folder recursively to another specific folder this is generally a lot easier with a CLI.

CLIs also don't tend to change very much, I've been using Linux for over 10 years and been through godknowshowmany window managers but I've never had to re-learn the CLI stuff.

<comment><USER18> Yeah, it's not like you can do strictly _anything_ with a CLI, of course.

An analogy that came to mind after I posted: a GUI is to a CLI what a buffet is to a well-stocked kitchen.

</comment></comment></comment></comment><comment><USER19> Am I the only one that feels a little queasy reading this?

First of all: I think it's great to be teaching your kids about how computers function at a basic level. I think it's cool and admirable that his kids can use a command line.

But the very evidence presented in this article suggests that he's repressing his children from having more fun, more "delight" than they're able to looking at a bunch of text. They're so excited by the visual interface because all young children are excited by stimulating visuals.

The (admittedly poorly written) comment which is currently at the bottom of the thread points out exactly what I was thinking. Imagine how excited, how delighted, these kids would be with all of the possibilities afforded by an iPad. The diverse critical development opportunities and perceptual stimuli would seem to far outweigh the advantages of being able to think like a programmer or whatever. And, it would just be so much more fun for them, in my opinion.

<comment><USER20> The iPad, to me, represents everything that is wrong with raising children.

First of all, I should say that computers are a small part of my boys' life. We live on a farm. They get lots and lots of time to explore outdoors, climb in trees, and all that good stuff that so few kids get these days. That is really more important to me.

You are probably right that they would also be delighted at an iPad. But what would that achieve? A simulation of things they could do with paper, out the front door? Reinforce the message that cool things are expensive and welded shut?

Research shows, and I firmly believe, that children need unstructured play. They need to be able to pretend, to create, to examine, to fail cheaply. Lots of toys and gadgets don't foster this. Don't get me wrong; our boys have plenty of toys, but we try hard to keep it from being so vast an amount like so many people have. When we travel, we don't bring a lot of toys. Walking in downtown Portland, for instance, they might find some leaves and make a game out of throwing them in the air while we walk.

We built this computer from spare parts. They were active participants in that. When it breaks, we will take it apart together and look at it. Maybe we will open it up other times just to see what it's like. This machine was free; it was built from old parts in my basement that I had discarded.

I vehemently disagree that more cost == better experience for children.

Two other things they've loved that were also free to me: an adding machine about to be thrown out (they love printing "cards" with it), and a manual typewriter (think of all the mechanical discovery awaiting one of those.)

Outdoors, they invent all sorts of games. They both have picked out trees on our yard that are "trains", designating branches as various controls and sometimes inviting me to ride on their train.

<comment><USER5> I don't understand this.

Was learning how to use the VCR everything that is wrong with raising children?

How is the iPad limiting? Aren't you confusing the Apple ecosystem with the apps on there?

Give them a piano app and see them fail, Give them a drawing app and see them fail. Let them play some of those gravity games and see them explore and fail.

I understand what you are trying to do. I too am thinking (and overthinking) how to best allow my kid to become great. I see no problem in you doing it. I would encourage it. But you seem to be overthinking your principles.

But that's just me. My son loves hammering at the computer too. (He is working he says) but he also loves playing games and music on his iPad.

They aren't mutually exclusive. For a child the iPad is not a walled garden and if they think it is then just jailbreak it with them. Actually now that I think of it, that seems to be a much better lesson in teaching them how to become a hacker.

<comment><USER20> Perhaps my first sentence overstated it a bit; I was reacting to the person that was "a little queasy." Sure, it's possible to use an iPad in a way that is not actively bad, and probably beneficial.

But it's still a box sealed shut that someone else built. And, perhaps most devastating, it's designed to just work out of the box.

I'm drawing an analogy to the maker movement here. I don't want childrens' experience to be defined by others, or to live in the boxes invented by others, whenever I can avoid it. Left to their own devices, they invent their own boxes all the time. I would have never imagined that one of our trees would be a pretend locomotive, but there you go.

My first computer, a TRS-80 CoCo II, turned on to a BASIC prompt. Yes, you could run software others wrote. But you were almost inevitably learning concepts about the computer, too - how can you copy data from one disk to another when you only have one drive and your RAM is smaller than it, for instance? Sure, you can use something Tuxpaint on an iPad, but you wouldn't be using it on something you _built_.

Apple's ecosystem is the antithesis of the "I can do it myself" approach. (If you do jailbreak it, then I start to see some more value.)

Linux is the embodiment of the "I can do it myself" approach. I remember as a kid opening up a hex editor and modifying the boot sector of a floppy so that when you forgot it in the drive at boot time, you saw my name instead of the "Non system disk or disk error." But my boys will have source code, if they should ever want to use it. How cool is that?

<comment><USER5> It's a little weird having this discussion as I am fundamentally agreeing with you in what you are trying to do. :)

Having said that. I just cant help having the feeling that 99% of what you are doing with your kids is lost on them. I.e. they are not there yet where they can actually appreciate and use all the information they are receiving.

I went through the same things with my son and music. As a former musician myself I was of course eager to have him learn to play an instrument. But more or less any music teacher i talked too basically said that before 3 learning an instrument was lost on them.

So instead we sing songs and I have bought a bunch of proper instruments that he can play around with as he wants.

On the iPad have have a very interesting synt app called MorhWiz and where he like to fiddle around with the other instruments he loves using MorphWiz.

This I believe is because the MorphWiz takes away some of the difficulties while still allowing for exploration. And there he actually plays stuff.

My point is. For your kids, the Ipad is like a linux system they can do everything they can think of with. They are not yet ready and cannot yet internalize the way you seem to think they internalize.

Again it's not my children, I am not in disagreement with your goals. But I think your kids could get even more out of this if you started from where they are not where you are.

<comment><USER20> <grin>, I do think we agree on the big picture, perhaps.

I completely agree with starting them where they are.

And yes, they do not yet know what a for loop is, or what a compiler is, or what it truly means to install something. But they do know sequencing of commands and cause and effect.

If a 2-year-old wants to pluck strings on a guitar, as ours has, then great! Maybe they will sing with their random music sometimes, and as a parent, that's beautiful. It is probably not teaching them actual skill in the technique of playing a guitar, but it's teaching them: 1) that "I can do this", 2) this thing make music, and 3) this is fun and merits more exploration.

I think I did meet them where they were at, and part of doing that was going ahead and installing a GUI for them now. There is no reason to believe that my excitement over a CLI when I was 5 was something unique to me. I think that many more children could do and enjoy it than are given the chance.

</comment></comment></comment></comment></comment></comment><comment><USER21> That's a fantastic idea, I think it should be a more common idea.

The first 'proper' computer we had in the house when I was about 8 was a 3.1 box, which was great, but the guy who helped set it up as I watched spent most of the time diving through a Windows DOS prompt Getting It Done. I immediately spent more time in there than in a GUI, eventually discovering how limited it was and moving onto Linux. It taught me a lot, and I always feel a little sad that kids won't get that experience without awesome parents like this.

</comment><comment><USER22> I am not a parent so as far as childhood development goes I'm completely ignorant. Is it normal for a 3-5 year old to have the literacy skills to interact with a text+keyboard interface?

<comment><USER20> At 3, Jacob knew his alphabet and could find keys on the keyboard. He learned enough to remember, by rote or otherwise, that "worm" launched the worm game and "sl" launched steam locomotives, sometimes using a cheat sheet for help. He could not read or comprehend responses very well. (He derived a LOT of enjoyment from typing nonsense commands, then having me read the error messages that started with _BASH_ )

At 5, he reads well. He is not good at spelling - one reason I give him a short cheat sheet - but he can make out a lot of what's going on. Not everything, of course.

We didn't start them on computers from the cradle. We read books to them a lot, and play games involving numbers and words. Jacob loves Dr. Seuss books and word games.

But lest anyone think we're some sort of tiger parents, we also open the front door and let them go play outside, maybe sending some sidewalk chalk with them if they want it.

I got a TRS-80 at about 5. It had only a CLI (BASIC-based). That was a huge incentive for me to learn to read. Nobody else in the house knew about computers then either, so unless I wanted to wait for my dad to get home from work, it was me and the manual.

<comment><USER23> The idea of sl being something that you _want_ to run is awesome.

<comment><USER20> <grin> There are a whole bunch of excited preschoolers out there running sl now, apparently, judging from the comments here: <http://changelog.complete.org/archives/6359-a-proud-dad>

</comment></comment></comment></comment><comment><USER24> "When I sat down to think about it, the typical GUI design does not present a very good "it always works the same" interface that would be good for a child."

See RISC OS, the old Acorn Computers UI. It was designed exactly this way.

Back to the present, would Sugar be any good for these two? Seems 'monotonous' in the Raskin sense and child freindly.

<comment><USER25> I've never gotten to use RISC OS; could you say a little more about what you mean? Just that it was very consistent?

<comment><USER24> Yup, one way of doing each action. Was designed to be used by primary school children and the networked versions administered by primary teachers.

<comment><USER25> Thanks. I'll have to dig up a YouTube video showing around the system, sounds interesting.

<comment><USER26> Then you can try ROX (rox-filer) which try to recreate in a modern way, the Risc-OS experience. And it's a damn fine file manager, anyhow.

</comment></comment></comment></comment></comment><comment><USER27> I wish they'd teach Linux in school, starting from the kernel, instead of this "how to use MS Office" tripe that passes for "computer science" here in the states.

<comment><USER28> >this "how to use MS Office" tripe that passes for "computer science"

I have gripes about my CS education but this seems overly hyperbolic. Or, where did you go to school?

<comment><USER29> I think he's referring to high school, where the selection of computer courses is far more limited. At my high school right now (in the United States), the only computer course covers using MS Word, Powerpoint, and Excel. Absolutely no programming courses whatsoever.

(As a side note, I self-studied AP Computer Science and it isn't much better. Its pretty much all Java syntax and logic with a few sorting algorithms thrown in so that they can call it "computer science").

</comment></comment></comment><comment><USER30> I got my 8 year old an arduino, so I'm secretly taking him through Kernighan and Ritchie. Each night I teach him a new little snippet and the next day he'll run with it. Its fascinating to watch as he takes the concept and pushes it as far as it will possibly go, ending in a massive barely working kludge... and then the next night we learn a few new lines that make it all simple and easy and its sheer joy. Its like watching Peter Parker get spider powers.

Just learning that programs could be broken into callable functions was a moment of stand up, open mouthed wonder.

Don't wait. Do this with your kids now.

<comment><USER20> Awesome. That is a wonderful idea.

</comment></comment><comment><USER31> This is a good story, although there are some thoughts that come to mind when I consider what's happening.

It seems as though GUI environments are being treated as second-class citizens. While I live and breathe my command line as I have for years, GUI interfaces run the world. As long as the kids learn GUI interactivity at some point, they'll be better prepared for the world.

But the excitement those kids are getting is that feeling of control, of if-I- do-this-then-that-will-happen, which is a powerful motivator. startx and xmonad can offer a simplicity that would very much appeal to young kids interacting with a computer.

All in all, good for Dad and kiddos. They like doing those things, and Dad is focused on helping them succeed. A winning combination.

</comment><comment><USER32> Just think how happy they would be with an iPad or something like that. I think it's all relative, but it reminds me of that film "about a boy" where the kid was really happy to be receiving something at all.

Also computers in the 80s - simple compared to even a raspberry pi

<comment><USER33> > Just think how happy they would be with an iPad or something like that.

And they would learn absolutely nothing about computing.

I think you missed the whole point of the article.

<comment><USER19> Which is what? That learning about computing is more important for children 5 and under than happiness?

<comment><USER34> An iPad will not make you happy.

Happiness comes from our relationships, our health, our work, our marriages, and our self-concept. Technology is necessary for _none_ of these for children.

With, that is, the possible exception of self-concept. "I know how computers work and how to use them" is a positive self-concept. Author is knocking the ball out of the park here.

<comment><USER19> I didn't argue that an iPad will make you happy. Rather that it would make a very young child more engaged, more "delighted" and thus, a bit happier, than would a command line interface. As I said elsewhere, it seems even more preferable for kids that young to mostly skip all of the above.

<comment><USER20> I disagree. A blank command line is freedom. It's an invitation to do whatever you like. To discover. To try. To fail. To explore.

If you have 5 (or 50) icons to choose from, where's the blank slate? Where's the great outdoors? Where's the "I built it myself!"?

The boys love to eat the food from our garden that they helped plant and nurture a lot more than food from a store.

If they have ownership and freedom to explore, engagement is natural.

If you don't start with the preconceived notion that the command line is too hard or not engaging enough for children, maybe you will find that it isn't.

<comment><USER35> I love the CLI and spend much more time in it than in every other UI, but I was a Windows user for years, where I barely used it, and I still felt all of that.

My blank slate was an empty text file in Notepad and a browser (this was on a public computer, I couldn't install stuff).

On the iPad, I'd say the blank slate is Codea: <http://twolivesleft.com/Codea/>

</comment></comment></comment></comment></comment></comment></comment><comment><USER36> My experience has been that the earlier in life that someone is introduced to a technology, the easier it is for them to learn it. Kids these days pick up computers and the Internet very quickly, while many older people (esp. 60+) struggle to understand it. I think this is largely just a property of the human brain - our capacity to learn new things decreases with age.

I was fortunate enough to have a father who did pretty much the same thing as this guy. Growing up in the 80s, I was introduced to the DOS command-line, BASIC, Turbo pascal, building and upgrading my own computers, etc. I distinctly remember the day when I was 8 years old and asked my father, with no prompting, "Dad, how do you make programs?". This was 24 years ago and pretty much every day since then I've been working with computers in some form or another, completing three CS degrees, teaching the subject at university, and starting my own software company. I'm pretty sure none of this would have happened if it wasn't for my father.

As a CS lecturer I've seen some students who come into the first year courses having never written a line of code before in their lives, and others who were writing their own games all through high school. While there are some exceptions, the latter group tend to do far better at their studies and also often just naturally do their own projects outside of formal study, which IMHO is critical for learning the subject properly.

I think getting kids into the technical aspects of computers at an early age gives them a tremendous head start over their peers who are playing Xbox and angry birds on their iPad. This guy is giving his kids two of the most important gifts of all - education and inspiration, of the sort they'll never get in school.

</comment><comment><USER37> I love reading about the adventures of Jacob and his computer (and Oliver too!). These stories pop up on planet.haskell.org and they always make my day!

</comment><comment><USER38> Sweet story. I cant help thinking whether all of these experiences would have seemed completely natural to your kids if they had been presented with a GUI from day one.

And if it would, would that make it easier to learn more, or if the excitement from switching to a GUI is really what they needed to tackle a steep learning curve.

</comment><comment><USER39> I was born in 84 and have a lot of fond memories with Windows 3.1, solitaire and the progression of computer games as I grew up.

I sincerely hope this father kids his kids out of the house and into the backyard to make friends, built forts, break things, and all the other awesomeness I experienced as a kid growing up. If my dad started putting me in front of a terminal when I was 2 or 3, I'm nervous how I would have ended up.

Because I received my first programming book (HTML in 24 hours) when I was 13, I had plenty of years to learn to code, but didn't sit inside while all the other kids were playing for 13 years. Now I'm coding everyday, having a blast at my startup, and my best friends today are the kids from my neighborhood that I was building forts and setting off fireworks with 20 years ago.

<comment><USER20> Absolutely I do. See my blog for examples. The other stuff is more important than the computer, and they spend far more time outside than they do at the computer. One of their favorite activities is to build their own river systems using a slow trickle of water out of a hose & pipe onto a small mound of dirt.

</comment></comment><comment><USER40> To use commandline, we must be can read and write. I even can't read when i'm 6 yo.

</comment><comment><USER41> When I have children, I also want to do things like these. I have a bunch of old Sun computers that I want to expose them to, not to mention an Amiga 1200 and a SGI O2.

<comment><USER32> Can I come over to play as well - that is a great collection of hardware that you have.

<comment><USER41> Everyone's welcome!

</comment></comment></comment><comment><USER42> This is really awesome and I finish the whole article. I am 21 now, having almost graduating from a finance degree now and I started to learn coding, there are just way too many things in my head that I want to build. I keep a journal for all my ideas and hopefully one day I build all of them. The excitement is just awesome! I have done some investing and trading and I thought it was my favourite to do but then no...I am like new born now!

</comment><comment><USER43> My 4.5yo has been using iOS since a bit before 2, has his own ipod touch and uses the family 1st gen iPad. He came home from kindy excited by using a PC. I couldn't understand it but now I do. Kids love to learn and he needs new challenges and this is another thing I can do with him. I have been waiting until he has better literacy to start on the cli, but perhaps the cli will help him learn letters and typing. Nice one.

</comment><comment><USER44> I have a 34month old and 4yo, and this has inspired me to give them a old machine tonight. They will love 'sl'. I will also try the xmonad and tuxpaint stuff with the 4yo. She will like having her own computer and will be tickled to be 'working' like Daddy. They use an iPad sometimes, but I'll be interested to see how they feel about typing on keys and using a trackpad to paint with (the mouse doesn't get used).

<comment><USER20> I would love to hear how they react. I'm excited for you just reading this!

<comment><USER44> The 4 yo was excited about getting a computer, but didn't care at all about using it. She just didn't 'get' the steam locomotive. She was willing to participate (and was interested) in typing characters on the screen and having something happen, but I just didn't have enough at an appropriate level to maintain her interest. I had hoped to work up to the gui and tuxpaint, but we didn't get that far before she completely gave up. I think there would've been (general) merit in this approach, but there's just not enough command line apps that are suited to this age group. The 2yo could also make the train go, but he didn't recognize it as a train. It was probably too fast to decipher the ascii art.

Somewhat strangely, starting the following day, the 4yo started calling her fake baby cell phone a 'computer' and is really in to pretending to do things on it. Crazy stuff like talking about how well she's doing at playing videos games. We don't play any video games in our house. It's as though I unlocked some possibility of having her own computer and her mind is running with it.

</comment></comment></comment><comment><USER45> when I started using linux, I went through two phases. the first one was marked by knowing, generally, which commands to invoke from the command line to make the computer do what I want. I had very little idea of what was going on in the operating system and the userspace runtime, and it didn't matter because the creators of the OS and runtime were smart and the system behaved sensibly.

I thought I knew what was going on, I had this feeling that I was in control of the computer, but really I wasn't, I was just as much at the mercy of the operating system maintainers as I was when I ran Windows. If a command line program reported an error or crashed, the procedure to fix it was identical to the one on Windows: ask your friends, or search the Internet.

It was only after many years of doing system level programming that I was actually able to fix problems that the original tool creators did not anticipate.

I think many people park themselves in front of a command line for five minutes, "learn bash", and think "hooray I am in charge of the computer". You're not.

</comment><comment><USER46> One of the coolest things i remember doing as a kid was sitting on an acorn computer and writing some text that then controlled a Lego robot. I didn't know it at the time but that was my first exposure to programming.

It's really great when a kid gets massively excited about learning how to make things work whether it's a computer or something else.

</comment><comment><USER47> I think that modern OS GUI has helped increase productivity. Not giving your kids exposure to a modern OS means that your kid would be playing catch up with other kids when exposed to one, say, in school.

A person's job prospects may also be limited if they don't know, or are not comfortable with, what the majority uses

<comment><USER48> We're talking about a five-year-old here. I think it's absurd to think that any of us know what a mainstream productivity OS is going to look like by the time it affects his "job prospects".

At that age, what matters isn't any of the material learned. It's the attitudes and self-conceptions that matter. If a five-year-old learns that he likes telling computers what to do and that he can get steadily better at it by exploring, that's a huge win for his future.

</comment></comment><comment><USER49> Can someone explain in simple words what is xmonad?

Is it used together with X? Instead of gnome or xfce?

Or instead of X?

<comment><USER50> It's a window manager. That is, all it does is draw and position windows for your programs. It serves the same role as KWin in KDE or Metacity in Gnome.

There are some important differences between XMonad and normal window managers. In XMonad, you cannot drag windows around and they cannot overlap. Instead, the windows are positioned automatically and can be controlled with some simple keyboard commands. Additionally, XMonad lets you configure its behavior--how it lays its windows out--with Haskell, a very nice functional programming language.

You can use XMonad with an existing environment like Gnome; you would then have tiling windows that do not overlap with all of the normal Gnome features you're used to. However, XMonad can also run alone for a more minimal environment where you do not have extra panels and menus and use the keyboard much more often than the mouse.

Everybody I know that has used XMonad really likes it. It really makes you more productive by managing windows for you--you don't have to drag them yourself. If you have some spare time, you should try it out and learn the basics. It's also a good excuse to learn Haskell, which is an insanely awesome language and great fun.

</comment></comment><comment><USER51> > I helped him them in as root for the very first time.

Aww, this is so adorable :-)

</comment><comment><USER52> I don't have my own children yet, but hope to some day. Thanks for the story and a lesson on good parenting.

Nice to read such stories in today's world of doom and gloom.

</comment><comment><USER53> im tired of these "1mo old discover the theory of relativity" articles and it the best thing evar. can't we actually evolve a little bit?

</comment><comment><USER54> O, wonder! How many goodly creatures are there here! How beauteous mankind is! O brave new world, That has such people in't!

</comment><comment><USER49> My son is 1 year 10 mths old.

To people with actual experience - when to start showing cli?

<comment><USER20> Here's what I'd suggest.

Find an old keyboard, one you don't mind taking some abuse. Plug it in to a computer somewhere, put it in a 80x25 text mode where the letters are nice and big.

Then log in and let them bash at it randomly to their heart's desire. They'll be able to make lights on the keyboard turn on and off, and see the effect on the screen of what they do on the keyboard. It might only last a few minutes at first, and that's fine.

Once they can recognize letters pretty reliably, they could start with some simple CLI things. At almost 3, Oliver can log himself in, but I usually have to point to each letter in his username before he hits it. He knows his letters, but not his QWERTY, yet. He also has some issues with repeating letters. But once he's logged in, it's mostly random mashing at the keyboard for him yet too. I bet it won't be for long though.

As to age, each child is different. Follow their cues. If they happily sit on your lap for 15 minutes, seriously studying, or laughing at the hilarious error messages they make, then it's time. Or if they start wanting to use your computer. If they run off after 30 seconds, try again in a month or two.

<comment><USER49> John, thank you for excellent advice! Will try this approach.

I allways stumbled when my son was drumming the keyboard with all apps open, feeling uneasy that he could do some damage.

Please continue with BabyHacks series.

</comment></comment></comment><comment><USER55> Ouch, teaching kids to log in as root. Bad dad, bad! Teach them sudo and explain that you were possessed by the devil when you mentioned root before, and to forget all about that.

</comment><comment><USER56> Remember when i was 3 and typed commands on a XT to run games (Sokoban, etc)

Learned to use dir and cd by just watching my father doing stuff. Soon i took more fun exploring other files than playing the games</comment>


Blackberry-imitation keyboard for the iPhone - <AUTHOR> http://typokeyboards.com/

<comment><AUTHOR> While I'm no expert on what RIM is doing these days, it really seems like if they could just get their act together, motivate more development for their platform, people wouldn't have to make imitations of their greatest selling points on other devices.

The market is clearly there -- why isn't RIM doing better?</comment>


Looking for experienced and qualified freelancers for my new site - <AUTHOR> https://www.gatherli.com/ <comment><AUTHOR> Working with Gatherli we bring the jobs to your inbox. No more struggle to find clients. We guarantee payment, every job you work with us gets you a legally binding contract and a salaried wage. Lastly, there is no obligation, outside of the work brought to you by Gatherli, you can take as many other jobs as you want. Use us as a base income while you pursue other gigs, or take multiple jobs with us!

We are looking for people with at least 2-3 years experience in technical or business related skills.

If this sounds interesting, head to our site to sign up before we officially launch! Please have your own computer, and be available to work remotely.</comment>


The human cost of the Kindle - <AUTHOR> https://www.theguardian.com/technology/2018/jun/09/human-cost-kindle-amazon-china-foxconn-jeff-bezos <comment><USER2> A lot of people here are saying that although their poor working conditions are unfortunate, those jobs are better than whatever alternative they would've otherwise had. However if those same workers were U.S. citizens in the United States, then for whatever reason a lot of you would then take it more seriously.

Morality should not be restricted by geographic borders.

<comment><USER3> It's just not a company's job to care about morality, only to optimise to maximise gain. It's the law's job.

Saying this is not taking sides or being "cynical" or "capitalistic". The point is if you want change you have to FIGHT to change laws and make them be enforced (through lawsuits / unions). It's always a power struggle and you'll stay on the weak side if you keep screaming "morality" at corporate entities and rely on their good will to enforce workers right... Saying otherwise is deluding other people and/or yourself of reality, but i guess it feels good to feel on "the right side" without actually doing anything.

source: many family members in unions who fought for their rights in france

<comment><USER4> >It's just not a company's job to care about morality, only to optimise to maximise gain. It's the law's job.

It's everyone's job.

<comment><USER3> > It's everyone's job.

it's every PERSON's job yeah. not companies.

</comment></comment></comment></comment><comment><USER5> Compare this to India, where you could be a daily wager working 14-16 hours days, no weekends, no benefits, on something that might be back-breaking, hazardous, and pays just enough to get by. Your employer could abuse you, dock your pay, and would barely spend anything to make your job safe. Work might include cleaning swears without any safety gear, labouring under a sweltering 45C weather, or working in hazardous factories.

I am not espousing the inhuman treatment of these workers. However, for many people in India and around the world, this would be an order of magnitude improvement of their lives. I think China is on the right track. The working conditions would get better as the economy grows. The injustice might seem appalling, but have you wondered what the alternative is?

<comment><USER6> >The injustice might seem appalling, but have you wondered what the alternative is?

Yeah, wealthy people not living like space-age Caligulas on the backs of disenfranchised poor people. Seems like a pretty good alternative to me.

<comment><USER7> Where do you think wealth comes from? It is the product of knowledge and institutions and economic growth. It is not always off the backs of others. In fact most of it is not. We are about a hundred times wealthier than we were before the industrial revolution. We can't have stolen this wealth as not the smallest fraction of it existed in all the world before the industrial revolution.

If we deny these people the prospect of working in factories we are doing them no favours. How is removing demand for their labor going to make them wealthier?

It is not the sweatshops fault these people are poor. It is their poverty that makes a job you find unappealing appealing for them. By all means lobby to increase foreign aid. By all means donate cash via Give Directly.

But don't think for a moment you are enriching these people's lives by reducing the demand for their labor. Such thoughts are economic insanity.

<comment><USER8> > Where do you think wealth comes from?

In this case it's very clear where wealth comes from: Bezos and the rest of the Amazon shareholders are severely underpaying these workers in violation of China's labor laws. Did you read the article?

> We can't have stolen this wealth as not the smallest fraction of it existed > in all the world before the industrial revolution.

The capacity for self-deception is always a bit surprising. Confronted with a clear and concrete case of labor exploitation and wage theft you insist, never the less, it is not labor exploitation and wage theft. _That_ is economic insanity.

> How is removing demand for their labor going to make them wealthier?

There's no need to appeal to vague self-serving questions. The impact of labor standards on global trade have been studied and their impact can be quantified. Here, in particular, the California Effect [1] has been proven to be very effective in increasing labor and environmental [3] standards around the world. California alone could likely help here a lot by demanding regulatory advertising on these products. The first step would be to educate American consumers so they understand the enormous suffering that goes into these products.

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

[2] [https://www.nytimes.com/2011/10/28/opinion/free-trade-by- its...](https://www.nytimes.com/2011/10/28/opinion/free-trade-by-itself-can- lift-labor-standards-abroad.html)

[3] [https://www.nature.org/magazine/archives/the-california- effe...](https://www.nature.org/magazine/archives/the-california-effect.xml)

<comment><USER9> Neither Amazon nor Bezos do not py them directly. They pay Foxconn for assembled devices. If they paid more, Foxconn would probably just have better margins.

<comment><USER10> Not, if they demand better working conditions in their contracts.

</comment></comment></comment></comment></comment></comment><comment><USER11> It's hard to understand why people choose to put others in these conditions. For example, who makes the decision not to pay overtime and why? It will save one dollar and thirteen cents an hour. What could this possibly amount to, in the cost of a Kindle?

Perhaps this is due entirely to the race to bottom inspired by competitive pressure -- the various bidders all trying to find a way to offer Amazon the lowest bid -- or perhaps it is due to internal pressures, where managers can be rewarded for finding savings that are significant relative to the cost of a certain phase in the process, even if it is of little consequence for the cost of the final device.

<comment><USER12> Imho part of it is that responsibility for the choice is distributed. This makes it easy for everyone (including us Kindle buyers) to say to themselves "it's not my fault and I'm just going along with what is."

<comment><USER11> Maybe then the solution relates to that, as well. Just choosing not to buy Kindle won't, as an uncoordinated action, make any difference. Even if it were coordinated, not doing something doesn't generally paint a picture of what exactly to do. We want Kindles to be made, and we want people to be treated well in doing so, and we have no idea how to organize for such a thing to happen.

</comment></comment></comment><comment><USER13> how about the human cost of everything we buy then? Most of it is made in China anyway. Why single out Amazon and Bezos?

<comment><USER14> Jeff Bezos is literally _the richest human being on Earth._ If anyone could afford to pay his workers a fair wage, it's him.

<comment><USER15> What's a fair wage for his employees? How much more would it be than what they are currently paid?

Are people entitled to wages higher than the prevailing market rate simply because their employer is capable of paying such wages? Do you really want to live in a world where employees of rich people get paid more than employees of more average people? The vast majority of workers would not be lucky enough to work for a really rich guy and would be paid less for the same work than the few who do. That seems less fair than everyone being paid the market rate.

<comment><USER16> You seem to be approaching this from some sort of market optimization perspective where a race to the bottom is a good thing.

Consider what might happen if Amazon paid their workforce 5% more than their competitors instead of paying bottom dollar. Competition for that higher wage would improve the quality of their workforce (and then produce a higher quality product). Other employers would them also compete to get quality workers.

<comment><USER15> From the standpoint of fairness, why should a worker at Company A make more than someone who does the same job at Company B, simply because the owner of Company A is richer than the owner of Company B? That's what I don't like.

I'm sure Amazon would be willing to pay more to well-qualified workers than to less-qualified workers. But that's not the type of argument I was responding to. The parent comment suggested that Bezos should pay his employees more simply because he can afford to.

I don't see how it's reasonable to base employee wages on the wealth of the company owner -- if Amazon stock tanked and Bezos lost a lot of money, should he cut employee wages? If not, then why should he increase wages when his personal wealth increases? It would be better for employee wages to be based on the employee's skills, not the employer's personal financial circumstances.

<comment><USER17> Company A can't directly increase the pay of workers at Company B. But A _can_ increase the pay of it's own workers, making it more desirable than working for B. The increased competition on the labor market requires B to raise their wages as well. All workers win.

The equilibrium may still not end up with A and B paying the same, but personally I care more about everyone having _enough_ than everyone having the same, so even unequal wage increases are a positive in my book.

</comment></comment></comment></comment></comment></comment><comment><USER18> This isn't a problem with Amazon so much as it is a problem with the system Amazon operates in.

<comment><USER19> Wrong. Amazon can pick a factory that treats their workers ethically.

Imagine if Nike said that in regards to paying for child labor.

<comment><USER20> And thanks to the guardian, we (the consumers) can choose companies that pick factories that treat their workers ethically. Lest we lose our moral high ground.

</comment></comment></comment><comment><USER21> I find these articles more likely to make me numb to actual abuses because they're so one dimensional and banal.

At the end of the day, these are of the highest paying jobs in the country. "Fair pay" is highly relative and these jobs are slowly and surely helping to build up the Chinese middle class.

Progress is slow, and simply trying to graft the standards of Western societies onto places way behind is tone deaf to reality. Chinese PPP actually higher than USA which considering where the country was only 50 years ago should be seen as a great accomplishment [http://www.ibtimes.com/china- economy-surpasses-us-purchasing...](http://www.ibtimes.com/china-economy- surpasses-us-purchasing-power-americans-dont-need-worry-1701804)

This article is just a hit piece void of any actual economics because it's hip to hate on rich people, in particular one who got there by grinding out efficiency at a desk made from 2x4 for years before the success started.

Hell, when I was 16 working in a kitchen finally making money I did everything I could to get overtime and my goal was hitting 60 hours a week.

These countries will change at their own pace, and Bezos or Apple aren't evil for being of the best jobs in a given country.

</comment><comment><USER22> Leaking roof and broken bathroom light at their dorm? The investigator should really go check the workers living condition at home to know it's already an improvement. Don't hold the same western labor standards to the Chinese manufacturers, give them time and guidance to do better, and most importantly do not take the workers jobs away.

</comment><comment><USER23> You know what I would like to see?

Tariffs on countries with sub-standard working conditions and environmental practices.

<comment><USER13> Thats basically a tariff against developing countries you are asking for. How do you think the West got rich in the first place? With 30 hours work weeks?

<comment><USER23> >How do you think the West got rich in the first place?

By increasing productivity through industrialization and technology advancements, and by doing those things before the rest of the world. (and by having economic systems that accomplished this faster/more effectively than others, possibly also as the result of plagues that decimated the population a few times)

<comment><USER24> >> By increasing productivity through industrialization and technology advancements, and by doing those things before the rest of the world.

You seem to be ignoring the human labor part that happened around then and the backbreaking work that they did. Robots didn't get it done nor did the 40 hour work week.

<comment><USER23> Increases in productivity would have been _faster_ with shorter work weeks, but would have been detrimental to the wealth concentration such is the cost of capitalism. Reduction of hours is, to a point, a source of growth.

</comment></comment></comment></comment></comment><comment><USER25> I have very mixed feelings about working conditions in emerging economies. It feels good to single out Amazon but all of us who own a smartphone or own part of the S&P 500 benefit from this reality as well.

</comment><comment><USER26> > Most earn between 2,000 and 3,000 yuan, with permanent staff earning between > 2,000 and 2,500 yuan. In 2017, the average wage for a worker in Hengyang was > 4,647 yuan a month.

Math... my brain... what is happening...

<comment><USER27> I think what the sentence says is that the Amazon factory pays well below the city average?

</comment></comment><comment><USER28> > It is known locally as the Wild Goose City, for the birds that used to stop > off on their southerly migration

Used to?

I found this article about geese populations dwindling in China: [https://www.theverge.com/2017/5/22/15675010/china-wild- geese...](https://www.theverge.com/2017/5/22/15675010/china-wild-geese- migration-wetland-conservation-environment)

I wonder if that's why they no longer come to Hengyang?

</comment><comment><USER29> I wonder if there's market for ethical electronics. Basically buy the same electronics and sell them at higher price and give the money to the people working at said factories. If there was legit proof that the money is going where it should, I would totally pay like 15-20% extra.

<comment><USER30> It would involve removing planned obsolescence. An ethical cellphone would be one where every part is user serviceable and standardized. The Fairphone is having trouble even keeping manufactures producing stock for their older phones. There is so much value in keeping people replacing their devices every two years that I doubt we'll see PC/ATX style standardization in mobile hardware.

<comment><USER19> You're conflating "treating workers ethically and paying them a living wage" with "phones should be standardized". Two completely different topics.

<comment><USER31> Might be harder to have disposable culture with high wages though

<comment><USER15> > Might be harder to have disposable culture with high wages though

How so?

If anything, I would be more inclined to buy the latest and greatest tech every year if I had more money to spend. I think most consumers would do the same.

<comment><USER31> Substantially more expensive goods?

</comment></comment></comment></comment></comment></comment><comment><USER32> So what do we do about this? Should I cancel my Prime membership and never order from Amazon again?

<comment><USER33> I would, in general, recommend cancelling Prime. You can get better deals often elsewhere, so you might as well remove the default-to-Amazon behavior Prime gives you. You can still order on Amazon with free shipping for orders over $25 anyways. And Walmart will do free two-day shipping for orders over $25, making Prime mostly useless. Add some ship to store options for Target and Best Buy... There's nice non-Prime options out there.

<comment><USER34> Be honest.. although not always the cheapest.. Does anybody keep your credit card safer than Amazon online? And who wants to sign up for a new account with some random company. If the shit hits the fan, Amazon will cover me as a customer.

<comment><USER33> 1\. Amazon has a HUGE scamming problem right now. Fraudulent listed items are a big deal, combined with legitimate listings, so it's hard not to get suddenly overcharged or sold a cheap knockoff. Your credit card number might be safer, but your actual money probably isn't.

2\. You're not responsible for fraudulent charges, so worrying about major retailers having your credit card number isn't really reasonable. I don't recommend saving your credit card in any store website. Enter it each time so they can't store it.

</comment></comment></comment></comment><comment><USER35> We could have robots do the work. Would that make everyone feel better?

</comment><comment><USER36> Foxconn and similar manufacturers are always the favorite topic for western media. But the reality is complicated. The bottom line is that in most cases there's no slave labor taking place and nobody forces those workers to stay there. I have a relative who works in a Foxconn factory in Sichuan. She had a lot of other jobs before. She works there not because he's being forced like a slave or whatnot, but simply because Foxconn pays very good salaries compared to other options that she has (this manufacturer in Hengyang might be underpaying but this does not automatically mean that every factory does the same).

Yeah, the hours are very long compared to western standards. I also much prefer the way the Europeans find work-life balance. But that is because you are already a very rich society and you can afford that. Also there is also a cultural and historical difference. In China, or Korea, or Japan, wherever in East Asia, working long hours is very normal, be it for low-level workers or high-level executives. This is just a part of the culture. Without it, how could China which was so poor 40 years ago become rich and powerful again this fast? Even the US is much more workaholic than Europe, without the mandatory one-month holiday etc. If you imagine that Foxconn workers are subjected to slave-like treatments as if they were in a plantation or a mine, you can't be further from facts. Yes, I personally prefer to have a better work-life balance, but that's because I can already make the choices. For many underprivileged populace in China, working for Foxconn is the best possible opportunity they can get.

Of course I also do acknowledge that even though there's no essential slavery the work conditions can and shall be improved, especially now that China has got a lot richer already. In a sense the industrialists during the industrial revolution can also argue that they were not really forcing workers into "slavery", but the workers had actually no choice whatsoever since every workplace was the same (the modern Chinese factories are definitely much better than those places in the 18th century though). Anyways just wanted to offer a different perspective here. If you actually go there and talk to most of the workers I believe you'd hear a similar answer to that offered by my relative, i.e. they just want to save up some money when they can and this opportunity is as good as it can get under the current social circumstances. They'll likely return to their hometown to start something else after working such a job for a while. I do also believe that the accelerating social inequality in China is a problem that has to be addressed and there should be many more opportunities for the poor. But that's in a way similar to what's happening in the US and not something fundamentally/qualitatively different.

</comment><comment><USER37> I wonder at one point Bezos will start giving back. Will he became a Bill Gates or be more like Larry Ellison? At the moment it seems more the later...

<comment><USER34> Bezos has spent hundreds of millions of dollars trying to advance humanity... See blue origin and organizations like Mary's Place

<comment><USER38> Blue Origin is not philanthropy.

<comment><USER39> For some people they would consider it as such.

<comment><USER40> Those people are wrong.

It's maybe early yet to talk about what Bezos is going to do with his fortune; Amazon isn't all-grown-up yet. It's still possible he's going to go in the Gates direction, and I think it's much to early to say he's going in Ellison's direction.

But that doesn't make everything we like him doing an act of philanthropy.

</comment></comment></comment></comment></comment><comment><USER34> If multiple companies give you a quote.. Who wouldn't take the best offer?

Also.. If the job if so bad.. then do something else

<comment><USER29> An ethical person.

<comment><USER34> I would not invest in your business or give you a loan. Good luck to you.</comment></comment></comment>


Ben Affleck to play Batman in 2015 Superman sequel - <AUTHOR> http://m.bbc.co.uk/news/entertainment-arts-23806756

<comment><USER2> And Batman's reaction to this news: [http://www.youtube.com/watch?v=qhzZx8WLKQE](http://www.youtube.com/watch?v=qhzZx8WLKQE)</comment>