Code listings via "Screen Shots"
I made a listing of the TRS-80 program by using my SX-70 Polaroid camera to take a picture of each page and then worked with this listing as I rewrote the code for the Apple.
:)
08:47 PM, 30 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Douglas Engelbart - Father of more than just the mouse
There has been a bit of a move lately to recognise the role of people like Doglas Engelbart - these days even popular press articles will often make a passing reference to the "father of the mouse".
I can distinctly remember the first time I read As we may think, the Atlantic monthly article by Vanevar Bush in 1945 where he describes a hypertext system for aiding scientific discovery. I remember reading it in 1996 or thereabouts. The "web" was in it's infancy, but the dream was old. (You might want to get a copy of From Memex to Hypertext: Vanevar Bush and the Mind's Machine if you want to know more about Bush. It's a bit dry but packed with great stuff).
As we may think made me realise that computer science and human computer interaction (HCI) could get great value from drawing on our history. Being a big Apple fan, I knew about Xerox Parc, and the modern history of computing, but here was a whole era I knew nothing about. That lead me on a search that discovered Douglas Engelbart.
Douglas Engelbart headed a research team that designed a system called NLS for oNline Learning System. He was more than just a man in the right place at the right time - he fought for funding year after year, from one government agency to another, until he reached his goal. And that goal is demonstrated in his famous 1 hour demonstration.
I have known about "the demonstration" for many years, but now thanks to Englebart's prescience in having the demo filmed and someone saving the footage and uploading it to "the web 2.0", we can all experience it. I have to say, it is even more incredible than I had believed possible.
I knew about the pioneering user input devices (the mouse, the chording keyboard), I knew about the multi-user collaborative features with hypertext linking, I knew about the interactive interface with line drawing, outlining, folding etc.
What I was unprepared for was the incredibly advanced hardware and software design ideas. My list from watching the 1hour video is:
- DMA (direct memory access devices)
- video conferencing (of sorts)
- Using CRT latency to provide smooth interactivity
- Domain specific languages (including a text pattern matching language and a high level language tightly coupled to the hardware - MOL - not unlike C)
- C-Meta - a meta language that was used with a compiler-compiler for creating all their domain specific langauges
- Code as documenation with a Smalltalk-like approach to code browsing and documentation where the code was treated exactly like the data (not too different from the Userland frontier approach now that I think of it)
- Change tracking - the system kept track of who made what changes to what documents or statements
- System wide search
- Weighted keyword descriptors used with the search to provide ranked results
I mean this is just incredible. It would be an impressive system today - perhaps not unlike emacs - but in 1968! A mere 23 years after Vanevar Bush envisioned a hypertext research system based on microfilm.
Simply amazing. Everyone must watch it - available on Google Video: Douglas Engelbart: The Demo.
11:40 PM, 24 Nov 2006 by Mark Aufflick Permalink | Comments (1)
Converting Apple 1 hex dumps for the pom1 emulator
0300: 25 14 23 84 23 14 16 1B
: FF 9F 1E 1D 1C 1B 1A 19
...
This is suitable for entering straight into the Woz Monitor as a line starting with a colon indicates that the following bytes should be palced in the ram immediately following on from the previous write (or read).
I was having trouble with the paste function in the pom1 emulator, probably due to speed sync issues. pom1 lets you load rom dumps, but it expects the memory address on each line, not just the first.
As always, perl to the rescue :) With the following handy perl one liner you can convert a rom dump file in the usual format:
perl -pe '$base = /^([0-9A-F]{4}):/ ? $1 : uc sprintf "%04x",hex($base)+8; s/^[^:]*:/$base:/'
11:39 AM, 23 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Apple 1 retro fun
I'm thinking of asking for a replica Apple 1 kit for Christmas. Amazingly there are at least two choices, either a Replica 1 from Briel Computers (US), or an A-One from Achatz Electronics (Netherlands) There also seems to be a guy who has designed an even more faithful replica using the original Apple 1 PCB layout and unused surplus components. I can't find more than an unused ebay auction for his kits.To make sure I won't get bored within an hour of completing it, there are thankfully a few emulators around to play with (Woz having released the original Monitor ROM sources for free some time ago). The one I'm having most success with is the patched version of pom1 released by the author of the Krusader Apple 1/6502 assembler (with the assembler and Apple Basic in ROM).
The ironic thing is that the hp48 calculator that I am using to do decimal/hex conversions (since I can't do them in my head yet) has way more cpu power, a bigger stack, more ram, more advance graphics and even IR!
I'm also looking into the C port of pom. It sounds like it has more issues than the Java version, but I don't much like Java so I might hack on it. The code is nice and clean - only 3.5k lines of c and header. Half of that is in the 6502 emulator. Of course to put 3.5k lines of c into context, check out the hex dump of the entire Apple Basic interpreter by Woz :)
Image source: fantastine.com
05:06 AM, 23 Nov 2006 by Mark Aufflick Permalink | Comments (2)
Feed republishing ... via print media?
mX is a free (ie. advertising funded) newspaper that is given out for free to commuters on their way home in Melbourne and Sydney. DB from TramTown tells me that it used to be called Melbourne eXtra but was renamed for the launch into Sydney.
I intentionally avoid taking one because I try to avoid as much trashy journalism as possible, but it's full of pictures so I can't help noticing some of the stories in my fellow commuters' copies.
And today I realised why the stories always look so familiar - they are copied straight off Boing Boing!
Obviously many "human interest" stories are widely carried, but it's pretty wierd that on the same day that boing boing has a story on kit cars from japan, mX has the same story. On a previous occasion I saw an mX with a story on a cool Japanese transport robot that boing boing had shown on the same day. Now I understand the allure since I also linked to the boing boing story but then I'm not pretending to be a real newspaper.
mX has no online edition, so I'll have to start taking a copy to check myself. If I find more instances I'll scan them in and post them.
05:51 AM, 22 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Novell pwned?
...We disagree with the recent statements made by Microsoft on the topic of Linux and patents. Importantly, our agreement with Microsoft is in no way an acknowledgment that Linux infringes upon any Microsoft intellectual property. When we entered the patent cooperation agreement with Microsoft, Novell did not agree or admit that Linux or any other Novell offering violates Microsoft patents.
...
Ron Hovsepian
Chief Executive Officer
Novell, Inc.
See the ever reliable Groklaw for more.
04:45 AM, 22 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Improving search with machine learning
Lately I have been wondering why I don't see it appearing in search solutions more obviously. Sure there's Google personalized search, but I'm not sure I've seen amazing improvements. Certainly I have not been made aware of what those improvements are (and Google's public releases doesn't seem to mention AI).
I can think of any number of ways that existing, proven, AI techniques could improve search, so I've decided to do somehthing about it!
First off, there is the issue of irrelevant topics returned in my queries. A classic example is "Java". We all know it's a somewhat popular programming language. It's a type of coffee too right? But it's also the name of the most populated island on the earth (and holds the capital to the worlds 4th most populous nation), which also contains some active volcanoes. Want to know more about it? Well if you go to Google and search for "Java" you're going to need more patience than me - I got to search result page 10 with no mention of anything other than the programming language (with the exception of one Wikipedia result on page 3 I think).
So I should learn to write better search queries like "Java island". Or use a directory like Yahoo!.
That's pretty much my options currently. What about combining the two? What if I could refine my search results by selecting from the top categories represented in the result set, much like you do when you search yellowpages.com.au for "tyres" - you can drill down to "tyres - retail and fitting". So assuming I'm Google and already have an index of the web, all I need is to categorize every page on the web.
Armed with the already human-categorized data set (or corpus) that dmoz.org handily offers in RDF form, I can train my machine learning categorizer robot. Then I can run that categorizer over the search result set and I have everything I need.
So how effective could that be? Well my rough prototype that I banged together over the weekend has only been trained on 500 documents because I'm running low on my DSL quota for the month so I'm going to wait until nearer the end of my billing cycle before letting it loose on the whole of the dmoz data, but similar machine learning experiments I have seen have consistenly resulted in the 98-99% accuracy band.
The other obvious way to improve results is to apply AI to the data set made up of [my search terms, which link(s) I chose]. I guess this is what Google personal search does, but there is so much more you could do with this data - like using clustering to provide Amazon-style suggestions "other people whose search terms are similar to yours found this link useful".
I'm pretty excited - this is great stuff and very applicable to our current data-laden world. Plus I just like data :)
10:05 PM, 19 Nov 2006 by Mark Aufflick Permalink | Comments (2)
Everyday Parallelization
After you have loaded all the goods out of your basket onto the bench, there is always a few moments while the cashier scans the remaining items. With the Coles system, I can swipe my frequent-shopper card, then my credit card and finally select the desired account.
It's a classically paralellizable situation . Two inter-dependant resources with multiple duties, some distinct some shared. One resource (the cashier) almost always takes longer and so it makes sense to allow the other resource (the shopper) to complete as many tasks as possible while it (you) would otherwise be in a blocked state.
It reminds me of discussions I used to have with my friend Matt about the implicit least-cost decisions involved in every day situations, such as picking pedestrian routes.
Does anyone else have examples of well designed human processes that exhibit good parallelization? Or the opposite?
PS: apologies for gratuitously making up words from the parallel stem!
09:12 AM, 19 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Webdesign IS design, dammit!
Ever since my first "real" IT job where I was exposed to a lot of designers and printers (courtesy of working for an Apple reseller) I have had a love affair with type. Graphic design too, but especially type and typographical layout. One of my favourite ways to fill a few spare minutes was to leaf through font sample books from various font foundries or tweak a font in fontographer (ah memories).
Being forced to limit oneself to HTML was a hard change for me. I remember when I first discovered http/HTML (late 1992 if I remember correctly, when one of my favourite gopher sites release a newfangled web version), the delivery mechanism excited me, and it was all ascii at first, so layout wasn't even an issue. Then came Mosaic. At first it was exciting, but then I realised the awful truth: it resulted in the destruction of the clean, simple, structural purity of plain-text html; and yet it did not deliver sufficient power to actually display good design.
Now with the advent of XHTML/CSS we are in a better situation. We can get an even better, more pure, structural mark-up of data, while simultaneously being able to display it in a pleasing way. Still, we are stuck in a place where what is possible is dictated to us by the CSS standards committee and the browser implementations thereof.
Changing tack for a moment, let's think about what it is that we use the web for - what information are we normally displaying? Or more pertinent here, what design tools do we need for what we are trying to communicate?
I like the following paragraph in Lance's article:
First off, I like distinct areas of separation. As you can see here, I used spacing and borders to set off the sections, giving the main content more weight by making it bright and big and stage centre. The headlines are also rather weighty, so that finding each article on the main page is simple, but the headlines are not so large that they outweigh the content itself.
Here is a person actually thinking about the style of the communication first. So many people say they are designing a "style" when really they are designing a "look". Like a human conversation, a web site/page communicates in so many ways. The page style/layout. The navigation. The typographical layout. The style of writing. The collaboration tools on offer. You might think I'm talking hogwash, but imagine you are reading a paragraph in a company "blog" You read the phrase "we value our customers feedback" and then you notice that they have comments disabled. That is communicating something, and it's the opposite of what the words are saying. It's interesting to note that there are more possible "communication parameters" in web publishing than traditional publishing, and yet web publishing is rarely approached with the same vigour as is traditional publishing.
After the above quoted paragraph, Lance goes on to talk about the colour palette which shows that at least he is applying some vigour - lets have more of it I say!
So anyway - this isn't quite on the topic of "Webdesign is dead", but I think a more interesting/useful title would be "Webdesign IS design dammit!" or perhaps "Will webdesign for typefaces" ;) The latter only makes sense to those of us who remember when real typefaces cost > $100 not the $19.95 they do now.
11:46 AM, 18 Nov 2006 by Mark Aufflick Permalink | Comments (0)
MapReduce in Perl
While I was looking around my public cvs interface, I remembered that I had never quite finished my Perl implementation of Google's MapReduce infrastructure.
Since I'm too busy to get back onto it now I figure I may as well unleash it on you guys. Be warned that there's no documentation (that I remember) and that the current implementation only works on a single machine, although the structure is easily extendable to multiple machines by replacing the forking with some form of rpc.
My sample Perl implementation of MapReduce (for sufficiently weak meaning of the word 'implementation' ;)
Given that limitation it may also not quite work properly - I really don't remember what state I left it in. Nevertheless if you first read the MapReduce paper by Jeffrey Dean and Sanjay Ghemawat then the api and code should make sense.
If anyone finds this interesting please feel free to email me any questions. If enough people are interested I may be able to make the time to polish it off and write documentation!
11:36 PM, 17 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Natural selection meets Engineering quality
At that time [1909] the chief engineer was almost always the chief test pilot as well. That had the fortunate result of eliminating poor engineering early in aviation.
--Igor Sikorsky, reported in AOPA Pilot magazine February 2003.
01:59 AM, 07 Nov 2006 by Mark Aufflick Permalink | Comments (0)
2006 F1 Season Stats
Kimi Raikkonen may not have won but he did manage to rise 19 places to finish third in Bahrain. That was the greatest position gain any driver had made in a race since 1993, when Fabrizio Barbazza rose from 25th to sixth in the San Marino Grand Prix — in a Minardi!
04:52 AM, 06 Nov 2006 by Mark Aufflick Permalink | Comments (0)
psh (Perl Shell) and the Emacs shell-mode
One of the thing that's great about so-called agile languages (like Perl) is that they lend themselves to interactive shells. If you've played with Ruby on Rails you have probably come across the excellent irb. Well psh is one (of many) such shell for Perl.
Trouble is it insists on extensively using gnu readline (if installed). This is great for regular terminals but is a royal pain if you try to use it within a shell-mode buffer in emacs.
To get rid of all those escape characters without hacking the code, add the following to your .pshrc:
require "$ENV{HOME}/.pshrc_emacs" if $ENV{EMACS} eq 't';
and that .pshrc_emacs should look like:{
package Psh::OS;
sub setup_readline_handler {}
sub remove_readline_handler {}
sub reinstall_resize_handler {}
sub check_terminal_size {}
}
1;
02:26 AM, 03 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Interesting weblog stats
"Mel Kaye" is always near the top of the list somewhere, proving the IT world's unending search for the folklore that is the closest thing we have to real history. I used to be on the first page of Google results for that query. Now I'm way down the ranks.
Now I have a new entry into the list - and it has debued at #2!
The new entry is ...(drumroll please).... MAGIC MUG CAKE!
You can read this highly sought after blog entry, but also take a look at the Google search. The only other solid reference to "magic mug cake" on the net is from someone in Melbourne (must be an AU only product) and they also have a sheep on their mug. Amazing coincidence?
12:01 AM, 03 Nov 2006 by Mark Aufflick Permalink | Comments (0)
Archive
| November 2006 | ||||||
| S | M | T | W | T | F | S |
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | ||
March 2012
February 2012
November 2011
October 2011
April 2011
March 2011
January 2011
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
February 2009
January 2009
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
March 2008
February 2008
January 2008
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
December 2003
November 2003
October 2003
September 2003
August 2003
Blog Categories
software (40)..cocoa (21)
..heads up 'tunes (5)
..ruby (6)
..lisp (4)
..perl (4)
..openacs (1)
mac (21)
embedded (2)
..microprocessor (2)
..avr (1)
electronics (3)
design (1)
photography (26)
..black and white (6)
..A day in Sydney (18)
..The Daily Shoot (6)
food (2)
Book Review (2)
Notifications
Request notifications






