Archives

Archives / 2004 / April
  • First C# Codec for H.263

    As of this morning, I have ported the C++ version of our H.263 code to C#... I believe we now have the first H.263 implementation written in 100% managed code. Definately the only Flash H.263 managed code lib out there...

  • Macromedia/Sorenson's H.263 Implementation

    H.263 is a video format the is pretty similar to what you find in MPEG. Like a lot of digital video formats, the first place size reduction happens is at the color level. As it turns out, having an equal representation of R, G, and B values like you are probably used to can be pretty wasteful. For example, your eye can recognize far more shades of green than red or blue. Knowing this, YUV formats are used instead of RGB (some times called Y'CrCb). Y, or luma, stores mostly the green info, while the other two components store the r and b components. Taking into account that your eyes don't need as much distinction between all the colors in the spectrum, YUV formats will generally include less information about the R and B component. In the case of H.263, a format known as 4:2:0 is used. 4:2:0 takes the Y component and stores an array of 8-bit values (width*height) for the image. Following this come the V & U components, which are both stored in individual arrays. However, the V and U values are sampled for each 2x2 block on the screen and only contain 1/4 the amount of information. The loss of detail sucks if you need really crisp edges and you aren't working in a high res environment, but for most types of video (like the average DVD for instance), your eye won't pick up on anything...after all, did you even know they were doing this to you until I told you? :-).

  • Articulate Blog

    One of the companies I did some work for based on our SWFSource C++ library has just launched a blog:

  • Why Microsoft Should Hire Miguel

    With all the great thinking coming from Miguel de Icaza, it is no wonder that Don Box is trying to get him to jump the fence. What makes Miguel so dangerous is that first and foremost, he is a brilliant guy. However, perhaps even more important is the fact that he really truely understands and buys into the same type of thinking that has gotten Microsoft to where they are today. Unlike many of the intelligent people in the Linux community, he believes that components are vastly superior to pipes, he believes that managed languages are the only way to stay competitive in the coming years, he believes that Linux development is way to costly, etc. If his crusade is successful, Miguel will have done far more to give Linux a leg up in the coming years than Linus Torvalds and Richard Stallman combined. My advice to Microsoft: “hire him before he succeeds, or face the consequences.”

  • Google Must IPO

    “Ultimately, an obscure securities rule seems likely to override any possible second thoughts about a Google IPO.

  • It's Official, The Patent System Needs To Be Fixed

    “the [National Research] council recommended in its report that the patent office and Congress take seven steps to improve the patent system. Those steps include, among other things, hiring new patent examiners, creating a more open system for challenging questionable patents, and rejecting more patents on processes that are deemed to be "obvious" by people in the field.” [1]

  • Matt's Book

    Matt Mickiewicz sent me a few chapters from one of his company's latest books: Build Your Own ASP.NET Website Using C# and VB.NET and asked me for my thoughts. It definately seems like a book I could recommend to someone with minimal web design experience. Of course, I tend to underestimate the challenge the average person faces when getting up and running since I've been programming since elementary school, but the book does do a better job of explaining some of the basic details than I could do (even stuff I probably would have completely left out, like installing IIS, etc.). There is some potential misleading info in the chapters I read, such as the discussion of “namespaces,“ where the author says you must import a namespace to use its functionality, which leads to a very common misconception that namespaces actually do something. But, to some degree, I can understand something like this, because telling a beginner that “namespaces don't actually exist in the IL“ or something along those lines is probably counter-productive. The initial discussion of current “.NET“ applications from Microsoft is also a bit out of date for a book being published at this time, but this is also a very minor issue. So, overall, it looks like a pretty solid book for a beginner (like 99% of the other ASP.NET books out there), but if you want the technical stuff, go buy a copy of Essential .NET instead.

  • Free Copy of Visio 2003

    So, you want those cool looking MS icons, but only have a copy of Visio for Enterprise Architects? Time to upgrade:

  • Whidbey Dictionary Exceptions

    In Whidbey, the current implementation of the generic Dictionary class will throw an exception when you do something like this:

  • First Gif, now Jpeg. Let the Litigation Begin.

    A company named “Fogent“ is claiming that it owns the rights to the JPEG patent and is suing the pants off of IBM, Apple, and 29 other big guns [1]. Now if software patents should be valid, JPEG compression should definately be a patentable technology. After all, it is rather complex and isn't something anyone is going to come up with over the weekend. However, the patent Fogent is using [2] (4,698,672) is dated “October 27, 1986,“ and Fogent didn't even start pushing companies to license until 2002, which makes their claims quite annoying. After all, I would be willing to bet that one of the major reasons that JPEG gained acceptance as a standard was the very fact that it didn't have royalities associated with it! Maybe today is too early to overhaul the entire patent system, but the USPTO should at least start requiring people submitting patents to submit information about their licensing strategy as well. This way, the USPTO could examine licensing strategies to make sure that companies wouldn't be able to use their patent storehouses to kill innovation. If, for example, a company had no immediate plans to license their technology, then the patent should be invalidated, because its existence will merely stifle innovation by others. This might require a 2 stage submission process, since licensing decisions usually come later in the game than invention, but there could at least be something like a 2 year window in which a licensing strategy must be submitted along with the patent.

  • JetBrains ReSharper Release Date Slips

    The JetBrains guys have a release date set for M2 of ReSharper. The old release date was “Mid-April“ if I remember correctly, so looks like things have slipped a month or so.

  • Defining Classes in Flash

    Working with ActionScript bytecode can be an interesting adventure. Although Macromedia defines the format of 99% of the ActionScript and SWF tags, they don't do such a good job when it comes to how the Flash player deals with the tags themselves. Until now, this knowledge has been kept secret by the SWF decompiler guys and Macromedia (I know of zero articles or references on this, and believe me, I've looked far and wide), but I'm going to start making this info publicly available as I dig deep into the SWF 7 file format with SWFSource.NET (note that classes were really introduced in MX/Flash 6, so doing this stuff will require Flash Player 6 or higher).

  • Google IPO is Here

    “NEW YORK - Within days, Internet search firm Google Inc. is expected to announce it will carry out an initial public share offering, the Wall Street Journal reported on Friday, citing people familiar with the matter.” [1]

  • Microsoft Slams the EU Commission

    I just ran across the clearest description of the idiocity of the EU commission that investigated Microsoft (echos a lot of the very things I have mentioned previously). It's a seven page paper written by Microsoft's legal team and it is extremely well written and extremely interesting. I highly recommend checking it out. Just a sample:

  • Flashmagazine on Flex

    “...Macromedia used to have a product that did well at the medium/big enterprise - Macromedia Generator. The Generator codebase was getting old and hard to extend and many of it's functions could easily be done using clientside Flash. Due to that, Macromedia discontinued the product (no sales or support) and they had nothing new to replace it with. They could have kept Generator there without doing anything with it and now claimed Flex to be the successor. By not doing this, they caused a lot of frustration with the enterprises that had put their bets on Generator.

    There has been some discussion about the pricing of Flex. We don't think $12000 is a lot for enterprice companies. This is not a high volume product like Flash or Dreamweaver and its feature set is great. Let's just hope the enterprises forget fast and that Macomedia will not change the entire API for each new release like they've gotten sort of a reputation for? Some of these companies also bought Generator for the enterprice price of almost $40000 just to see the price sliced to one tenth the month after. A few months later, Generator was discontinued. Now Macromedia will try to sell Flex to the same companies. That could be a hard sell, despite the rave reviews. “

  • Artima Interest Groups Launch

    “...Tonight I've launched a new feature at Artima called Interest Groups, a free service that allows communities to keep informed and discuss issues. Each interest group is essentially a news feed that serves a specific community. The news feed is moderated by one or more volunteers from the community. Anyone can submit news items for consideration. The moderators check the accuracy of the submissions, and decide which news items to approve. Approved items appear on web pages at Artima.com, in two RSS feeds, and form a topic for further discussion in the Artima Forums...“ [1]

  • Luke Hohmann on Licensing

    Artima has an excellent interview with Luke Hohmann regarding software licensing. Luke states that he isn't quite convinced that there are any viable open source business models to date.

  • Macromedia's New Alternative to Sorenson Encoding

    One of the most interesting part of the SWF specs has been the embedded video section. As you may know, starting with Flash 6.0, Macromedia added support for embedded video inside of SWF movies. The video compression codec was licensed from Sorenson and output to a slightly modified version of the H.263 video compression standard. Although it hasn't gotten any coverage yet that I have seen, in Flash 7.0 / MX 2004, Macromedia has added support for another video codec: ScreenVideo. ScreenVideo basically just divides your screen up into a grid and then encodes each of those grid squares as a lossless (or ZLIB compressed) chunk of data. If a grid square does not change, then the chunk's data is left out in subsequent frames, which means that this format is great for encoding video that has relatively static content (screen recording is a likely usage). Unfortunately, true to Macromedia's style, the docs on the video tags inside the SWF are incorrect (yes, the specs are a ton better, but still a few bloopers in there), and I had to spend all night decompiling SWFs and finally get in touch with Burak (the ASV guy) to confirm my findings. In any case, just to document this so people running into the same prob can find the answer, the ScreenVideo packet needs to be proceeded by UB[4] Frame Type, UB[4] Codec. This bears a striking resemblence to its format inside of an FLV file, which is noted in the specs as UB[4] Codec, UB[4] Frame Type. However, Burak mentioned that the FLV specs might be incorrect and that the reverse order is actually what you want. Oh, well. It works now.

  • Client Side MXML Compiler

    Nik Khilnani has an interesting experiment up and running. After thinking (like many others) that Flex is outragously priced ($10k+), he set out to prove that MXML compilation is a trivial process. Head over to:

  • Tortoise SVN For VS.NET

    If you haven't heard, there is a special version of Tortiose SVN now for people using VS.NET. It gets rid of the .svn folder problem that messed up VS.NET web projects.

  • Macromedia's Improved Swf Openness

    While working on our .NET port of SwfSource (a .NET library for working with flash content and creating flash enabled applications), I have been extremely impressed by Macromedia's latest file format docs. A few years back, when I was working on the C++ version of the SDK, the docs from Macromedia sucked big time. They contained a bunch of misinformation and didn't cover a lot of the information inside the swf file format. Since then, Macromedia has restructured it's file format strategy, getting rid of the C++ SDK that they previously offered (good choice, since it was also crap), and focusing mainly on delivering quality docs so that third parties can create better Flash content creation tools (I'm sure the good docs probably had something to do with the Flex team needing some better explaination of the swf format too). This is the first time I've had a chance to really dig deep into the updated docs, and it is quite impressive when you consider the previous state of affairs. In any case, +1 for Macromedia on this one.

  • WalMart and the Future of RFID

    If you are going to be around (or can make it to) Southwest Missouri (Joplin) on April 13th, you don't want to miss this! We have arranged for Kerry Pauling, the Director of Information Systems for Wal-Mart (US and international) to come up and discuss what Wal-Mart is doing in their IT department regarding their mandated RFID support. No press allowed, but all IT folks are welcome. Send me an email if you would like more information or would like directions to this event.

  • Flash, ZLib, and .NET

    A week or so ago, I resumed work on our .NET based Flash file format library (the C++ version, known as SWFSource is generally considered to be the best lib for Flash encoding and is used in a ton of 3rd party SWF tools). The library should be available within the next few months so that you can begin construction of your own .NET enabled version of Flex or Laszlo (if you want to beta so that you can get started on it today, send me an email and I will get something out to you).