enjoying salad since 1978.

Thursday, January 31, 2002

Oh yes. Dynapad has seriously made me question whether a Sharp Zaurus will be my next PDA. I've been thinking about Smalltalk on a PDA for as long as I've been smalltalking, and Pocket Smalltalk just don't cut it for me. They're using the iPAQ, fyi. It'd be the first time I ever willingly bought a MSFT product, DOS 5 not withstanding, but that was through eBay.

My love-hate relationship with PalmOS turned into hate about 6 months ago, at least, when I tried programming a semi-large class on my Visor using Pippy (Python 1.5.2). I nearly smashed the damn thing into the ground. Oh sure, it can play tetris like a bad ass but try coding a lambda expression with Graffiti sometime. Extreme Anger Management Required.

Just when I was thinking about taking a short media fast, speakeasy and pacbell joined forces to help me decide when: Friday through Monday my dsl modem's lights were about as dim as a certain former Texas Governor. My dsl modem was, as he would say, An Axis of Nonworking.

In other news, I've dug my head about as far into OO theory as one should ever. I think I get E's Maker pattern now. Jeff Darcy gave a clueful explanation of continuations: "a function, it's arguments and activation record (stack frame) all in one ugly package". I paraphrase poorly but you get the idea.

I started writing out the grammar rules for Momoko finally. I want to get the parser finished before codecon since I promised Brandon I'd finish it at least 10 years ago now. After this, my involvement in various projects will drop to nil and I plow through my reading list and fill my notebooks with exercised exercises and other proof of Personal Fulfillment, Tony Robbin's style.

I started another wiki for personal amusement. I'm not entirely sure what'll be there but it won't be the same as what's here. Probably reviews of books, design notes, ideas, and scratchpad space. I still need to finish my work on generating math notational graphics. Explaining them is such a bitch when I could just show a graphic of a power series.

One nice thing about my forced media fast, without irc or email to keep my fingers active, the pain in my wrists vanished. I coded a whole lot but the pain still vanished. I must've halved the typical amount of time I spend typing, though.

Grand Theft Auto III. Holy Fucking Shit... There's something to be said for chasing a guy around a block three times, gunning him down, jacking a car to escape the cops, then realizing the guy you just capped is still running, so you mow him down with your car, finish him off with your flamethrower which sets your car on fire, blowing it up, forcing you to jack another car, and somehow still evade the cops. Take that Congress. You can have my GTA3 when you pry it from my cold, dead fingers.

Friday, January 25, 2002

Let's not forget.. the T'inator

I finally read Vernor Vinge's True Names. I can't believe I've never read it before, it's a fantastic story. It's definitely worth the hour it will remove from your day.

I think I'm going to start my media fast a little early. Tomorrow and Saturday I think I'll avoid coding, my wrists have been bothering me too much these past few days. The TiBook with it's keyboard tucked back to the screen forces me into uncomfortable positions just like when the Inspiron was my desktop, two years ago. Again, the remedy is an external keyboard and a monitor stand.

Yesterday and today I spent a few hours talking about Whisper theory with James. Tomorrow I'll write out design plans on paper. I'll get some damn sunshine, read more of darius' idel code, then toy with some recreational Math problems. I find it alien to solve math problems anymore without the aid of Mathematica so I won't be seriously attempting to solve these questions, I'll just pretend to solve them.

For the record, my "Today" is still Thursday. Night Living wreaks havoc with my blog's sense of continuuity, I'm sure.

Thursday, January 24, 2002

You know, only geeks would schedule a con the weekend of Valentines... ugh.. It's also Chinese New Years so time constraints will be extra tight...

I had forgotten about Objective-C's selectors!! This makes it possible to easily port my SwapVM to Objective-C and not use pointers to functions but instead use selectors to dynamically pass messages around. Profiling will tell me how slow this would actually be compared to p2f's.

This feels much more doable now.

Damn, I'm seriously procrastinating on the command parser for Momoko. Part of this is that I'm still not entirely sure how Momoko commands work. There's only one way to solve that... and I will. Just let me write Obj-c for a day or two. I need to get this virtual machine bug out of my stomach so I can start seriously thinking about writing lexical and semantic analyzers again.

I'm almost ready for a media fast. And I will take one before I start work again (I'm currently on a short-to-medium length vacation). But not if it's the weekend of Code Con. It won't be a pure media fast but it will be a break from my daily routine of email/reading blogs/chatting about programming with various people/writing code for crazy projects. Maybe I'd actually leave the house for a while.

Speaking of CodeCon, I really wish E had been in a state that I would've felt comfortable finishing more work on Whisper and presenting. I suppose I could have polished and submitted one of my other projects but I felt properly whelmed (not over or under) by work and didn't feel I had spare cycles. I will definitely get something out there for the september con.

In case you were wondering what the deal with E was: I'm waiting for persistence of SturdyRef's to be repaired. I have no doubt it will be sometime in the near future, and I know the E team is super busy working on other issues. With their time constraints, I don't feel entirely free to hack around in the source. It needs commentary. Once SturdyRef persistence works, Whisper work will pick up dramatically, and I'll finally finish "Secure Distributed Programming in an Hour" which sits half finished for my lack of motivation. Persistence is something I want to show off to the world at large in that paper. A basic Whisper-like client/server (sans Swing UI) will be the demo app.

Sunday, January 20, 2002

Last night, I was writing some code when I got caught up in watching old western tv series. First was the Guns of William Sonnet. This particular episode guest starred Charles Grodin as a superb bad guy. The second was the old Chuck Connors show Branded in which, after Connors and another guy beat the hell out of some trouble makers in a bar, Other Guy says to Connors "How 'bout I buy you a sasparilla?" Connors replied "Make it a double". That made me laugh out loud. After beating the crap out of half the bar, all I really thirst for is a good, cold Root Beer. Also heard in that episode, was a bad guy to the Other Guy: "yeah, that goes for you too, Mr. Butt-in-ski". Ah, the good ol' days.

I guess Quintin Tarantino's trying to make his big comeback tonight on ABC's Alias. Looks like vintage high-violence Tarantino. Too bad it's network television...

Also, I started working on a command parser for Momoko tonight. I realized that I've forgotten alot about Metsker's parser framework... I'll have to rectify that.

Lastly, I think I may have solved a few problems regarding my toy virtual machine; make all instructions 16-bit and their arguments 16 bits as well. If the argument needs more memory then a bit is flipped in the opcode field identifing how many more 32-bit fields (opcode+arg) are required.

Of course, I can jibber jabber all I want about special identifers making pcode verification possible but it won't really matter until I code and test it.

Oh yes, Darius recommended what's turning out to be an excellent book (no surprise there): Smalltalk-80: Bits of History, Words of Wisdom, a collection of 19 papers from the implementors of early smalltalk-80 systems.

sasparilla was still root beer back in the old west, wasn't it?

Wednesday, January 16, 2002

Cleaned up executing logic, wrote a basic pcode verifier, and put up a web-accesible cvs tree for SwapVM (my previously mentioned VM). Tomorrow I'll finish my pcode verifier and write another instruction set to show how to swap instruction sets around. After that's finished, I'll release the address to the cvs tree for people to poke around. Not that I give a damn if anybody wanted to see now.

After that, I'll retire the project and hack around with Zooko's E virtual machine in C++. It's been a long, long time since I wrote anything in C++. I'm prefering Objective-C lately. Apparently MarkM had some reasons for believing that writing a TCB in C++ was impossible if you use some of it's features. If zooko and/or I stay interested, it'd be worth bugging him about those reasons.

Things on my stack:

  • Momoko
  • "Secure Distributed Programming in an Hour"
  • Whisper
  • More compiler whizbang.
  • A teeny Blogger client for OSX. (xml-rpc)

Word on the street was that Radio 8 supported Blogger (they have some downloadable tool to support it) but damned if I can get Radio to work. I forgot how bizarre it was. What the fuck is a root file, again? Why do I want to see all the verbs a system has?

I had another DSL outage yesterday. PacBell fessed up to having unplugged my port from the DSLAM. whoops!

Monday, January 14, 2002

Sunday I wrote my first virtual machine. It only runs a single program (not even written to disk yet, but stored as an array of bytes):

b0 0b 00 00 01 FA

b0 0b 00 is how I determine that I'm running a program written such that my VM can understand it. (it's magic number)

The following 00 is an instruction who's mnemonic is NOP, for No Operation. It does nothing. 01 is an instruction who's mnemonic is INC (at least in this instruction set but I'll get to that later), and FA is the data that 01 works on. So the VM reads in 01, increments the IP (the instruction pointer, which is how the VM knows where to start looking to reading. i.e. a placeholder). 01 takes the next byte and places it on the stack, increments the IP, then increments the contents on the top of the stack (FA becomes FB).

And that's it.

Now the kicker is that I abstracted out the vm instruction set. So now you can write any instruction set you want. This means that you can interpret any set of bytes in the any program anyway you want and as long as you follow my implicit protocol you'll be fine (fine meaning that the vm won't crash). Instead of 01 meaning INC, you could instead have it map to your own DEC function which would then decrement the following byte, so instead of being left with FA you'd be left with F9.

Consider it as micro-p-coding. ;-) (psst. if you get this joke please feel free to email me and criticize or offer insight. I'd appreciate it.)

Tomorrow I'll finish up the last of my checklist and put the code online in a web-accessible CVS tree.

Geez, I don't know how other people figure out how to do this, there are no reference texts on the subject and even the fourth section of the Blue Book is a tad sketchy on some things. I just made it all up as I went along.

Friday, January 11, 2002

Here's a link about microprogramming from the wikipedia

My reading list has become too eclectic for even most online bookstores. :-( I'm unable to find books on microprogramming online and I can't find books on Genetic Algorithms in local bookstores. Borders has more books on using Office than on all topics of advanced CS combined. Even Stacey's, which is usually excellent, fails me lately.

My rediculous amount of experience writing assembly (for my age anyway) has been suiting me well lately in working on a virtual machine for a simple little language that I came up: subScheme, a completely tiny subset of scheme who's only working program will be a fibonacci sequence. There are lots of different variants of a fibonacci sequence written in Scheme, I'll choose a sufficiently simple one.

It's not eccentric to write such a beast, I need the experience to write larger virtual machines. Darius Bacon's idel project sort of prompted this interest. Blame Darius.

An old link but a good one: Linux Microcode Update Driver

Thursday, January 10, 2002

Birthday present idea for yours truly.

Wednesday, January 09, 2002

YASO. (Yet Another Speakeasy Outage). This one lasting for approximately 31 hours.

Monday, January 07, 2002

The weekend started with a fun night out with the rest of the covert-ops crew, Yoshinaga fed me a few drinks before I left to insure that I'd barely get home.

I enjoyed steve martin's shopgirl this weekend. It's a pretty short book so it only took me a few hours to read. The humor is very subtle, an undertone to the intense character studies Martin puts forward. I felt the plot was a bit thin but it didn't end how I thought it would, which was good.

Also, I read chunks out of Steven Levy's book on how the Macintosh changed how we think about computers and Donald Knuth's new "Things a Computer Scientist Rarely Talks About", a collection of 6 of his lectures at MIT regarding religion and abstract (and applied) computer science.

Hacked together a quick version of Whisper in E that works for single-party inter-vat instant messaging. I guess theoretically that means it works for multiple parties but you would have no idea who you're getting a message from or would be getting the messages you're sending out. I should make a checklist of things that need to be complete before I can feel comfortable tagging it as a 0.10. I'm not going to release any code until: 1) my code isn't in updoc format, 2) I have an efficient pet-name translator [I'm using cut-and-paste right now, which is terrible], 3) I get a basic UI around it [there is a basic JTree with clickable nodes leading to JEditorPane's written in E that you can't see yet] Maybe I'll post screen shots this coming weekend. Whisper is only a weekend project right now, and therefore only sees about 10 hours of coding time per week. Still, that 10 hours has been pretty productive sofar.

My lambda post inspired some fun discussions between zooko, tony kimball, and myself. I learned lambda before I learned 'lambda', so my understanding of lambda isn't tainted by the imposed constraint of the function needing to be dynamically bound, which is how most programmers who use the lamda keyword think of it. I guess if I had been hacking heavily in non-C-birthed languages I would have subconsciously assumed it had to be dynamic. I think the Arc paper talks a bit about how the lambda keyword isn't accurate

I have been couchless since March, when the cheap futon I bought in SF fell apart so I fixed that yesterday, fulfilling my patriotic duty to the economy and my ass, which is tired of the lawn furniture.

I woke up at 6:30 this morning, saw the fog, and decided that I didn't particularly want to be fully awake when the sun came out. I wasn't.

Thursday, January 03, 2002

I had an argument with myself in the shower about whether inner classes should really be described as "basically lambda" to beginning programmers.

Lambda is nested function definition (some argue no side effects, others argue side effects are ok), and inner classes are nested object definition. What's the difference, you ask?

Functions are code and Objects are not code, they are data structures designed to easily organize functions, fields, and other objects. Inner classes can't convey any of the power that nested functions are capable of, besides nested scoping.

Java is not a functional language, no matter how much it borrowed from Lisp, so I think we should stop confusing kids by telling them that inner classes are lambda and just make them learn scheme for a few weeks.

Wednesday, January 02, 2002

Happy Yesterday.

Notable things that occured while in Oregon:

  1. I moved to OS X.
  2. Rosco discovered the joys of iTunes playing the US Bombs while fragging people in Quake3.
  3. The Quake 2 source was released.
  4. I remembered that the Bay Area doesn't get cold. I only took a sweater with me to Oregon and I barely took it off. It snowed in Oregon, something I haven't seen (or missed) since I moved here.
  5. I begged my dad for an 8-bit NES the christmas after my 11th birthday. This christmas he asked me for a game boy advance. How funny..
  6. I discovered that I really do hate most Mail clients and most text editors.

Travel Agents must follow a rule that places the number of layovers proportional with their commission. I had to fly from Oakland to Seattle (Wash) to Portland(Or) to Pasco (Wash) to Pendleton (Or) . During the flight from pendleton back to portland, the lady next to me had a connecting flight directly to oakland while I had to wait 2 hours for my flight to seattle in order to wait another 3 hours for my flight back to oakland. Holy Fucking Hell. You'd think a month and a half in advance would have been early enough to get decent tickets. No more travel agents.

Christmas vacation wasn't enough rest, I had too many people to see, too much code I wanted to write, and too many Big Sandwiches to eat. Evan was very gracious in allowing me a few extra days off from my scheduled vacation time. Time to get back to serious coding endeavours. Serious meaning that it's not just for personal amusement, like my profiler and Whisper.

Java under OS X is very pleasant. I really dug how the UI I wrote in E popped up all Aqua-ified without any modification to my default E installation.