Archive for November, 2006

work, you lil’ vietnamese bastards!

Saturday, November 18th, 2006

I gotz me a paira dees:


I likes ‘em they’re pretty.

So’s I got up on The Internets and The Google when I got home, to read about how much other people love my shoes. These foot fetishists in Britain had this to say:

Being keen Humara heads, on hearing that hearing that one of our personal favourites was about to get the Earth Mother treatment, we were struck by fear. Fear that a trail classic was about to meet the same repellant fate as the mighty Mowabb. But someone’s been back to the lab and delivered the goods. With a Free style sole unit that exaggerates the original Humara midsole but keeps things flatter and details that throwback to its off-road inspiration on the upper, from a toe design that looks eerily reminiscent from above, to the detailing that pays homage to the distinctive stitched ’straps’. There’s still a whiff of the Green Party about proceedings, but it really is so much cleaner in construction and silhouette. But lets throw the comparisons and causes out the window – taken on its own merits, the Considered Humara is a good shoe. The anthracite and Spanish moss is something of a sureshot mix, but the orange and white colourway, also due for release, kicks it into the stratosphere. If this product was a person, he’d be your lefty mate who quotes Chomsky and smokes rollups, but still garners female attention. The Considered Humara is available now from Offspring.

Christ. And I thought I needed to get a life.

Went to see Aphrodite at Alley 416, the upstairs at Sky Lounge. It was cool. I like that venue a lot. I like the furniture, the bar, the dance floor, everything. My friend accused the drinks of being watered down, but I wasn’t drinking anything but water anyway (heh! heh!)

Sat Nov 12 00:45:24 CST 2006

Thursday, November 16th, 2006

…She left and no one came, so I finished my beer and ordered another, strolling in the teeth of the wind for some time on this abandoned balcony I had such fond memories of. I walked and thought and condemned myself to an early death with cigarettes, and was generally minding my own business, and not doing a very good job of that, when a blonde woman of some more years than I, with piercing blue eyes, wandered out and said to me, “I heard you were a nice guy.”"Someone’s been telling you lies, then,” I said, and then, “You must be Bonnie.”…

enlightenment.

Thursday, November 16th, 2006

anyone in need of enlightenment should get it while it lasts. fire sale!

Always, no sometimes, think it’s me, but you know I know when it’s a dream
I think I know I mean a Yes but it’s all wrong, that is I think I disagree

–The Beatles, Strawberry Fields Forever

Fri Nov 11 13:35:56 CST 2006

Tuesday, November 14th, 2006

…at Carmelo’s, which I’d been meaning to do all week.The online menu lied about the price of Salciccia Italiana–it was twelve bucks instead of eleven–but it was still worth every penny. One half of the plate was filled with a half-pound of sliced Italian sausage sauteed with bell peppers in an olive-oil-and-tomato sauce. The other half was filled with spaghetti in  garlic and olive oil tossed with chips of fried pancetta. The complimentary three slices of fresh-out-of-the-oven Italian white bread were served with a plate of fresh-grated parmesan and oregano swimming in olive oil.

I was seated  at a small table next to a window that looked out on the courtyard, a small entryway with dining tables interspersed with ferns and flora and walls covered in ivy that had the seemingly wild-grown look only achieved with constant supervision by a well-paid and talented gardener.

The floor of the restaurant, actually the historic Depot Hotel repurposed, was intricately and beautifully inlaid marble, the ceiling relatively unfinished white wood. The walls were covered in bottles of wine and vases and tables of rustic nature that, I’m sure, more than justified the thirty-dollar dinner plates and were virtually guaranteed to net the man with more dollars than sense a piece of ass at the end of the night. All in all, it was well worth the eighteen dollars it cost me to leave, if a tiny bit heavy on the olive oil, although next time I’ll just drink the water and save myself two twenty-five. Two twenty-five for fucking iced tea? Can I get my cock sucked with that?

It was the first time I’d come face-to-tabla with an old-fashioned dessert cart, a wheeled contraption that held every manner of Italian restaurant goodness from cheesecake and chocolate cake and pie to tiramisu and things too delightful to even speak their name. All right before your very eyes for the whole meal. Evil, evil, bastards, restaurateurs.

I resisted, though, and walked out relatively unscathed…

They say time will
Make all this go away
But its time that has taken my tomorrows
And turned them into yesterdays
And once again that rising sun
Is dropping on down
And once again you my friend
Are nowhere to be found

–Ben Harper, Walk Away

Fri Nov 11 21:56:03 CST 2006

Monday, November 13th, 2006

…I took the headphones from my ears to better hear the approach of my assailant/victim, and heard mostly the slow rhythm of a bass line from upstream. I saw the river boat working its way toward me from the railroad bridge, and assumed that must be the source of the music. I sat down on a concrete butte that would have jutted out from the shore had it not utterly failed to do so, and sat in darkness and silence as the boat worked itself my way. It did not take long before I realized the music wasn’t coming from the boat, but a river boat all lit up working its way downstream is no mean sight, and so I sat and watched it and listened to the lapping of the waves until it had drifted past me. As it came abreast, I could see the happy drunken people aboard, chatting and talking with each other, and momentarily wished I could be there, until I realized that the view was probably better from the shore.
Maybe that’s what I am, I said to myself, maybe that’s my job, to sit here where no one else sits and see what no one else sees, to report back to the committee and tell them what is good and what is not. “To sit on the shore and listen to the lapping of the waves as the riverboat drifts past is beautiful”, I would report, “But skip the part about XXXXXXXXXXXXXXX.”

When the boat had passed, I made my way westward, having surmised that the only place upstream the sound could be coming from was the pedestrian bridge. I made it there and found skinny kids in skinny t-shirts shivering in the wind to listen to a skinny band called The Days (or is it The Daze?), who kept playing for the assembled crowd even after announcing time after time that this next song was Definitely The Last. A band of less instrumental talent might have been laid low by the wind, which rendered the vocals a muddy, tattered shadow of the words coming out of the singer’s mouth, but the instruments sounded great, and these kids could play. At one point they put on white rubber jump suits that puffed up with the wind and made them larger than life. The bass player especially was a trip to watch, dancing his skinny ass around crazy like Angus Young, giving the constant impression that he was about to fall over, taking bandmates and equipment crashing to the concrete with him, but never actually doing so.

I was sad when they really, truly did pack it in for the night, but, I thought, this is what makes Austin Austin, this is what makes Austin great. Some kids in rubber jumpsuits playing their ass off to impress some high school girls with hard nipples frozen solid on a bridge in the middle of a lonely Friday night.

I left behind the crowd so I could stand on the stairs and piss in Town Lake unmolested by passerby, and then headed back east…

miscellanea

I really don’t even know what to say about this.

my new shiny thing

Monday, November 13th, 2006

[ Crap. I may have to come up with a second blog entirely for this sort of crap. ]

Fractalyzer wasn’t anything anybody wanted to use, because somebody had done the same thing a thousand times better for free, but it did teach me C# and .NET 1.0 and Windows Forms programming, and dynamic code loading and extension mechanisms and that I really like custom control/widget development. It also impressed some people enough to at least make a few people call me about jobs they had open.

Techinator, which had about twelve users who liked it a lot, updated me to .NET 2.0, and taught me the wonders of XML for connecting together different components. As soon as I can figure out how to appropriate this bit of intellectual property from people who don’t know they own it and wouldn’t care if they did, I’ll clean it up and unleash it on the world, so that it may gain a user base of perhaps thirty, even forty users. It was also something I could put on my resume as development experience.

So, these little pet projects of mine have had concrete results that have helped me out a little in the past, and so it’s a good bet that a well-chosen next project will help me out in the future.

I’ve got to come up with something far removed from what I do at work, so that no intellectual property questions arise, or any that do will be easily decidable in my favor.

It should be provide something that no one is currently providing, be relevant to current development, analysis, or design needs in the world at large, and be interesting to me.

I’ve been looking at a lot of shiny lately, and tossing it away, and I think what I’ve settled on as a project is this:

I will write a thick web client for MySQL.

This fills a real need: phpMyAdmin is an excellent program, but is mostly for the admin side and is not a pretty AJAX application. I see real potential for an open-source AJAX-based MySQL client  with richer visual metaphors than static server-based applications can provide, something closer in nature to what you have with, say, Access.

I think it’s likely I will use Dojo on the front end and PHP for the middle layer of this three-tiered (MySQL, obviously, is the back end) application. I could use YUI, but I think Dojo, while still rougher around the edges, provides richer functionality OOB and has the more all-encompassing tool kit philosophy I’m looking for.

PHP I chose because I don’t know it, and from what I’ve seen so far, and what I’ve seen it do, I know that it does a really good job at three things: XML, databases, and integrating with HTML and the web server. It’s open source, popular (meaning other people have already made a lot of mistakes I won’t have to) and available everywhere, and has been successfully used for similar projects before.

Why not Perl? Well, aside from the fact that I do Perl at work, Perl 5’s object model sucks ass, and its XML handling modules leave a lot to be desired. Perl is my favorite tool in the world, and I use it for more things each day than I can count, but we’re going to have to wait for Perl 6 to get a decent object model, and that’s something you need for big projects, as opposed to the the nine thousand little problems that Perl saws through like the Swiss Army chainsaw that it is.

Now, none of these are set in stone, except that the app must be written largely in Javascript, but only reflect my initial answers to the questions: Is this possible? Is it practical? How might it be possible, and how most practical?

The professional and personal (tech) goals I hope to accomplish with this project are:

1. Design a robust, extensible application and object model that will support a small initial implementation while growing to accommodate what could, potentially, become a very large application.

2. Learn JavaScript and DHTML (a lot better) and PHP (at all), and find a good set of tools for working with them (Currently I’m using Eclipse with JSEclipse and PHPEclipse).

3. Pick up and understand the implementation, rather than the API, of a significant pre-existing code base, and work as part of a community to improve it (Dojo is only at version 0.4, and still has a lot of problems that I can help iron out).

4. Develop an intuitive and efficient interface to a complex pre-existing program.

5. Learn where the lines between the first and second tiers are drawn in a “Web 2.0″ world.

I intend to start out this process by following the steps below:

1. List possible uses. (“update a table row”, “revoke user access to a set of tables”, “debug a stored procedure”) Break them into broad categories, like “administer access”, “create schemas”, “view or update data”, etc.

This is where the future-proofing comes in. For instance, if I decide that my application will be for connecting to a MySQL instance, then I am limiting the scope to that; it may be better, or not, to conceive of my application as a tool for modifying one or more MySQL instances.

This way, my application can become a tool for managing farms of MySQL servers, which would certainly hold a lot more appeal than the more limited scope. However, it also imposes from the very outset significantly more development work, as even if you only handle one server at a time in the first implementation, you must in that version develop a lot of additional infrastructure for handling more than one in a later implementation.

So, maybe it would be better if my app just had hooks for integrating with a multi-server management interface. These are the sorts of pros and cons and possible I must weigh in this step. Initial scoping is of paramount importance, as I’ve learned before.

2. Determine whether and how these broad categories fit together. Is this the best way to categorize the tasks the user might want to accomplish? Find the relationships between these categories of tasks. (This has immediate relevance to the modal design of my application). If I find that the categories suck, then I will go back to step 1.

3. Within the categories, rank the possible uses from most to least common, and do a short breakdown of the steps necessary to accomplish the tasks and the system elements touched by doing the task. If one task doesn’t share a lot of steps or elements with other things in the category, then it’s probably in the wrong category.

4. Identify places where separate tasks share a work flow. For example, “view user permissions for a database object” and “set user permissions for a database object” share the same work flow at the beginning–selecting the database object to act upon–and split only at the end, where the first displays the resulting permissions and the second sets them.

To refer to the previous example, the user might want to view permissions before setting them, and in any case as long as viewing the permissions didn’t obstruct the work flow of setting them, certainly isn’t going to mind if s/he sees the permissions as a result of selecting the appropriate object.

So, in reference to this particular example, if you use the same UI elements for displaying the DB permissions as for setting them, then the work flow for setting permissions is the exact same as the one for viewing them, with only two items–”change object permissions in visual storage” and “apply selected permissions”–tacked onto the end. This isn’t particularly novel thinking–it’s how the file permissions dialogs on NT/2k/XP work, for instance–but is only provided here to illustrate what I’m talking about.


5. Look for relations between the tasks, not restricted to the category they’re in. This is really a continuation of 4., but between categories rather than within them. If, after I do A, I’m likely to want to do B, then the work flow from task A to B is important, more important with the relative frequency of A, and if B requires interaction in a different mode than A, then this inter-modal sequence flow is important as well.

6. Determine what semantic, “real-world” objects the user is manipulating. This will shortly come in handy when defining the mapping between those objects and the objects on the back end (MySQL). Since this app is a client, I’m lucky here: the objects the user is manipulating, generally, are the objects on the back end, so it’s an identity mapping.

7. Design user interfaces for each of the work flow steps identified in step 3. Identifying the system elements touched by the step is important because it defines the user interface for that step, in very important ways.

To go back to our earlier example: If I want to set or get permissions for a user, I may want to apply those permissions to multiple objects, say two tables possibly from different databases. This would dictate whether, for instance, a good interface for this might be to have a multi-select list box of databases where the selected items dynamically fills a second list box with the union of the tables in the databases.

Maybe the large number of tables and the way the user selects them dictates that the list box items should have a persistent set state, so that the user isn’t holding down Ctrl and clicking multiple items that never appear on the screen at the same time in order to select the objects to apply permissions to.

Maybe it should be a tree of databases with tables underneath, and a check box at every level on every item to indicate whether the displayed object and any children are selected for viewing/modification.

I could go on with alternative designs, but the point I’m making is that this is the step where I think these up and try them out in my mind and weigh their pros and cons.

8. Sit down and brainstorm some overall UI designs based on the previous work. Draw a lot of pictures of web pages with scribbled buttons and tabs and stuff on them. Crumple them up and throw them away and scribble some more. The goal in this step is to figure out how to take the work flow designs from 7. and tie them together in a way that will be simple for the user to understand and efficient for him or her to work in. The relationships explored in step 2. are the other primary inputs to this process.

9. Create a mock-up of the interface so designed. No logic beyond basic, top-level navigation, no back end, just an application that shows what the final result will look kinda sorta like.

10. Find places on the net where MySQL programmers, administrators, and other users hang out. I will create a web site with my previous outputs, and try to promote it to these people in the hope that they will come and look at what I’m proposing and laugh and jeer and, hopefully, tell me what’s bad and what could be better.

No one is going to go to a blank web site and post things about how a MySQL integrated client/IDE/administration tool should work with no idea of how I think it’s going to work and nothing done. However, if I promote this project to other possible users when I’ve got something out there, at this early stage of the process, then I can at once gauge interest in it, solicit suggestions for improvement, learn from the experiences of others, and maybe even find a collaborator or two. A good and useful project has stakeholders, by definition, and so it’s by far a better idea to locate them and get them involved early in the production cycle.

It is not true that the most important part of any project is simplicity and efficiency of the user interface. That is first of all only true if your users are human, which is often not the case any more, and for some users and in some cases it is truly okay if the UI is an afterthought.

In this case, however, what I’m developing is the user interface to an existing system. There’s not much to the program other than the user interface. It’s the whole point of this program.

This is nice and fun and freeing because it means I can just sit down and design the best front end to MySQL that I can dream up, and that’s it. I’ve done the basic design of the program. Everything else is dictated by it, and the overall application model and object model will flow pretty naturally therefrom.

*yawn*. More later, if I feel like it.

Sat Nov 12 01:55:06 CST 2006

Sunday, November 12th, 2006

… then Leslie got on the bus in a pair of cut-off shorts and a leather jacket that said “born to be ridden” on the back, and slouched drunkenly to the back of the bus and passed out leaning against one window, strung out across about three seats. These are good seats to pass out in if you are a scantily dressed transvestite on a cold night, because they are where the engine is and it gives off a mighty warmth. I sat down a few rows forward of the man, and said, “Hey Leslie!”

“Heeeeeeeeeeeeeeeeeeeeeeey,” says Leslie, and I figure this means I can ask a question: “Why is it that you get up in the morning and do the things that you do?”

Leslie stared back at me with rheumy eyes and unsteady bearing, and said “I don’t know.” Then he went back to sleep.

“It’s a good answer,” I said to myself, “the only one I’ve got either.”

I spent the rest of the ride home with my head phones on. The gay black guy in front of me’s iPod said he was listening to Beyoncé’s Green Light, and I found myself wondering how stereotypical it was possible to be.

Wish there was something
I could say or do
I can resist anything
But temptation from you
But I’d rather walk alone
Than chase you around
I’d rather fall myself
Than let you drag me down

–Ben Harper, Another Lonely Day

cat’s claws

Sunday, November 12th, 2006

“I will change!” I cried, as I ran to my quarters and sat before my desk. “I will sharpen my claws, and then I’ll have their eyes! Their guts!”

But as I sat at my desk honing my weapons, I beheld the claw file in my hands, a family heirloom. “How can I be changing,” I pondered, “when I sit honing my claws with the very selfsame file given me by my father, and by his father before him?”

“No matter,” I said to myself, “changing, unchanging, phuh! Tonight,” I said as I settled the file into its accustomed groove, “I will sharpen my claws in a new way!”

Sssssssssssshhhhhhhhhhhhhhrrrrrrrrrrrrrrrrrrrkkkkkkkkkkkkkkk!!!!!!

…but still, in the back of my mind I pondered.

epiphany

You know you’ve fucked up when most of the conversations you have with your friends are in your head.

corollary

This may only mean that you need new friends.

epiphany

With regard to the slings and arrows of outrageous fortune: It is better to be them than bear them.

[I know, I know, this one's all repetitively derivitive; but, it bears repeating bears repeating]

unsung heroes of lunch

Sunday, November 12th, 2006

Yeah, so I don’t actually eat out at nice places all the time. Four (okay, sometimes three) days a week I gets mine under seven bucks like everybody else. So here’s my list of the best places to eat lunch every day down town (none of these places include drinks or more than a $1 tip, and they all make food to go; these places I carry out):

Jimmy John’s–Jimmy John’s, man. Jimmy John’s. You gotta love the Jimmy John’s. The BLT. The Gargantuan. The Italian Night Club. Free smells, funny signs.

Copa–Damned fine mexican food at a damned reasonable price. Check the menu for the daily lunch special, which will save you a dollar if you eat there the right day of the week.

Mike’s Pub–Located between the SFA and Bakerman’s bakery, in the second floor of what is currently a parking garage, Mike’s has been serving up the best $6 greaseburgers in town since before you were born. Get one with jalapeños on.

Las Manitas Avenue Cafe–Good eatins. Order tacos a la carte if you’re not super hungry and don’t want to spend a lot. They’re like $3 or $3.50, but there’s two of them, with plenty of guacamole and sour cream if you want it.

Thai Tara–Delicious Thai food for a very reasonable price.

Which Wich–Skip the gyro, sandwiches are good enough otherwise, if you’re tired of Jimmy John’s. Down on 2nd street.

Schlotzsky’s–I don’t eat there that often, but that doesn’t mean I don’t like it. An Austin original, and makers of a damned fine sandwich, if you ask me (and I am damned sure an authority on damned fine sandwiches).

Cozzoli’s–Best Italian fast food (think Sbarro) down town. Only Italian fast food down town.

Some time this week I’ll list out some places that don’t make things to go, or are a dollar or two more.

battlestar galactica

Sunday, November 12th, 2006

Okay, I’ve got all these reasons not to like Battlestar Galactica, like the fact that it doesn’t really make any sense at all and has no real internal consistency, but it continues to evolve into a series of interesting and tightly constructed morality plays, with sometimes creepy bodiless women spewing vt100-grade nonsense and sometimes huge starships dropping in burning red flame from the heavens to drop fiery viper death and disappear.

And I’m going to go ahead and say I’ll take $5 bets that the Cylon chick in Baltar’s head is the Cylon God.