My first Mac (Mac 512k)

My first Mac (Mac 512k)

Apple is running a little retrospective on their site today as it is the 30-year anniversary of the release of the first Macintosh.  That so much of my life has been driven and changed by computers and technology–it’s kind of scary to think about it now.  I think of (honestly) all the things I’ve been able to create on a Mac that may not have been generated in the first place.

My first Mac was a Macintosh 512k.  It was released in 1984 and shipped with System Software 4, though this could be improved with the 20 Mb hard drive that was an optional “accessory”.  My parents purchased one used as a deal when I was 5, so that must’ve been 1988-89.  After coming from a TRS-80 with a yellow-tint monochrome display, the Mac was a treat.  It had a one-button mouse with a satisfying click.  It allowed us to plug in an external Hayes 1200 bps modem and connect to the rest of the world.  The 20 Mb HDD was a large as the base of the Mac and fit underneath it as a pedestal. (more…)

Gabe Newell Says He’ll Do A Reddit AMA

Gabe Newell Says He’ll Do A Reddit AMA If Charity Reaches $500k. Source: Kotaku

From the article:

[…]So Newell has agreed to participate in one of Reddit’s greatest services, the frankly-titled Ask Me Anything. Once his charity hits $500,000 in hospital donations—which should be easy, considering this is Gabe Newell and the Internet—he’ll let anyone ask him questions about life, the universe, and Half-Life.[…]

Alright, so I think this is an interesting gamble– the organization (Seattle Children’s Hospital) is fairly well known, and I can’t imagine anyone really having a problem with cardiac research.  The design on the site, The Heart of Racing is an exercise in a nice HTML5 design where you can pledge your money towards this race.  However, there seems to be no way to check the current pledges in process, or have some sort of estimate of how far they are away from their $5 million goal.  WTF?

How can you have a public facing goal (a public ask at that) and not include any sort of metric for how close they are to their goal?  I’m sure there’s some science around giving that shows that seeing how close you are to the finish line causes people to give more, potentially even just to kick them over the finish line themselves.  Generally, doesn’t every ask you see nowadays show you the milestones on the way to 100%? Kickstarter, Kiva, etc?

Garmin HUD Prototype

Hands-on with Garmin’s windshield HUD prototype Source: Engadget

A few years ago (Edit: Apparently 6 years ago; thanks Google!)  I had an opportunity to leverage a small mini-projector from Mitsubishi that was about 5″ x 3″ x 2″ H, throwing an 4:3 image from as little as 14″ away from the surface.  In requesting solutions and info from my vendor, I was told that the tech had first been pioneered for use in autos, as a HUD or Heads Up Display.  I was also told that while the tech was engineered to make drivers safer while driving, instead the display ended up causing more distraction than intended.

The accompanying video here shows that Garmin believes the problem all along has been UI, but I think really they just need some way to make info presented a bit more innocuous.  I’ll dig up a link eventually, but I feel like some car manufacturers are using HUD’s to display infrared camera input at night, so you don’t hit that deer for 50 points.

Back to the interaction bit: I don’t want these devices to have me force some input to them. I want them to intelligently interpret what I might need to know around me.  I find this is an incredibly simple concept, but hard to do the right way.

CES 2014: GM, Audi, Hyundai, Honda, nVidia officially join Google’s Android automotive push

CES 2014: GM, Audi, Hyundai, Honda, nVidia officially join Google’s Android automotive push (Source: AppleInsider).

And so, the Open Automotive Alliance was born.  I can’t help but feel bummed that Apple isn’t the one leading the pack.  While there have been some nifty integrations over the years (BMW’s iDrive comes to mind), there’s been this strange lag between this consumer hardware being used by everyone, and being utilized properly in the automobile.  As anyone who’s ever purchased or installed an “after market” deck will probably agree, this tech (and it’s lower price point) can’t gain popularity soon enough.

Incidentally, the deck was $900 USD Pioneer model, and never came with a single firmware update ever again.  Somewhere along the way Apple changed their spec for pushing out album art, and I’ve been staring at a silly color-filled screen, with no art ever since.  🙁

Pre-CES 2014 Thoughts

Pre-CES 2014 Thoughts

Coming this week the majority of tech-focused news outlets will begin their coverage of CES, the annual Consumer Electronics Show held each year in Las Vegas, NV.  There was a time in my life when I’d likely be on a plane today or yesterday, assisting a client and ensuring they had a smooth running 60 minutes of keynote time.  While I rarely do corporate events anymore, I do occasionally miss being in the thick of the show floor seeing what new things are (or not) coming out this year. (more…)

Effective Java (2nd Ed.)

Effective Java (2nd Ed.)

As a Computer Science student, I think we’re expected to hold a very large library of books.  Some are required textbooks for classes, and others are indispensable bundles of text that we just happen or or passed through the grapevine.  For me, this book is the former.  Effective Java by Joshua Bloch is one of the most indispensable textbooks I’ve ever read on the Java language. (more…)

The Changing Face of Apps

Over the last week I’ve been doing some serious hacking/coding in a variety of languages.  Some of it is necessary for a work project I’m doing, a couple of customized WordPress installs for a company in Seattle that’s required a bit more PHP hacking to get working properly.  Other parts of it are reading books in my (not available) spare time, and still trying to focus on ObjC and CS193P.

I continually amaze myself with the PHP stuff.  I never officially studied the language but I can understand the bulk of it and maybe most important: I can articulate what I need to do in a good Google query.  For me to become really proficient at it I think I’ll need to start using the shell accounts on some of my boxes to make sure this stuff happens the right way.  While flipping through an old C# book at Fry’s a few days ago I stumbled across the realization that I can grok the syntax of just about any modern language!  Most of these languages are all derivatives of C so it’s not a huge surprise, but I could definitely start to implement code that isn’t language specific which is a huge step for me.  Being able to write platform or (lightly) language independent code is what separates a programmer from a Computer Science major I think.  Each language obviously has its own subtleties and nuances and some will always be a mystery to me (like Perl) but I’m feeling more confident in my skills again.

I spent a few hours this weekend futzing around with Canvas, an HTML5 element that allows you to implement drawing and other animation routines in a div in HTML.  My goal was to finally come up with a logo for REV-DEV my other side-biz that definitely needs to start getting a leg off the ground.  Having checked out some cool HTML5 samples I thought this would’ve been easier, but it wasn’t to be.  I found some greatly bouncy balls, starfields, even a text particle generator.  What I was looking for was a text swell/shrink effect similar to what I’d seen in….well, Flash to be honest.  But I’m trying to be proactive and future-proof, and platform independent and all this….and the thing I want is in Flash.

Adobe has seen a bit of the writing on the wall lately, releasing a free preview of Edge ,their Flash exporter to HTML5 app.  It’s not quite available for real-world use yet, but if I could get the download link to complete I’d probably check it out.  I digress, I’m rambling here.

My point about this was that everyone is starting this slow shift to these frameworks and API’s that are smarter, cleaner and more platform agnostic.  Take the Windows8 Metro incarnation– Metro apps will do UI through HTML5 and JavaScript which has included AJAX for a while now.  That’s amazing!  There’s a movement on the iOS side to use the same structure to drive UI and let the native code take care of the back-end tying things together.  I’m not entirely sold on this for iOS5 for reasons I can’t divulge yet….

Finally, this morning Google announced the availability of Dart, a structured web language that provides optional typing and also compiles out to JavaScript.  It’s a language that will work on modern browsers, with the JavaScript intermediary coming out in browsers that won’t support it’s optional MIME type.  It appears to be light, offers easy to read syntax, and is open-source under a BSD license.  It appears to also support a mode for enterprise use that allows the execution of the code in a VM, but I’m kind of lost right now as to usable case for that one.  I’m going to try and get my hands dirty with it a bit today and see what develops…

Dart-Header

Etc 10/2/11

I’ve got a whole host of things going on lately and really not enough time to think about or write about them all.  I’ve got some cool new projects I’m working on, and work may take a big potential upswing this week (fingers crossed!).

In the meantime, this week there are a few things goin on in tech land.  Tuesday is the launch of id Software’s latest game, Rage, which I have happily pre-ordered like every other id game that I own.  Rage promises to illustrate id Tech 5 the latest incarnation to their engine and probably the only competitor (IMHO) that the Unreal engine has.  I have nerd adoration for id’s Technical Director, John Carmack and the impressive amount of things he has created or envisioned over the last 20 years.  If you do anything with computer graphics you owe this man a lot.

Anyway, Rage looks awesome.  3 discs? 25 gigs of data?  This thing has to rock….

On Tuesday, Apple’s holding some press event.  I expect them to announce a lower-end iPhone 4S model and a top-end iPhone 5 and a release date for iOS5.  While I am in the beta, I’ll report on what others are surmising, namely FaceBook integration at a system level.  Personally I’m more happy about iCloud persistent storage for apps and what that means for devices: Game saves in the cloud anyone?  How about automated push downloading of the Daily without me having to manually fire up the app?  It’s very exciting.

Plus, I’m looking forward to getting rid of the “razor blade” phone that my dropped, cracked, but-barely-there-still-works iPhone 3GS currently us.  I’m due for an upgrade and I’m hoping to hear something good on Tuesday.  Stay tuned.

Calculator (CS193P)

…And per that last post, I finally have the code in the way that I want it.  I think I’ll eventually getting around to showing some screenshots of what’s happening with the memory leak, but I think I’ve gotten everything correct thus far.  I’m uploading the working code as an Xcode 4 project, without any sort of build data with it.  You may need to fire up your copy of Xcode and adjust the build settings to not use iOS 4.3 but provided the API doesn’t change too drastically, you should be good.  Grab that zip file, here.
Also, I’m leaving out the XIB files– I think you can grok your own interface design, no need to steal my binaries.  If you have any questions, I’d be happy to try and help you out but really…it’s all stuff explained in the lecture or in the Assignment 2 request sheet.

What I will do is expose a bit of code here that gave me the most frustration.  It was a class method designed to evaluate an algebraic expression by spawning a working copy of itself to sub the vales of the variables in and return a result.  It was a bit of work to get my head around abstractly, and I think the resulting code is quite efficient and nice (and doesn’t leak!).

+ (double)evaulateExpression:(id)anExpression usingVariableValues:(NSDictionary *)variables
{
double dubNum=0;
CalculatorBrain *workerBrain = [[CalculatorBrain alloc] init];
for(id item in anExpression)
{
if ([item isKindOfClass:[NSNumber class]])
{
NSNumber *workingNum =item;
[workerBrain setOperand:workingNum.doubleValue];
}
else if ([item isKindOfClass:[NSString class]])
{
NSString *workingString = item;
if ([workingString hasPrefix:VARIABLE_PREFIX]) {
NSString *subFromDict = [variables objectForKey:workingString];
[workerBrain setOperand:subFromDict.doubleValue];
}
else
{
dubNum = [workerBrain performOperation:item];
}
}
}
[workerBrain release];
return (dubNum);
}

Anyways, I’m proud enough that I’m heading on to Assignment 3 which implements a Graphing mode. Hopefully I’ll get the instruments post, as well as a bit of a video demonstration of the Calculator in action up here.

Builds are never done…

I finally finished my Stanford CS193P Assignment 2 project, which was to create a working calculator that also implemented an algebraic solver.  I technically “finished” the entire thing and was moving onto the next assignment and packing up the existing bundle to dump up here as example code.
…When I found a bug. Specifically a memory leak that with the help of Instruments I was able to determine was a pretty big freakin deal as I was hemorrhaging resources left and right when I started to call that aforementioned algebraic solver mode.  Grr, not good.  So, I’m going to work it out before I back-commit it and call the second assignment done.  Hopefully I can figure that out today…