Latest Publications

Usability matters

wget-ui.png

At work, I spend a lot of time talking about usability, and often find that people think I’m just talking about the aesthetics of a particular application. Usability is much more than that. At its essence, it’s a way to ensure that a product is really solving the needs of its intended users, in an efficient, intuitive and easy to learn way. But the word says it all, “is the product usable?”.

(more…)

新年快乐 (Happy New Year)

Happy New Year

We went to a local grocery store here in Tampa to celebrate the Chinese New Year with some good friends. I posted pictures of the event in the gallery.

Calgary photo album

calgary.jpg

Uploaded some of my pictures from my recent trip to Calgary. Unfortunately, I didn’t have much time to look around the city, so the selection is pretty limited. I was able to go skiing at the Olympic Park on the last night I was there, but aside from that, most of my time was spent in our Calgary building.

I’m freezing

super_cold.jpg

I’ve been working in Calgary this week, and boy is it cold, specially if you come from Florida. I’m almost done with my assignment here, and looking forward to seeing my girls on Saturday.

¡Viva Piñata! (Update)

pinata_completed.jpg

The birthday party was last Sunday, and I finished the pinata the day before. This one didn’t turn out to be that difficult, and the way I did the rope finally worked so the pinata didn’t fall like it has in the past.

Only problem, I put too many layers! So the kids couldn’t break it!!! So next time I’ll be more careful, and maybe even try to put some soft spots on purpose to make this easier. We actually had 2 adults take a couple of swings, and they had difficulty breaking it.

All in all, it was worth it, the party was a success, we all had fun, and Monica was very happy, which is all that matters.

Game programming under 4096 bytes

Mr. Roboto

So this year I decided to give the Java 4K programming contest a try. I’ve been learning some Flash game programming techniques lately, but decided it be fun to try to create a little retro game with the same code size as some of the old classics (Space Invaders, Asteroids).

So far, it looks like a big challenge. I have the basic character movement and fire controls working, but the game is already 2.4K in a compressed jar! When I use an open source obfuscator, it reduces it to around 1.8K, so I’m already getting to the halfway mark and I haven’t put in the enemy and hit detection to start making it … well, fun.

However, this is fun. I started programming at an early age because I wanted to make games in my Apple //c and my calculator. It’s a good idea to learn how to program by making games, since game programming requires you to deal with user interface design, computer graphics, animation, a bit of AI, performance techniques, and many other aspects of Computer Science.

Hopefully I can finish the game and post it here, but don’t wait for anything earth shattering though, this is looking pretty primitive so far. With the 4K limit, I can’t even really put any sprites that look interesting, and I’m thinking of just using basic shapes for the characters. I’ve also had to do little tricks like;

  • Use arrays instead of classes (or inner classes)
  • For event handling, use processEvent(AWTEvent) instead of listeners
  • Inline methods whenever possible

The last one confuses me a bit. I put some logic to detect if a bullet or character was out of bounds, since this was repeated a bit in the code. But when I added the method it actually increased the class size by 10s of bytes, which I didn’t expect. I’m guessing it’s just the overhead of a method definition, so I’m trying to keep the number of methods I’m using to a minimum.

If anybody has any good size byte code reduction techniques, not including coding directly in bytecode of course, let me know. I’m also looking for recommendations on good open source obfuscators. So far I’m using JavaGuard, which has a nice front end to it.

¡Viva Piñata!

Proto Piñata

I have 2 trips and a lot of work this week, but the biggest challenge is going to be to turn the object above into a piñata of a purse. Right now it looks like a dino egg wrapped in newspaper but this is how it starts (well, this one started as a ballon …). A couple of years ago I started a tradition of making our own piñatas for our daughters’ birthdays and I can’t disappoint Monica this year. Her theme is a “fashion show”, so she likes the purse idea. I’m not too thrilled about it as I rather do characters, but it’s her party of course.

Wish me luck, hopefully this thing will be dry when I come back from Atlanta. I’ll also try to post a gallery of the past piñatas that I’ve made, since some of my friends have asked how to make them.

Update

Evolution is good

Java Evolution

Elliotte writes that Java doesn’t need properties. I sort of agree, there’s nothing inherently wrong with get/set methods, specially if you have a good IDE to automate that task for you. On the other hand, I don’t see how adding support for this feature, probably inspired as a reaction to C#, really hurts the language.

Nobody can disagree that new features need to be added only if they are necessary, but we shouldn’t resist the evolution of the language. It’s OK to come up with new languages that implement all the greatest and latest features, but there’s no need for existing languages to remain static.

Elliote mentions closures, saying they are not needed because we have anonymous classes. Well we do, but the anonymous class syntax is awkward for a lot of developers. Maybe it’s because I do a lot of GUI development, but I’ve gotten used to them. However, you realize there’s a problem when you see lots of developers staring at the syntax and just wondering what the heck is going on. Closures seem like a very good way to simplify this use case.

In the end, there will always be features added that we don’t like (for me, static imports). But I welcome changes like generics, annotations, and eventually closures. They are things that affect the language, but in many ways, similar to big but often necessary shifts in APIs like moving from AWT to Swing.

Evolution is good.

Happy Anniversary Roxana

Feliz Aniversario

Roxana;

Thank you for 8 wonderful years of marriage. Thank you for your love, your friendship and our wonderful family. Thank you for being such a great wife, and being my best friend.

Con mucho amor,
Augusto

Jury duty!

Jury

Just got a jury summons for February 26, 2007. This is the second one I ever get, but I was never able to make it to the first one. Before becoming a US citizen, this was one of those things on my “to do” list (number one was voting) so I’m pretty happy to have another chance at it.

If I do make it into a real trial, I wonder if they’ll let me doodle while I listen to the evidence. Most people think when I’m drawing in a class or a meeting that I’m not paying attention, but it’s quite the opposite for me. Then again, if they complain, I can always say I’m taking “visual notes”.