Mike Austin's Blog

Monday, April 24, 2006

Password hell

My password are growing exponentially. Just started a new job and set up a discussion board for Inertia along with other things - my head is spinning with passwords to remember. When will they fix this stuff??? Are we still in the '80s or what?

Thursday, April 20, 2006

Behavior Driven Development with rSpec

Video:
Beyond Test Driven Development: Behaviour Driven Development

via Kieran comment from ruby-sweetness

Monday, April 17, 2006

NewtonScript and JavaScript

These two languages are actually very similar. They're both prototype based, have similar scoping rules, and if you use JavaScript's literal object syntax they're even more alike. JavaScript is more C'ish, while NewtonScript is more Pascal'ish.

I had forgotten what NewtonScript looks like exactly, so I googled around and found "The NewtonScript Programming Language". You can't get any more official than that :)

Friday, April 14, 2006

Coding with multiple languages

Ok, I was commenting my JavaScript today with Ruby # comments, and I was wondering why self.someElement = aValue wasn't working right. This is because 'self' is a property of the current window, and 'this' is the current object, the one I wanted. I swear, I spent about an hour wondering why my app had instancing problems :) It shows that my brain was definitely in Ruby mode.

Wednesday, April 12, 2006

Programmer trading cards?

From http://www.eekim.com/blog/2006/04/11/killerprogrammers

"When I worked at DrDobbsJournal, I half-jokingly proposed creating baseball cards for programmers. Why should kids be limited to trading AlbertPujols and EricGagne cards, when they could trade a 1998 LarryWall for a 2000 GuidoVanRossum?

I still think it's a good idea in theory, but in the meantime, check out this killer quiz. I scored an 8 out of 10. Thanks to BradNeuberg for spotting this."

Demo of Ruby-Inertia at April's SF Ruby meetup

Yesterday, I gave a presentation and demonstrated Ruby-Inertia at the April SF Ruby meetup, and met a lot of cool people. It was a good experience, and there were plenty of interesting discussions. Tom Belunis demonstrated his drag-and-drop report generation system he'd built in Rails. Drag and drop rulez! ;)

I don't want to release any code just yet, but you can find more info here: http://www.mike-austin.com/inertia

Thanks everyone for letting me show my demo, and I'll see you next month!

Monday, April 10, 2006

Demo of the Apple LISA at CHI April '98

Future user interfaces

This list is from http://toastytech.com/guis/indexlinks.html#Future

Although I don't think we're ready for fully 3D interfaces yet, I do see a lot of potential in hybrid 2D/3D interfaces for visualization and searching. Here are some interesting links about future interfaces:

Task Gallery
ROOMS 3D
3DNA
Croquet Project
Doom as an Interface for Process Management
Project Looking Glass

Saturday, April 08, 2006

Don't complain

US considers bombing Iranian weapons facility?

Story on Yahoo News

This is not good.

Friday, April 07, 2006

Syntax irregularities in Smalltalk

In one aspect, Smalltalk is a very small and elegant language. But I find there are some hidden intricacies when you actually use it. One example is the difference between using the messages whileTrue: and ifTrue:. whileTrue: expects a Block, while ifTrue: expects a Boolean. In the following, at first glance it's not understood why one uses square brackets and the other parenthesis:
[count < 10] whileTrue: [count := count + 1]
(count < 10) ifTrue: [count := count + 1]
Once you understand the semantics of Smalltalk then you comprehend it, but I find this somewhat odd. If Block supported the messages of Boolean, I think the syntax would be more orthogonal:
([x > 0] and: [x < 10]) and: ([y > 0] and: [y < 10])
Compared with the odd amalgamation of []s and ()s:
((x > 0) and: [x < 10]) and: [(y > 0) and: [y < 10]]

Graphical CLI (Command Line Interface)

Most people think there is a CLI, and then there is a Graphical User Interface. But it has been shown that there can be a combination of both. CLOS's CLIM Listener is a good example. Here's another example of a displaying the contents of a directory. After typing the command to list the files, you can go and click on a file to rename it, etc. It's a GCLI, I guess is the acronym.

Predicate syntax generalization

I always look at language design with a refactoring approach. Write a syntax for one particular problem, then write a new syntax for another problem. Now refactor those two languages into one. For example, take this problem:

From 1 to 10, give me the square of each even number.

The generalization of this problem could be something like:
list, predicate, function => list

Haskell and Python do a nice job with list comprehention:
[i * i | i <- [1..10], i `mod` 2 == 0]
But list comprehention is it's own syntax, completely different from the rest of Haskell or Python (actually it's set-builder notation).

Matz, the creator of Ruby learned that passing a closure to a function is so common, that it is built into the syntax:
(1..10).map { |i| i * i if i % 2 == 0 }.compact!
But how do we separate that predicate from the function? If we take Ruby's idea of passing closures as syntax, and also provide a syntax for passing predicates, we get Impulse, my language tinkerings:
1..10 map: (i [i % 2 == 0] -> i * i)
It's not about less typing, it's about generalization and eliminating sub-language syntaxes. Extending it to multi-predicate closures, the need for any conditionals goes away completely:
x = ([x >  10] ->  10
[x < -10] -> -10) value
Just thought I'd ramble a bit... it's my blog anyways :)

THE HACKER TEST

THE HACKER TEST - Version 1.0

Amusing. I didn't actually take it, it's too damn long :)

Thursday, April 06, 2006

AJAX: Back to the past

Wow, I can draw lines with Canvas, and do things on the client side. It's like the '90s all over again. Like Flash, but without Flash. But until there is a standard toolkit and a drag and drop IDE for AJAX, I don't really want to muck around with it. On the other hand, when getting paid by the hour it might be a good choice :)

Log in / Log on / Sign in...

Log in / Log out
Log on / Log off
Sign in / Sign out

My intuition tells me that "Log in" and "Log out" sound better than "Log on" and "Log off". First, there's a better phonetic difference between the two actions, and second, "on" and "off" give the impression of physical states, such as the computer's power. "Sign in" and "Sign out" are also good phonetically, but I've heard the first two so many times that it's hard to get my head around them. But then there's also:

"This is Mike signing out"
"Signing off on a budget"

Ahhh, so many grammatical ambiguities!

Wednesday, April 05, 2006

Boot Camp: Dual Booting Macs

http://www.apple.com/macosx/bootcamp/
Link via Steve

I didn't give it much thought that apple would allow people to install Windows on a Mac, whadayouknow. And it's too late for April Fools :)

One of my favorite sites...

Graphical User Interface Gallery Home
Look at all the calculators!

Tuesday, April 04, 2006

Battlefield 2 TKs are fucking lame

I put C4 on an enemy tank, someone blows it and me up, and I get negative points for it. I don't know what the fuck DICE is smoking. Oh here's another one... after you lay out all your C4 packs, guess what? It automatically switches to your detonator. Click too many times? BOOOM! in your face. It's such a good game but this crap annoys the fuck out of me.

Monday, April 03, 2006

My blog is back up...

You couldn't tell since I couldn't post that it was down anyway :) Anyway, my webhost ipowerweb.com upgraded their ftp service or something and passive ftp ports were not activated. I had something to post, but now I forget, heh.

Saturday, April 01, 2006

I didn't know I could sketch

The other day I started sketching a car on paper, and by the time I was done I said to myself - gee, I didn't know I could do that! I haven't drawn anything detailed like this since high school, although I use Photoshop a bit to do interface mockups.