Here's an article I have written about Windows Mobile as an app platform that was recently published on Heise Developer. It is packed with information about the current state of app development on Windows Mobile as well as a short run-down of things to come with Windows Phone 7 Series. If you don't speak German, try this almost readable automatic translation.
Kai.Jaeger.Blog
Apr 29, 19:07 PM by Kai JägerNew article on Windows Mobile as an app platform
Mar 27, 19:17 PM by Kai JägerJSINQ is now stable
...for arbitrary values of stable. Actually it's been a little more than a year since I've first shared JSINQ with the world and so today I feel confident enough to present you with version 1.0. There's quite a lot of new stuff in this release including support for .NET 4.0's new query operator "zip". Zip lets you combine two Enumerables into one, sort of like a join but without the complexity. What's frankly more notable though is the inclusion of two new types, a list type that is a complete implementation of System.Collections.Generic.List and a dictionary type that is (you guessed it) an implementation of System.Collections.Generic.Dictionary. The reason why these were included is because a) JSINQ already had a private dictionary type that it used for certain set operations and b) both the list and the dictionary implementation are enumerables making the framework even more useful. It's also worth mentioning that JavaScript's expando objects which are commonly (ab-)used as dictionaries only support primitive types as keys. JSINQ's dictionary implementation on the other hand (like its .NET counterpart) supports both primitive types and complex types out of the box. If you're interested in how this works, go check out the source code.
Just like the previous release, JSINQ 1.0 comes with a comprehensive suite of tests which is in part to blame for why this release took so long to complete. Nonetheless, I'm still a strong supporter of this approach (writing unit tests in general, not TDD which I don't practice), not just because it helps to find bugs - something that is invaluable when programming in a weakly typed language with whacky semantics, but also because it takes a lot of the uncertainty out of when you have to change something.
So there you have it. Grab your copy of JSINQ today and let me know what you think. Oh, and should you come across any bugs, let me know. Gotta catch 'em all.
Oct 18 2009, 17:56 PM by Kai Jäger
Just like the previous release, JSINQ 1.0 comes with a comprehensive suite of tests which is in part to blame for why this release took so long to complete. Nonetheless, I'm still a strong supporter of this approach (writing unit tests in general, not TDD which I don't practice), not just because it helps to find bugs - something that is invaluable when programming in a weakly typed language with whacky semantics, but also because it takes a lot of the uncertainty out of when you have to change something.
So there you have it. Grab your copy of JSINQ today and let me know what you think. Oh, and should you come across any bugs, let me know. Gotta catch 'em all.
JavaScript for people who are in slightly less of a hurry - part one
My last article JavaScript for people who are in a hurry was yet another attempt to share my appreciation for this language with the world. JavaScript isn't perfect by any stretch of the imagination, but it's a much nicer language than most people give it credit for. Also, cross-browser issues aside, JavaScript is great fun to program in. The problem [...]
read the full article
Oct 15 2009, 23:13 PM by Kai Jäger
read the full article
JavaScript for people who are in a hurry
Sweet mother of science, have I really not posted anything in over three months? Well, fear not because here's a brand new article for all of you out there who wish they knew JavaScript, but can't be arsed to really dive into it. If you can be arsed to dive into it, go ahead and buy my book. It has [...]
read the full article
Jul 07 2009, 01:51 AM by Kai Jäger
read the full article
Internet Explorer - credit where credit is due
What is the first thing that comes to your mind when you think about Microsoft Internet Explorer? Lack of Web Standards support? ActiveX exploits? Internet Explorer has suffered a fate similar to that of Microsoft Windows. That is, we all associate Windows with crashes, yet more recent versions of Windows aren't particularly crashy. In fact, I know a guy who swears that Mac OS X is actually more likely to crash than Windows XP or Vista (of course he's lying). Similarly, recent versions of Internet Explorer have good standards support and better security than previous versions, yet nobody associates Internet Explorer with these attributes. One attribute we do not associate with Internet Explorer in particular is innovation. However, at least in this regard, we may be doing it injustice.
Before I tell you why I think that is the case, I feel that I need to clarify that I'm actually a Firefox user and have been since before it went final. Not an avid Firefox user (there are things I don't like about it), but reasonably happy.
Internet Explorer's late introduction of proper translucent PNG support was (and to some degree still is) somewhat of an annoyance. However, Internet Explorer had support for "flat" alpha blending through CSS filters for a long time. Actually long before similar features showed up in other browsers. Nowadays, most browsers support the "opacity" property which is likely to become an official standard with CSS3. Most browsers, except Internet Explorer. I could point out the irony in this, but do I really have to?
Look everybody, Safari supports the CSS3 property "text-shadow". How awesome is that! Well, I always thought drop shadows were kinda lame, but then again I'm not a designer. Of course Internet Explorer has supported drop shadows and all kinds of text effects for quite some time. Admittedly, the drop shadows in Internet Explorer are not nearly as sexy as the ones in Safari and they are built on proprietary CSS extensions, but it's the thought that counts, right?
For the longest time, Internet Explorer was the only browser to support iframes. In fact, iframes started as a proprietary extension to HTML which later was adopted by the W3C and incorporated into the HTML4 standard. The use of iframes has declined over that past couple of years, but they're still invaluable in web applications for asynchronous file uploads, HTTP streaming, widget isolation, etc.
The unfinished specification of the HTML5 standard mentions an HTML attribute called "contentEditable" that turns any HTML element into what is essentially a richt-text editor. Internet Explorer already supports this attribute as do most other browsers. Why does Internet Explorer support it? Because Microsoft invented it. In-browser richt-text editing is now commonplace and many web applications heavily depend on it, but support for contentEditable (or its predecessor "designMode") wasn't available outside of IE until quite recently. Interestingly, Mozilla as well as other browser implementers chose to adopt Microsoft's somewhat quirky JavaScript API for contentEditable rather than rolling their own.
This is a big one! When Microsoft released Internet Explorer 5, they silently added a new ActiveX component to it called XMLHttpRequest. XMLHttpRequest or XHR for short was used by Microsoft's Outlook Web Access to provide a more desktop-like user experience. Today, ten years later, XHR has found wide adoption as part of the "technology" that is now commonly referred to as Ajax. While Microsoft had initially implemented XHR as an ActiveX object, Mozilla and later others went down a different path and made XHR a first-class "native" JavaScript object. In an interesting case of "cross-fertilization", Microsoft later added native XHR to Internet Explorer as well. XMLHttpRequest is also a candidate for W3C standardization.
What do Firefox, Safari, Chrome and Opera have in common? They all support an HTML5 element called "canvas" that adds graphics support to HTML and more specifically to JavaScript. Did I miss any browsers in that list? Oh right, Internet Explorer. Internet Explorer does not support the canvas element which is unfortunate, especially because Internet Explorer supports a different graphics API and has done so for almost ten years. I'm talking about VML or Vector Markup Language. VML is an XML-based language to produce vector graphics, similar to SVG. SVG of course is natively supported by all the beforementioned browsers except Internet Explorer. Oh, the tragedy.
Most designers as they go through design school are taught about the significance of fonts, about different font styles, about serif and sans-serif fonts and things of that nature. Okay, I'm talking out of my ass here: I have no idea what designers are taught in design school, but I'm assuming that fonts play their part. Either way, I can say from my personal experience that when you tell first-time web designers that they can only use certain "web-safe" fonts in their designs, they're not particularly happy. Unwilling to accept these limitations, designers often feel compelled to put text into images or, even worse, Flash movies. Now here's a crazy idea: wouldn't it be nice if we could somehow embed the fonts used by a particular website into the website itself? As it turns out, recent versions of Firefox, Safari and Opera support this feature through the CSS3 rule "@font-face". Internet Explorer on the other hand has supported this since 1997. The catch? Internet Explorer only supports embedding of special rights managed font files while Firefox and the likes only support embedding of un-managed fonts. Why the rights-management? So that if you embed commercial fonts, Adrian Frutiger doesn't sue yo ass.
Microsoft's decision to suspend all Internet Explorer development after the release of Internet Explorer 6 has turned out to be a fatal mistake. Internet Explorer 6, while it may seem old and dated today, was actually on the cutting edge when it was released. Eight years later, Internet Explorer has lost significant market share and has gone from innovating to playing catch-up. That's a real bummer because Microsoft had all the right ideas about dynamic HTML and web applications. In our wonderful capitalist world, innovation is often driven by competition. When Internet Explorer 6 was released, it quickly gained a market share of over 90%. The end of competition meant the end of innovation. Now that the competition is back, so is innovation. Microsoft isn't on the forefront of it, but who knows where this is going. As long as I'm on the receiving end of this new, much more civilized browser war, I'm all for it.
Before I tell you why I think that is the case, I feel that I need to clarify that I'm actually a Firefox user and have been since before it went final. Not an avid Firefox user (there are things I don't like about it), but reasonably happy.
Alpha blending
Internet Explorer's late introduction of proper translucent PNG support was (and to some degree still is) somewhat of an annoyance. However, Internet Explorer had support for "flat" alpha blending through CSS filters for a long time. Actually long before similar features showed up in other browsers. Nowadays, most browsers support the "opacity" property which is likely to become an official standard with CSS3. Most browsers, except Internet Explorer. I could point out the irony in this, but do I really have to?
Text effects
Look everybody, Safari supports the CSS3 property "text-shadow". How awesome is that! Well, I always thought drop shadows were kinda lame, but then again I'm not a designer. Of course Internet Explorer has supported drop shadows and all kinds of text effects for quite some time. Admittedly, the drop shadows in Internet Explorer are not nearly as sexy as the ones in Safari and they are built on proprietary CSS extensions, but it's the thought that counts, right?
Inline frames
For the longest time, Internet Explorer was the only browser to support iframes. In fact, iframes started as a proprietary extension to HTML which later was adopted by the W3C and incorporated into the HTML4 standard. The use of iframes has declined over that past couple of years, but they're still invaluable in web applications for asynchronous file uploads, HTTP streaming, widget isolation, etc.
Rich-text editing
The unfinished specification of the HTML5 standard mentions an HTML attribute called "contentEditable" that turns any HTML element into what is essentially a richt-text editor. Internet Explorer already supports this attribute as do most other browsers. Why does Internet Explorer support it? Because Microsoft invented it. In-browser richt-text editing is now commonplace and many web applications heavily depend on it, but support for contentEditable (or its predecessor "designMode") wasn't available outside of IE until quite recently. Interestingly, Mozilla as well as other browser implementers chose to adopt Microsoft's somewhat quirky JavaScript API for contentEditable rather than rolling their own.
Asynchronous HTTP requests
This is a big one! When Microsoft released Internet Explorer 5, they silently added a new ActiveX component to it called XMLHttpRequest. XMLHttpRequest or XHR for short was used by Microsoft's Outlook Web Access to provide a more desktop-like user experience. Today, ten years later, XHR has found wide adoption as part of the "technology" that is now commonly referred to as Ajax. While Microsoft had initially implemented XHR as an ActiveX object, Mozilla and later others went down a different path and made XHR a first-class "native" JavaScript object. In an interesting case of "cross-fertilization", Microsoft later added native XHR to Internet Explorer as well. XMLHttpRequest is also a candidate for W3C standardization.
Graphics
What do Firefox, Safari, Chrome and Opera have in common? They all support an HTML5 element called "canvas" that adds graphics support to HTML and more specifically to JavaScript. Did I miss any browsers in that list? Oh right, Internet Explorer. Internet Explorer does not support the canvas element which is unfortunate, especially because Internet Explorer supports a different graphics API and has done so for almost ten years. I'm talking about VML or Vector Markup Language. VML is an XML-based language to produce vector graphics, similar to SVG. SVG of course is natively supported by all the beforementioned browsers except Internet Explorer. Oh, the tragedy.
Font embedding
Most designers as they go through design school are taught about the significance of fonts, about different font styles, about serif and sans-serif fonts and things of that nature. Okay, I'm talking out of my ass here: I have no idea what designers are taught in design school, but I'm assuming that fonts play their part. Either way, I can say from my personal experience that when you tell first-time web designers that they can only use certain "web-safe" fonts in their designs, they're not particularly happy. Unwilling to accept these limitations, designers often feel compelled to put text into images or, even worse, Flash movies. Now here's a crazy idea: wouldn't it be nice if we could somehow embed the fonts used by a particular website into the website itself? As it turns out, recent versions of Firefox, Safari and Opera support this feature through the CSS3 rule "@font-face". Internet Explorer on the other hand has supported this since 1997. The catch? Internet Explorer only supports embedding of special rights managed font files while Firefox and the likes only support embedding of un-managed fonts. Why the rights-management? So that if you embed commercial fonts, Adrian Frutiger doesn't sue yo ass.
Microsoft's decision to suspend all Internet Explorer development after the release of Internet Explorer 6 has turned out to be a fatal mistake. Internet Explorer 6, while it may seem old and dated today, was actually on the cutting edge when it was released. Eight years later, Internet Explorer has lost significant market share and has gone from innovating to playing catch-up. That's a real bummer because Microsoft had all the right ideas about dynamic HTML and web applications. In our wonderful capitalist world, innovation is often driven by competition. When Internet Explorer 6 was released, it quickly gained a market share of over 90%. The end of competition meant the end of innovation. Now that the competition is back, so is innovation. Microsoft isn't on the forefront of it, but who knows where this is going. As long as I'm on the receiving end of this new, much more civilized browser war, I'm all for it.
