Gee thanx, Apple

Since I was forced onto Mac OS X 10.9 (Mavericks) a couple weeks ago well… it’s more or less been fine.

I like how more apps are taking advantage of native notifications (sorry, Growl), and how with chat apps I can reply directly in the popup. Oh yes, and how Messages has native emoji support — that’s critical. 🙂

I like watching all the stats in Activity Monitor. The new memory compression stuff is interesting to me.

But all in all, life is as it was.

Except….

for…

my phone.

I didn’t realize it until a few days ago. A friend sent me new contact information. I updated things, and after a sync of my phone the updated data wasn’t there. What gives? So I give the iTunes app a deeper look and it seems the “info” panel is gone! How in the world am I supposed to sync my contacts, calendar, and other such things?

Oh I see.

Apple is forcing iCloud upon us.

Great….

Look, I know “cloud” is the hot new sexy. But I’m not willing to trust it (yet). I mean, it’s great for the horsepower and other processing and work stuff. But when it comes to trusting my data to someone else? Gee, that always seems to work out so well, right Adobe? And now they want me to store my credit card information in iCloud? Not just “no”, but “hell fucking no”.

Don’t worry, Apple. My distrust isn’t exclusive to you. And while I can see the convenience in having such information readily available across all my devices, once there’s a leak, talk about my life getting inconvenient. The trade off is not worth it, and you cannot guarantee bulletproof iron-clad security here. Yes, Apple, you have pretty good security, but you also had that big developer portal breach not too many months ago.

So yeah, to sync my contacts, to sync my calendar, I have to use iCloud. Fuck.

So I go ahead and flip that on in the System Preferences.

Then I go into the Calendar app to look at things, and it hangs forever trying to “move calendars to server account”. Watching error messages in the Console got redundant, because apparently it doesn’t know how to break out of this looping. I have to force-quit Calendar.

Then I find the solution? You have to go turn off iCloud Calendar support… which will delete all your local calendar information, so hopefully everything made it up there ok! (you can log into icloud.com to check). Then you launch Calender app, from there Add Account, adding your iCloud support, and from there it will work. It will take a few minutes to sync everything up, but thankfully it seems all my data wound up “in the cloud” OK and so it got it all back.

Gee, thank you Apple for nearly fucking me hard. Looks like you need to add some cases to your test plan.

I will admit, it is nice to just create an event on my phone then it shows up on my desktop. That is nice that I don’t have to explicitly and manually sync to get that. And it isn’t the worst thing in the world if my calendar info gets out. Contacts — well, just ask your friends with Yahoo accounts how great it is to now be subject to all the spam from address books getting slurped up by spammers.

I know Apple wants to push iCloud. I know that for all of iCloud’s suck, it won’t get better unless people start using it. But damnit. I really hate being forced, instead of being able to choose when I feel assured and certain (enough) that my personal data will be secure enough, and I’m willing enough to trust your service.

Retina MacBook Pro impressions

So, what do I think of the new MacBook Pro?

First, my old reference point is my prior MacBook Pro, which was a “MacBookPro8,3“. I believe I had the 2.3 GHz model, 750 MB hard drive, 16 GB RAM. Note that officially this machine only supported 8 GB of RAM, but OWC said it could do 16 so I upgraded to 16 shortly after buying the machine and was quite happy with the added RAM. I also ran Mac OS X 10.8.5 (Mountain Lion) on it; I couldn’t upgrade to Mavericks (Mac OS X 10.9) due to some work requirements.  Also, this was a 17″ screen, and the last 17” MacBook Pro Apple made.

The new machine is a retina MacBook Pro, which is technically a “MacBookPro11,3“. It’sthe 2.6 GHz model. 1 TB flash drive, 16 GB RAM, 15” retina screen. I didn’t relish spending that kind of money, but because you can’t upgrade the thing after the fact well… given I need as much RAM as possible, here we are.

How do things compare?

Overall… meh.

OK, no question it’s faster, and I know I’m going to be happier with it. But my “meh” is because I don’t like upgrading like this. My old machine did NOT feel long in the tooth at all. It was still quite a capable and functional machine, hardly obsolete. I only bought because I was essentially forced to. When these machines came out I didn’t feel there was anything compelling about them that I could gain from an upgrade, and I still don’t think they are a significant enough upgrade from the prior machine.

But that said, there’s some good and some bad.

First the flash drive. Holy crap it’s fast. Long long ago the disks were faster than everything else, so things like CPU were bottleneck. Now the disk i/o is by far the slowest subsystem and everything waits on the disk. I have no idea if the disk is still the slowest subsystem now, but holy gee whiz, Batman! This is unreal fast. Everything is so responsive. It’s awesome. Compiling is very disk intensive, and it seems to be better, but I can tell when I’m still up against CPU now (e.g. when the deep static analyzer is running). Still, if I could have benchmarked before and after, I’m sure I’d see improvement. If nothing else, the fact so many apps now launch almost instantly is awesome. No more waiting and waiting to start rolling on your ideas and work. That’s welcome.

Second, because of the drive… gee, are there any moving parts any more? Ok, the fans, but otherwise wow, she’s quiet.

I haven’t tried putting her on battery alone yet to see how battery life is, but supposedly it will be a lot better.

I am impressed with how light/thin it is. Almost feels too much so tho.

The screen? That’s a mixed bag.

First, retina. I wasn’t explicitly caring about retina, but as I started using the machine and just reading text on screen, it started to sink in how crisp and vibrant everything was. It just slowly crept up on me, but wow, it’s a significant difference. I am mighty impressed. It’s just… wow. My initial feeling was that my aging crappy eyes would really love this towards the end of the day as my eyes get tired of staring at the screen all day.

But, I did not like the loss of resolution. Yeah, the pixel density is huge, but then since retina is just a double-density trick, I lost massive amounts of resolution compared to what I had before. That sucked. I always got the largest screen because I like screen space, I like being able to see as much as possible when I work. Back in the day, I always used 2-monitor setups. When I went laptop-only a couple years ago, I wanted that 17″ precisely because of the screen real estate. So now it’s a step back — a big step back. Retina isn’t worth the trade-off here, for me.

Now, you can scale the display. In fact, I can scale it to the same resolution I used to have on the 8,3 model. However, it crams that same resolution into a smaller screen. So if I want the real estate, it’s now smaller. So far my eyes are ok with it and don’t really seem to notice. And the quality of the screen still seems ok and better — maybe strong LCD backlighting? maybe the glossy screen vs. the matte? Either way, quality of picture does seem better, but I’m annoyed by the loss of resolution (or the trade-off of making everything smaller to regain the resolution). Who knows tho, as I work over the coming weeks I might try the smaller resolutions for a while to see if I can work with the smaller resolution in favor of the retina fun.

One nice thing about the 15″ screen tho?

I can now get one of the ITS Tactical Discrete Messenger Bags to use as my briefcase. 🙂 Win!

On paper, the 11,3 machine looks to have some slower specs than the 8,3, but I think it makes up for it with the flash drive. I really don’t notice. Again, the 8,3 was really a fine machine. But remember, what I mostly do in a day is do email, do lots of stuff on the web (running Safari, Firefox, and Chrome, depending what I have to do), intensive work in Xcode, TextWrangler, communication work (Adium, Skype, Messages), and then other things here and there like Calendar, Yojimbo, Terminal, Textmate, etc..  So, my needs and workflow are different from yours. But there we are. So that’s how things work out for me.

One side effect of the new machine was being forced to adopt Mac OS X 10.9 “Mavericks”. So far I haven’t noticed any problems or issues. It’s been fine. The main reason I couldn’t upgrade was the possible day-job need to still run Xcode 4.x.x. However, the need for that is rapidly fading and essentially a non-issue now that Apple’s forcing Xcode 5 and iOS7 compatibility for any App Store submissions. So, I think it’s fine to take the upgrade at this point. However, it did break my ruby install, so I have to spend a bunch of time in ruby gem hell now. One fun thing about the Mavericks upgrade? I use the Messages app, of course on my iPhone, but I’ve used it on my machine while I work because it’s easier to use for Messages interaction (texting Wife and Kiddos and other Apple-based folks, much nicer when I have a real keyboard). Well, finally in Mavericks there’s support for real emjoi! Yeah I know, totally silly reason, but that was probably the main reason I wanted to upgrade to Mavericks. 😉

Anyways, I’m not happy about why I had to go here, nor having to unexpectedly drop that much money. But so far the machine is alright and I’m sure as I use it more I’ll come to appreciate it more.

The hard drive saga gets worse….

So that hard drive swap? The story got worse.

After the long weekend of swapping and getting back up to speed, I finally go back to work. Close the lid on the MacBookPro, lift it to put it into my bag… and there’s this buzzing noise coming from the hard drive. It sounded like a lightsaber (best way to describe it).

That can’t be good.

I contacted Other World Computing about it. It only makes the sound when on… doesn’t have to be going to sleep, could be lid open and in the middle of doing whatever, pick up the machine and tilt it (not even a quick tilt, just gently) and noise. So it’s not say a loose bracket or something. They opt to send me a replacement. I got the replacement just before this past weekend, and just time.

See, all the week while I had the new drive in, I had strange crashes. Some background daemon would crash, or Xcode would crash in a non-normal way (yeah, Xcode 5.0.2 crashes on me, but the crashes seem to be fairly deterministic and reliable — these new crashes were out of character).

Made worse? All day Friday while at home (the great Austin Ice Storm of 2014!) I kernel panicked 3 times. Well, more than that, but after the 3rd one I figured it was time to stop work for the day and investigate. All my crashing and panicking was coming out of processes like mds and backupd, which starts to point to disk i/o. Hrm.

So I swap in the new drive (so we have “original drive”, “replacement drive 1” and now “replacement drive 2”. I put replacement 2 in, and start the process again of restoring things. Hrm. Long story short, first restore attempts fails for some unknown reason. Try again, and it appears to have succeeded but didn’t, because reboot and while booting it panics again (couldn’t find ‘init’. That’s bad). So again I go around and around. Yeah, it starts to panic again.

And I tried tilting the machine. Sure enough, replacement 2 makes the same vibration lightsaber noise.

Well crap.

It’s unlikely to have 2 faulty drives in a row, possible, but unlikely. What gives?

I did a bunch more experimentation. After talking it over with my buddy W, it came down to a simple thing: time vs. money. To try to further diagnose this problem would require a lot of time, perhaps a week or two without the machine. I cannot afford that. If it was just for email and Facebook, whatever. But as a developer, the machine is vital to my daily existence. Time is more critical here.

So….

I am now the proud owner of a MacBookPro11,3 — the 15″ retina model. 🙂 And the big model too, because these machines can’t really be modified or upgraded after the fact, and 16 GB of RAM and 1 TB drive space matters given what I do in a day.

No, I’m not happy to have suddenly dropped 3-grand (and yes, I got AppleCare — always do), but I’m thankful that I could.

So I’ve used Migration Assistant and things seem to be getting back to normal.

As for the other machine….

While doing some of this restore work, I had put their “replacement 1” into an external case (see their DIY upgrade kit). On a whim I tried it… I just tilted the naked drive. Sure enough, it vibrated. I’ve been in communication with OWC’s tech support, and just sent them a follow-up with a little video of the vibration noise. We’ll see what they say.

I was convinced the old MacBookPro was dying a hardware death somewhere, but now I’m not so convinced. Nothing I can do about it now… I guess it just means the kids get a nice MacBookPro for school. But we’ll see how everything shakes out in the end.

The story continues…. but I just hope that I’m nearing the end of it, at least the major headache portions.

And style keeps evolving

My coding style (programming) has evolved over time.

The biggest change I made wasn’t too long ago, when the NYTimes Style Guide came out. There were some style things in there that I had long resisted, but they made a solid case for that wasn’t just good style but also had functional implication.

One of the biggest was dealing with BOOL types.

See, while BOOL uses YES and NO as the logical constants, there’s nothing that says it must work out that way because BOOL isn’t as deeply ingrained in the Objective-C language as say bool is in the C++ language. You can read the NYTimes guide for the reasoning and style, and it’s a solid reason. I actually found myself getting bit by this very thing in an interesting way.

This is from memory, but it was something like:

- (BOOL)checkForSomeCondition {
  return (BOOL)foo; // where 'foo' was SomeObject*
}

Most of the time, things worked. But sometimes I had strange behaviors and crashes, which ultimately tracked down to this. I saw in the debugger that the foo pointer was non-nil, but yet it returned NO. I think that’s how it was going. Basically the logic wasn’t working out given the value of foo. So I changed it:

- (BOOL)checkForSomeCondition {
  return foo ? YES : NO;
}

and things worked. Hooray for compilers and scalar sizes, right?

But you can see how subtle things can bite you. And furthermore, it also shows that if I checked the return value of -checkForSomeCondition by seeing if it was equal to YES or NO, I may not have gotten the right behavior.

So that was a solid coding style change.

Now, the fantastic folks over at RayWenderlich.com just created their own style guide. But their intention was a little different, because they were more concerned about style for their tutorials — print and web. Nevertheless, there are a few great things in their style guide that even in my 20 years of doing this, I hadn’t directly thought about.

1. I need to remember to use the CGRect functions instead of accessing the struct values directly. This is just bad habit that I need to work on breaking.

2. The “Golden Path”. I’ve never explicitly thought about this, but once you see it you’re like “duh!”. I always had mixed emotions about this, because it just depended. I never liked “littering” the top of methods with a lot of “if it’s not this, return” type of things. I tended to like a positive conditional flow. But yes, that could lead to a lot of nesting, which would be really bothersome if that led to a deep nest before you got to the meat of things, or if the method implementation was long (e.g. more than a screen, which can happen despite best efforts). This is something I’ll consider more as I code.

I like a lot of the things in Ray’s style guide, but there are things I do not like. Mostly those things I don’t like are because it creates exceptions. That is, you should do this, except in this case or that case. That creates too many rules to have to remember, and then things become easy to violate. I prefer to have a single rule, in the spirit of keeping things simple and consistent… because isn’t that a key reason for style? I do accept that exceptions can and must occur on occasion, but they should be the (ahem) exception and not the rule. Reading Ray’s guide felt like there were just too many exceptions. But again, they are writing a guide for a particular paradigm.

Overall I don’t think Ray’s stuff is bad tho. It adopts many established and common conventions and introduces some new ones.

If you have no particular style, just pick some established style and go with it. In time, you’ll see what works, what doesn’t work, and you too will evolve. You’ll find other style guides out there, and there will be gems within it, and new things to consider. That whole “take what is useful and discard the rest” Bruce Lee philosophy. 🙂

Hard Drive Swap

My main computer is a MacBook Pro (17″ late 2011 model 8,3). I know where the internal hard drive is located, and I’ve heard some sounds from it like a marble dropping.

That can’t be good.

So I set about the task of a replacement hard drive. Yes, I still have AppleCare and could get it replaced under warranty, but that generally means I have to wait until it actually fails and then I’m probably out my computer for a week, which I just won’t do. And that’s just to replace the drive, not even to restore my data. I’ve done this sort of thing before, and it’s not difficult, just time consuming.

But this is a little different and I wasn’t sure how to proceed.

  • I maintain a regular backup using Time Machine to an external hard drive connected via FireWire. How could I leverage that? Sure I’ve used TM to restore individual files, and the rumor is you can use it to do a full restore of your entire system to get you going again. Never done it, just how well will it work?
  • I do have my 1 internal drive partitioned into 3 partitions. Two are backed up to TM. Will they restore?
  • What about the hidden Recovery partition? How to manage that on this new drive?
  • And will in fact life be normal again and like nothing happened, after the install?

Yeah, nerves. 🙂

At least I opted to use a 3-day weekend, just in case I needed that downtime.

Here’s how it went.

I bought a “DIY upgrade Kit” from Other World Computing. It had a 1.0TB HGST 7200 RPM platter drive along with an external enclosure. I debated getting a SSD, but I’m still a little wary of the technology. OWC does sell this “Disk Doubler” solution, which I gave serious thought to because I do not use the optical drive and having an SSD for a secondary would be interesting; the thought was put all my dev work on it because compiling is so file-intensive, but then Xcode generates so many caches on the boot volume I’m not sure what gain I’d actually see. *shrug* I passed due to uncertainty and cost.

Also, the external enclosure was a good choice. I hum-hawed on it because in the past I’ve used one but after the transfer I never use it again. But still, I’m glad I had it.

The trouble was trying to find some solid answers to questions. OWC actually has a very good guide on how to do this. However, they didn’t answer some fundamental questions, like if I had to reinstall the OS. The reason was my Recovery HD was setup for Lion (Mac OS X 10.7) but I’m using Mountain Lion (10.8) and of course needed that without going through the massive hassle. Furthermore, any sort of “migratory” approach would likely cause half-installed software and other things that may or may not work, and I just don’t need that hassle of trying to get going again.

Let me cut to the end result and let you know how things went.

  1. Install new hard drive in the MacBook. Put old hard drive into the enclosure.
  2. Ensure external FireWire Time Machine drive is hooked up, then restart the MacBook Pro holding down the ‘option’ key. That allowed me to choose precisely what volume to boot from. I am fortunate the TM backup does have a Recovery HD partition on it, and before you try this route you should ensure yours has one (simple enough: hook up the machine, boot with the ‘option’ key down and see).
  3. When started from the TM’s Recovery, use Disk Utility to erase, partition, and format the new internal hard drive. I formatted as HFS+ journaled. While I will want encryption, I didn’t do that at this point.
  4. While still in TM’s Recovery, reinstall the OS. Yes, this will put Lion on the machine, but we won’t care nor use it. The main reason we need to do the OS reinstall is because this is how we get the Recovery HD installed on the internal drive. This is a must, because 1. you’ll eventually need Recovery, 2. you can’t have encrypted (FileVault) partitions without it it seems.
  5. After the OS finishes installing, it’s OK to go ahead and finish out the install process and get logged into the default account. Again, don’t bother setting up much or configuring. Certainly do NOT have the install process migrate or copy any data. You are going to throw all of this out, so just let it go.
  6. When the install is done and you’re logged in, restart the machine. Hold down the ‘option’ key and again, boot from the external TM Recovery drive.
  7. Once you’re back in Recovery, Restore from Time Machine backup. This process will erase the internal drive, copying the backup. See? We’re going to lose that Lion install. 🙂  I was only given the option to pick my boot volume’s TM backup, but that’s the most important right now.
  8. Let things churn for numerous hours.
  9. When completed, you should be able to boot via your internal hard drive and proceed.
  10. When you are logged back in, things should generally look normal. But…
    1. Be sure to quickly ensure that Time Machine backups do not start and get disabled. Just in case. Make turning TM off a priority after you first log in.
    2. Some things are probably going to be broken, like my MS Office install needed to be reactivated. No big deal, but I would say at this point to NOT try recovering everything — be mindful of disk drive access. Just note what needs fixing and come back to it later.
    3. See, Spotlight is going to want to rebuild index, and that’s going to take a long time and cause a lot of disk drive read/write head movement. We’re about to do some other things too, and well, just too many things trying to hit the disk at once causing the drive head to skip all over the place? That’s just going to be slow.
  11. Before going much further with any configuration, I found it useful to shut the machine down, unplug anything plugged into it (like my TM drive), then restart with the ‘option’ key down, just to ensure I did have a recovery partition on the new hard drive. Then boot (again) normally.
  12. Turn on FileVault encryption. I use FileVault (you don’t have to). I enable it via the System Preferences for my boot volume, which then causes the machine to have to reboot. No problem, but again another reason why not to start doing too much at this point. FileVault is going to take hours to get things encrypted, so might as well get started.
    1. In Mt. Lion you can encrypt other drives/partitions by right-clicking on the drive/partition’s icon in the Finder and an ‘Encrypt…” menu item comes up. That’s so much nicer than the prior process. Thing is again, with multiple partitions this is going to cause drive head jumping, so you might want to just note to do this sequentially later. This is especially important due to the next step.
  13. Plug in the old hard drive (in the DIY enclosure). Unmount any unnecessary partitions because Spotlight will probably want to start (re)indexing them, so avoid the churn. In my case, I needed to restore my secondary partition’s drive. I used Disk Utility’s “Restore” functionality to do a block copy of the old partition to the new partition. I had actually started Encrypting the new partition before I did this, and it caused some problems because the Restore does some low-level stuff and the 2 things got in the way of each other. No real harm, just took time. Would have been better for me to first restore, then encrypt.
  14. After that, most things were working again. I let the FileVault stuff churn. I let Spotlight churn to reindex. Yes, the machine ran a little slower because everything was churning away. I ran apps, ensured the usual cast of apps I use in a day were working and behaving right. I did find a few things here and there that didn’t get (re)installed right (like my iPhone Simulator apps), so I copied them off the old drive (see? the DIY kit was useful, if only for this process).

And slowly, things seem to be coming back to normal.

The DIY kit turned out to be useful for simple copies of things that didn’t come back, the fact I seemed to need to use it in order to do a full restore of my non-boot partition. And a couple times I actually booted off that drive because I needed some “runtime” settings and config that I didn’t remember what I did, so I’d boot back into my old setup, see how things were, then boot back to the new setup to reconfigure things.

I also learned that yes, you do have to reinstall the OS. I grant for some people it might work to reinstall the OS then do something like “migration” to get you there. It might clean a lot of cruft out. But for me? That would be too problematic and time consuming. Plus I really wasn’t sure how the fact it would have started me in Lion then I needed to get to Mountain Lion… how that would have went. I would love if there was a way to ensure your Recovery HD was in sync with your major OS upgrade. I mean, when I finally go to Mavericks (10.9), recovery and reinstall could be a bitch to jump that much.

Note that when I didn’t have the Recovery HD, my machine is a recent enough model that can do “Internet boot”. There’s some peace in knowing that’s there, but what if I don’t have fast Internet access? And the fact you must have the local Recovery HD in order to use FileVault. I wasted a lot of time having to do things over again. Again, the main question that was never answered for me was how to handle the OS version differences. I figure if I migrated, it would have been a problem. But because all I used the OS reinstall for was to get the Recovery HD and other “internals” set up on the new drive, then blew away the actual OS install by doing a full restore from my Time Machine back up… well, there we go. Life goes on.

Anyways, I think I’m going again. So far, so good. The machine feels a little more responsive too. Looking at the specs of the old (looks to be a Travelstar 7K750) vs. new drive (Travelstar 7K1000): old had 16 MB cache, new has 32 MB; old uses SATA 3Gb/s, new uses SATA 6GB/s; new seems to have just a hair faster seek and r/w times too; new tho seems to consume a hair more power tho. We’ll see how it works out. 🙂

PanemQuotidianum 1.0 is now available

December 13, 2013 (Austin, Texas) – Hsoi Enterprises LLC announces the release of PanemQuotidianum 1.0 – an iOS (iPhone/iPad) app bringing you Daily Bread for your Daily Life.

PanemQuotidianum is “daily bread” for your Catholic life.

Every day you can wake up (or go to sleep) with a bite of spiritual bread to nourish your soul. It’s light and simple, but filling and satisfying.

Simply set when you’d like to receive your panem, and you’re done. Each day at your set time, a notification will post. Respond to that notification to view that day’s posting.

PanemQuotidianum represents a labor of love, and the first collaborative effort to grow Hsoi Enterprises LLC as family business. Thank you for supporting our efforts.

PanemQuotidianum is available now in the Apple App Store for $1.99. A portion of the proceeds will be donated to Catholic charities.

PanemQuotidianum – Your Daily Bread for your Daily Life.™

kwikkEmail 1.0.3 live in the App Store

I occupy my time with writing and releasing software. The latest — kwikkEmail 1.0.3 — just went live in the App Store.

Thank you for your support.

More stuff for learning to program

A few days ago I wrote about Scratch, a nifty way to help my kids learn how to program.

I forgot a couple other things I found.

Stencyl. This looks neat. It I haven’t used it, but from what I read it looks like it follows the same sort of drag and drop “block” programming structure and logic that Scratch does. But it can be used to actually make iOS and Android products that you can actually ship and sell. So maybe after Scratch, this would be something to try. It would take the knowledge they had before, but now they have to actually make something polished and ship. A good “bridge” between the two worlds, so to speak.

There’s also GameSalad, which is made right here in Austin.

I still would want them to learn “real” languages (e.g. Objective-C, C++, Python, Ruby, Java, JavaScript, and maybe even new funky languages like Scala). Who knows. I think tho it needs to start with a desire to do it, and to really gain a love for it. If things like Scratch or Stencyl take off for them, then we’ll go there.

Who knows. 🙂

 

Learning to program

Youngest walks up to me about a month ago and asks how you program (write software for computers).

Oh joy! 🙂

Now I’ve talked about learning to program before and even a second time. I always come back to Karel the Robot as a great way to learn how to program. Why? Because you get to learn the constructs of programming without being burden by the constructs of programming. You can learn about loops and conditionals and variables and logic and flow, but you don’t have to spend 3 hours debugging a problem to find out it was because you misplaced a comma. And it doesn’t matter if you really do anything useful or not at this stage, in terms of gaining some employable skill (no job listings for Karel knowledge); once you learn how to program, then languages are just languages and toolsets are just toolsets.

Back when I looked at the LEGO Heavy Weapons book, No Starch Press offered other books to me to review. I asked about the Python for Kids book because it looked like it might be a great way to start the kids into programming. They sent me a copy, but I have yet to go through it. Mostly inertia on my part. Daughter asked me about it, but just a passing interest. And I must admit, while I think the book is well done for what it is, I still think it’s not a perfect start because there’s issues of language that get in the way. You have to get bogged down by syntax of Python. It’s not horrible of course, but I know things can be simpler. I think this book would make a good “phase 2”.

When Youngest asked me again, I went looking around. I found Scratch from MIT.

I think I’ve found what I’ve been looking for.

Youngest and I played around with this for a bit, doing the tutorial. I saw how Scratch gave you all the language, all the logic, even some advanced things like variables, lists, and inter-object messaging. It’s actually pretty cool. I liked the way you just drag and drop to make logic go. It also is able to give you direct feedback, which I think is good for capturing a child’s interest in the topic. I encouraged Youngest to “just try it”. What would happen if? Just try it and see! The environment is very forgiving, but even still, you can make mistakes and have to learn to debug.

I also really dig that all Scratch projects are “open source”. You can look at what others have done, and then you can look at the “source code” to see how they did it. I was able to find a simple game on the site, then show everyone how they made it happen and how neat that was.

So I’m working on this with Youngest. I told him a simple project he could start with would be reinventing comics. We all love Pearls Before Swine and I told him he could start by taking a simple Pearls comic (maybe just Pig and Rat talking to each other) and recreating it in Scratch. It’s a simple project, simple goals, but challenging enough to get your feet wet with.

And we joke… with Youngest programming… Daughter creating artwork and music… Oldest creating artwork, music, and overall design work… they all like to make movies, do voice work. Oh geez… I’ve got an in-house dev shop now!

Man, I wonder how far this ball will roll. 🙂

PracticeDeck 1.1.2 released

One of my iPhone apps, DR Performance Practice Deck for iOS version 1.1.2, is now available in the App Store.

Just a minor bug fix update, but an update nonetheless.

Thank you for your support.