Planet Tacobeam

September 02, 2008


Micah Dowty: Another successful project!

Today I finished a major update to my software-only RFID decoder for the Propeller microcontroller, and I finally installed my prototype in the garage. Now I can open the garage door with my RFID badge from work, while I'm on foot or on my bike :)

I'll post some pictures once there's some sunlight. (Edit: Took some pictures this morning)



As an aside: If anyone is curious how secure the door entry badges at VMware are, the answer is "not very". Each badge only has 45 bits of unique ID on it, and a lot of those bits are probably site code, CRC, or some other fluff. No cryptography of any sort- the cards are purely read-only. If you wanted to, you could trivially sniff someone's badge code then build an emulator which pretends to be that badge. Of course, why bother with all that when you could just tailgate someone into the building and download all of our source code via the nearest Ethernet port ;)

Shane R. Spencer: Yay and stuff

Sorry, yeh.. I hate titling blogs with lots of strange and wonderful topics...

First of all. T and I found a good place to get hitched.. and it's a secret. It's in Girdwood and we will only be giving the guests GPS cordinates and a date/time. I'm kidding. Seriously, we found a very nice spot to get hitched at a super neat lodge owned by an energetic woman who's gonna take care of a ton of stuff we don't really want to be involved with. I personally want to only deal with the following.
  • Find somebody to photograph the wedding
  • Find somebody to videotape the wedding
  • Find a tux
  • Tie skyefoil up in the closet until the wedding so she can't escape (June 2010)
  • Find some fancy shoes
  • Make sure tons of people I know can come
If you're afraid I'm going to forget to invite you then send me email, cause I might.

On another note, today I sold a 2 wheel utility trailer via craigslist. Deal sealed w/in an hour. I took the $75.00 from the sale and put it in my pocket. Later that day neighbor guy came by and asked if I wanted a truck bed toolbox. I reached in my pocket and handed him $75.00 and he installed it with me :)



Tada.

I also started using a bunch of styrofoam that skyefoil collected in the shed to help insulate it, she is attempting to keep her plants in a somewhat better insulated shed this winter, so if you run into a plethora (yay, plethora) of styrofoam I'd like to get my mits on it so I can finish the job. Later this week I'll install new industrial hinges on the door and set up better fastners for the swinging doors which are mostly useless at the moment.

Check it.



When I'm done it should look like an inverse Death Star.

Tootles.

September 01, 2008

Dustin Knie: The PAXis of Evil is Coming

Those that attended the PA Q&A at PAX will know what that means.

PA East cost in 2010 in Boston. Dates not yet announced, but awesome.

I think next year, PA is going to conquer Seattle, much like they nearly did to Bellevue before moving the con to the Washington State Convention Center.

Fallout 3 is going to be amazing. I haven't played 1 or 2 yet (will hopefully get through before 3 comes out), but the reaction at PAX was simply that Fallout 3 is going to kick your ass in all the right ways. BEAUTIFUL game and looks incredibly deep. Think Mass Effect meets Fallout and you're still not even close to how awesome this game is going to be.

Spore too. But you all already know that, so enough said.

I didn't really have a plan put together for this post (like I sort of had for the previous one on education), but there are a few things I wanted to mention.

Bioware premiered there next game toolkit, which was developed for Dragon Age: Origins. I must say the amount of detailed control you have to create modules is absolutely amazing. NWN had an awesome toolkit. Dragon Age is going to put that to shame. Unfortunately, its apparently a single player only game, but which likely limits what can be done, but still. I guess you could compare it to something like Oblivion, and in which case, there is definite potential.

Lets see, what else. Freezepop was awesome. Jonathan Coulton was even more awesome (Felicia Day sung Still Alive with him!!!). Darkest of the Hillside Thickets I think is tied with Coulton for my favorite performance, both were incredible.

New Coulton and MC Frontalot collaboration is coming on Frontalot's new album. I can't wait, it sounded so awesome live. Oh, and Frontalot mentioned Brad Sucks during his performance. I don't know how many know who he is, but that made me smile inside.

Wil Wheaton is awesome as usual. Such and incredible writer and speaker and definitely need to pick up his books.

PAX is evolving. It is interesting seeing how things change each year. Or rather, what doesn't. Tabletop seems to have been more of a second thought this year (at least for the freeplay and tournament stuff) than usual, but otherwise, a lot of whats there is really more of whats always been there. More games. More pro-game talks. More game pitches and just more awesome. I look forward to finding out what the approximate attendance was this year. I fully expect it to be around 80,000 people, and leads me to believe we will see close to 160,000 people next year. PA will dominate the convention center. It's just how it is.

Thank you Mike and Jerry, you have given gamers an incredible opportunity to come together and celebrate.

I might post more later. I have a ton of pictures, but many are fuzzy and crappy, so I don't know what I'm going to do with them all.

Oh, and Gabe, Tycho, Kara and Khoo on expert on Rock Band 2 performing Any way you want it by Journey. INCREDIBLE.

--nullpuppy(out)

Why computer science degrees fail.

I want to start out and state that this is merely an opinion from someone who has not yet completed his degree and has not worked in the industry as a computer scientist or developer yet. With that out of the way, let me explain, in the following, fairly long post.

For years I have considered myself to be part of the hacker culture, at least in spirit. I regret to say that my contributions to the world are few and far between, and nothing has really been of use. Much less, I haven’t really done anything in a very long time, and this reality helps motivate me to keep trying. Keep learning. Keep moving forward. The lack of contribution has motivated me to keep moving, even when things look dark and fruitless. Nearly two years ago now, I applied to DigiPen Institute of Technology to pursue a degree in Computer Engineering. As most of those that read this blog know, I was accepted and Tuesday, Sept 2nd, is the first day of my Sophomore year.

As I hope all of you know, today was the last day of the Penny Arcade Expo for 2008. This weekend has been incredibly exhausting, but worth every moment, and I plan to post A LOT about this weekend here shortly. But right now, I simply wanted to mention this because it is likely the event that inspired this post. As a BSCE student at DigiPen, I sit in a unique seat, so to speak. There are very few computer engineer majors at DigiPen, and a lot of RTIS majors. In between are the artists. And I was thinking about this, and thinking of the state of our education and thinking about the dropout rate in the first year. And also thinking about the recruiting/campaigning/advertising going on at PAX in regards to education (for DigiPen and others), I wish had looked closer to make a less subjective observation. A lot of what I see out there are pushes on teaching people how to develop games. This is awesome, and I support it. However, I don’t think a lot of people really understand what it takes to really be successful, and what it takes to make it.

And I don’t think many people understand that coding is an art form that takes nearly as much practice and dedication as drawing or painting or sculpting. The first result for ‘define art’ in google gives

the products of human creativity; works of art collectively; "an art exhibition"; "a fine collection of art

from princeton’s wordnet. I think this definition works well to define what coding is, just as much as art in the traditional sense. Code is a product of human creativity. I suppose some could argue it is also, sometimes a product of machine creativity, but that really is a post for another time.

So what does this all mean? It means that, in some ways, we are not teaching programming in a proper way. For a long time, I was very much against ‘Java Schools’ and shared Joel Spolsky’s view on them. However, recently, I’ve heard some defense of such educations and with my recent revelation, my views have changed. I still cannot advocate relying on a so called ‘Java School’ for a useful programming or computer science education, but I don’t believe that’s where the problem lies anymore.

The problem seems simple now. Artists (drawing/painting/etc), writers and musicians tend to share a similar passion in the work they do. Some coders do too. More need to.

Perhaps that is where part of the problem is. Hackers code for fun. They enjoy it. They know what they do is an art. They are expressing their creativity digitally instead of in some other way.

In contrast, we have the professional software developers. I really do not like stating it in this way, but I cannot think of a better way at the moment. I shall revise in the event a better description comes my way. Professional development is strict and in a sense kind of like an assembly line. Bad analogy, but hear me out. What I mean is that professional development is much more cut in dry in general. You’re given specific task and goal to do, and in a sense you’re following directions, like those of something you might do in an assembly line environment.

Ok, so maybe that doesn’t work out to well. I know in a lot of cases you really do have more creative freedom than that, but from the horror stories you see online, I think that extreme likely exists.

Many coders fall in-between these two groups. Many hack for fun, but have development jobs to get paid doing what they love to do. Some just do it because they make decent money.
I think I got derailed somewhere and have approached a completely different tangent.

This is what it all comes down to in the end. Code is an art. Code is an extension of someone’s (or many’s) creativity. We express ourselves in code.

Granted, there are many situations where this may not apply to its fullest, but I would argue that even a artist drawing a box to contain their work is art itself as well. Or could potentially been seen that way, at least.

So, what does this all mean? What was the point of all of this? It is really quite simple. I think programming needs to be portrayed as art more. People need to realize that good code is inspired. Good code requires work. Good code requires dedication and it requires you to think openly and widely. Progress is not made from repeating what is already there. Innovation comes from trying what hasn’t been tried before. Innovation can also come from tweaking what is already there and already been done. Just like changes in style, or tweaks in detail can change the meaning and emotion of societies traditional view of art.

Obviously, the next question ought to be, how do we fix this? I haven’t figured that part out quite yet. Perhaps the answer is starting simpler and working up to the meaty details. Maybe we should start out in something simpler. Lets start with something like python and pygame or ruby or something. Java is a useful language, but we seem to abuse it more than we should. Maybe we should do something entirely different. Maybe we should not jump directly into learning to code, but learn why we code. Maybe I don’t know what I’m talking about.

I do not know what it will take to improve our computer science education in general. I’m not sure any school gets it right, but I think some get close. Then again, perhaps I’m not thinking quite deep enough. Perhaps the comparison of art and code is closer than I’m thinking. Maybe, just maybe, the reason coders survive and succeed is because they really do understand that code, like art, isn’t easy. It requires dedication and inspiration.

Code is art. Code is creative. Code is inspired.

If you want to succeed, dedicate yourself to it and keep moving. Just like artists constantly draw to improve their skills, coders need to constantly code, in some form, to improve theirs. Follow the advice of the co-founder of github and always have a personal side project that you’re dedicated to.
And most importantly, never, ever, give up.

--nullpuppy(out)

Joshua Colp: New Toys

There are a few new things I have written that I think I will be putting up for inclusion into a 1.6 series release that I thought may be of interest to some. First up is app_agents. This is a replacement for the evil chan_agent. Front-ended using chan_local this provides all ...

August 29, 2008


Scott Perry: Even Dinosaurs Can Evolve


Recently I looked around for the soundtrack to Braid, and found a blog post by the developer on the very topic. The game has excellent music, and what’s left of a game developer in me is astonished by the sound engine.

What really struck me while looking for the soundtrack once I found that blog entry, was not the music anymore (after all, I’d heard the tracks in the game already), it was the music publisher that owns the rights to license and distribute the music, Magnatune.

Before I lose you, I just want to say: you all know my stance on record companies, and how overall they seem to have no other goal than to rob you and the artists they represent to pad their own bottom line. Magnatune claims to give 50% of your payment to the artist directly. 50%. And you get to (more or less) pick your prices, from $5 - $18 for a download, or you can get the music on digital plastic.

While Trent Reznor and Radiohead are doing well distributing their own work independently (and making payment optional for downloads, something that didn’t appear to affect their profit at all), but that only works if you’re already popular. I think that for talented artists that want to get paid and have happy fans, Magnatune is very attractive. I hope it really takes off.

Adapt or perish. Industry outlook upgraded from unblinking cynicism to cautious optimism.

August 27, 2008


J. Paul Reed: jemalloc: now with 100% more NS_DEBUG!

I've been meaning to write about this for at least a month, but... time flies when you're having fun releasing software.

One of the things we've been spending a lot of time on lately at the Nest is the Bird's performance. After Stuart's work on jemalloc1, that seemed like some tasty, low-hanging fruit. I started work on getting that turned on in XULRunner.

For Linux, it was pretty much what you'd expect: flip the --enable-jemalloc flag, and now we're cookin' allocatin' with gas!

Win32 took... well... a "little more time," and I can say that I now know way more about Win32 linking semantics and library symbols than I ever wanted to.

For Win32 XULRunner release builds, it was an experience not-unlike Linux: flip the flag and you're good to go.

But we build all of our dependent binaries in both (shippable-) release AND (developer-friendly-) debug modes. When I went to compile the debug-jemalloc versions, I hit a pretty innocuous error—a missing symbol—that would unravel into a much bigger project.

The initial error turned out to be a side-effect of the way Microsoft's compiler munges symbols in debug mode: it prefixes an underscore to differentiate them. The problem was XULRunner would try to link with symbols in mozcrt19.dll which did not exist, because mozcrt19.dll is always built in release-mode. "No biggie," I thought; "just build mozcrt19 in debug mode."

This turned out to be a "biggie."

The main problem with that approach is that "just turning on debug mode" points the CRT build process at a completely different set of support files to build the DLL. The build magic that was used to get Microsoft's CRT building in the first place didn't provide these supporting files in debug mode.

After poking around some more, it became clear why integrating mozcrt19.dll didn't involve of changes to linker flags for Firefox: DLLs embed information about themselves inside, and mozcrt19.dll was reporting itself as the MSVCRT. Microsoft documents in the CRT source that you should not do this2, and this is one of the reasons.

I briefly toyed with the idea of making the DLL report itself as the debug version of MSVCRT(D), but then decided to fix it correctly3 and create a full set of .def files (which describe the exported symbols in a DLL), to get a build that creates both a DLL named "mozcrt19[d].dll" and reports itself internally as such.

This took a bit of time (and some makefile hackery that I'm not uhh... "super proud" of), but using the framework that bsmedberg and Ted set up, and the build process that bsmedberg reverse engineered, I was able to get a DLL.

In the process, I also converted the original CRT patch to use #ifdef MOZ_MEMORY, so if the source-modifications ever have to be revisited, it's easy to see by visual inspection what we're patching around. (This CRT integration is very clean; only touches a few files in a few spots).

Even after the CRT was building, I wasn't quite done:

  1. Had to add some dummy stub-code to jemalloc.c, so certain _dbg versions of symbols weren't missing

  2. Had to grab the .lib and .pdbs out of the build, so developers could actually build against the DLL (on Win32, having the DLL isn't quite enough; news to me!)

  3. Make it possible to turn jemalloc off for certain parts of the build

That last one turned out to be a bit of a project, and one might wonder "Why would you even want to do this?"

For certain parts of Firefox, like crashreporter and updater, you don't tend to want them linked dynamically (the former because you want crashreporter to be as self-contained as possible4 and the latter because it can't update .DLLs that are in use, so if your update tool relies on any DLLs to run, it wouldn't be able to update them).

Some of this was done, but even still, it took me a couple of attempts to get this right: the first involved using the original design of the jemalloc patch, which munged various environment variables to point the compiler at the right DLLs. I wanted to create a DISABLE_MOZ_MEMORY flag that the build system would pay attention to for these utilities.5

As I was doing this, I ran into yet more linking problems6, this time in crashreporter. This mostly had to do with the fact that you have to specify at .c-file compile time whether you're compiling statically or not7, so to get that flag, you have to tell the Mozilla-build system you want it.

Anyway, after a couple of weeks working on this, and then another week or so tweaking it after it landed in the nightlies, we've shipped two Songbird releases with both release and debug mozcrts available in XULRunner.

While working on this, I was somewhat surprised that this wouldn't affect Firefox, and even more surprised that no one had run into this8. It turns out that this landmine had been "experimentally found" due to a crash. There had been some trouble investigating the crash, because of the inability to build "standard" debug builds on Win32, so getting debug builds working again should be useful.

The upshot of all of this work is being tracked in bug 429745, and consists of three patches:

  1. Updated CRT patch; this is probably the most annoying to review, because it's all patch-to-a-patch-y. I've been thinking of ways to show correctness with pre-processed versions of the .c files in various configurations, to easily see that the release-versions are the same.
  2. The build-goo to handle building in debug mode, copy the mozcrt bits (.dll, .lib, and .pdb) around to the proper places, and point the build at them
  3. The build-goo to make the tools we want to be static, static.

After a TON of help from Mark Yen, some advice from Ted, and a good foundation to build on from bsmedberg, they're currently out to an always-busy-Ted for review9.

And I'm hoping we can get it integrated, so debug builds using the-allocator-we-ship return for Firefox 3.1.

________________________________
1 Which we at some point affectionately started pronouncing as "gem-a-lock"
2 But, of course, isn't entirely clear on what you should be doing
3 And more... involvedly...
4 Thought experiment: what if your topcrasher is in jemalloc, but crashreporter uses jemalloc as its allocator?
5 And a few others... xpidl, xpt_link, xptdump, etc.
6 Which are the most annoying to debug, since the failure often happens at either at xul.dll link time or even closer to the end of the build
7 Insert days of head-banging and cussing here.
8 I guess the observation that most Firefox devs are developing on either Linux or Mac is true? After this experience, makes total sense...
9 And actually, I wrote most of this blog post yesterday, and he already got around to feedback on the main build patch; so now it's on me to refresh the patch!

August 23, 2008


Micah Dowty: The future of computer education

I just stumbled upon a web site which still sells the Elenco Micro-Master MM-8000 Computer Training Kit, a state-of-the-art piece of educational hardware which includes an 8085 processor, 256 bytes of RAM, and a convenient set of keyswitches and LEDs for entering programs and inspecting memory. I remember seeing these in magazines like Electronics Now in the early 1990s, and they sure haven't changed.

Here's an excerpt from the manual where they describe how to load your first program:

August 22, 2008


Micah Dowty: Simplest RFID reader?



That's a Propeller microcontroller board with a few resistors and capacitors on it. Just add a coil of wire, and you have an RFID reader. Here's a picture of it scanning my corporate ID badge, and displaying the badge's 512 bits of content on a portable TV screen:



If you're into that sort of thing, I wrote a forum post with technical details and pretty oscilloscope screenshots.

Dustin Knie: Frustration in Support

As those that know me know, I work tech support and have been for the past four years or so. Tech support is likely one of the most thankless and frustrating jobs one can take. There are far worse jobs in every aspect, but support is unique.

In the years of experience doing this, I have noticed several things. First, general computer knowledge ranges from non-existent to fairly competent. I'll admit that statement is pretty obvious, let me elaborate. I have customers that are incapable of doing something as simple as unplugging their computer to transport it to our shop to so we can work on. Now, I try really hard to ignore this, but the more I run into this and think about it, I do not understand how hard it is to unplug a couple cables. If you're paying attention to what your doing, it's pretty hard to mess up plugging your computer in. Assembly is a different story, and thats ok. I don't know how to rebuild my cars engine, I don't expect my customers to rebuild their computer either.

Now, that is the extreme. I've also had to work with people that, for whatever reason, are unable to explain how they do something every day. Maybe I'm just more observant than most of the populace. Probable, but the extent of some of the incompetence and blindness of some customers is mind-boggling.

Is it really so much to ask to pay attention? Is it that hard to know if your using Outlook Express or MSN or something else? What is so difficult about such basic things?

And why do you think I know every little intricate detail about every application out there?

But I digress. I was optimistic walking into retail tech support. And if I didn't love working with the people so much, and if it wasn't for the few exceptionally awesome customers that we have, I don't think I would have stuck around nearly as long as I have.

Even with all the frustrations and stress and incompressible stupidity, there are some people out there that understand that what those in IT and tech support do isn't the easiest job in the world all the time. Computer maintenance isn't hard. Malware/virus removal is pretty easy these days, but not everything is a walk in the park. Electronics can fail in weird, unexplainable ways, and I hope more people realize this sooner rather than later.

And I feel like I've been rambling for far too long now. I need to write more. Need more organization.

Be kind to and thank your IT people. It'll make your life, and theirs easier. And please, have some freaking patience.

--nullpuppy(out)

August 19, 2008


Shane R. Spencer: St. Paul Island Part III

I'm working on some Cisco and Motorola gear.. I'm reminded why I prefer other flavors of routers, switches, etc.. I'm going to propose a bit of a network change soon.

A while ago I mentioned to the head of the tribal corp that he should put some geocaches out on Saint Paul Island with a "prize" for FTF (First to Find) tourists on island. That was around 2 years ago. A few days ago I whipped out my GPS in front of a coworker who mentioned his wifes school hid a few geocaches on island. I was sooooo going to find them all.. GOTTA FIND EM ALL!

So I did... it was a pretty night and I was wishing Skyefoil were out here enjoying it with me. I took some pics tho!

From SNP2008

Me with a fur seal sprawled out on the ground behind me. I SO BRAVE!

From SNP2008

Some sort of Arts and Crafts project gone horribly wrong. These are supposed to be "seals" that grow when you put them in water. I'm sure it does, I just don't really want to find out what it looks like when it's larger and sopping wet.

Anyways.. It was a fun night, check out the rest of the photos in the album.

August 18, 2008


Scott Perry: The Rich Get Richer…


From the Washington Post:

SoundExchange, the organization that represents performers and record companies, said it supports the higher royalties for Internet radio because musicians deserve a bigger cut of Internet radio profits.

Aw, it sounds almost like the artists are actually going to get a dime of those increased royalties… how adorable. Too bad internet radio has to pay more in royalties per song than satellite radio by a gag-inducing proportion and most artists are still getting a pittance per song compared to the amount collected.

This industry needs a revolution. The middlemen are the only ones taking home a real profit.

thanks, carmen!.

Last updated: September 05, 2008 10:21 PM