Download ant-intellij-tasks-1.0-b1.zip A great but oft-ignored feature of Visual Studio 2005 and up is the inherent consolidation of an important developer tool: the build system. With a Visual Studio solution you can simply run MSBuild and you get accurate, automated builds. This is an invaluable capability: continuous integration is ridiculously easy to set up, as are nightly builds and automated deployment tools. Since I started working for Delver (now Sears) I’ve been switching back and forth between C# (2.0 and later 3.0) and Java 1.6, and though the ecosystems share many similarities there are also several glaring differences. The first of these differences is that, in the Java world, it is perfectly acceptable – even traditional – to maintain a dual project structure, one using the IDE (usually Eclipse or IntelliJ IDEA) and one using one of the build tools (commonly Ant or Maven). The build scripts need to be continuously synchronized with the project structure, and output parity between the two separate build systems is almost unheard-of. Because I had been a complete Java newbie when I started, I had never had the time to really sit down and set up a continuous integration server for our Java codebase, a mistake I did not intent to repeat when Sears took over. The first item on my agenda was to do away with the dual project structure; we originally used Eclipse, so I built a custom Ant script (my first, actually) around ant4eclipse and managed to come up with a semi-satisfactory solution. This also gave us invaluable insight when it was time to revisit our IDE choice; the lackluster project structure offered by Eclipse, along with firm positive comments on IntelliJ IDEA from several team members, tipped the balance and led us to switch to the alternative IDE, while also creating the necessity for a revamped build system can that work on top of the IntelliJ IDEA project structure. Out of necessity, a project was born. ant-intellij-tasks is the result of several months of all-night itch-scratching on my part. While not directly affiliated with the company, we’ve been dogfooding the project at Sears for over a month now, and while there are certainly rough edges it finally seems stable enough for release! From the project website: ant-intellij-tasks is a self-contained build system for IntelliJ IDEA projects based around Apache Ant. In essence, ant-intellij-tasks comprises three components: - An Ant task library that can extract and resolve the IntelliJ IDEA project and module files (.ipr and .iml respectively), and provides a set of tasks and conditions around the project structure;
- A common build script which provides the four major build targets for modules: clean, build, test and package (see the quickstart guide);
- A master build script which extends these targets to the entire project.
The build system is designed to be extensible (e.g. by adding targets), customizable (e.g. by overriding a target's behavior for a specific module) and self contained in that it's a drop-in solution that should not require any significant modifications to the code base. This project is fully open source (distributed under an Apache license) and hosted at Google Code. Please report any bugs or issues on the project issue tracker. ant-intellij-tasks makes use of, and redistributes, the ant-contrib task library.
In the previous installment I have first experimented with rolling the tubes in my headphone amp, and first introduced an external DAC into one of my audio setups. Replacing the Electro Harmonix 6922EH tubes with a pair of matched JAN-Sylavnia 7308 tubes bought me a significant improvement in soundstage and resolution, and adding a Musical Fidelity V-DAC into the mix resulted in even better resolution at the expense of reduced imaging: “… the V-DAC features significantly improved accuracy and resolution, and more and more often I’ve been rewinding tracks just to make sure that, yes, I wasn’t imagining, I really have never heard this or that detail before… In fact, the only disadvantage is in a certain change in the soundstage, as though the stereo separation grew just a littler wider than I’d like. Don’t get me wrong, the soundstage is huge and imaging is terrific, but it sometimes seems to be that sounds tend to cluster a little closer to the extremes of the soundstage than they should.” When that upgrade was concluded I was left with an unfulfilled sense of curiosity. The first tube upgrade was a huge success, and the new DAC added the detail I was missing with the original setup, but I was not entirely happy with the difference in soundstage. Along with the 7308 tubes I bought a pair of Mullard E88CC; from what I’ve read on the tube I predicted that it would improve the soundstage, a theory which immediately I put to the test. Great success! The 7308 tubes were such a huge step up, I did not expect to be so well-rewarded the second time around. The soundstage not only “deflated” to more natural-sounding positioning, but it also deepened (i.e. became more three-dimensional). Instrument articulation has improved dramatically: buzzing of metallic strings can be heard distinctly on decent recordings, bass has deepened remarkably and the sense of air around instruments can be absolutely mind-boggling. Even the noise floor dropped a few decibels. The improvement was so pronounced I now have a renewed desire to test additional tube amps, such as the Little Dot Mk IV SE or DarkVoice 336 SE. I’ll certainly post my experiences if I manage to get my hands on one of these… Finally content with my primary setup (which I primarily use at work), I have turned my attention to the secondary setup at home. At that point the setup consisted of an onboard ALC889A codec, connected to an Aqua Mini-Head via a generic analog interconnect, this in turn connected to ‘03 Beyerdynamic DT880 cans. In my previous post I had failed to mention that I did test the ‘05 edition DT880s with the 7308 tubes and found the new edition to be a downgrade: slightly better midbass marred by a muddy soundstage, flat treble (without the sense of “air” I’ve begun to associate with tube-based amplification) and a generally degraded experience than with the older edition. At that point I had almost put my original setup up for sale in its entirety, but decided to hold on to it for a few more experiments before I let it go. I took the opportunity to test those cans with the upgraded Mullard tubes, but am sad to report that no new synergy is to be found in that direction, and throwing the V-DAC into the mix did not result in any improvement either. As it happens, an opportunity presented itself to buy an upgraded Zhaolu D2.5 DAC for a very good price, and after arranging to loan it for a few days I’ve had the chance to try out some interesting new combinations. The Zhaolu (apparently pronounced chow-loo) D2.5 is a modular DAC that, at a cost of $215, is widely considered as one of the finest and most customizable value-priced DACs on the market. There are a lot of aftermarket upgrades available for the device, and it’s offered with a headphone amplifier module for an extra $55. The device is based off of a CS4398 chip, and my particular unit comes with upgraded National LM4562 opamps. The unit is extremely large (24cm x 30cm x 5.5cm – about the same surface area as the G&W amp!) and surprisingly heavy. Build quality is fairly mediocre: the markings on the front tend to easily wear off and the volume control produces an audible distortion when adjusted. From a usability perspective the unit is decent but does have a couple of minor annoyances, specifically the need to select the optical channel every time I turn it on and an annoying blinking “mute” indicator when there is no active signal from the computer. The D2.5 has only S/PDIF and TOSLINK inputs, and I did not experiment with the V-DAC’s optical input to draw a comparison, so this is not a direct apples to apples comparison; that said, I connected the D2.5 to my desktop via TOSLINK, connected it via the preamp output to the G&W amp and started with the ‘03 edition Beyerdynamic DT880 headphones. The initial impression was severely disappointing: while the resolution was incredible, the sound had lost all warmth and the soundstage had lost all depth. Just to put things in perspective: this sounded significantly worse than with a straight analogue connection from my computer at work. I figured that since the integrated headphone amp in the D2.5 was designed along with the DAC the combination would probably work better; unfortunately, this resulted in an even flatter soundstage, and imaging suffered as well. At this point I had almost given up on the DAC, but decided to switch back to the G&W amp and try out the ‘05 edition DT880s. This resulted in a markedly improved sound in comparison with the V-DAC and analogue connection; the sound gained some warmth, the soundstage expanded significantly and imaging improved as well. This is still a far cry from the ‘03 edition DT880 and V-DAC combination, but I could see how the Zhaolu DAC would benefit the cans if it was paired with the right amp. While a definite improvement over the previous anemic combination, the results were still not satisfying. I briefly tried running the D2.5 and V-DAC through the Aqua amp but was not overly impressed; either the Mini-Head is not a good match for the DT880s (it was supposedly designed around the Sennheiser HD600) or it simply isn’t a very good amp. As an aside, in both cases the ‘03 edition sounded better to my ears than the ‘05. Having tried nearly every combination of equipment at my disposal I nearly gave up at this point, but for the sake of completeness decided to try out the D2.5 and its integrated headphone amp with the ‘05 DT880s. To my surprise, this combination is a winner: amazingly revealing, detailed sound combined with robust imaging and a wide (albeit not as deep as I’d like) soundstage. While not as musical as my primary system (G&W amp, Mullard tubes, V-DAC), the Zhaolu D2.5 provides better resolution and an experience that’s nearly as engaging as that combination for less than a fourth of the cost. Value for the money indeed! If you can find one of these units, I definitely suggest giving it a try; just make sure to test it first as it’s apparently quite finicky with regards to its partners. For my part, the Zhaolu D2.5 has permanently replaced the Aqua Mini-Head amp in my home setup; this, in turn, went to my brother who is quite pleased with it driving ‘03 DT880s via a Creative X-Fi sound card. Visit my Flickr account for more photos
Apparently Java has quite a few known but practically undocumented issues with its handling of UNC paths under Windows. I’ve specifically encountered this bug albeit in a slightly different scenario: @Test public void test() throws URISyntaxException { final URI uri = new URI( "file://c:/temp/test/ham.and.eggs" ); new File( uri ); // IllegalArgumentException thrown here }
Apparently the two slashes after file: are misinterpreted as the authority part of the URI; this thread on StackOverflow may give a few starting points if want to delve deeper. It seems Java implements an older RFC for URIs which has slightly different tokenization rules.
At any rate, so far the only sensible solution I’ve managed to come with is to manually remove or add (depending on your tastes…) a slash:
/** * Resolves the specified URI, and returns the file * represented by the URI. * * @param uri The URI for which to return an absolute path. * @return The {@link File} instance represented by the * specified URI. * @throws IllegalArgumentException <ul><li>The URI cannot * be null.</li><li>Wrong URI scheme for path resolution; * only file:// URIs are supported.</li></ul> */ public static File getFile( URI uri ) throws IllegalArgumentException { if ( uri == null ) throw new IllegalArgumentException( "The URI cannot be null." );
if ( !"file".equals( uri.getScheme() ) ) throw new IllegalArgumentException( "Wrong URI " + "scheme for path resolution, expected \"file\" " + "and got \"" + uri.getScheme() + "\"" );
// Workaround for the following bug: // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086147 // Remove extra slashes after the scheme part. if ( uri.getAuthority() != null ) try { uri = new URI( uri.toString().replace( "file://", "file:/" ) ); } catch ( URISyntaxException e ) { throw new IllegalArgumentException( "The specified " + "URI contains an authority, but could not be " + "normalized.", e ); }
return new File( uri ); }
This is definitely a workaround, but according to newsgroup and forum posts these bugs have been around forever. If anyone has a more elegant solution I’d love to know.
Note: This is more or less a translation of two forum posts in an Israeli home theater website; if you can read Hebrew, you may be interested in the comments as well. First post, second post Lately I have been bit by the audio bug again, and have decided to experiment with my headphone setup. This is the setup I use at work and listen to for hours at a time (often 5 or more hours a day), and which consists of a pair of 2003 model Beyerdynamic DT880 cans I bought on a previous trip to China, hooked up to a G&W T-2.6F amp I bought on the same trip after having spent an hour listening to various equipment combinations. Unlike products from other, internationally recognized brands with which I am familiar (Creek, Musical Fidelity etc.) this product was completely out of my comfort zone: a Chinese-made amplifier, which like many others I normally associate with cheap components and subpar build quality. Additionally it is rather large and bulky, and to top it off, it is a hybrid design based on two Electro Harmonix 6922EH preamplifier tubes and a solid state power section. Up until that point I had heard solid state equipment exclusively, with the exception of two loudspeaker demonstrations in which the amplification included tube components and was significantly more expensive than I could even consider. Since I had not known what to expect I could not detect the subtleties of tube sound, and had chosen this headphone/amp combination strictly on being the best I had heard during that visit. This setup was, in turn, hooked via a generic interconnect to my work computer with onboard HD audio, through which I play mostly lossless rips from my own CDs via Exact Audio Copy. It had faithfully served me for over three years, at which point I decided to do some research and was first exposed to the vast world of tube-based amplification and tube rolling. After several days of forum lurking and reading well into the night I had placed my first ever tube order at thetubestore.com. With the help of the shop representative, Jon, and general recommendations around the web, I had selected a matched pair of JAN-Sylvania 7308 tubes and yet another matched pair of Mullard E88CC tubes and placed my order. I did not have to wait very long, as the UPS delivery arrived amazingly fast (a single weekend, not too shabby for an international delivery!), and decided to spend a few weeks with each pair to be able to form an honest, educated opinion. I begun my experiments with what is, according to general consensus, the weaker tube: the JAN-Sylvania 7308. What a shock! While I do not, for a moment, assert that similar or better sound cannot be found in solid state amplifiers, I certainly did not expect such a dramatic difference in sound quality. The soundstage, previously wide but shallow, simply exploded! It’s as though the sound instantly multiplied its volume tenfold or more; highs became wonderfully airy and distinct, and the resolution… let me put it this way: in every audio enthusiast’s life there are but few such moments of enlightenment, where you suddenly realize how much more is possible, and even attainable. The first time I’ve listened to the very same equipment with upgraded tubes provided me with one of those rare occasions, and from that point on I can never settle for less. At the same time I had a second such revelation, albeit by accident: because of the physical layout of my desktop at work I was forced to place the amp further away from the computer, which necessitated a longer interconnect cable. I did not have one at hand and until I was done for the day I was left with no alternative but to use the iPod’s standard analog output. The iPod is generally considered to have very poor analog performance, which is why I was thoroughly surprised when, having brought a longer (and higher quality) interconnect from home and hooked the computer up, I found that the iPod actually sounded better. I recall when it was almost impossible to find a decent quality audio card for your computer, and assumed that contemporary solutions were at least adequate; indeed, the computer sound output was cleaner (better SNR) but also had significantly diminished dynamic range and volume. This led me to the conclusion that an audio card upgrade was in order. A little research into the subject brought me to the the conclusion that what I’m interested in is not, in fact, a computer audio card; what I want is an external DAC, or more specifically a USB DAC. Getting a computer to output even half-decent analog audio is pretty much a futile quest, and while hooking it up via coaxial/optical S/PDIF would certainly work there are some significant disadvantages, namely: digital (lossy) volume control, and jitter. With S/PDIF, both clock and data signals are encoded together on a single data line, and the click has to be regenerated. This introduces subtle timing inaccuracies, generally known as jitter, which in have an undesirable impact on digital-to-analog conversion (a more scientific explanation can be found here). Just how significant an impact is a subject of much controversy, but at a USB DAC has the theoretical advantage of significantly reduced jitter on the protocol level, as well as removing the question of the onboard S/PDIF encoder’s clock accuracy from the equation. With the advice of fellow forum members I resolved to try one of the following DAC trio: Cambridge Audio DacMagic, Oritek OMZ DAC or Musical Fidelity V-DAC. Following a lead from a fellow forum member I eventually bought the V-DAC for a very good price from a head-fi.org forum member. The V-DAC is a 192KHz/24-bit upsampling DAC with optical, coaxial and USB inputs that has received high praise in the head-fi circles and is even available in Israel for a surprisingly reasonable price. I hooked the unit up with an unnamed but high quality silver interconnect, and after significant critical listening I can draw the following conclusions: compared with both iPod and onboard audio card (as well as an old Audigy 4 I had lying around) the V-DAC features significantly improved accuracy and resolution, and more and more often I’ve been rewinding tracks just to make sure that, yes, I wasn’t imagining, I really have never heard this or that detail before. This is exactly what I got into audio for in the first place! The bass is also much tighter, and in my opinion also extends further down than it ever did. In fact, the only disadvantage is in a certain change in the soundstage, as though the stereo separation grew just a littler wider than I’d like. Don’t get me wrong, the soundstage is huge and imaging is terrific, but it sometimes seems to be that sounds tend to cluster a little closer to the extremes of the soundstage than they should. All in all I’m extremely happy with the upgrade, and luckily I still have some new equipment left to play with: the Mullard E88CC tubes, patiently awaiting my pleasure. Still, now that there’s such a significant difference in fidelity between my work and home setup (which consists of an Aqua Mini-Head amp and Beyerdynamic DT880 2005 edition cans) I feel compelled to experiment with new equipment. Whatever shall I try next, a new DAC? Another amp? Different cans, perhaps? The choices are endless, and that’s the beauty of it. See you on the next upgrade. Update: Some more pictures can be found here.
As a huge movie buff I could always give quick opinion on a movie, a subject which tends to come up quite often in conversation. It occurred to me that, although since I’ve finalized my home theater setup I’ve been watching dozens if not hundreds of movies with my girlfriend, the sheer volume makes it impossible to review the lot of them in blog posts. Then the idea struck me that Twitter is the perfect platform for quick-and-dirty movie reviews: - Reviews have to be succinct; each review consists of up to 140 characters, a hard limit inherent in the platform. Subtract from those characters the movie length, final grade (more on that later) and (being as obsessive as I am about language) no skimping on spelling or punctuation marks either. Condensing my thoughts on a movie to such a limited medium means I have to focus on either one point with some elaboration, or at most two with no embellishment of any sort.
- It’s non-committal. I spend a minute or two thinking up a few angles on which I can go, then another 2-5 minutes refining the text until I’m satisfied. It’s much easier and much more pleasant to spend five minutes after a movie writing up a message on Twitter than to spend a couple hours each week summing up movies days after I’ve seen them; if I wanted to keep this in blog form I would have had to write up summaries in the same manner anyway, why not just publish them directly?
- Low overhead. Having a blog means I beat myself whenever I slack on posting, and I’m committed to keeping it up and running, indexed and technologically relevant (if only so I can move hosts freely and avoid spam). Twitter is a managed platform, means I don’t have to worry about storage, bandwidth, backup or crappy web hosts.
With the rationale out of the way, I give you movies à la mode: 140-character movie reviews! The grade scale I use is my own, and while I believe it to be consistent I make no guarantees. To give you some sort of reference point, I consider the original Matrix a genre-redefining action movie, and as such would give it an 8; Reloaded, on the other hand, not only pales compared to the first, it’s also horribly overblown and would rate a 2 (for the effects and nostalgia). There are a few reviews up already, go read them and please do comment!
A couple of years back I went to Breakpoint 2007, which was my first international (read: non-Israeli) demo party, as well as the first proper demo party I went to in 9 years (the Israeli demo scene had a couple of small get-together events in Kamon in 2000 and later in 2005, but I don’t consider those actual demo parties). Along with Bacter and my brother Mickey, we three were the only Israelis to be found at the party. I missed Breakpoint 2008 due to product release pressures, the normal state of affairs while working for a small startup; I resolved not to miss it again this year, and made plans with Bacter and Mickey to meet up at the party place. Executive summary: amazing people and amazing scene spirit. I spent nearly all of the party outside with a beer in my hand chatting with people. It’s amazing just how much diversity one can find in such a small group; really the only common grounds is a general love for art, freedom of expression and the demoscene in particular. One moment I may be involved in a deep political discussion with a bunch of Germans (greets Streettuff/TRSI), and the next I’ll be drawing a comparison between English, Dutch, German and Hebrew with a bunch of Dutch guys (hi Cosmiq!) or quoting Borat with our resident Portuguese Jeenio. While I’m at it, greets to Luise, Julius, Jan and Manu from München, Okkie, the Misfit of the C64 scene and everyone else with whom I’ve spent with and whose name I can’t remember Although some of the compos this year had disappointing turn out (in particular, out of 25 or so demos maybe two or three are noteworthy) the party was still great fun. The lack of sponsors did very little to detract from the quality of the party, possibly the opposite in fact: the event was sponsored out of the entrance fee and donations made by sceners in the few months before it took place, the net result being that everyone present was happy to be there and the party really took off. Kudos Breakpoint organizers! I recommend watching the following productions from Breakpoint 2009: Everything is Under Control by the ever-prolific mfx is the invitation demo to Breakpoint 2009, which brings to the table mfx’s usual array of amazing 3D graphics, 2D effects, fast code and coherent, though disturbing, design. With its 1984-esque theme this demo set the theme for the entire party. One of the noteworthy demos from Breakpoint 2009 is Freedom From State by Hullabaloo: this demo was entirely written at the party-place by blala, who had been sitting with has MacBook right next to us the whole party and coding furiously in Haskell. Yes, you heard me right: the demo is written in Haskell, which (along with the party theme) is why Freedom From State is such an excellent name, even though the demo itself is quite unremarkable. And in the wicked cool department, lft (of Craft fame) is at it again with another microcontroller-based demo: Turbulence (or on pouët). This time the custom hardware platform is based on a Parallax Propeller chip, and the demo itself is both good (in an oldskool kind of way) and damned technically impressive at that. Kudos! Excelence by the group with the awesome name BraadWorsten Brigade is probably the world’s first Excel demo, and proves just how fortunate we are that this is the case Don’t take me wrong, it’s awesome and even funny, but if no-one else ever makes another VBA demo it won’t be soon enough… Breakpoint 2009 has seen a lot of first-time productions by new demo groups; of these my favorite is PC-03 ON/OFF by Panda Cube. A stylized 3D flyby with subtle shades and nice presentation. I hope these guys go on to make demos, lots of potential there! Although this was not strictly their first production, Conscious of Blue by System-K is another favorite of mine: a clean, well-designed and imaginative demo that’s very different from the typical European demo style. No surprises there; these guys come from Japan. I didn’t even know Japan had an active demoscene, although for the life of me I don’t see why not. Kudos guys! While Crush by Anadune and Floppy was not the only enjoyable PC demo at Breakpoint 2009, it was certainly the most impressive: the right blend of technology, design and music. Borrowing a leaf from Debris by farbrausch, this demo features plenty of deformable objects and lots of glow, but is different enough in style, pacing and content to stand out on its own. Two or three scenes here (such as the one pictured) are simply astounding. It seems white is the new black, with at least three white-themed productions at this party alone. With that in mind, 060659 by Rebels is an excellent (if not groundbreaking), stylized 64k intro that’s always great to watch. The commodore fan-service in the middle is gratuitous, although the effect itself is absolutely brilliant. Music is also subpar, but the design more than makes up for it IMO. One of the most technically impressive C64 demo I’ve ever seen (possibly on par with Second Reality 64), Das Gotler by Extend and Dekadence hits you from the very first moment (with how the C64 basic window is cleared). The downside? Horrible, horrible music. The last few years have seen some amazing new artistic outlets for the scene, particularly commercial-quality animations in the compos. Breakpoint 2009 had a couple of fantastic entries, notably the winning duo. 2nd place animation compo winner Julie by Nuance is both a fantastic artistic expression and a terrific tech demo: with a 300 Euro budget and stuff they had lying around at home, the team tried (rather successfully) to imitate the bullet-time effect popularized by The Matrix. They’ve also released a “making of” document that’s a fairly interesting read. On the other end of the spectrum you’ll find JCO’s Spiechergurke, a fake commercial for a new kind of storage product (watch with subtitles). Other than being very well made it made me laugh my ass off. I think all in all Julie was the better production, but it was a very hard toss-up between the two; at any rate I’m glad both won the competition (Speichergurke took 1st place). Jesus Christ Motocross by Nature and Traktor is, other than being a heavy hitting, funny and fun to watch, an amazingly impressive Amiga demo. Nontrivial effects (all in software, obviously), psychotic pacing and music and apparently artifact-free code are all fine and dandy, but the Tron tribute pictured on the right won my heart. That said, Lightshaft by Elude is a very strong runner-up; 2nd place Amiga demo compo winner, this demo combines an incredibly impressive array of 3D scenes with epic design and pacing, terrific graphics and excellent music. It’s ironic that the two winning Amiga demos were so impressive whereas the PC demo compo suffered from general lack of enthusiasm and polish. Easily the best PC 4k intro I have ever seen, Elevated by Rgba and TBC is also possibly the first to ever get me excited. Astounding visuals, top notch design and excellent music are only part of it; the picture on the right really does not do this production justice, and you should definitely watch it in its entirety at least once to appreciate just how amazingly good a demo can be at 4096 bytes! Other notable productions from Breakpoint 2009: - Defcon Zero by Scarab for the Nintendo DS
- Syntax Infinity by Tulou and Traktor for the MSX2 platform
- fr-065: euphotic by farbrausch, a technically impressive but boring and uninspired PC demo
- Enigma Sequence by Approximate, a 64k intro that’s really close to being awesome. I think a couple more weeks of polish would’ve really turned this one into a winner, but as is it’s quite raw.
- Luminagia by Loonies, Amiga 4k intro. Not quite as polished as the PC 4ks of the last few years, but damned impressive never-the-less.
I also got to watch the following productions on the big screen at Breakpoint, each of which is a recommended watch: While Breakpoint was still in progress, Rupture by Andromeda Software Development won 1st place in the demo party at The Gathering 2009 and with all due reason: this demo is fantastic. Coherent design, astounding visuals, excellent pacing and music – it does everything well. For a demoscene fan, watching this on the big screen was a little like watching Terminator 2 in the theater for the first time: it gives you a profound sense of “this is what production values are all about.” The screenshot can’t do it justice, just go watch it already! Conversely, NVScene 2008 winner Stargazer by Andromeda and Orb is not as fluently directed but at least as technically impressive. I simply love Andromeda’s flow, the way they always manage to bring closure to a scene before moving on to the next effect, even if the two aren’t related in any way. Stargazer is a slideshow of some of the most impressive effects ever seen in a demo, with astonishing visuals and excellent techno music; I’m not sure which of the two (Stargazer or Rupture) I like better, but I guess they each appeal to a different school. Both are definitely must-see. A veritable demoscene poster-boy, the NVScene 2008 invitation intro Masagin is the brainchild of Paniq (the guy behind Die Ewigkeit Schmerzt). A high quality production with an obvious artistic bent, Masagin blends excellent music with unique effects and fluid design and is one of the most engaging demos I’ve seen in years. Andromeda Software Development demos typically fall into one of two categories: artistically done 3D slideshows (Dreamchild, Rupture), and technically impressive video art (Evolution of Vision, Beyond the walls of Eryx). Midnight Run, 3rd place winner at NVScene 2008, is definitely of the latter sort, seamlessly blending 2D and 3D graphics with a bizarre screenplay and excellent music. Although not trivial by any means, if you’re looking for a technical demo to boggle your friends’ minds with, look elsewhere; Midnight Run is definitely for those not looking at demos with just an analytic eye. Proving my previous point, Euskal 2008 demo compo winner Size Antimatters by Andromeda Software Development is precisely the opposite of Mindight Run: it’s a technological powerhouse with amazing effects and great techno music, a lot faster paced than Midnight Run and built for a different audience. Along with Rupture and Stargazer, these are my current “show off your rig” demos. Kudos! ½-bit Cheese are fast becoming my favorite demoscene animators. Their Assembly 2008 wild compo tour de force Field Trip features some of the most amazing animation, visual effects, music and direction I’ve ever seen, taking the already-excellent talents of Maxson and D-Fast (of Realtime Demo Wannabe fame) to the next level. Groundbreaking!
I ran a Google image search today, and was surprised to see this: New feature, hurray! (and may actually prove useful…)
It seems nothing to do with maintaining this website is as easy or as simple as it should be. Whenever I switch hosts it’s an uphill struggle to get the site up and running again; whenever I upgrade dasBlog to a newer version I have to learn a lot about how it works, how ASP.NET works, how IIS is configured etc. It’s enough to make me seriously consider hosting my blog elsewhere and/or moving to another blogging platform, but the truth is I love dasBlog so much I simply forget how complex and volatile it can be and have to go through the same frustrating process whenever something changes. The way I update my site is usually this: - Ensure I have an up-to-date local mirror of the website. dasBlog keeps all of its data in XML files, so backing up the website is simply a question of wget –-passive-ftp –m ftp://user:password@website.com; I have a daily scheduled task to take care of this.
- Copy the latest mirrored version to a working directory; set the directory up as an IIS website/virtual directory.
- Test the new working copy to make sure it works.
- Perform whatever modifications are required.
- Test again to make sure that the website works with multiple browsers (this time I tested with Chrome 2.0.170.0, Firefox 3.1 Beta 3 and IE 8)
- Upload the website over FTP using the FileZilla client. I always verify that the relevant configuration files and binaries are overwritten and nothing else.
This process generally allows me to test upgrades before uploading them to the “production” website, as well as provides an easy rollback path if something goes wrong. Thing is, something always goes wrong. In this case, although nothing’s changed in the site configuration I started getting SecurityExceptions just after the upgrade: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. This is one of the least informative error messages I have ever seen. All it tells me is that a request for some permission is denied; it doesn’t say what permission was requested, nor by whom (the stack trace seemed to indicate the permission was asserted from within System.Diagnostics.Trace, which doesn’t make much sense). A quick web search brought me to this page, which deals specifically with installing dasBlog on a GoDaddy-hosted website. Because GoDaddy runs ASP.NET applications under a modified medium trust that allows file-system access only to the virtual directory hierarchy, the site recommends adding a virtual directory for each of dasBlog’s writable directories (content, siteconfig, logs); I tried this out and the problem was not resolved. At this point I was getting desperate, and was willing to try just about anything to get the site up and running again. Eventually I ran a diff between the site backup and the newly modified version, and found a new openidConsumerTrace.txt file in the site root. I’ve never seen that one before; where'd it come from? A quick search showed the following section in the web.config file: <system.diagnostics>
<assert assertuienabled="false"/>
<switches>
<add name="OpenID" value="4"/>
</switches>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="fileLogger" type="System.Diagnostics.TextWriterTraceListener"
initializeData="openidConsumerTrace.txt" traceOutputOptions="None"/>
</listeners>
</trace>
</system.diagnostics>
A-ha! So the OpenID activity trace log is written to the virtual root, which is not writable (I set the ACLs to only allow writes to the above three directories). I tried changing the trace file path to ~/logs/openidConsumerTrace.txt (which is a virtual directory and has the appropriate write ACL), but this did not resolve the problem. At this point I was ready to roll back to the previous version and work on switching to another (perhaps hosted) blogging platform, and in my despair I simply commented out the whole system.diagnostics section; oddly enough, this resolved the problem…
Now I know dasBlog is free and there’s little or no point complaining, so I hope this post helps someone handle the problem. And if anyone from the dasBlog team is reading this… please be a little more careful with undocumented dependencies?
I’ve been meaning to change the site’s theme for ages, and as often happens with these things this gave me an excuse to overhaul various aspects of the site. Here’s a bunch of stuff that’s changed: - Upgraded to dasBlog 2.3 and tweaked a whole bunch of settings. Hopefully this will enable all sorts of interesting stuff, such as OpenID commenter identification and coComment support. I’ll post my upgrade experiences separately;
- Switched the theme to a slightly tweaked version of the dasBlog “business” theme by Christoph De Baene (thanks for the help, Ken!);
- Got rid of the “advocacy” section on the right. I still strongly advocate Firefox, Vorbis and OpenOffice.org (among others), but there doesn’t seem to be much point in placing banners just for that;
- Updated the blog-roll with my latest list.
Some code examples on the site may look a little weird on account of the CSS changes; over the coming days/weeks I’ll be fixing those, as well as recompressing images and other behind-the-scenes changes that will hopefully make the site look better and load faster.
Update (8 May 2009): Eli Ofek pointed out in the comments a little-known but effective tool called the Managed Stack Explorer. Although it features a basic GUI, it can effectively be a .NET equivalent of jstack if you add to the path; then it’s just a question of typing mse /s /p <pid>. It’s a little slower than jstack but worlds better than the alternative suggested below. I’ve been working mostly with Java over the last year, and the .NET code I write is usually limited to interface code between our .NET-based and Java-based components. A long while away from production-grade code on Windows means I need to brush up on my production debugging skills. On today’s menu: thread dumps, or per-thread stack traces if you will. With Java code (at least starting with Java 5) this is as easy as jstack <pid>; with .NET it turns out to be quite a bit more complicated: - Download and install the appropriate Debugging Tools for Windows version for your architecture (x86/x64/Itanium)
- If you need information about Windows function calls (e.g. you want to trace into kernel calls), download and install the appropriate symbols. This isn't strictly necessary if you just want a thread dump of your own code.
- If you need line numbers or any other detailed information, make sure to place your assemblies' PDB files where the debugger can find them (normally you just put them next to your actual assemblies).
- Start->Programs->Debugging Tools for Windows [x64]->windbg
- Attach the debugger to your running process using the menu
- Load the SOS extension with ".loadby sos mscorwks" for .NET 2.0 (".load sos" for .NET 1.0/1.1)
- Take a thread dump using "!eestack"
- Detach using ".detach"
Quite a bit of work for something as trivial as a thread dump. I hope .NET diagnostic and debugging tools improve with time (Process Explorer is definitely a step in the right direction).
|