Posts Tagged ‘Personal’

Universal constants

Thursday, November 1st, 2007

It’s a sad fact of life.

1. You can have it Fast and Cheap but it won’t be Good.

2. You can have it Fast and Good but it won’t be Cheap.

3. You can have it Good and Cheap but it won’t be Fast.

It also works for project schedules, resources, and scope.

1. The project can be done with that many people and that deadline if you allow us to change the scope.

2. The project can be done with that many people and that scope if you allow us to change the deadline.

3. The project can be done with that scope and that deadline if you allow us to change how many people.

Oh Bush, Oh Bush…

Sunday, July 8th, 2007

Mozilla Exploratory Development

Sunday, July 1st, 2007

When I read Andreia Gaita’s latest post, I started to tear up and laugh a little as it brought back a lot of painful memories with my experience with fighting it. Andreia, you know all to well my pains and my struggles I had with that code (trying to embed Mozilla externally). I’m so overwhelmed with joy that you got it going. Awesome work that you have done taking my pretty hobbled and badly broken code the rest of the way and making it actually work!

My biggest hurdle in the beginning was trying to figure out how to make this all work given all the requirements. Some of the requirements where more self imposed in what I though it would take to get the web browser control accepted, and others requirements came from other monoers (especially Miguel :-) ). Going through the options, it came came down to forking off a version of the entire mozilla tree and embedding the entire mozilla engine into my wrapper, or calling it Mozilla dynamically. (You can read more about that in previous post). I knew that forking the mozilla tree would be horrible because no body would want to build it and use it (it takes an extra 7mb, about 3 hours to build on most average machines, and you have to manually maintain it). Also there were concerns about littering the source control with that massive beast. That left the only other solution, externally calling the local Mozilla environment on the users machine dynamically, although it was the FAR more complicated solution to make it work (it shouldn’t be and perhaps this project will help that).

In beginning, I was still going through the mozilla code and documentation trying to understand it better. I have written a bunch of patches for GtkMozEmbed, so thats the angle I started attacking it. The Mozilla documentation on embedding is helpful but it was written around the idea of forking the Mozilla tree. I was still trying to understand how to make it work so I went ahead and wrote a version of the embedding control in that fashion (internal wrapper) by forking the gtkembedmoz code and removing almost all the GTK+ references (you can see older bits and peices of that here). I though I could take that version and move it to build externally, however I didn’t realize how many private functions and interfaces are inside Mozilla that gtkmozembed actually used. There was almost no way it was going to work, so I started from scratch.

I was pretty much forced to dive deep into internals of XPCOM. In the process I had to learn the evolution of the Mozilla codebase to understand why things where done the way they are done. This took way to long (I could almost write a small book on the topic now). When I got done, I figured that no body in their right mind (I guess that includes me) is going to want to go through this to just embed Mozilla. Thats when I came up with the goal of making sure that the backend library that I was going to write to bridge Mono and Mozilla would be reusable outside of just Mono if at all possible (a simple embedding interface that exposes basic C exports for people to use).

Then it came down to the build environment. I have experience with witting libraries in the open source/Linux world, and at first I though it was going to be easy. Heck, even my distro even had package config files to save me a bunch of trouble (later I found out that my distro added those and there is no standard package config for developer packages or XPCOM). I got started with an environment that I though would work for everyone and got going writing code. I got it working for while, but half way through development I updated to a new release of my distro. Suddenly nothing would compile anymore. I found out that my distro was including IDL files it wasn’t supposed to in the older version. I was missing IDLs I needed. I did some investigation of other distro setups and found everyone did it differently (vastly different in many cases). This shut any new code development down while I re-evaluated what to do and what code would I be able to saved. I went back and looked at what was frozen and I trimmed down the interfaces I was going to use to as few as possible. After that I went back to the code and started trimming out code that called those interfaces I couldn’t/shouldn’t use anymore and looked for a work around to each one. This put the code in an unstable state where it wouldn’t build again. I hacked and hacked, trying to get it to compile again. I wasn’t even sure when I was done if it was going to work since I didn’t get to test it as I went along. I spent a good month’s worth of free time on it. I finally got it to compile but I was cheating in a few places. My build environment still needed work to stop cheating. I remember only one time that I seen that come up and show something after that after hacking it for a while.

Shortly afterward, I started working for TI and at the same time my laptop decided to take a sabbatical and go off to laptop hospital at Dell, who after replacing my motherboard, happened to wipe my drive and image with Windows (thank you every much Dell! Of course it “wouldn’t boot into Windows”, its called LINUX! Thank god I backed everything up.) I decided to give up working on it and wait until the interfaces changes and patches I submitted to mozilla would make it into the next release version (basically by 2.0).

I haven’t been able to spend the time to get back into it with work taking more of day. I did take some time and finished some work on getting a reusable build environment last month but haven’t been able to dedicate the time to it I wanted to.

Thats where Andreia has stepped up and taken over getting it done and she has done an awesome job doing so. I’m so happy to see it going somewhere with all that time I dumped on it.

Mono at Dallas Code Camp 2007

Thursday, April 26th, 2007


Omar snapped this photo of all of us Mono guys (Joseph Hill, “Wasabi”, and me) at the Dallas Code Camp this year. It turned out to be a really good showing. Can’t wait till next year!

Microsoft releases Firefox WMV addon

Monday, April 16th, 2007

Yet more proof of Firefox’s growing dominance. Microsoft’s Windows Media guys have just released a Windows Media add-on for Firefox.

Now it only needs to run on Linux and Mac…

read more | digg story

Mozilla ain’t easy

Monday, March 5th, 2007

I’ve been making some progress on the web control I started some time ago for System.Windows.Forms. I took a little break to wait for the 2.0 release to stabilize the API and make it easier to link an existing build of Mozilla rather then do the pre-mozilla 1.8 method of embedding by forking the entire tree and building everything in you need into your build. In theory it should be possible to link the libxpcom from any Mozilla product based on 1.8 or newer. In practice its not as easy as it sounds.

In order to use the components in Mozilla (using C++) you need to have an interface that represents that class that you use to cast to the instance you get back from XPCOM’s CreateInstance function. (Whats neat is that what it returns you could be anything, including your own instance, a proxied instance from where else, or even reference to a common singleton instance of that class.)

The problem is getting the interfaces on a clean build against the flavor of xpcom you are using with whatever Mozilla product you want to use to develop off of. You can do that by using the IDL tool in Mozilla (xpidl) against the IDL file of the component you want to use. Unfortunately that usually requires you first build the source of the Mozilla product to get the IDL files and the xpidl tool. Some Linux distros package a weird “devel” package which contains the xpidl tool and the IDL files generated when they build the Mozilla product. There is nothing in any Mozilla documentation that I know of that says thats ok or even recommended thing to do. All I’m aware of that is recommend is the Gecko SDK which contains all the headers and IDL files you need as well as standalone xpidl tool. However that tool was stopped after Mozilla 1.7/Firefox 1.0. It wasn’t until recently a new version of the Gecko SDK began to get built again but as part of the XulRunner project. Right now the Windows and Mac versions are broken however because they missing dependencies for their tools (libidl 6.x and glib 1.x)

The other downside is that there are also lots of unfrozen APIs in Mozilla and they change from product to product a lot. That means a lot of #ifdefs and testing on my part to work out all the kinks. For now I’m sticking to Firefox 2.0/Seamonkey 1.0/XulRunner 1.8 api only for now (they all are based of the same branch of the tree).

What I’m thinking about doing is generating the headers with the xpidl tool and including them in the source with instructions on how to rebuild them yourself if you wish not use the included (or in case they change or are different in your case). At least until the new Gecko SDK stabilizes, I think its an ok work around for now then having everyone download and build mozilla just to get the headers to build this library (thats a lot to ask since a Mozilla build can take a few hours doing it from scratch).

The reason why gtkembedmoz is so nice is that its a standard part of every linux build of mozilla and firefox built the normal build process. For that reason it can access internal classes that are not exposed to external developers that link into XPCOM (at least not without hacking). All the public apis are frozen and there are no dependencies to any mozilla headers in the gtkmozedmoz headers. It’s nice and portable and makes it very easy to embed with GTK+. Unfortunately it doesn’t make it easy to just simply copy gtkembedmoz code and make a version that can run dynamically linked against Mozilla. Not to say it wouldn’t be impossible to make standalone gtkembedmoz.

There is a lot of code to go through in order to make it work right in every respect. DOM support is possible as well (the Mozilla activex control guys pull off mimicking Microsoft’s IHTMLDocument interfaces in COM since they work as a drop in replacement for Microsoft’s IE Active Control so I might be able to leverage some of their work).

The great part is that little to none of the actual backend binding library is not tided directly to Mono. It simply just exposes a simple basic C api to embed Mozilla that I p/invoke. For that reason it might be useful in the future for other projects doing similar things to share the same backend that I’m using, like, for example, WxMozilla or Epiphany/Galeon (if they wanted to move off of gtkembedmoz so they could things like use the editing interface). It would be nice since we could all maintain a single library that could keep up with the breaking changes of Mozilla to maintain the same basic API to the backend. That’s just a though I had (that probably might not ever be realized) but I might was well not limit the code to preclude the possibility. Its unlikely but maybe someday down the road, Mozilla could embed the library I’m developing into their normal build. Who knows :-)

You can see the planning and research I did before here on the Mono wiki.

My goal for the next 3 years….

Saturday, February 10th, 2007

I’ve done a lot since I first got interested in computers. It’s my hobby, my carrier, and basically my life. I got started back in the early 90s in the Windows 3.1 days. I wasn’t even out of elementary school before I was programming. In the 4th grade I wrote my first C program, and I knew immediately what I wanted to do. Since that time, I progressed pretty dang far, pretty dang quick. Reflecting on my life, I really hit every goal that I ever wanted to hit. I have to say that while I’m happy as I ever wanted to be, I’m just not that satisfied.

I’m setting a new goal that by 2010, on my 25th birthday, I’m doing something internationally recognizable. I want to manage other developers by then and help them get to the same status that I’m was at, at this point I’m at right now in my life. That means I don’t have much time either. I have to get started now and make it happen. Time to get started!

More to come later….

Casual Programmer

Sunday, February 4th, 2007

One thing I known for in my office is my wacky t-shirts. We don’t really have a standardized dress code anymore. There was one years ago (the up until the early 90s) at Texas Instruments. The rules are relaxed a bit at TI over the years from what I hear and it really depends on the division and area of TI you work for I guess more then anything (over 35,500 employees worldwide and thats not including students, interns, and contractors, every part of the company is like its own little company altogether).

Our QA is staff is know for being pretty lax on their own dress (sometimes even flip flops). Maybe thats why the have they work in the basement? Out of all the developers, I’m the only one that dares to ware a t-shirt more then once a month.

At Match.com, the dress code was extremely lax (I don’t even think the CEO even wore a tie). At Nortel is was mandatory for slacks and a collared shirt and a tie was recommended. When I interviewed for Mary Kay, it was required to ware more then just a tie, but everyone was heavily encouraged to ware only the best looking designer clothing.

Funny stuff…

Myth TV on PS3

Sunday, January 28th, 2007

The PS3 supporting Linux is an awesome thing. It runs under a hypervisor (similar to a client OS runs in Xen).

Well some eager folks got Myth TV working on the PS3. It’s wonderful for viewing stuff recorded on other MythTV boxes but what about recording? Well thats taken care with the use of a USB TV Tunner. You have a fully functioning DVR! How cool is that? It wasn’t for the fact I like to play movies and games, I could record constantly.

After getting of Mono on the PS3, and all the little projects that are starting up exposing people to Linux for the first time, I’m starting to think that Sony might of started something by opening this up the way they did.

monoport.com

Monday, January 22nd, 2007

Monoport.com, the mono flavored paste-bin, is back online.

Note: monoport is not powered by Mono (rather PHP), but it doesn’t have any ads like many of the other pastebins, it defaults to C# syntax highlighting, and it supports a few other neat tricks that I have added that I have found to be useful. I have some other little features coming soon when I get a few minutes to commit everything (including password protecting your posts).

ENJOY!

Second Life goes Open

Saturday, January 13th, 2007

Second Life’s viewer is now open! Linden Labs has decided to release the Second Life client under a GPL v2 license. I’m guessing it won’t be long before the viewer gets some much needed Linux client love and speed enhancements.

Going through source, it’s amazing how clean and structured it is. I was honestly expecting that the code would of complicated it self beyond understanding by any mere mortal programmer because of the massive evolution of the product and its need to stay working with past versions over the years. Personally, C++ is not my favorite language in the whole world, but for this project it was probably the best choice because of the complexity, and the Linden Lab guys did a really great job bringing it together the way they have.

Now I’m wondering if their OpenGL based UI is portable enough to make a standalone library? :-)

Novell/Microsoft Patent Agreement

Monday, December 4th, 2006

I came across this which I’m sure that many of you have seen, but it’s still worth posting:
http://blogs.msdn.com/jasonmatusow/archive/2006/11/11/your-input-requested.aspx

“I think it important for the community to know that Nat Friedman and Miguel de Icaza from Novell have been extremely clear with us that the existing covenant is not good enough - they are being excellent advocates for OSS developers. Nat, I’d like to thank you publicly for your cogent arguments and for the cooporative approch you have taken on this so far.”

GO Nat and Miguel!!!

XNA on the PS3 with Linux+Mono?

Sunday, December 3rd, 2006

I have to praise Microsoft for the move of making XNA free to develop with. For those that don’t know, XNA is a forked version of .NET 2.0’s runtime, where the class library is slightly stripped down with Managed DirectX deeply rooted as part of the distrobution. XNA makes it possible to develop applications that work on both the XBox 360 and Windows.

What is interesting is that this makes development for the XBox 360 consoles so much easier and much more of a licensed activity as comparied to homebrew mods and hacks to current 5th and 6th generation consoles to be able to run “unsigned” code. In the past, the only legal/licensed way to develop for these platforms was only with the use of some very expensive development kits. In order to get the development kits in the first place, it requires lots of paperwork, a few NDAs, and an agreement to only distribute under the vendors terms. It looks like the market is changing though. However, Microsoft isn’t abonding the idea of licensed SDK completely though and still requires you buy a license and SDK to write any unmanaged code for the platform (required if you want to reuse the same codebase to distribute a game on multiple platforms very effectively).

Microsoft isn’t the only one though, because Sony went an interesting route with the PS3 by allowing it run Linux out of the box. Sony still requires you to use their PS3 SDK to make offical PS3 games, but allowing Linux opens the door to some amazing possibilities.

Infact, I just got my hands on a PS3 yesterday, and I’ve already got it booted up on Linux. I love the fact the PS3 almost wants to run Linux (it just about begs you to), and I got Mono compiled and running on it in less then an hour. Before yesterday, I wasn’t aware that the new cell processor comes up as PowerPC processor. Now this gives a great new reason to help out with Tao’s Mono.Xna and get those XNA games running on the PS3. :-)

It’s my birthday!

Sunday, August 27th, 2006

I turned the big 22 today! I think I’m having a quater-life crisis.

Anyways, getting plans together to go out to Boston for the big mono meeting in October. Can’t wait!

Texas Instruments

Friday, July 28th, 2006

I’m so excited. I just accepted a position at Texas Instruments, in the Educational & Productivity Solutions division. They are responsible for development of all the of graphing calculators including the TI-83, TI-84, TI-93, TI-72, and Voyager 200 lines of calculators (if don’t know what they are because you have been hiding under a rock for about 15 years, ask your kids, and most likely they use one everyday in school in their algebra, geometry, calculus, and physics classes). I went on a tour of the facility yesterday, and I have to say I was very impressed. My jaw dropped open when I got to play with the new products (none of which will be do out here in the US anytime soon). Essentially this facility is the R&D lab for those types of products that TI develops.

It brought back a lot of memories. One of my old hobbies in high school was writing games for these TI calculators. It’s how you could look busy in class but really be playing. Just load up your favorite clone of Pac Man or Space Invaders and to the teacher you were graphing out your problems. I even used to sell a pack of assorted games I wrote or downloaded off the web, to all the other kids at lunch for $2-5 each. Just transfer them from my calculator to their calculator over the data cable and take the money. I was one of the only people with a calculator to calculator cable so I had a little monopoly.

I can’t talk about anything specifically I seen there at TI (had to sign a NDA even before the interview), but it’s very exciting because I’m going to be working on some very cutting edge hardware here. Of course I’m not allowed to say if this job will involve mono or not, but I can say my mono experience was a major reason why they chose me. I’m coming on as a software engineer on the desktop integration side of things (specially making sure everything is cross platform). This is almost a dream job for me because I get to use each of my best talents here. It’s also an amazingly short commute (about 3 miles or about 2 stops on the DART rail), and not only that but it just happens to be a Fortune 500 company as well.

I can’t wait!

Enterprise What?

Sunday, July 16th, 2006

What really makes something “enterprise” in context of software development?
“Enterprise” is a term that I hear so much it gets under my skin now days. “Enterprise Quality”, “Enterprise Software”, or “Enterprise Capable” are all terms I hear a lot. If you think of J2EE or enterprise services in the .NET realm, enterprise means component re-usability and persistence, transactions and fault tolerance, and scalability. Thing’s that enterprises (as in large companies) have to worry about when handling thousands of simultaneous processes. It means using ideas like the preallocation of data, persisting and storing state of objects, pooling and caching resources across all running sessions, and working with models, frameworks, and design patterns that scale almost effortlessly.

However I think the term sometimes gets confused with another word, “quality”. “Enterprise” does not mean “higher quality”, although many “enterprise” capable applications require a bit of planning so the code is more likely to be a bit higher quality but that’s mostly just a by-product of the extra planning. I know a good number of “enterprise” level applications that are written horribly and pretty much nothing more then just amazing beasts (one I know makes me giggle thinking about it), but would still be considered “enterprise” in every respect because they all still manage to hit that factor of being able to handle thousands of simultaneous processes.

Nearly any language in almost any platform can be “enterprise” capable if it can support those basic concepts or has anough flexablilty to build them yourself. That includes C/C++ (of course), Mono/.NET, Java, Python, Ruby, and even ColdFusion and PHP to some extent if the applications are designed correctly. It’s nice when something in the platform supports those “enterprise” concepts out of the box, but normally, if your language can support threading and OOP type concepts, you can roll your own “enterprise” level scaffolding for your project to get the job done in many cases. Even J2EE is written in Java.

Recently though, I heard some F.U.D. from a very notable person that claimed that Mono wasn’t an “enterprise level platform”. That really bothered me, more because this was coming from an architect, and architect of a very well known and respected piece of software. However after listening to him I doubt he has ever really worked with Mono. He was focusing on the original goal of Mono as said by Miguel when creating the project, that Mono was to help in the rapid development of desktop applications (to help the desktop Linux world keep up, stay maintainable, and grow as fast as windows). The idea behind what he was saying was that many of the “enterprise” level features you see most often are not really necessary in single user environments. He used the fact that our “System.EnterpriseServices” namespace as not being complete as his fuel to help prove his point. He was also making a lot comparisons to VB6 when writing GUI applications (which is not to be confused with VB6 in combination with COM+ which gives VB6 the ability to be some what “enterprise” capable).

It all got under my skin though I thought his comparison of VB6 to Mono was really very funny. The biggest reason being that VB6 doesn’t support threading and only really faked the concepts of OOP development. For that reason you couldn’t roll your own enterprise capable framework written in VB6 itself very effectively because of language and platform limitations. You couldn’t do like how I said before how many J2EE implimentations are written in Java and write COM+ inside VB6. Also, it is true that we don’t support System.EnterpriseServices, but that’s more because EnterpriseServices is simply just a wrapper on COM+ services provided by Windows, so its something that isn’t cross platform capable, and for that matter is even hardly used even in pure .NET in running on Windows only type setups. It’s so easy to roll your own enterprise level concepts in .NET without the need to use EnterpriseServices, so many just don’t use it (that and you don’t get that bad taste in your mouth from using anything COM related).

Also Mono, since just shortly after its conception, has been moving to be so much more then just being a platform built for desktop applications that it started out to be. Mono itself is modeled directly around the standards published by Microsoft that define .NET as well as all the standard class libraries. The design of the class libraries and languages built on top of it are really built to be a best fit for almost any scenario (just in the same way as Java and Python). It’s not intended just for the web like PHP and ColdFusion are, nor is meant for just desktop applications like the way VB6 and VBA are designed. It might be a different story if Miguel chose to start from scratch on designing a new platform altogether.

We might not have an nice prepackaged application server solution to host your components and maybe give nice you a pretty admin interface or xml config file to setup all those nice features like component pooling and caching that you see in many off the shelf application servers in Java or with Component Services with COM+ (unless you consider XSP for web services), which means you have to write your own service daemons in many cases to do that sort of thing. We also might not have (as some would consider) the legacy EnterpriseServices so it means doing anything you want from that namespace yourself, which I know many of us would rather do anyways for the control and simplicity of doing it the .NET way. Mono supports object serialization, remoting, and web services which makes pooling, persistence, and handling state very easy to do on your own. You can still write a true “enterprise level” middle tier and even host them in their own application server, and do all of that with just a little extra planning.

One really great of example of Mono working as enterprise level product is imeem. Over at imeem, they run Linux and Mono on their applications servers and they deal with the massive amount of concurrent connections from all the client applications accessing the service at any given time. They are great example of how Mono is completely capable of being enterprise worthy. Some other great examples can be found in SecondLife’s use of Mono to power its scripting language and also with Novell’s iFolder solution.

About the time we release 2.0, I think we should rename Mono in the Mono 2.0 release to “Mono 2.0 Enterprise Edition” (or M2EE), just for fun. :-)

Life experiences

Tuesday, July 11th, 2006

It blows my mind. I’ve skipped so many steps in life.

I’m only one month shy of 22. Out of everything, the one thing that sucks the most about being a 22 year old software engineer is being 22. Many of my colleague are around twice my age or at least in their 30s. Anyone below 25 in my field is rare professionally speaking. Many of the people I work with have kids, houses, cars, etc. I’m just a kid really. It’s so much harder when I can’t rent a car and get carded everywhere I go. Can’t get a loan because I just haven’t been around long enough to build up any credit.

I’ve been in the job market programing since I was 14 years old even while going to high school at the same time (working summers and with work study programs for half my school days). That gives me 7 1/2 years of work experience and about 10 years general programming experience (was writing BASIC applications in Quick-Basic when I was 12) which is pretty much makes me a senior level developer in many companies. I’m not in to for the money so much as I like programing in general. That is to say the money isn’t to bad.

I’m always been a little overwhelmed with everything and because of that I’ve had to grow up extremely fast but always gotten by pretty well. I’ve have never once worked in any type of job that wasn’t tech related. Never once worked at a fast food place or bagging groceries or anything like that like almost everyone of my friends my age where doing. I didn’t even start driving (legally :-) ) until I was 20. Never needed to drive anywhere. I always managed without it. I even got by with my out of state expired drivers permit instead of real driver’s license. Never had to ware a tie more then past the interview most places ethier. Just never had to do it and I’ve worked at some pretty big places.

Working on and learning new engineering practices and methodologies and how they fit into software development, figuring out the complexities of how SOX compliance plays into IT these days, constantly figuring out how things work and why they are designed the way they are, and learning how to be mature and professional on a job site. That’s my teenage years in a nut shell. A young nerd trying to make it as software engineer.

However, more recently, I took some risks and now it looks like I might have made some bad choices. Funds are running dry waiting on paychecks. So long to the end of those contracts and getting paid. Way after I really need it. These long waiting periods that wouldn’t bother most of those 25 to 40 year old colleague of mine. Waiting for checks to clear, shiping and handling, mail delays, and holidays making things move slower and slower. I don’t have the luxury of credit cards and loans here so I have few options. Makes me feel like a kid. When I’m broke, I’m totally broke. Really I’m a victim of horrible timing and not enough planning for this scenario I guess so I’m having a really tough period personally. I’m trying to pull a few rabbits out of my hat to get by this month and hoping I get lucky and I hoping I get through this bad patch. This is one of the worst though. I’m hopping it will all work out ok.

I wish signing bonuses where more common place in software engineering jobs or there were venture capitalists that invested in individuals. :-) Oh well. Live and learn. Life experiences are fun :-)

Back to work

Saturday, June 24th, 2006

Got a job. Yeppie. More to come…

DallasCodeCamp 2006

Thursday, June 15th, 2006

Joseph Hill and I both registered to speak at DallasCodeCamp on Mono on the 24th. Come out and see us.

Location and hours of the event:

Code Camp will take place at the Microsoft Building LC1 in Las Colinas, located at:

7000 State Highway 161
Irving, Tx. 75039

Doors will open at 8:30 AM. Don’t forget to visit the site and RSVP and get your parking pass. Its free and there will be food.

HR-XML, FlyVideo3000 Support, Mono turns 5 years old!

Monday, June 12th, 2006

HR-XML
Was working on resume this morning when I ran across something cool called the Human Resource XML Consortium. This is one of the best uses of web services and XML standardization outside use specifically in the tech realm.

You see, my resume is really written in XML. I did that about 4 years ago so that I could write a few XSLT sheets to export the real resume. My experience crosses so many areas, so its really hard to show specifically to the human resource officer who is going to get my resume I know exactly what they need, simply because many of them don’t understand the technology as well as the developers I would be working for in most cases. With this method I can filter and sort specific areas and use different versions of the text so I can match to each specific case as best as possible. All I have to do is tweak a few sorts and xpath queries in the xslt and out comes a specific resume for someone. The other main goal was to be able to export my resume to different formats like XHTML, Text, and an XML schema for converting to PDF (and even someday Word XML and OpenDoc).

What is of interest to me is that the HR-XML guys have come up with a standardized XML scheme for resumes (which happens to be fairly similar to my resume). Though, once its in that format, it conforms to everything published by the HR-XML and when everyone starts using all the HR interchange formats (which from the sponsors might already be true), then I’ll be slightly over the curve. That is if it the general public picks up on it, which I can’t see why not :-)

I’ll release the code that makes this possible later. I think that HR-XML has really got something here.

Update:
greencrab” (with a nasa.gov ip even :-P) else emailed me about http://xmlresume.sourceforge.net/. It’s got Debian packages on apt-get even. Pretty neat stuff.

FlyVideo3000 Support
I wrote a patch for the Linux kernel to support the $18 FlyVideo3000 NTSC video capture card for video4linux. Nothing big but its my first kernel patch I got to send in so I’m excited. Really there isn’t any code, just adding a definition but still, got to start somewhere. See it here: http://marc.theaimsgroup.com/?l=linux-kernel&m=115011638432595&w=2

Mono turns 5 years old!
It’s simply amazing how far Mono has evolved over the years. From its early days in 2001 when the annoucments of what the guys over at Ximian became public knowledge, its simply amazing to see how many people have joined in. This project is massive now. Well over 3 millions lines of code.

Here are some interesting links in Mono history: