« February 2005 | Main | April 2005 »

March 31, 2005

More Credit

On the subject of credit, thanks to everyone who posted with your tips.

Basically, I want to be able to buy a house in New Zealand sometime around age 30-33 when I’m a legal permanent resident there. This is going to take credit.

In the mean time, there isn’t much of anything I need (though Cathy’s remark about using it as health insurance is extremely well taken). I wouldn’t mind buying a CD or two or a program each month on it and paying it off rapidly. I also wouldn’t mind buying some furniture up here (a sofa, for one thing) and Michael suggested buying things in that price range on credit, dinking with it on the card for 4 months or so and then killing it off. The one thing I think I would really like to have is a new PowerBook but Apple roundly rejected the idea of giving me their credit card. Allan suggested a loan with the laptop as collatoral, which seems like a brilliant idea, but which Michael doesn’t think the bank will go for because it’s hard to appraise computer equipment.

So, my plan is basically this:

  1. Go ask McBank for whatever credit card they’ll give me.
  2. Go ask McBank for a loan for a PowerBook when the G5’s come out.

As much as I like the latter, it seems too good to be true. But in the land of credit, “too good to be true” seems to be the way it works (i.e. the way you get fucked). So we’ll see.

Posted by FusionGyro at 12:18 AM | Comments (2) | TrackBack

March 28, 2005


Alex wants us to get a credit card so that we can get a positive credit rating. What do you guys think? How important is having credit and/or a good credit rating?

Posted by FusionGyro at 10:37 PM | Comments (1) | TrackBack

March 27, 2005


Bill asked what talks I attended. Here’s what I remember:

Of these, I think I got the most out of the text encoding and the declares sessions. Text encoding is something interesting to me (somehow) and declares are how we call into C libraries from RB—something I always wanted to know more about. Now I think I have a handle on both (we’ll see). Of the other sessions, there were lots of interesting tidbits but not huge shots of concentrated knowledge. We appear to be in a league of about 3 or 4 other companies that exclusively use RB, so we have an edge over most of the rest of the community (apparently). The Swordfish and 2005 sessions were cool, just seeing what we’re going to be able to use in the not-too-distant future. The Mac OS X UI guy pissed me off because he had too much material and seemed to have no idea what his audience was.

I was also surprised at how anti-Open Source the whole group was. It was also interesting to me that the average age of RB developers seems to be higher than other developer communities: mid-thirties to forties seems to be average.

All in all, it was pretty cool stuff. I’m socially exhausted from it.

Posted by FusionGyro at 02:26 PM | Comments (0) | TrackBack

March 22, 2005

Going to REALWorld

I’m in Albuquerque at Joe’s. Tomorrow Michael and I are flying out to REALWorld. My business cards came in today, and I have a few hundred in the backpack to take to the conference. Michael’s lending me his spare powerbook—so I won’t be out of place with my shitty iBook and Alex can keep it with her and the cats in Albuquerque.

I once observed that the musical opinion of anyone who dislikes Symphony X should be discarded. I’d like to amend that statement: anyone who dislikes Andrew W.K. can go get fucked.

We pushed out b9 today, and I finished the coupon system for Nina’s site. I need to get a blog on the Matterform site, because I talk about work too much.

Posted by FusionGyro at 11:58 PM | Comments (1) | TrackBack

March 20, 2005

Some Quotes

Paul Graham, Summer Founders FAQ: “Getting rich is hard but doable. Getting a fun job is hard but doable. Trying to solve both problems simultaneously approaches impossible.”

Schlake: “Um, you only have to sort something once in Python to hate it. There isn’t really any growing. The hatred of sort springs fully formed from the eyebrow of Guido.”

Finally, a biggie from my new hero, Dr. Jacob Bronowski, whose book The Ascent of Man I finished last night:

… Round about midnight I had his answer. Well, John von Neumann always slept very late, so I was kind and I did not wake him until well after ten in the morning. When I called his hotel in London, he answered the phone in bed, and I said, ‘Johnny, you’re quite right.’ And he said to me, ‘You wake me up early in the morning to tell me that I’m right? Please wait until I’m wrong.’

If that sounds very vain, it was not. It was a real statement of how he lived his life. And yet it has something in it which reminds me that he wasted the last years of his life. He never finished the great work that has been very difficult to carry on since his death. And he did not, really, because he gave up asking himself how other people see things. He became more and more engaged in work for private firms, for industry, for government. They were enterprises which brought him to the centre of power, but which did not advance eithr his knowledge or his intimacy with people—who to this day have not yet got the message of what he was trying to do about the human mathematics of life and mind.

Johnny von Neumann was in love with the aristocracy of intellect. And that is a belief which can only destroy the civilsation that we know. If we are anything, we must be a democracy of the intellect. We must not perish by the distance between people and government, between people and power, by which Babylon and Egypt and Rome failed. And that distance can only be conflated, can only be closed, if knowledge sits in the homes and heads of people with no ambition to control others, and not up in the isolated seats of power.

Later on, he also said this: “We are nature’s unique experiment to make the rational intelligence prove itself sounder than reflex.”

It’s hard, after finishing that book, not to agree with the “Great Men” theory of progress.

Posted by FusionGyro at 01:58 AM | Comments (0) | TrackBack

March 19, 2005


Alex and I did some cleaning today around the house. I attacked the cat bathroom and now it’s a lot less skanky, the bathtub drains, I mopped, and we took a bunch of trash out to the dumpster which had been gathering on our rather pointless balcony-type thing. We bought new garbage cans to forestall bug invasions on Thursday and today we implemented them.

I wrote a program for randomizing our Netflix queue, and then a program to circumvent the security a friend set up for his website (I guess that makes me an asshole). Then I tidied up the blog a bit; fixed a CSS error, added a sidebar section for what’s in my Netflix queue and a section for the weather (yeah, great). I was going to go get a few more plugins for doing things like colorizing source code that I type up in here; not sure what the ramifications will be for LJ people but I haven’t gotten around to it yet. Unfortunately, I think the two new sidebars are going to be static for whenever I last posted, but they’re not very important anyway, so fuck it.

Posted by FusionGyro at 10:29 PM | Comments (0) | TrackBack

March 18, 2005

Ruby Advocacy

This is a conversation between Justin Dressel and myself, about Ruby and Python. I thought it had some value, so here it is.

in particular, list comprehensions work well with the functional techniques like anonymous functions mapped across a list - I don’t see Ruby supporting anything like that offhand.

Far from correct! Ruby supports a block-passing style inherited from Smalltalk, so it’s common to work with lots of different data structures by passing effectively blocks. For example:

[1, 2, 3, 4].collect { |x| x * x }
=> [1, 4, 9, 16]

(1..10).select { |x| x % 3 == 0 }
=> [3, 6, 9]

The bummer is that you can’t do the [f(x) for x in l if cond(x)] in a single block. But it can still be done:

((1..10).select { |x| x % 3 == 0}).collect {|x| x * x }
=> [9, 36, 81]

The advantage of the block-passing style is that generators are a lot more built-in to the language. For example, these are equivalent:

1.upto(100000).each {|x| puts x}

for i in 1..100000
  puts i

And in neither of those cases is an array instantiated with all members of the range (which is what a X..Y is, and that is an object, and you can add methods to it).

Also what is the difference between multiple inheritance and Ruby’s ‘mixins’?

It’s really an academic difference. The class heirarchy answers the “is-a” question. You also can only mix in a module, not a full class, but it’s kind of moot because a module can have all the benefits of a class, it just can’t be instantiated. You can design a module to be included with a class though, and in so doing create new instance variables and rename other methods and so forth, just like you normally can, so that difference is pretty minor too—you just have to be accustomed to the idea that the module doesn’t get instantiated.

In practice, it rarely turns out that you have a class that wants to be two or more things, partly because in Ruby it’s so easy to decorate a class with these mixins, and partly because Ruby’s built-in mixins take care of a lot of the things you would want to handle on your own. For example, if you implement the comparsion operator, <=>, and the generic iteration method, each, then you can mix in Enumerable and get all these methods “for free”:

collect — return a list containing everything you returned in each, with a block applied to it (or the item, if no block is supplied)
detect — return the first item that satisfies the supplied block
each_with_index — apply the block to each item along with the sequence number of its occurance
entries — return an array of everything contained in your object
find_all — return an array containing everything in your object that the applied block returns true for
grep — apply a regex to everything within and return what is detected
include? — return true if the supplied object exists within your object
map — just like collect
max — return the “largest” item, as defined by the <=> method or an optional block taking two items as arguments
member? — synonym for include?
min — like max, but smallest
reject — like find_all, but for which the block returns false
select — synonym for find_all
sort — return an array containing the sorted stuff within, according to <=> or a supplied block
to_a — return an array representing the contents

And this is widely used in the standard library. Lots of things will also implement more than one each method. Using the object-specific class capability, you could change the behavior of just one instance, by carefully renaming those methods.

Also what about generators, a feature I love in Python?

The idea is so ingrained in Ruby, it doesn’t have a name. Things take blocks. It’s very normal. The syntax is actually rather nice, and because it isn’t tied to the for-loop concept, it is used in other places as well. For example, the file-open method will optionally take a block and pass the file object to it. This way, it takes care of closing it when the block is done. Database connections also can work the same way. This is similar to unwind-protect in Lisp.

There is a syntax other than what I’ve shown you, which is what I recommend for blocks longer than one line:

1..100000.each {|i| puts i }

1..100000.each do |i|
  puts i

And of course, there is a Kernel method which you can use to create a block if you just want to have one: lambda { |parm1, parm2, ...| ... } This will give you a Proc object, which can be passed around or invoked by calling the Proc#call method. The distinction is necessary because Ruby supports the principle of uniform access: if a method takes no arguments, it needs no parentheses. This also has a few important results: your code will look cleaner, always, and you cannot access a member variable from outside the class.

The second thing sounds like a bummer, but there is this syntax:

class MyFoo
  attr_accessor :myVar, :myOtherVar

  def initialize
    @myVar = 10

The attr_accessor thing creates two methods for you: MyFoo#myVar and MyFoo#myVar=. The : syntax means, this symbol, and it is used pretty frequently. Anyway, back to those methods, the first one is called whenever you call MyFoo#myVar, and the second is called whenever you assign to myVar on the class (m.myVar = 23 is fine, the = just has to be bumped up there for the definition).

This is good, and Python is getting this capability now with the property() function. But there is another reason I bring it up: attr_accessor is not syntax. attr_accessor is a function on the Class class. You can add your own, for creating useful methods automatically or in general changing the behavior of the language from within the language. The Pickaxe 2 shows a sample Class method once which enables you to mark some methods as having to be called only once, thereafter reading out of a cache. It looks the same way:

class MyClass
  once :myMethod

  def myMethod

Python certainly doesn’t support many of the functional techniques (i.e. pattern matching), but it does have a basic suite of functions

I’m not convinced pattern matching is a functional technique, because it’s absent from Lisp and Scheme, and present in Prolog which is technically a logic language.

I don’t miss it much, since as Mercury points out, you can always use “or” instead, but there are times when it just looks cleaner. And I know it speeds things up in Prolog when you have a bodiless head (a fact) as part of your predicate.

Using Ruby will point out things that piss you off in Python. You’ll grow to hate "".join(...). You’ll grow to hate all those builtin functions. To get a list of methods on a Ruby object, you call “methods.” You get back a list, you can call sort:

=> ["%", "&", "*", "**", "+", "+@", "-", "-@", "/", 
    "<", "<<", "<=", "<=>", "==", "===", 
    "=~", ">", ">=", ">>", "[]", "^", "__id__", 
    "__send__", "abs", "between?", "ceil", "chr", 
    "class", "clone", "coerce", "display", 
    "divmod", "downto", "dup", "eql?", "equal?", 
    "extend", "floor", "freeze", "frozen?", 
    "hash", "id", "id2name", "inspect", 
    "instance_eval", "instance_of?", 
    "instance_variables", "integer?", "is_a?", 
    "kind_of?", "method", "methods", "modulo", 
    "next", "nil?", "nonzero?", "prec", "prec_f", 
    "prec_i", "private_methods", 
    "protected_methods", "public_methods", 
    "remainder", "respond_to?", "round", "send", 
    "singleton_methods", "size", "step", "succ", 
    "taint", "tainted?", "times", "to_a", "to_f", 
    "to_i", "to_int", "to_s", "truncate", "type", 
    "untaint", "upto", "zero?", "|", "~"]

You’ll grow to hate the fact that Python’s sort is in-place (Ruby provides Array#sort! if you really have to). You’ll grow to appreciate that Ruby allows “?” and “!” on the end of methods.

It’s just a really good language. Too bad about the end end end but that’s really the only blight.

Posted by FusionGyro at 11:10 PM | Comments (0) | TrackBack

Pretty SQL Statement

I wrote this today, and I’m proud of it.

SELECT c.code, c.type, c.start_date, c.end_date,
            c.amount, c.minimum_purchase, 
            COUNT (o.order_id) AS num_orders,
            COALESCE( SUM (o.total), 0.00) AS 
            COALESCE( SUM (o.discount), 0.00) AS 
FROM coupons AS c
LEFT JOIN orders AS o ON o.coupon = c.code 
        AND o.order_status = 'COMPLETE'
GROUP BY c.code;

Posted by FusionGyro at 10:12 PM | Comments (0) | TrackBack

Ó Eating House: Not For Food

Tonight, Alex and I ate at the Ó Eating House. Ironically, it’s closer to us than any other restaurant, yet we’ve avoided it since we got here. So, on this historic night, we decided to violate our intuition and try it.

For starters, it’s within a tent constructed over a wigwam. When seated, I was offered the seat that was part of the wall, and the table was too close for me to get in without climbing over it.

I was immediately sort of appalled by the prices; some website I found indicated that meal entrees were around $8.50, but they seemed to start at $14 and go up quickly to the $22 range. I’m also suspicious of places that have few items and a majority of them being steak. This menu had about 11 things on it, of which four were not steak: salmon, ribs, lamb, and red snapper. Predictably, I had the salmon ($18) and Alex had the ribs ($14). We also had a guacamole appetizer ($10).

The guac arrived and was made with as much onion as avocado—this is not an exaggeration. I thought there was quite a bit of chile, but it was actually just onion. It was terrible. We hardly touched it.

Bread arrived. It was sourdough, which was strange, but not particularly hot and only four sandwich slices. The butter was frozen solid and arrived in little packets, which didn’t work with the gaping holes in the bread at all.

The entrees arrived. Both came with a petite, artistically rendered vegetable mound made with some of the ugliest ingredients I’ve seen. Alex tried them, and reports that they were burnt on the edges but crispy on the inside, and utterly bland. Her ribs were good, with a sweet barbecue sauce, but my salmon was bland as hell apart from the high quality of fish it was made with. It was basically devoid of flavor, good or bad, which means I didn’t think it stacked up well against my “drown it in butter and garlic” method.

Before I talk about Alex’s dessert, bananas foster, I have to talk a little bit about the bumbling waiter. He offended me on many levels: he was dressed casually, he had a very thick Española accent, and he spoke in another direction than looking at us when he first arrived to take our drink orders. He seemed to be quite new. His girlfriend arrived at some point and they hugged and talked up at the register—very unprofessional. Dammit, when I eat out, I’m paying someone else to be my slave. I expect them to be uniformed, courteous and useful and he was just barely courteous and not at all the other two things. I also strongly disliked that the kitchen was in the same room, that the heater was really loud, and that the I could see the cooks taking huge, unlabelled plastic jugs of salsa pouring the condiment into little fancy cups. I especially disliked that we had marginal service from an establishment with three patrons.

Anyhow, the bananas foster are apparently a big deal at this restaurant, rather like the guacamole at Gabriel’s (a much nicer Pojoaque snob joint than this wannabe fuck tent). So bitch boy wheels over his cart and starts in with the making. Then the owner (I assume) came over and started correcting him in his technique, first showing him how to squeeze the oranges, then making him move the heat source to the other side of the cart (bitch boy was lefthanded, making the whole exercise way awkward for him). Then the owner notices us and says “Hi, my hands are clean” and smiles. Great, thanks. Bitch boy dumps the alcohol in and lights it up, owner tells him to dump some cinnamon sugar now, someone turns the lights out. It would have been an “ooh, ahh” moment if I hadn’t ever eaten at a teppanyaki table. I forgot to mention how annoying traditional Native American music is when all you can hear is the slow, steady beat of a drum.

So, I had bananas foster for the first time. Alex informs me that the bananas are supposed to be carmelized (they were soggy), there should have been less cinnamon (it burned my throat), and that the ice cream is supposed to be on top (it was in the cup first, rendering it melted utterly before my first bite).

So from start to finish it was an utter catastrophe. Before the tip, it came to $56, and I would have much preferred eating at the fucking Roadrunner, an Elcam-alike, for 1/3 the cost. We’re also both somewhat ill, so eating out somewhere new probably wasn’t the brightest of ideas, but nevertheless, this was much worse than I expected. Bitch boy earns the coveted “Dan’s smallest tip of the past 12 months” award.

In summary: don’t eat fancy food from a loud and vapid tent filled with ignorant fucks. Ó Eating House: save your cash for the DQ down the street, and get what you pay for.

Posted by FusionGyro at 10:00 PM | Comments (0) | TrackBack

March 16, 2005

Wiki People

Wiki people need to lose the mysticism and fanaticism.

A Wiki/Blog is a really good idea. Unfortunately, no one quite seems to know how to implement it, because in a Wiki, everything HasAStupidName, and in a blog, everything is uniquely identified by the time it was posted. There also don’t seem to be good mechanisms for dealing with comments, since it would be wacky to provide both “Edit This Page” and “Comment on This.”

MoinMoin, through extensive use of ACLs and a few small plugins, can be made to do more-or-less what you want. You can create a BlogPage template, adhere to a naming convention, and use a fancy macro to build the main page. Then you create a /Comments page for each BlogPage and assign it a more liberal ACL that allows other twats to edit the page. But then, you run into a small problem, which is that they need to know enough Wiki Markup to actually fill in the comment page. And they need to know enough not to delete other people’s shit. Or you need to watch the comments page and unfuck it when they fuck it. My experience with offering Textile on my comment portion seems to be that nobody really uses it, not even the few people who actually use my blog and comment on it rather than on the pale image that’s broadcast to LJ.

Alex wants to know who needs this kind of power. I’m not sure I have an answer for that. I think the Clan page would be cooler if Clan people had the ability to post blog entries (or News Items or whatever) and others could comment. But it would have to be a cross-posting system, because nobody would really post just to that, instead of their LiveJournal.

Who knows?

I’m ill. I don’t know why or what it is, other than feeling lousy. I hope I’m better tomorrow, because I probably shouldn’t take any time off. That said, Michael would let me stay home if I had to, but I’d rather not have to.

I tried to install blojsom for work. It’s hard to install, and out of the box, it looks really lousy too. I didn’t even mention it to Michael yet.

That’s about all for now.

Posted by FusionGyro at 08:52 PM | Comments (3) | TrackBack

March 15, 2005

Snow Day!

Today was a snow day after all. We had at least half a foot and probably more of snow, but miraculously the roads were dry by 4 PM. Which means I have to go to work tomorrow. Oh well.

I had a revelation about what the ideal blog is. The ideal blog is actually just a wiki, which has a blog page that shows the most recent blog entry pages. The blog entry pages would just be regular Wiki pages, except that they can only be edited by me in the main body, with a comment portion that can be edited by anyone. I think these criteria can be implemented with MoinMoin which is already installed on the Clan server, so maybe I’ll look at migrating to that type of system sometime soon. It won’t solve the heterogenous problem I have right now, which is that I have a bunch of other standalone HTML/PHP/eRuby pages, but if it were easier to modify everything I would probably do it more often.

With that said, I think I’m going to set up a Project SOULTRAIN Trac instance.

Posted by FusionGyro at 09:08 PM | Comments (1) | TrackBack

My Letter to Microsoft (April 2004)

Since I talk a lot about it, here is my correspondence between Microsoft and myself last year as I was about to graduate. I would have posted it earlier but I lost my copy of it, then today I asked Alex if she had a copy, and she did. So here it is.

The original note:

My name is Alison Gere and I am the Microsoft College Recruiter for New Mexico Tech. I found your name on NMT’s graduating seniors list. I am writing to see if you are interested in considering job opportunities at Microsoft. We are currently looking for people interested in Software Development, and we have both permanent and summer internship opportunities available. If you are interested in considering Microsoft, I would like the opportunity to take a look at your resume and see if you are a fit for the positions we currently have available. I invite you to visit our website at http://www.microsoft.com/college to learn more about our jobs, the company, and our College Recruiting program in general. Please email me your resume if you are interested in being considered.

My response:


I am quite pleased by your email, and the fortuitous timing of it. I must tell you that it is only because of the combination of your good timing and the positive wording of your email that brings us to this equitable foundation upon which we might be able to create a professional relationship of mutual benefit.

I confess, there are certain ethical misgivings which I have about pursuing a career as a software developer for your corporation, as it has been demonstrated judicially several times the lack of proper restraint in Microsoft’s business dealings. I am afraid I will not be able to step around my ideological dispute with the organization to enough of a degree to actually output any tangible volume of closed-source software under the Microsoft Corp, or perform any other action which directly assists Microsoft.

However, as I stated, there is a course of action which we may discuss, in which both of us may find common ground. That would be a contractual relationship compensating myself as a developer or software engineer of Microsoft, in exchange for remaining unemployed by your competition. I am currently in negotiations with one of your primary competitors for gainful employment [Edit: it was Sun], and I would be willing discontinue these negotiations to enter into an agreement with Microsoft for salary comparable to that of an employed engineer. In short, you can pay for me to not do your organization indirect harm through benefiting your competition. We can discuss whether or not this contract would also exclude open source development, if you so desire—though I would like to continue studying and contributing to the free software movement, I am willing to curtail such activity if deemed necessary by my benefactor, as I am under the impression open source software is seen as a threat by Microsoft. I am open to much greater discussion of these terms.

I have included my resume with this message, please feel free to look it over and email me with any questions you have. I regret that I am unable to serve as a Microsoft developer, as I am fully aware of the pleasure it is and the excellent compensation it offers through tales from my peers. I furthermore regret that the method outlined in this email, or one similar to it, is the only one in which I would be able to benefit Microsoft, but it is the only course of action which I can ethically permit myself to take for your advantage. I hope to make up for this inflexibility with greater flexibility in terms of what I am willing to not do for Microsoft.

Thank you for your time, Alison, and I hope that you regard this email with the full gravity as is intended.

I hope to hear from you soon,


I was a little surprised I didn’t hear back from her ever. Maybe in a few more years I should try this again. :)

Posted by FusionGyro at 09:02 PM | Comments (0) | TrackBack

March 14, 2005

Snow Day

I’ve been pre-granted tomorrow off until 10:30 AM pending road condition changes. Which of course means I’m going to stay up late and fuck off.

Tonight between when I got home and when we left to get groceries there were 2 inches of snow on my car. While we were inside getting groceries, another inch fell—this is about 20 minutes we’re talking about here. The guy who parked next to me and came out at the same time, had apparently stopped by to purchase a broom for brushing snow off his car. He “wore out” his other one. He kindly brushed the snow off my car. I felt I nearly slid twice between Pojoaque Mart and home, a distance I normally measure as a 5 minute walk, so about 1 Albuquerque residential block.

There be some snow outside, fuck.

Mattax is apparently in Santa Fe. I doubt very seriously I’ll be seeing him before Wednesday, if I see him at all.

Posted by FusionGyro at 09:50 PM | Comments (0) | TrackBack

March 13, 2005

Parsing and Secrecy

I got the low-level parser (tokenizer, really) ready for the Shadowrun development Lance and I and some others have been working on. So I can handle the DAT file nast with some ease. I think I’m going to name this library “fuckdat” when it’s finished. The original author should be spanked for creating this format.

On Friday night, I went up to Albuquerque and ate with Major, my brother and Alex at the glorious Ninja Sushi. They’re getting kind of used to seeing us there; the cute waitress asked if we wanted our tempura ice cream pre-emptively. (Paul: it’s still the same one).

Afterwards we headed out to the Bound to Be Read, and I regret not having spent lots of money there. Definitely a cool store. Major turned down his pirate ducky at the last minute, but I wound up with an excellent book: “The International Encyclopedia of Secret Societies and Fraternal Orders” by Alan Axelrod. I spent much of this weekend nose-deep in this tome and I have to say, inspite of a rather large bias (for a modern author, anyway) it’s chock-full of great information. The Elks, for example, were founded originally so that people in New York could drink on Sundays. It also has a rank breakdown for the more major societies, and big sections about the Masons and the Rosicrucians.

Tonight, we did a whole lot of not very much; got pissed at Netflix for the broken copy of Y Tu Mama Tambien, but Alex is going to try and watch it anyway tomorrow. I’ve seen it before several times. I think I give it $3.50 or so. This little perturbance happened about 30 minutes after I added about 40 movies to the queue, mostly classics.

It’s been a pretty pleasant weekend, hopefully this next week we’ll get ready to release the fucking program already. We’re in public beta if anyone has a Mac and wants to give it a whirl, please do. Michael is talking about setting up required corporate blogging, in which case someone will have to syndicate that on LJ too. He also finally ordered my business cards and shirt, for distribution at REAL World (what a great name), which we’re going to in a couple weeks.

Anyway, that’s about it for the past two weeks or so. :)

Posted by FusionGyro at 11:21 PM | Comments (0) | TrackBack