Contact Info

(for those who care)

Instant Gratification   



Tue, 28 Nov 2006

Heaven!

Vi-Search … it has just dethroned google as my default search engine.

Update: and since people keep asking me, here’s a neat vi cheat sheet. Not as good as some of the other ones I’ve seen, but I’ll have to find that link and add it later.

Update 2: Ok, google is better than snap.com search, and there’s a nifty greasemonkey script that adds vi-keys to google. ‘nuff said.

14:37 CST | category / entries / links
permanent link | comments?

Sat, 25 Nov 2006

Advancements in UI

At work there was a discussion about scroll-bars as they related to web-pages. Some people were very much on the side of “don’t mess with the scroll-bars”, while others were more open to styling the scroll bars depending on the needs of the application / web-page. I was on the side of: “It’s a scroll bar, don’t mess with it” until I saw the following:

[source…]

…there are 101 things that you can get wrong if you try to implement a new scroll-bar from scratch, but the above shows that the scroll-bar is far from a solved-problem.

You can see other “innovations” in scroll-bars with video/audio editing software. Attack of the 80’s. :^)

Video tracks represent the timeline of your videos, just as if you layed real photo film on horizontally on a table. The individual images you see on the track are a sample of what is located at that particular time on the timeline.

[source…]

11:49 CST | category / entries / links
permanent link | comments?

Mon, 20 Nov 2006

CBS 11 News on Yahoo! Video

Watch depressing local news on Yahoo!, of all places. But seriously, marvel at local news reports on the internet.

17:40 CST | category / entries / links
permanent link | comments?

Thu, 16 Nov 2006

Pretty sweet guitar playing

[source…]

Part of the Yahoo! TalentShow… one day I hope to play as nicely as he does. One day soon, I will also be slapping some of my own video’s up here, probably after I’ve practiced a bit more for the ~recital~ we’re having for guitar lessons on the 16th of December (exactly 1 month away, yikes!).

12:13 CST | category / entries / links
permanent link | comments?

Tue, 14 Nov 2006

PHP Session Handling

This guy does a great job of explaining thread-safety to people who really need to know what it means.

The problem arises, as is outlined in the cited articles above, when multiple requests can be made at the same time. The built-in PHP session handler handles maintaining exclusive access to the session data, so most simple, low-load (meaning one one web server) websites don’t experience a problem. And even if you use your own session handler that doesn’t implement any locking, the progress that the users makes through your site, downloading a page, viewing it, moving on to the next one, is so slow that contention for the session data is rarely, if ever, an issue. But then Ajax enters the picture.

[source…]

I am reminded muchly of when I worked at sell.com and I implemented the same. We weren’t using AJAX back then, but AJAX or no, you still need to provide some level of transactional security. I’m impressed with the level of thought that has gone into this guy’s document, and how he’s got everything segmented into individual variables by the end of it. I will disagree somewhat that per-variable locking is the right way to go because of transactional integrity (ie: if you have two variables, $SESSION['credits'] and $SESSION['debits'] and each of them is lock-safe, but not transactional-safe, then you end up in trouble).

The model that we ended up using was the single-thread model, above the picture saying “The process execution is interleaved, but access to the session data is serialized”. This is somewhat necessary for important data, but less important for things like access counters or maybe the rating of a particular song (independent / non-$$$ data), where per-variable locking could be a big performance win. Here’s another little bit of an idea… imagine $SESSION['batch']['toRate'] = array(1234=>"4stars", 999=>"3stars");, which gets processed at the end during session destruction / cleanup or at regular intervals during the user’s session. This being opposed to the standard practice of writing all the data to /logs/batch.txt and later processing that.

All in all a highly recommended read.

22:14 CST | category / entries / links
permanent link | comments?

Wed, 08 Nov 2006

Make sure you’ve eaten breakfast…

Then get the hook “Shakira, Shakira” stuck in your head. For those playing along at home, this video is making most fun of Whenever, Wherever, an earlier shakira video (which will soon work on Mac + non-IE / PC computers). Also check out Weird Al’s White & Nerdy as well as the fans-only version of it, which is pretty funny. Dancing legos. (more dancing legos?)

08:37 CST | category / entries / links
permanent link | comments?

Fri, 20 Oct 2006

Imagine, if you will, two roommates at Thesaurus U.:

“I aspire to obtain a beverage. The vending machine is where my path leads.”

“I wish to accompany you, since I have assembled a myriad of coins.”

“I possess coins, as well. Let’s embark.”

[source…]

10:51 CST | category / entries / links
permanent link | comments?

Sun, 08 Oct 2006

Software for learning the guitar?

So, I’m learning to play the guitar. The prior extent of my musical ability was playing “Hot Cross Buns” on the recorder in 4th grade. Needless to say I have a lot to learn. I am also a computer-dork, which makes me wonder why there isn’t the Dance-Dance Revolution of Music. Oh wait, there is, and it’s called “Guitar Hero”. The problem with Guitar Hero is that it’s about 0% related to actually playing music. Here follows my wish-list for a program that would help me learn to play the guitar or another instrument. If I were going to write it, I’d call it “Sheet Music Hero” (hereafter referred to as SMH).

The two most important things is that the program work with your real-live instrument (for me that’d be a non-electric, classical guitar) and also be interactive / corrective - that it can detect a mistake and give you some sort of percent-marker or crowd-feedback noise a-la Dance-Dance revolution when you lay down some smokin’ notes. :^)

It’d be wonderful if this was all free / open source (are the pieces all out there?), and if it worked on Mac / Linux at least. Even if I had to pay for it has anyone seen software out there that meets a significant portion of these requirements? Something like “Mavis Beacon Teaches Classical Acoustic Guitar”? Let me know.

22:56 CST | category / entries
permanent link | comments?

Thu, 05 Oct 2006

Mexico Part 1

We arrived in Tlapujahua around noon and went to work, asking where the different government offices were. One for the birth certificate of Bety’s grandmother, and two to file paperwork for registering vehicles. The birth certificates were finished in an hour, but registering the vehicle would take longer. Before leaving the town we visited a beautiful church of the Virgen del Carmen and spent a final few minutes checking out the local markets. At 5pm we entered another cobble-stoned village off the main road and sought out more of Bety’s relatives (the Rodriguez side).

We crested a final hill deep in the pueblo where we saw a man and two boys playing outside their home. Introducing ourselves to the various relatives we made our way inside and I listened in while family members caught up with one another. The smell of firewood (leña) was in the air as Sandra was pressing and cooking tortillas over the comal in the outdoor woodshed. We sat down to eat with the family and were treated to a kind of spicy beef stew and filetes de res which we ate with the aforementioned tortillas. The beef was the best I have ever tasted- local cattle that graze in the grass, no pesticides, few cars, and a simple, tranquil life.

I slept early after spending more time meeting, greeting, and talking with the family. Next morning we bathed with heated water and headed to a nearby home to visit the aunt of Bety’s grandmother. Ninety-eight years old. That night I drank my first glass of pulque, made from the juices of a maguey plant in their back yard. The next day I got a chance to see the maguey where the agua miel (a sweet liquid, like honey, that pulque is made from) was taken from it’s opened heart. Magueys live roughly thirty years, but once they are cut open for agua miel, they live about three months. We had planned to leave that night, but it threatened rain and the food was good so we stayed the night.

In Tlapujahua the vehicle paperwork would have taken two weeks but according to several sources doing things in Morelia would be faster and easier (plus it was on our way). We left Tlapujahua, again very early, headed towards Morelia. After a slight detour to Guanajuato (the signs in Maravatio were not very clear) we were again heading west to Morelia, the capitol of Michoacan. We arrived there just before noon and again sought the local government offices. After gathering all the necessary paperwork, eating lunch, and passing several times past the city’s aqueduct (built in the 1780s) we finally had the license plates for Raymundo’s truck and we left almost immediately for Paracho via Uruapan.

to be continued…

00:11 CST | category / entries
permanent link | comments?

Mon, 18 Sep 2006

Spreadsheets as Functional Languages

In some sense each cell may be thought of as an agent that monitors its depended-upon cells and updates itself when it needs to. Spreadsheets eliminate [the barrier of learning flow-control constructs] to end-user programming by dispensing with the need for control constructs, replacing them with functional constructs.

[source…]

Very interesting point-of-view shift… a state-machine has the (S) state [to indicate the start], but a spreadsheet does not. Why does a program need a start state, or a beginning? (public static void main( String[] args ) { /* ... */ }) The linked article is correct- flow control structures and state-management are difficult to grasp, it’s only when you throw in if-else / try-catch-finally that things get tricky.

(descriptions of my latest Mexico adventure is in the works, but since it’s longer, it’s taking me longer to pull it all together)

21:36 CST | category / entries / links
permanent link | comments?

Sat, 26 Aug 2006

Plethora of Links (now with more Ukulele)

With work, I have had less time to share insightful commentary with the world. With work, I have seen more videos than I would have thought possible. With guitar, I have a new appreciation for what it would actually take to rock the ukulele (hint: this man does the impossible).

00:06 CST | category / entries / links
permanent link | comments?

Fri, 25 Aug 2006

Are you aware?

Be slightly wary of sound effects, but this is a funny, slightly scary, probably very useful little trick. Also related to Mr. Templeton’s brief essay on the difficulties of remaining truly anonymous on the internet or in almost any situation (and Mr. Schneier’s linkage to similar).

11:57 CST | category / entries / links
permanent link | comments?

Thu, 24 Aug 2006

Hey Ya!

Hey Ya! like you’ve never seen it, but will probably want to see it again. Originally I wanted to record my progress with playing Malaguena (would that be podcasting?), but I don’t have a really good recording set up and I still occasionally make mistakes while playing the song so it would take me a few take’s before I got it right. Will have to watch the guy playing in the video a few more times and see if I can get the acoustic version down. Doesn’t seem too difficult, comparable to the times I’ve played around with Johnny Cash’s version of U2’s One

Work is good but busy (see 9.yahoo.com to get a rough idea of what type of stuff I’m working on). Got tickets to Mexico (luckily!!) and will be headed down until Sep 3. Wish me luck!

09:25 CST | category / entries / links
permanent link | comments?

Fri, 16 Jun 2006

Mr. Cash

Crockford on Hurt … does a great job of putting into words something that I’ve thought but never written down. My other favorite recent Cash song is: “Mercy Seat” … something about the rhythm, piano, and voice and the man’s story gets me. And if you haven’t seen Walk the Line yet, it’s rather excellent and worth watching.

And the mercy seat is waiting
And I think my head is burning
And in a way I’m yearning
To be done with all this weighing of the truth.
An eye for an eye
And a tooth for a tooth
And anyway I told the truth
And I’m not afraid to die.

13:24 CST | category / entries / links
permanent link | comments?

Sun, 28 May 2006

Upgrading from PHP4 to PHP5

So, I’ve spent some time upgrading the darwingames.com codebase to be PHP5 compatible. For those considering the transition (and language designers who are considering an incompatible source version upgrade), I offer the following observations.

The Good:

Relatively few files and/or lines needed to be changed. The major “classes” of changes were:

The Bad:

Most of the “PHP5 changes” taken individually really do make it a better language. However, there are some significant problems and barriers faced by PHP5 due to some of the decisions the implementors have made (remember, this is from a user’s/programmer’s perspective).

So, when designing incompatible language changes let me offer this advice:

Having only browsed through the PHP codebase a few times in my years of using PHP, I am totally unqualified to make sure these recommendations are feasible, but from a user of the language’s perspective, they’d be items I’d appreciate (and if this experience report helps you in your PHP4-PHP5 transition, I’m glad :^).

22:46 CST | category / entries
permanent link | comments?

Sat, 15 Apr 2006

Music Theory and the Guitar

Guitar links! Actually mostly music theory with some misc stuff thrown in.

So, music theory has a lot of different aspects. I’ve been lucky enough to have a friend that let me borrow a “beginning solo guitar” book, which is helpful going through by myself, but it doesn’t have a “feedback” mechanism (ie: something to tell me that I’m doing it wrong). Same with the guitar program that Bety got for me… great info, no “slap on wrist / electric shock button”.

There’s a few different parts of playing guitar:

Music theory seems to concentrate on the sheet-music side of things, which is to say it’s not the physicality of moving your hands, fingers, and sounding the right notes, but instead how to interpret written musical pieces, and how / why notes sound the way it does. A little boring, but the little of it that that I’ve learned has actually already helped me.

My favorite guitar music theory lesson so far (for example) talks about the major scale. At first I thought the scale was “ABCDEFG”, which is partially true, but translating it to the guitar and reading through the lesson it turns out there’s a formula to the location of notes and how they’re placed on the guitar…

Since I can’t explain it better than the other guy, I’ll just copy and paste the relevent section:

4.0 - The Major Scale.

Possible the most important thing here. Everything from chords to scales is derived from the major scale. You can even use the major scale when soloing and writing, as it is a normal scale too. It’s just more important. The formula, in steps for the major scale is W W H W W W H. You apply that in any key (I’m using C again) and you get the major scale.

C   D   E   F   G   A   B   C
W   W   H   W   W   W   H

Notice how those notes fit right into the formula? Let’s try it with E.

 E   F#   G#   A   B   C#   D#   E
 W    W    H   W   W    W    H

Apply that to any note you want to find its major scale.

Cool, huh? So you can play CDEFGABC or follow the formula (WWHWWWH) and play a major scale starting from any other note. The neat thing to remember about it (and how it’s helped me so far) is that whenever you play any single note, you can “walk it up” and have it sound musically correct if you remember this little formula. Two Frets, Two Frets, One Fret, Two Frets and no matter where you started from, you can follow that pattern.

In my other wanderings, I found the following sites, which are all helpful…

And that’s it.

23:25 CST | category / entries
permanent link | comments?

Quickies!

Job

Yahoo! I am Cookie Monster. And a Video Monster. Soon you will be able to blame me for all things streaming/video-related at the big Y! First impressions of the place are good, aside from all the Yellow and Purple everywhere. (yes those words are intentionally capitalized :^) You think you know what it’s like to work for a technical company until you work for a place like yahoo.com and start to realize the scale of what it takes to be visited by almost literally everybody on the internet. The coolest thing is their internal mailing lists, populated by the likes of Rasmus, Andy, Crockford, etc.

Reunion

http://mcc1996reunion.blogspot.com/ and http://www.mcculloughalumni.com/ and http://www.goot.com/.

GoogleBait: “Robert Ames attended McCullough High School in The Woodlands, TX Class of 1996 and links to McCullough’s 10 year reunion.”

Please link to Guinn’s mcc1996reunion blog with some kind of appropriate message so search engines pick it up. If you didn’t go to this school, you might think about doing something similar for your school, as ten years goes by quite a bit faster than you’d think. :^)

23:18 CST | category / entries
permanent link | comments?

Sun, 19 Mar 2006

Tomorrow Starts a New Chapter

“The wind was not the beginning. There are neither beginnings nor endings to the turning of the Wheel of time. But it was a beginning.”

[source…]

I don’t know what to expect tomorrow. A part of me is sad to leave behind the good things and the good people, and part of me is excited to try new things and meet new people. It will be good (because it must be good) and the challenges that are to come will be a refreshing change of pace. Wish me luck

23:09 CST | category / entries
permanent link | comments?

Sun, 12 Mar 2006

Fun Tennis Thing

Ping. Basically like bouncing a tennis ball on a racket. Fun viral. Came via aunts + uncles, and worth reposting, so you know it must be good. :^)

My high-score is 11, but before you respond with a “You suck, Robert, I got 54 with no problems”, keep in mind I’m lying on my stomach after eating tooo much Joe’s Crab-Shack and trying to chase a funny-little tennis ball with a track pad (unfortunately, lame-o haxors have “hacked” the SWF and the high-scores are all 999999… I can’t figure out who is more lame- the people who hack things like this or the poor-security goobers who make things vulnerable like this in the first place). Anyway, enjoy!

23:03 CST | category / entries / links
permanent link | comments?

Tue, 07 Mar 2006

Where does your company fall?

The first step is to determine whether a bozo explosion is happening. Here are the top ten signs of bozosity to help you decide.

  1. The two most popular words in your company are “partner” and “strategic.” In addition, “partner” has become a verb, and “strategic” is used to describe decisions and activities that don’t make sense.

[more]

Take an inventory- how many of these apply to your company?

22:06 CST | category / entries / links
permanent link | comments?

Thu, 23 Feb 2006

From the Mysterious Future…

Let me tell you a little story about backups and why it might be time for you to start doing them…

I was enjoying a quiet evening at home after surfing the ‘net when of a sudden I heard a strange “honk” noise come from my laptop. I figured it was some popup window or flash site that was trying to get my attention. Looked through all my browser windows and didn’t see anything, so I closed whatever ones had a lot of advert’s and thought nothing more of it.

A few days later, I heard it again. Since I had been pretty consistently visiting guitar sites (especially looking for spanish music), I figured that there was some advert or popup that was making it through FireFox and FlashBlock. Ignorance is bliss, so I closed some windows and went on with life.

At work the next day I was doing something (I forget what) and all of a sudden the computer locked up when it was accessing the hard-disk. Programs were behaving like they were trying to do something, but were not able to access the hard drive (I later found out this had something to do with the drive “heads”, the part that actually reads data from the disc). The programs seemed like they might have recovered if I had let them alone for a while, but since it was about 5pm on a Friday anyway, I just turned off the computer and went home for the weekend.

Since I finally had something to do for work, I fired up the laptop on Saturday / Sunday and finished what I had been working on Friday (Java stuff for extracting metadata from files if you really must know). It was then (after a few hours of relative java goodness) that I heard the noise again. No browser windows open, no popups, headphones cranking (so I knew it wasn’t from the computer’s speaker) … definitely a “strange noise” coming from the hard-drive / CPU-fan area.

Not quite crisis mode, but definitely got my attention- copied the most recent files off the HD and onto my USB stick, and immediately shut down the computer. Since the computer seemed to be fine for an hour or two at a time, and the only other failure mode I had observed was ~system lockup~ I had assumed that it might have been a failing CPU fan, but didn’t have anything more concrete than that.

Then came the nerve-wracking part. The computer booted up fine, programs opened and closed, everything appeared to be working, but that intermittent clicking noise could only be coming from the hard drive. Not trusting Apple techs to care much about my data, I immediately started figuring out how to back up the 60gb HD. CDR’s were out. I had cheaped out and not gotten the DVD burner, which might have been useful in this situation. Spamming the data over LAN / WiFi to my desktop would probably not be that great of a solution (take too long). I didn’t want to have to be repeatedly accessing the whole hard drive since I didn’t know how long it would last or what kind of corruption it might have, I really needed to prioritize my data rescue…

The sad thing is I had a 160gb external Hard Drive for situations just like this. Once upon a time I thought to myself that I have a fair amount of data and it couldn’t hurt to back it up. $150 later at Fry’s and I had a $160gb external USB hard drive. Yay. What I really wanted to do was put all my muzak (~20gb of legal OGG’s) on a shared drive / server so that my laptop could hit it, the desktop could hit it, and potentially my future XBMC media-center television thingy could hit it. Plus I wouldn’t be wasting 20gb across multiple PC’s and I could avoid the stupid sync issues that came up when I ripped new CD’s. Put them on the shared drive, all computers could access them.

In order to do that and not keep my 450W desktop PC on all the time I also found a neat little device, the Linksys NSLU2 (now also runs linux), for $100 that promised to turn any USB drive into a network accessible share. Sweet! $250 later and I had 160gb of network accessible storage that was small, modular, quiet, and didn’t use much electricity. One thing that Linksys doesn’t tell you about their NSLU2 is that it “eats” the disk you give it and reformats it to use a proprietary protocol (basically ext2/ext3 since it’s really just an extremely small linux computer designed specifically to serve files), but I didn’t find out about that until after I had copied all my crap to it. Oh well, not too big of a deal since my other computer runs Linux, but still a bit of a waste of time.

Fast forward to about 6-8 months ago and I’m pretty sure a lightning strike took out the venerable NSLU2, leaving me with a cute little hard drive in a cabinet next to the TV that wasn’t network accessible and I couldn’t be bothered to pay another $100 for another NSLU2, or even connect the Hard Drive to my main computer since I was backing up files to it, and didn’t ever need any data off of it (emphasis. ;^).

Fast forward to now, and I’m sweating bullets because my laptop is making dying goat sounds, the external hard drive is formatted to ext3 (which Mac can’t read or write by default), and my latest backups are 6-8 months old at best. Well, I persevered… copied most of the data off the external hard drive onto the 60gb internal drive on my desktop… nuked the data on the external drive and plugged it into the mac laptop. Can’t access it. Found the ext3 tools for OSX and briefly played with those, but figured: in case of catastrophe, the simpler the better, so reformatted the drive to be FAT32 (lowest common denominator) and set about copying files off the laptop.

Let me share with you my experiences with backing up stuff in a priority order. Luckily OSX is very amenable to backing stuff up (especially in the normal case). Simple “tar -czvf backup.tgz /Users/rames” is enough for almost everything non-system. Since I didn’t trust the Hard Drive, I figured I need my Documents folder more than my Music folder, so I was stuck dragging files onto the external HD directory by directory.

The order that I came up with was basically:

~/Documents — most everything I had created

~/Desktop — stuff I hadn’t gotten around to filing yet

~/Local Applications — I had a lot of funky / strange utilities that I didn’t want to have to find again

~/Downloads — all downloads go here. Technically this is low-value since I could just re-download it, but having the original source archives is like my security blanket.

~Shared — This caught some music files I was sharing with my wife as well as misc homework documents, resumes, etc

~/svn-rames — local SVN repository for some source-code type work

~/Pictures — managed by iPhoto

I want to talk specifically about Pictures for a minute… on OSX iPhoto rocks. Even the older version that I have is really cool. You plug in your camera, the pictures get imported, life is good. We had all our digital wedding pictures, family pictures, vacation pictures… everything, all those memories were hidden behind the friendly iPhoto interface. iPhoto is so cool, I had even forgotten that there were extra files that I needed to back up from there until I was almost totally done with the backup process. Given a choice between 1gb of Shareware programs from “~/Local Applications” or 1gb of irreplaceable memories from “~/Pictures”, it’s pretty clear what choice should be made.

The data transfer itself was a real treat. Since as the night progressed, the hard-drive was getting steadily worse and worse, I ended up having to quite literally “shake” the data out of the computer. If the drive stayed in one position too long, it started slowing down the data transfer (from 1-2mbps to 10-20kbps), so there I was with the computer balanced on my knee, gently rocking it from left to right, saying little prayers to the computer gods that this directory or file would indeed make it out of the laptop and onto the hard drive. Toward the very end, I was holding the laptop upside down directly over my head with one hand (applying gentle agitation to keep the system from locking up) while the other was trying to use the track-pad to drag one directory icon over to the hard drive icon. Fun.

Satisfied that I had copied as much data as possible, I turned off the laptop and went to bed.

In the next couple of days, I talked to Apple, made an appointment with their Dallas store and dropped it off for servicing. Free hard drive replacement, but they charge a $50 data transfer fee (“AppleCare covers the hardware not your data, you pathetic victim of MTBF”, very crappy attitude). Luckily I had done as much as possible to satisfy my own idea of “backing up important files”, and very luckily, they were able to recover pretty much everything onto a new drive and I got the laptop back with the same passwords, background images, everything as before the laptop started making noises (even my 20gb of music, which I hadn’t backed up due to concerns that might push the poor HD over the edge). So it cost $50, but it ended up being worth it to have the peace of mind of getting everything back instead of just 90% back.

The moral of this story is: Backup early, all bits are not created equal, remember your pictures, and don’t screw around if it sounds like your computer / HD is making funny noises.

17:42 CST | category / entries
permanent link | comments?

Thu, 26 Jan 2006

Ring in the New Year

Greetings, faithful reader. I missed making an entry last month, so you won’t find out what I got for Christmas. I’m down to the wire on this month and I don’t have any new year’s resolutions to share, but I can give you one of your own… Whatever you do this year, make sure it does not involve crocheting anything that looks like this (especially not gorilla woman!).

Friends, I have gifts for you but I am lazy and forgetful, so you will probably get them next time you come over if I remember.

For those who look for insightful commentary, interesting technical morsels, or agile xp resume’s, stay tuned- I’ve got a great rebuttal to one of Mr. Zawodny’s entries that I’ve had stewing on my laptop since October.

To keep you entertained in the meanwhile I’ll link you to my favorite moderately unknown bloggers.

I’m always excited when I see entries show up in their feeds, so if you’re disappointed when entries don’t show up in my feeds, please read the above feeds and pretend that I wrote them.

08:33 CST | category / entries
permanent link | comments?

Like what you just read? Subscribe to a syndicated feed of my weblog, brought to you by the wonders of RSS.



Thanks for Visiting!