Hacker News new | ask | show | jobs
by ised 3803 days ago
To the author: I could not agree more. In the long term history of computing, I would hope this stage we are in now is not the height of the "revolution".

In my humble opinion, to which I am entitled, current Apple hardware is still well-designed like the Apple hardware of the past, but none of it resembles a "bicycyle for the mind".

These phones and tablets are "computers" but are programmable only by permission; they are consumption instruments that are meant to support some plan to dominate the communications, media, entertainment industries. Not my idea of a programmable, pocket-sized, networked computer.

All due respect to Apple and their wild commercial success, but looking to the future, I get more excited about my RPi or Teensy than I do about my Apple devices.

I have little interest in paying for a license to a bloated, complex, proprietary IDE (Xcode) and seeking approval from an "app store" when I can write ARM assembly from a netbook or laptop using a free and open source assembler and run it instantly on the RPi.

The revolution is yet to come. I hope. kparc.com/o.htm

2 comments

You can code on iOS devices. You can code in many different programming languages on IDEs available directly on the device. The code can be executed, and so programming is not inhibited.

What you are referring to is deployment. You want to be able to deploy or distribute your programs freely through the official channels. And because that is locked down, you consider it "programmable by permission." I would argue that this is not the case.

All I care about is the logic and elegance of programming. I don't care how my program runs — whether I write ARM code that is simulated through some App Store app. Whether I write Lua code that is run through an iOS game engine, or whether I deploy it directly to the hardware. That is immaterial because I still get to enjoy the art of programming.

Apple's phones and tablets are programmable computers and they can be programmed through officially and unofficially distributed apps. Both free and paid, open and closed source. Just because the official distribution model doesn't suit your personal preference does not make these devices any less programmable computers.

Also note that Xcode is free and you can freely deploy apps from Xcode to your devices. So I am not sure I understand your criticism here. Nor do you need to even use the closed-source IDE (Xcode) when the compiler and language are open source.

The tablet point is a red herring. 8-bit micros were hardly portable. So discussions about whether or not you can code on iOS or OS X are tangential.

The real issue is how easily you can code. 8-bit micros hit the sweet spot. No system available today comes close.

You powered up the machine, and the first thing you saw was a BASIC line editor. There was nothing else to distract you. It was instant-on with no setup.

You had to write code to use the machine at all. You even had to write code - albeit one line - to load a game from a tape.

For the gifted, BASIC led naturally to machine code and to graphics made by writing bytes into memory.

No modern environment has anything like the same simplicity, directness, or sense of natural progression.

Xcode, gcc, anything with a build system (never mind a package manager) are insanely complicated in comparison. They're so complicated professionals have to write books explaining them to other professionals.

Even Python - possibly the best candidate for a successor to BASIC - has a quirky IDE and two and a half different popular versions, and a lot of other complications that a BASIC cursor doesn't.

JavaScript? You really have to learn CSS and HTML and jQuery and $(infinitely long list of frameworks goes here) and - oh look, is that the time?

There is a huge difference between encouraging programming by making access to it friction-free and trivially easy, with a learning space that's comprehensibly small but not dumbed-down and toy-like, and making programming possible for users who don't mind hurdling a lot of obstacles.

That first category is completely empty today. It shouldn't be, but it is.

I often get told that my iOS coding app takes people back to their BASIC days. Most people who use it end up telling me they are strongly reminded of the magical feeling when they first discovered programming in their youth.

Kids and schools who use my programming app seem to enjoy the same feelings, but for the first time instead.

I don't believe that it was ever easier to code than it is today. There are myriads of ways to discover the magic of programming. Coding isn't "for the gifted," it's for everyone. Just because the gifted were the only ones who got past the opaque interface of an empty BASIC editor, doesn't mean we should go back to those days.

Your reminiscence for the early days exists right now in beautiful recreations of those environments by the people who loved them [1].

I have been developing a friction-free programming environment for over three years now. And it's not dumbed-down, or toy like. It's instantly on, and you're immediately inside the most interesting place to code, and you instantly run your programs.

I code with my three year old. We do logic and programming games, play with visual programming, and so many other things that never existed when I was a kid. It will only get better from now.

You and I live at a time where every new day is the best day ever to learn to code.

[1] https://github.com/antirez/load81

Yeah, complexity and that we hide the carrots. Bear with me.

I still remember a point in my early teens when I decided I wanted to learn to program. I ran into a wall so hard I stopped for a good year or two.

The complexity is a considerable cliff unless you have a guiding hand (thanks dad for throwing me a copy of K&R and going off to watch startrek!), and if you didn't, you're not getting to Python around today.

First there's the "What language do I learn" search query that turns up so much confusing information. "Depends on what you want to do with it". Oh gee thanks, but I don't know what I want to do with it. I just see that other people are doing cool things with it, so I want to know how they do it.

So you dabble in Python, C, Java, whatever has install instructions you can follow, because the moment a terminal prompt pops out you're scared that you'll screw up the family magic box and get into a lot of trouble. At this point curltarmake sounds like a Polynesian dish to you. Ack.

But you never actually do something useful. Thank you helpful online tutorial, I now know how to print "Hello World" 100 times without copy and pasting it (though that'd have been faster). There's carrots for sure, but you never see them at that point. So you're like "eh, this tutorial is silly, let me try another of these 10 languages suggested".

And then later on, in high school you may have the considerable fortune to get to take a programming class that walks you through Java out of all of the things. All these OO concepts make little sense to you, but eh, you'll be tested on this. The code is still onerous and useless, but you signed up for the class. Towards the end, you'll slowly get an idea of useful things you can do with it (finally! after all these years!). Most of all, you'll develop a distaste of Java.

The wonders of childhood. I honestly believe Assembly is much more straightforward than trying to grasp the current programming ecosystem as an outsider or a kid. There's so much stuff to become acclimatized to.

So recently I've been working with a guy who wants go get into programming, did a bit of HTML&CSS&JS&Whatnot half a year ago, but he was stuck in that "I don't know where I'm going" stage. First thing I recommended him was "Automate the Boring Stuff with Python", which is a book I absolutely adore, because it first walks you through the basics (including setup), and then immediately gives you one library after another to string scripts together with.

Yes, the code may not be teaching the best conventions or habits, it never delves into OO or version control systems, but then it's interesting hubris to think beginners care about that before they got any utility out of the skill.

And he enjoyed it, learned a bunch of things, started writing his on scripts and is now getting into Django and reading through the python cookbook.

So yes, I think we're missing the mark on showing kids and newcomers how to program, in part because it's gotten more and more complex, and in part because we give them keys to doors they don't even know about, whilst withholding those to doors they care about. We've got a major sequencing problem here.

Don't be silly- Apple gives Xcode away for free, it is not bloated nor complex, nor particularly proprietary (who do you think made LLVM?) and you don't need to seek anyone's approval to upload your software to github or to run it on your own device. You can write Arm assembly on your laptop and run it on your iPhone even easier than you can on an rPi.

You are really wasting time hating on Apple and spinning them (i you really are an apple device owner) since Apple is the one who broke open the mobile device so you could run software with out permission (Before you had to get AT&T for Verizons permission to put code on your phone) and who made high quality development tools and platforms available for free.

Apple is the one who shipped the Apple 1 with BASIC... and they haven't stopped.

XCode is not free. It costs 1 Mac. Given the price difference between the cheapest mac and the cheapest alternatives the cost of XCode something > $0

Posted from a mac

But that argument simply books down to "more expensive computers cost more". True a Linux computer might cost $500 and got $0 more you can program on it. A Mac might cost $800 and for $0 more you can program on it. The marginal cost to develop is the same. But I could easily spec up a Linux workstation costing thousands of dollars. Macs being expensive doesn't make Linux computers more expensive, it doesn't raise he costs for anybody else. So who exactly is being harmed here? I just don't really see what useful point is being made.
If we follow your argument to the logical extreme there is no such thing as free software because the computer to run such software almost always costs money?

(Unless you receive a computer as a gift or it is freely leased; but then that applies to Macs as much as any computer.)

The GNU toolchain (or whatever) is licensed to run on any hardware that you can possibly use it on, which will often be cheaper and more accessible than a Mac. Xcode requires Mac OS, which is only licensed for use on Apple hardware.

You can buy used Apple hardware fairly cheaply, but I think that post still has a point about relative cost.

I'm not suggesting that hardware can't be cheaper.

I'm saying that if you define free software as software that must be available on free hardware, then there is not much free software at all.

Maybe nobody will see this, but consider this thought experiment: You have a replicator like from Star Trek, which can make any computer that exists now, at zero cost (say it uses garbage you were going to throw away.) Presumably if you copied an Apple machine, it would not legally be a true licensed Apple machine, for the same reason that making unauthorized byte-for-byte copies of digital files does not create additional licenses to use them however you'd like. If Xcode's license requires licensed Apple hardware, it can't legally be run on that machine. On the other hand, FLOSS compilers could run on that, or on a free/libre hardware design that is not even in a grey area to replicate.

While the analogy is maybe a bit silly or different than what was originally said (interpreting "free of cost" more like "libre"), I think it illustrates a real difference that is relevant.

(Btw, I don't actually know Xcode's license -- maybe it only needs Mac OS for technical reasons, not licensing reasons, in which case it could legally and practically be run on any sufficiently correct Mac OS emulator.)

That's not his argument. His argument is that an apple computer is required for Xcode. An apple computer is a regular computer except that it costs more and comes with a bundle of software. Xcode is in the bundle. So... The price is indeterminable but definitely not $0. He hedged specifically against your reductio ad absurdem by mentioning the price difference.
The argument is that Xcode isn't free because its use requires a previous purchase of a computer from the same vendor.
Why does it matter that the money goes to the same vendor?

The argument is about whether the software is "free" or not. This only involves the cost to the end user. It is not concerned with where that money is paid.

> You are really wasting time hating on Apple and spinning them (i you really are an apple device owner) since Apple is the one who broke open the mobile device so you could run software with out permission (Before you had to get AT&T for Verizons permission to put code on your phone) and who made high quality development tools and platforms available for free.

Where on earth are you getting this nonsense from? You could install unsigned applications without anyone's permission on old systems like S60 ages before the iPhone.

PalmOS devices were touch screen mobile phone devices that were open to development long before Apple entered the market.

There were J2ME devices as well.

Apple didnt even have a mobile store at launch, it took third parties to get them out of their web only approach, you couldnt even write apps for the iphone until later patches.
> Apple is the one who broke open the mobile device so you could run software with out permission

I was writing apps for my Nokia smartphone before the iPhone was even a project.