Welcome to my blog where I write about software
development, cycling, and other random nonsense. This is not
the only place I write, you can find more words I typed on the Buoyant Data blog, Scribd tech blog, and GitHub.
media
Now that I've finally figured out where I know Zach Hale from (via Colin it seems) I wanted to link to his mixtape-blog. It''s an idea I've thought about before, but never taken the initiative to do, so golf claps are in order for Zach. Anyways, they're some great mixes with lots of artists you probably haven't been introduced to just yet, check it out over on poorleno.com
mono
I recently posted this: Customer Brief: Autonomic Software, Inc to the bleep consulting site. While I cannot disclose too much about how "we have done what we have done" I can say that I used the Mono runtime to allow for them to deploy their software onto both Mac OS X and Linux.
When deploying at a client site recently, I used Package Maker to build a meta-package to install Mono.framework and their software simultaneously. Using the power of launchd(8) the installer installed a LaunchDaemon job file (.plist) and started the job with launchctl all from within the installer. On the Linux side of things rsync(1) to sync things into the appropriate places and then fire off the init.d script.
Overall it's been quite an interesting experience bringing Mono into the corporate world; it's almost like you're telling somebody something that's too good to be true: "wait, I can run this under .NET on Windows, and Mono on everything else? Really?" Unfortunately because of my NDA, I can't disclose too much about the actual project, but it's certainly proved that not only is Mono "enterprise ready," it is probably a better choice to write and deploy software than most other cross-platform frameworks out there.
media
Many Mac users around the world are having problems using video chat on iChat AV. The problem is routers or so I hear, every time I try to video chat with some ( sometimes video chat works) i get an error message concerning a communication error -8. When typed into google, there are several people with my same problem, why can't iChat love everyone equally, does it just hate mexicans. Why can't I hit Video Chat and it just works, I can just hope the new OS can fix this or someone can help me.
software development
I've been experiencing a kernel panic for the past couple weeks, sporadically, but I've finally come up with a reliable set of reproduction steps (for my set up anyways). I have a nagging feeling it has something to do with the Parallels Kernel Extensions (specifically the pseudo-networking devices).
The basics of my kernel panic are as follows, for purposes of demonstration, let's pretend Mac[0] is the machine you feel like kernel panicing, and Mac[1] is some other machine sitting around causing trouble:
On Mac[0] enable "Personal File Sharing" (i.e. turn on Apple File Sharing)
Using Mac[1], mount an AFP share from Mac[0].
Transfer a large file (ISO, DMG, pr0n.mp4) from Mac[0] to Mac[1].
I've been able to reproduce this at the login screen for Mac[0], all the way up to full interactivity (running iTunes, Xcode, etc). In my office, Mac[0] is a 20" intel iMac, whereas Mac[1] is a 12" PowerBook G4. If I had more machines to test with, I'm sure I'd be able to reproduce it there as well. I find it very unlikely that the Apple drivers are kernel panicing my box (see crash logs at end of post), as Apple's IOKit drivers seem to be very solid, so I'm guessing that it is related to the Parallels kernel extensions (.kext). A brief look at kextstat(8) returns this:
intellian:~ tyler$ kextstat | grep parallels
79 0 0x8d4000 0x5000 0x4000 com.parallels.kext.ConnectUSB (2.5.0) <33 11 6 5 4 3>
91 0 0x8d9000 0x6000 0x5000 com.parallels.kext.Pvsnet (2.2) <5 4 3 2>
101 0 0x6bd000 0x14000 0x13000 com.parallels.kext.hypervisor (2.2) <11 6 5 4 3 2>
102 0 0x9ed000 0xa000 0x9000 com.parallels.kext.vmmain (2.2) <11 6 5 4 3 2>
103 0 0x4a10d000 0x3000 0x2000 com.parallels.kext.Pvsvnic (2.2) <36 4 3>
Regardless of whether or not Parallels is running, to ensure I don't come off as a Parallels-basher (even if I really am), VMWare leaves kernel extensions loaded when VMWare Fusion isn't running as well:
intellian:~ tyler$ kextstat | grep vmware
95 0 0x48fe5000 0x1b000 0x1a000 com.vmware.kext.vmmon (1.0.0d1) <11 5 4 3 2>
99 0 0x48d7f000 0x5000 0x4000 com.vmware.kext.vmioplug (1.0.0d1) <33 19 5 4 3>
100 0 0x48b74000 0x5000 0x4000 com.vmware.kext.vmnet (1.0.0d1) <5 4 3 2>
Anyways, back on topic. Given the inherently cryptic crash logs that a kernel panic will leave behind (if any), it's hard to truly tell what is causing the panic. As much as I like to fantasize about becoming an über 1337 kernel haxx0r, I simply haven't the time to whip out a firewire cable, and use Mac[1] as a debugging console to reproduce and crash my main workstation (Mac[0]).
As a software developer however, I'm a bit annoyed that these virtualization applications (Parallels, VMWare) are leaving KEXTs loaded into kernel space even when they're not running, leaving the door wide open to crashes like this one. Unfortunately, a kernel is only as strong as it's weakest link/kext, if one of the KEXTs crash in the spectacular fashion in which they normally do, they can bring down an entire system, possibly leaving a lone developer in central Texas with no other options than to crack open a beer shortly after lunch.
academia
Found an interesting article (through slashdot) on how we should be educating engineering students. The bird's eye view is that students should come out of school with the ability to continue learning rather than some specific skillset. The slashdot discussion and the article really cover mostly different ground on the subject, with the comments on /. debating the pros and cons of teaching engineers as thinkers or trades-people and the original article focusing more on how the education of thinkers can be done. Of course this isn't limited to engineering, any really good Comp. Sci. program runs the same give-and-take between teaching students to program and teaching them how to solve problems.
I don't really think there's necessarily a right answer in any of this. At this point in time it seems to me like the market for Engineers as workers with a certain skill set is notably present (and I'm going to entirely avoid the debate about whether that is right or wrong), while there is undeniable value in being able to apply knowledge outside of a specific skill set (I'm also going to avoid debate about whether this can be taught).
My own career, thus far, has been a case study in why problem solving is more important than specific skills. I am a graduate of the Computer Engineering Co-op program at the University of Alberta. Of my five terms of "Work Experience" I spent the first three doing PLC programming, circuit diagrams (in AutoCAD), and specification and ordering of parts for industrial control systems. My last two were spent doing data acquisition programming in Visual Basic in a direct precursor to my current position, which is a mix of Windows programming, putting together custom experiments, and heat transfer research. I'm also preparing to begin a M.Sc. degree in Mechanical Engineering.
The common theme in all of this is that none of my day-to-day work heavily involves anything I learned as a skill in my undergraduate degree, though I admit I haven't followed an entirely traditional career progression. I heard a Faculty member whom I have a tremendous amount of respect for answer the question "What qualities do you look for when you're looking for graduate students?" with something like "I like to see how they react to problems outside of their comfort zone." Of course he elaborated more on that, and the point was that it much more important for the student to be able to figure out something than to recite something. He also noted that you can get very different solutions to a problem from someone who solves it using a well-trained skill and someone who solves it with ingenuity, reasoning, and research.
Getting back to the article, I really think the term "meta-skills" is fantastic. While you learn skill in a program (and that's inevitable, most concepts in applied science and engineering are taught through some usable skill) the important thing isn't necessarily the skill or even the concept (which set the "trajectory" talked about in the article), but the ability to turn learning skills and concepts into a skill in itself. I think the article essentially skips the most important part of making that happen for students, telling them directly what they should be gaining. All the hand-on activity in small groups in the world isn't going to help them make that leap if they just see it as another lab assignment in a course that's only marginally (if that) related to the job they hope to have when they graduate.
As for the slashdot discussion, while interesting, I think it misses the point by focusing on theory vs. application. As many comments correctly point out, both theoretical understanding and practical ability are important, but in the context of the articles theories and concepts are simply another skill learned. A high level mathematics theory is every bit as narrow as a single programming language if the person who knows that skill doesn't have the ability to work outside their "comfort zone". Versatility is key. But like I said, the discussion is pretty interesting. I've noticed quite afewinterestingcomments. As a note on that last comment, it is fairly similar to (albeit longer) the engineering program here. All engineers here take a common first year, specialize in years 2-4 (while still taking cross-discipline courses), then have to practice as an E.I.T. for years (a residency of sorts) before being able apply to become a Professional Engineer (which is a term whose use is legally restricted).
opinion
So today I began what I hope is a great experience at Texas A&M University, but as I walk through the freezing cold weather and enter my first class I realize I have entered a different world. This has nothing to do with the amout of work or toughieness of the classes ( liked my bushism there... heh heh), its getting used to saying Howdy. Howdy, who the dues says howdy...., people dont say hi here, they say howdy.... what is with this, plus depending on how you say it howdy can sound very (insert brokeback mountain joke here). Well lets just hope things work out, i may just revolt and just say, hi.
cocoa
Through some twist of fate, I was interviewed on Cocoa Radio. I think I managed to maintain some semblance of competence throughout the interview until some random fellow sat really close to Blake and I and threw my concentration.
It was pretty fun, Blake and I hung out most of the week (I even rescued him from the airport in blue lightning on thursday) so doing the interview was a bit weird, as we talk regularly.
And thus begins my long hard trek into the public consciousness; I'll be super-famous, just like Sting, you'll see.
opinion
On my recent trip back from road trip, I couldn't help but appreciate Chris Rock's commentary on "being white" when he said "I always viewed being white like always having five bucks in your pocket."
Sitting in line at a border patrol station just east of El Paso, I watched a hispanic family in a van get inspected relatively thoroughly, and couldn't help but giggle at the "inspection" that awaited me:
Are you a U.S. citizen? arrrrrrr ...Is that a yes or a no? yes. (-_-)
Have a nice day.
cocoa
As some of you (both rather) may have noticed, the bleepsoft.com homepage is a bit different these days.
In the very near future bleep will be releasing an application called "Emission" that, besides the cool icon, will certainly change how I work with the wide array of people across the globe that I deal with on a daily basis.
As a lot of the network core is still unwritten (yes, it's very network-ey), so I'm not going to disclose too many details, but check out the site, Fernando Lins has done a fantastic job on the icon.
opinion
I suppose I will really never be able to fulfill my childhood dream of working for Apple Computer, Inc. Bummer. The changing of the name from Apple Computer, Inc. to Apple, Inc. is certainly symbolic, but I think carries far more weight in the industry than anybody is really giving credence.
Over five years ago, Apple told us that the Mac was becoming/is the digital media hub. They told us that the Mac was going to be the center of our digital life, and like a dropping a penny into an empty well, nothing happened. A glance of the industry as a whole is almost sickening in terms of the void that just didn't get filled. Apple should not have needed to create the iPod. Apple should not have needed to create the iPhone. To paraphrase what Steve Jobs said to a reporter from CNBC "we create products we want to [need/]use." Apple is slowly learning what John D. Rockefeller learned over a hundred years ago, vertical mergers will make you obscenely rich, or to put it more succinctly in terms of Apple's situation, you cannot trust the rest of the industry "figure it out." The Nomad Jukebox is a decent device, but it doesn't integrate into the rest of my "digital life" like the iPod did when it came out. The Motorola Razr, or the Blackberry are all nice devices, they sleek, they have appeal, but they just suck. The software is miserable, and they don't integrate like the iPhone does/will, so they're doomed to play the second-fiddle that Microsoft is finding itself playing with regards to the Zune.
Moving from Apple Computer to just Apple is a weighty change at least in terms of the company mindset that should have the rest of the industry scared sh#$less. Apple is moving away from just computers to something most Mac OS X users have become familiar with, the experience which they have excelled and building with iPhoto, iMovie, iTunes, and the peripherals to go with them. While Microsoft did beat Apple into the living room with the original XBox (I know a number of people that use their first gen XBoxes as both DVD players and media hubs), appleTV has some catching up to do, but has something Microsoft doesn't (besides the religious fanbase), the "experience" necessary to get every joe and smoe type to not only desire an appleTV, but actually use it.
The iPhone is a good example of Apple's power to look at an existing market and completely change the "level of play" required to compete in that market, and do it in such a way that everybody from Main Street to Wall Street is now paying attention.
That's officially my one, requisite, Macworld 2007 blog posting. I'll finish with this image, courtesy of David Young's blog.
media
Yesterday afternoon at the Flash Fire Facility we got a visit from Rick Mercer. Since it won't be airing for a week or so (and thankfully I won't be in it) I won't yet comment on the stuff we did, but it was pretty cool. It was a lot more fun than some of the other TV spots we've done (local news, Daily Planet). Rick was pretty cool, and needless to say very funny. I'd invite him over for a BBQ anyday.
miscellaneous
Almost exactly 333 miles into this trip, and I find myself sitting at a texas rest area (free wireless!). I stopped here about 50% because of the free wireless, and about 50% because I really wanted to see what it felt like to go to the bathroom in 30 degree temperatures.
Unfortunately, thus far the coolest things I've seen are, something on fire on the side of the road, and the moon. West texas isn't really all that exciting. I better get back to cruising though, El Paso is something like 260 miles from here.
I don't plan on making regular blogging stops, this one just happens to coincide with a more biological deadline.
miscellaneous
I have mentioned this to a few people already, but I will be attending te MacWorld Expo this year. Unfortunately the project I have been hustling to attempt to finish in time for MacWorld will not be done until late january/february, so I'll be schmoozing and talking it up at MacWorld, and walking around with a big dunce hat on my head.
True to my inherent nature (see: dunce), I will be packing the bleep roadshow into my super-mega-awesome VW Jetta and driving from San Antonio to San Francisco. What does this mean for you I bet you're contemplating, well, a one time opportunity not only to meet me (a rare honor only bestowed various hiring managers and women of the night) but you too can buy me a beer, lunch, or dinner! If you're a Mac/Mono developer and just happen to either be in San Francisco next week, or along the way, drop me an email (tyler@bleepsoft.com) and I'd be more than happy to stop in $CITY long enough to grab a bite to eat.
I'm not completely sure what to expect, nor how to schedule my time while there. I'm thinking about forgoing buying a "Users Conference" ticket or a "MacIT Conference" since it seems to be as large a waste of money as lighting my January rent payment on fire. Right now I'm planning on buying an exhibit hall ticket, bringing a stack of business cards, and resumés and seeing how many people I can meet.
Again, if you're going to be there, let me know. The bleep roadshow departs early on the 7th, so my email will be hit and miss en route.
opinion
I may be too young to remember a Hewlett-Packard that actually innovated and hired engineers to do more than design crap personal computers, and crappier printers. Like an absolute dolt, I assumed this HP LaserJet 1020 would somehow be different. This time, things would some how work. This time, I wouldn't let myself be suckered in by the promise of quick, efficient printing.
This time, I would be duped again.
This printing saga started with an HP Photosmart C3100, a printer that somebdoy thought the all-in-one-ness of the printer would be a great choice, and by golly, the box says it supports Mac OS X! What a gullible chud I turned out to be. As I sat looking at the HP Printer Setup Utility on the right side of my screen complaining that it could not find the printer on the USB bus, and the Mac OS X Printer Setup Utility on the left side of my screen properly finding and identifying the printer on the USB bus, I honestly felt a little part of my soul curling into a ball and just dying. To make things worse, this was on a PowerPC Mac, who knows what sort of explosive chemical reactions might of occurred if I had trying this with my Intel Mac.
Fast forward at least a year, to a poorly lit apartment in north-western San Antonio. A tall man stares blankly at a printer recently removed from the styrofoam entombing it, wondering first why there is a power cable included in the box but no USB cable, then progressing along to the toner cartridge which has no directions, nor indication on how it is to be inserted into the beast of a printer that lay before him. As with most peripherals purchased from anywhere but an Apple Store, this device may or may not work with Mac OS X (after looking online, the HP LaserJet 1020 apparently can be used from Mac OS X with a 1022 driver). After installing the 1022 driver from the HP.com website, precocious hope is quickly replaced by a subdued rage as the gorgeous 20" screen dims and a message that means nothing other than "restart" is displayed in the center. Shortly after reaching behind the screen and pressing the power button, the message is displayed again as the machine boots up. The device is angrily moved from one end of the office to the other and plugged into a hideous looking Dell machine lying tucked away, following a brief install process, the device succeeds in printing a "Windows Test Page" to verify its functionality, and nothing more.
Fast forward another couple of days, my attempts to print a PDF from within Mail.app are greeted with a similar subdued anger staring at a crash report from Mail.app and a stack trace that contains the following:
Thread 0 Crashed:
0 com.apple.CoreFoundation 0x90859b76 CFBundleCopyLocalizedString + 106
1 com.hp.framework.imaging 0x0eec21f2 AResAccess::CopyExplanationString(ExpType, __CFString const*, short, unsigned char) + 152
2 com.hp.framework.imaging 0x0eec3b72 AControl::CopyDescriptionString(__CFString const*, __CFString const*) + 132
3 com.hp.framework.imaging 0x0eec382f AControl::InitDescriptions(OpaqueControlRef*) + 61
4 com.hp.framework.imaging 0x0eec2b38 ABooleanControl::ABooleanControl[in-charge](__CFString const*, AAccess*, OpaqueControlRef*) + 46
5 com.hp.framework.imaging 0x0eec4a17 AControl::ControlFactory(AAccess*, __CFString const*, OpaqueControlRef*, int) + 313
6 com.hp.framework.imaging 0x0eec4fbf AControlGroup::AddNewControl(ADataProvider*, __CFString const*, int) + 83
I now have an HP LaserJet 1020, sitting on the counter that won't print from Windows, Mac OS X, or any Linux I've tried. Excluding Mac OS X/intel, all the OSes properly identify and configure the device, but that's about as far as any of them can go before meeting the iron curtain HP has wrapped around their miserable hardware and software. I have a feeling that the HP iPod was the last device that Hewlett-Packard sold that actually worked, everything I've either purchased, or come across of theirs certainly doesn't.
R.I.P. Hewlett-Packard; at one point it did grand things in the industry, only to die a slow, suffocating death from its own desire to compete in a flooded commodity PC and printer market.
miscellaneous
I came across this blog posting yesterday and figured I'd relay it because all of a sudden it's changed how I transfer large files. While scp(1) doesn't support resuming, but rsync(1) does and in a very Captain Planet-esque fashion, their combined powers allow for secure, resumable file transfers.
By adding the following alias to .profile you can easily switch from the stock-scp to a resumable one:
alias scpresume="rsync --partial --progress --rsh=ssh"
It's then just a matter of using "scpresume" where I would use scp(1):
intellian% scpresume medahugefile.tar.gz remotehost:
This shouldn't incur too much overhead, but it sure makes large transfers much less painfull on a bad home-user uplink.
miscellaneous
After talking with Phil Aaronson about a recent rant of mine (Bribing Bloggers, Better) I found out that this domain was available and couldn't resist the temptation. I've been meaning to move to a Drupal-based blogthing for quite some time, and the perfect storm of the domain being available and having a brief moment of free time combined with $9 led to the creation of unethical blogger.
My own personal blog URL on the site is http://www.unethicalblogger.com/blog/tyler and I've left open user registration, so you too can have an unethical blog! For example, if I were a Vista shill, I could magically register the username "vistashill" and have an unethical blog at http://www.unethicalblogger.com/blog/vistashill and well, you get the point. I'm going to leave this open and see where it takes me, I am not putting ads on this site, but I must mention the hosting is provided ever-so-graciously by my (good?) friend Dave Steinberg over at GeekISP (GeekISP also happens to host the bleep subversion repository, amongst other things).
I've had better, but I've also had much worse ideas, we'll see where unethical blogging takes me.