Just a quick word on what is currently going on.

  • My internship at Apple is soon coming to an end. It was an absolutely fantastic experience, which I will surely talk about some more in future entries, NDA permitting :p
  • There will be a new MPQKit release sometime by the end of August. It will likely be the last beta release before the release candidate for 1.0, which will happen sometime in September.
  • I have started intensive work on Riven X again, and there is a lot more to come for that project as well. There will also be a new binary release by the end of August. I plan on finishing this project before next summer (for real this time).
  • StarCraft II will be awesome.
  • OpenGL 3 (codenamed Longs Peak) will go final sometime in September or October. This is fantastic news for OpenGL, as LP brings some much needed fresh air to the API, particularly in the realm of object model and data / state transfer efficiency. It will be a while before we see LP implementations ship to customers, but at least the spec will be out there.

Much more coming in a week.

 

The reason this blog hasn’t been updated for a while is because I got an internship at Apple :) . A lot of stuff had to be prepared, a lot of paperwork had to be filled in, but now that things have settled down (yeah right…), I’ll try to bring /dev/klog up to speed.

For those interested, I have a small site dedicated to my experience at Apple. It’s mostly going to be pictures of various events, but may also contain short stories or other tidbits. Eventually it will be merged into this blog, but right now I’m using the easy iPhoto -> iWeb -> .Mac workflow.

 

Late, I know. But here goes for a small look-back on 2006 and what I am up to.

Projects

I am rather unhappy about the progress of my personal projects, or rather lack thereof, for 2006. Although there has been a number of achievements, like figuring out the format of Riven’s special effect files, determining the padding on Riven’s audio files and reverse engineering Blizzard’s extended MPQ archive format as well as a working implementation of MPQ digital signature verification with extracted Blizzard public keys, Riven X is still a far way from being done and I still don’t have released 1.0 versions of my 2 basic MPQ tools (DropMPQ and MPQ Extractor).

Nonetheless, work continues 2007 should see progress across the table. Presently, I am investigating a new file flag in Burning Crusade’s MPQ archives (0×04000000), weird Riven X crashes in current seeds of Mac OS X 10.5 (may be related to the inter-thread communication code) and a simple World of Warcraft repair utility (which I may or may not finish). Looking further, I will continue MPQKit’s refactoring and rewriting for support of extended archives and work on making Riven X playable, which immediately implies implementing hotspots and state variables.

I am also declaring MPQDraft End-Of-Life. Too many hoops to jump through on Intel Macs. Besides, currently (very) popular Blizzard games have awesome user modification capabilities. However I may revisit this decision, if only with the goal of providing some manner of legacy support for modifications using MPQDraft (most of them are StarCraft campaigns).

This shall be the year of the 1.0s!

Blog

I obviously need to write more often on this blog. I suppose it’s a matter of self discipline. In any case, here are some topics I want to write about:

  • Multithreaded programming. Mac OS programmers may very well have a head start on this one considering Apple’s hardware history – they’ve been selling MP machines for a while now. Justin Olbrantz has posted a number of them already, and I intend to follow suit and cover algorithms, data structures and best practices for taming MT software engineering.
  • Somewhat related to the above is asynchronous IO on Mac OS X. Specifically, I want to finish and publish a comparison of certain operations in MPQKit done with and without AIO. I originally had planned to post this in December 2006, however the code ended up needing a lot more work.
  • OpenGL and shader programming on Mac OS X. Another topic I particularly like. And who knows, maybe I’ll get crazy and start a project to have a good shader editor on the platform – no offense Apple, but GLSL Editor is still terrible compared to say RenderMonkey.

This concludes this state of the blog for 2006.

Zohar Res Novae

 Real Life  Comments Off
Sep 122006
 

Now migrating to Zohar Res Novae. Subversion and Trac are down and should be back up in a few hours.

 

Whoa, it sure has been long since I wrote on this blog. Let’s fix that, shall we?

*Ahem* This is Jean-Francois Roy, live from Montréal-Pierre Elliott Trudeau International Airport. Tonight we have a special program, with exciting news about my various projects, and more! For a recap of what my summer projects are, have a look at Summer game plan.

Airport?

That’s right, I am leaving tomorrow today for beautiful San Francisco to assist Apple’s yearly Worldwide Developers Conference. In short, this is the most exciting week of the year for all Mac developers, with probably over 3000 of us converging on Moscone West convention center for sessions, labs, thematic lunches and evening fun in downtown clubs.

I thought it would be entertaining to post some pictures of where I currently am. After all, I am showing my geekiness by doing an all-night pre-WWDC coding marathon. Unfortunately, I only have my cell phone‘s digital camera at my disposal, so these won’t be the greatest pictures ever. In any case and without further ado:

World of Warcraft, everywhere.
Cindy travels with me.

Laptop, drink, caffeine.
A table, some power, energy drinks. What else can you ask for?

Trudeau Airport, 1 of 3.
Where I am.

The bar.
Drinks are served all night!

Trudeau Airport, 2 of 3.
Some of the airport.

Trudeau Airport, 3 of 3.
And some more of it.

Riven X

Truth be told, I have neglected Riven X these past 2 months. Between World of Warcraft, Longinus (the name of my World of Warcraft DKP and raid statistics system) and my summer internship at CHUL, I simply have not had the time to work on it seriously.

However, Riven X will be my priority at WWDC, as far as my projects are concerned. There are several components in my engine that need improvement, and I will take full advantage of Apple’s engineers in the various labs to address known issues. Stay tuned for more!

Longinus

Ah, so much to say about this. The project has become a lot bigger than I originally anticipated. Its objective is now to be a generic raid statistics tracking system as well as a generic (meaning extensible) item distribution system. An IDS is basically a method by which a guild distributes items that drop during raids to participating members. Alexstraza Dragon Riders uses slightly modified English auctions for example, while Trinity uses a zero-sum-based system.

There are two major components to Longinus.

The first is a World of Warcraft interface AddOn (thus written in Lua and XML) which handles gathering data during raids (such as player deaths, connection and disconnect events, joined raid and left raid events, boss fights (duration, outcome)) and in-game IDS functionality (for example, running an auction in the case of my guild).

The second is a Django-powered Python web application. Right now it only handles basic administrative functionality (officer checkout and commit), but I will eventually add public views to browser and consult raid statistics and all that good stuff.

The basic cycle of operation is as follows: an officer makes a data checkout. This essentially exports data the in-game AddOn required to function properly from the online database to a Lua file World of Warcraft will load (in WoW jargon, a saved variables Lua file). That checkout exists in the database and has a UUID, checkout timestamp, checkout officer, commit timestamp and commit officer (the latter two are of course initially NULL). There is no limit on the number of concurrent checkouts.

The officer then uses the in-game AddOn during raids for as long as he or she wants. However, after 3 days, Longinus will remind the officer, at most once per day, to commit back the data to the online database. When the officer does so, essentially by submitting his checkout saved variables file in a simple web form, the web application merges and updates the data in the database with the information from the saved variables file.

I’d like to finish by point (again) at the Trac wiki for Longinus. It’s got some interesting stuff, particularly the wowsv Python module, which not only loads Lua files (or Lua code as string data), but also serializes Python collections back to Lua code.

Wrapping up

Because Andrew is tired, I am going to wrap this entry now. Besides, I don’t have much else to report at this time. This was Jean-Francois Roy, for /dev/klog, in Montréal-Pierre Elliott Trudeau International Airport.

May 252006
 

I am a big fan of Firefly and Serenity. So I chose the title scene at the beginning of Serenity to make sample bitstreams for my internship presentation. I realize I may be violating some copyright laws by posting these files, however they are short and the scene contains screen text for the various people who worked on Serenity. A fair trade, I say.

The source material is the Serenity widescreen DVD, title 3 of the main feature, which has a duration of 00:05:17.86. The MPEG-2 video elementary stream has a bit rate of approximately 5900 kbps and a resolution of 720 by 304 (2.53:1). The AC-3 audio elementary stream has a bit rate of approximately 340 kbps and 6 channels (5.1 layout).

The first file is a high-quality encode using the main profile. The characteristics are as follows:

Video
Bit rate: 2000 kbps (CBR mode)
Resolution: 720 x 304 (2.35:1)
Frames per second: 23.98 (NTSC FILM)
Encoder: x264
Coding tools: main profile, level 5,1, B slices (max one), CABAC, trellis, intra-picture 4×4 analysis, hexagon ME pattern, two pass

Audio
Bit rate: 192 kbps (CBR mode)
Channel layout: stereo
Sampling rate: 48000 Hz
Encoder: FAAC
Coding tools: low complexity profile

Download the Serenity high quality clip (82.31 MB).

The second file respects the DMB specification in terms of coding tools, bit rate and resolution. It gives a feel for what people may expect to see on their cell phones, PDAs and other mobile devices within a few years. The characteristics are as follows:

Video
Bit rate: 300 kbps (CBR mode)
Resolution: 320 x 128 (2.35:1)
Frames per second: 23.98 (NTSC FILM)
Encoder: x264
Coding tools: baseline profile, level 1,3, intra-picture 4×4 analysis, hexagon ME pattern, two pass

Audio
Bit rate: 96 kbps (CBR mode)
Channel layout: stereo
Sampling rate: 48000 Hz
Encoder: FAAC
Coding tools: low complexity profile (does not respect the DMB specification, but no free HE-AAC encoder is available on Mac OS X)

Serenity_dmb_300.mov (15.19 MB).

 

This entry is in French because it mainly concerns Université Laval people.

En plus de mon rapport de recherche, j’ai dû écrire un rapport de stage et une présentation orale pour l’Université Laval. Cette dernière c’est déroulée hier avec plus ou moins de succès. Disons que j’avais beaucoup de contenu… beaucoup trop. Mais bon, je n’étais pas certain du niveau technique adéquat auquel l’Université s’attendait, alors j’ai visé vers le haut.

Voici donc mon rapport de recherche en format PDF (signature électronique) et ma présentation orale en format PDF (signature électronique).

 

Update May 24: Added Amendment 1 and corrected a sequence diagram.
Update May 22: I have added a GPG digital signature.
Update May 21: I have corrected a few mistakes in the research report.

I finished writing my research report for my winter 2006 internship at CRC a few days ago. It’s a rather lengthy document that covers the project I worked on, Digital Multimedia Broadcasting, H.264 and MythTV. It’s available from this blog in PDF format (digital signature) and is covered by the Creative Commons license.

On a related note, I will be posting some sample movies using H.264 video coding and AAC audio coding that comply with the DMB specification, to show what kind of quality we’re really talking about.

 

It’s long past time I wrote a little bit in here. Truth be told, I’ve been extremely busy these past 3 weeks, finishing my internship at CRC and writing my research report. But all that is coming to an end now, so let’s talk about what’s coming up, shall we?

  • Summer internship: I’ll be doing some web programming this summer for the CHUQ, a high-visibility medical research center affiliated to my university. I’m really happy to have gotten that one, and I’ll most likely be able to work at home for extra convenience.
  • Riven X: Work on Riven X has pretty much stalled for the aforementioned reasons. As soon as things have died down a little bit, I’ll pick up the pace again. My first objective is to come up with a solution to the MPEG-2 Audio Layer II decompression problem, which I will discuss in greater detail in an upcoming entry. Beyond that, my mid-term goal is to have first playable done by the time WWDC 2006 comes around. Although I still don’t know whether I’m going or not (it all depends on the WWDC student scholarship), if I do end up going, I want to have as much stuff done as possible to make full use of the expertise that will be available to me there.
  • libblp: I’m going to update libblp sometime in the (not too distant) future to clean up its API and add BLP2 support. This is partly motivated by the next item.
  • Develop a better DKP system for my World of Warcraft guild: World of Warcraft has been my time killer for a while now, and I’m interested as much in its technology as in its gameplay. My guild, Alexstraza Dragon Riders, uses a somewhat custom-made DKP system which is pretty much entirely manual right now and in my opinion is wholly inadequate. In any case, I’m planning the development of a DKP system that will use the same basic mechanism as the one we’re currently using (DKP auctions, essentially), but is a lot easier to use, both on the raid leader side and on the client side, and has other interesting features like a web component and a useful GUI. I’ve just started the design work, but I expect to have more to say about this project in the future.

Although one is never certain about the future, this is probably the gist of my summer.

Back home

 Real Life  Comments Off
May 042006
 

I’ve been back home since late Saturday, however as you can imagine I since had to take care of a lot of things. Unpacking isn’t even done, but right now my priority is finishing my internship report. Once that’s done (I expect that to be tomorrow), I’ll come back and talk about the state of things for Riven X.

As they say, it’s good to be home.

© 2011 /dev/klog Suffusion theme by Sayontan Sinha