<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Useless Inc.</title>
  <link rel="alternate" type="text/html" href="http://www.tomergabel.com/" />
  <link rel="self" href="http://www.tomergabel.com/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2009-12-13T13:52:44.8214964-07:00</updated>
  <author>
    <name>Tomer Gabel</name>
  </author>
  <subtitle>Tomer Gabel's annoying spot on the 'net</subtitle>
  <id>http://www.tomergabel.com/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <entry>
    <title>Switching rôles</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/SwitchingR%c3%b4les.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,7a6c8b16-6220-478d-84ce-4b423d0de0bf.aspx</id>
    <published>2009-12-13T05:54:30.048-07:00</published>
    <updated>2009-12-13T13:52:44.8214964-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="html">&lt;p&gt;
When a company is acquired by another, some sort of restructuring is inevitable. As &lt;a href="http://www.tomergabel.com/LifeIsFullOfSurprises.aspx"&gt;Delver’s
acquisition&lt;/a&gt; by Sears Holdings became reality, it was also obvious that significant
changes were required to how we operate. The first and most pronounced of these changes
was that our social (or socially-connected, if you’re picky) search engine, the &lt;a href="http://www.readwriteweb.com/archives/delver_reinvents_search.php"&gt;first
product of its kind&lt;/a&gt; – we have enough ego to kick ourselves hard now that &lt;a href="http://mashable.com/2009/10/26/social-search-launch/"&gt;Google’s
version&lt;/a&gt; is out – was scrapped, and the entire team was put to work on a new product
for Sears Holdings. This, of course, meant restructuring the R&amp;D team.
&lt;/p&gt;
&lt;p&gt;
One of our tenants at Delver was that everything is open to interpretation, critique
and improvement. As an R&amp;D team we were always relentlessly self-improving; I believe
my two years at Delver were perhaps the best I have ever experienced professionally.
I’m happy to say that this approach still prevails under Sears Holdings, and we’ve
taken the first few months under the new management for some serious introspection,
trying to learn everything we can from the mistakes we made while still working under
the Delver banner. I believe the organization has improved across the board with these
sessions, resulting in significant improvements to everything from recruiting, HR
and managerial processes to source control, configuration and release management.
But as a developer I felt I was hitting a professional plateau.
&lt;/p&gt;
&lt;p&gt;
As the new product’s specs took shape I was initially meant to take charge of the
search engine implementation, continuing my original position at Delver. After nearly
two years of working on search it became obvious to me that it is a very broad and
nontrivial domain, and that to do a good job I will have to truly specialize in search.
While I knew I did not want to continue working on the search engine, I also knew
that the other developer positions would not satisfy me. While the product was being
specified I kept busy with tasks that were not directly related with the product itself:
setting up an integration testing framework (not trivial with a system comprising
both Java and .NET components, and which integrates a significant number of 3rd party
products), defining various development processes like version and branch guidelines,
and finally implementing a &lt;a href="http://code.google.com/p/ant-intellij-tasks/"&gt;proper
Java build system&lt;/a&gt; that still drives our builds today. The common ground here is
that, for the most part, the greatest enjoyment was derived from doing stuff that’s
“horizontal”, that crosses components and teams and sort of binds the entire development
effort together. With this in mind I approached my bosses at Sears and, after prolonged
discussions, we came up with the title of &lt;a href="http://www.slideshare.net/holograph/application-engineer-introductory-presentation"&gt;&lt;em&gt;Application
Engineer&lt;/em&gt;&lt;/a&gt;:
&lt;/p&gt;
&lt;center&gt;
&lt;div style="text-align: center; width: 425px" id="__ss_2708205"&gt;
&lt;p align="center"&gt;
&lt;object style="margin:0px" width="425" height="355"&gt;
&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=applicationengineer-091213064141-phpapp01&amp;rel=0&amp;stripped_title=application-engineer-introductory-presentation" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=applicationengineer-091213064141-phpapp01&amp;rel=0&amp;stripped_title=application-engineer-introductory-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/center&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
An application engineer, in Sears parlance at any rate, bridges the gap between R&amp;D
and IT (or rather, the support, deployment and administrative teams). Essentially,
where R&amp;D (and QA) ends, the app engineer’s role begins: the app engineer is directly
responsible for the smooth operation of the production system. This means that the
app engineer must not only be fully versed in the system architecture and inner workings,
but must also be an active participant in defining it. Wherever there is an overlap
between R&amp;D and IT is where you will find the app engineer: front-end server farms,
logging and profiling requirements, log aggregation and reporting, system monitoring
(which suddenly not only includes health, but applicative counters that must be correctly
specified and monitored), deployment and troubleshooting processes etc. Having been
assigned this role for the past few months I’ve reached the conclusion that an app
engineer is a cross between IT-oriented system architect and system administrator,
walking a fine line between a developer and a system adminstrator. I certainly hope
I don’t fall off!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=7a6c8b16-6220-478d-84ce-4b423d0de0bf" /&gt;</content>
  </entry>
  <entry>
    <title>Announcing ant-intellij-tasks</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/AnnouncingAntintellijtasks.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,b849579e-4637-4051-ba21-f87975905ca0.aspx</id>
    <published>2009-09-29T23:18:58.372-07:00</published>
    <updated>2009-10-01T17:36:02.0062265-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <category term="Development/Java" label="Development/Java" scheme="http://www.tomergabel.com/CategoryView,category,DevelopmentJava.aspx" />
    <category term="Software" label="Software" scheme="http://www.tomergabel.com/CategoryView,category,Software.aspx" />
    <category term="ant-intellij-tasks" label="ant-intellij-tasks" scheme="http://www.tomergabel.com/CategoryView,category,antintellijtasks.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>Download </em>
          <a href="http://ant-intellij-tasks.googlecode.com/files/ant-intellij-tasks-1.0-b1.zip">
            <em>ant-intellij-tasks-1.0-b1.zip</em>
          </a>
          <em>
          </em>
        </p>
        <p>
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.
</p>
        <p>
Since I started working for Delver (<a href="http://www.tomergabel.com/LifeIsFullOfSurprises.aspx">now
Sears</a>) 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.
</p>
        <p>
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 <a href="http://ant4eclipse.sourceforge.net/">ant4eclipse</a> 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.
</p>
        <p>
Out of necessity, a project was born. <a href="http://code.google.com/p/ant-intellij-tasks/">ant-intellij-tasks</a> 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:
</p>
        <blockquote style="padding-bottom: 5px; padding-left: 5px; padding-right: 5px; background: #ccc; padding-top: 5px">
          <p>
            <a href="http://code.google.com/p/ant-intellij-tasks">ant-intellij-tasks</a> is a
self-contained build system for IntelliJ IDEA projects based around <a href="http://ant.apache.org/">Apache
Ant</a>. In essence, ant-intellij-tasks comprises three components: 
</p>
          <ol>
            <li>
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; 
</li>
            <li>
A common build script which provides the four major build targets for modules: clean,
build, test and package (see <a href="http://code.google.com/p/ant-intellij-tasks/#Quickstart_Guide">the
quickstart guide</a>); 
</li>
            <li>
A master build script which extends these targets to the entire project. 
</li>
          </ol>
          <p>
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. 
</p>
          <p>
          </p>
          <p>
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 <a href="http://code.google.com/p/ant-intellij-tasks/issues/list">issue
tracker</a>. 
</p>
          <p>
          </p>
          <p>
ant-intellij-tasks makes use of, and redistributes, the <a href="http://ant-contrib.sourceforge.net/">ant-contrib</a> task
library. 
</p>
        </blockquote>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=b849579e-4637-4051-ba21-f87975905ca0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Headphones and the arcane art of sound, pt. 2</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/HeadphonesAndTheArcaneArtOfSoundPt2.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,1e994572-66a8-4403-b947-f654b08fa361.aspx</id>
    <published>2009-08-25T18:34:40.61-07:00</published>
    <updated>2009-08-29T04:39:10.541614-07:00</updated>
    <category term="Music" label="Music" scheme="http://www.tomergabel.com/CategoryView,category,Music.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="html">&lt;p&gt;
&lt;a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/vdac_2.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 15px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Musical Fidelity V-DAC" border="0" alt="Musical Fidelity V-DAC" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/vdac_thumb.jpg" width="242" height="244"&gt;&lt;/a&gt; In
the &lt;a href="http://www.tomergabel.com/HeadphonesAndTheArcaneArtOfSound.aspx"&gt;previous
installment&lt;/a&gt; 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 &lt;a href="http://www.musicalfidelity.com/products/vseries/vdac.html"&gt;Musical
Fidelity V-DAC&lt;/a&gt; into the mix resulted in even better resolution at the expense
of reduced imaging:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;span style="font-size: large"&gt;&lt;strong&gt;“&lt;/strong&gt;&lt;/span&gt;… 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.”
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/IMG_1929.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 15px 15px 15px 0px; display: inline; border-top: 0px; border-right: 0px" title="IMG_1929" border="0" alt="IMG_1929" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/IMG_1929_thumb.jpg" width="324" height="244"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.entertonement.com/clips/kjmmznwltl--Great-Success"&gt;Great success&lt;/a&gt;!
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…
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/IMG_1930.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 15px 0px 15px 15px; display: inline; border-top: 0px; border-right: 0px" title="Zhaolu D2.5 DAC" border="0" alt="Zhaolu D2.5 DAC" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/IMG_1930_thumb.jpg" width="324" height="244"&gt;&lt;/a&gt;As
it happens, an opportunity presented itself to buy an upgraded &lt;a href="http://diykits.com.hk/Zhaolu%20D2.5.htm"&gt;Zhaolu
D2.5 DAC&lt;/a&gt; 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 &lt;a href="http://www.national.com/pf/LM/LM4562.html"&gt;National
LM4562&lt;/a&gt; opamps. The unit is extremely large (24cm x 30cm x 5.5cm – about the same
surface area as the G&amp;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.
&lt;/p&gt;
&lt;p&gt;
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&amp;W amp and started with the ‘03 edition Beyerdynamic DT880 headphones.
&lt;/p&gt;
&lt;p&gt;
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 &lt;em&gt;significantly&lt;/em&gt; 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. 
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/IMG_1919.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 15px 15px 15px 0px; display: inline; border-top: 0px; border-right: 0px" title="The entire setup: G&amp;W T-2.6F with Mullard E88CC tubes on top of the upgraded Zhaolu D2.5 amp, next to a Musical Fidelity V-DAC" border="0" alt="The entire setup: G&amp;W T-2.6F with Mullard E88CC tubes on top of the upgraded Zhaolu D2.5 amp, next to a Musical Fidelity V-DAC" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsoundpt.2_12061/IMG_1919_thumb.jpg" width="324" height="244"&gt;&lt;/a&gt;At
this point I had almost given up on the DAC, but decided to switch back to the G&amp;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.
&lt;/p&gt;
&lt;p&gt;
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.
&lt;/p&gt;
&lt;p&gt;
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&amp;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.
&lt;/p&gt;
&lt;p&gt;
Visit my &lt;a href="http://www.flickr.com/photos/tomergabel/sets/72157622145150024/" rel="me"&gt;Flickr
account&lt;/a&gt; for more photos
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=1e994572-66a8-4403-b947-f654b08fa361" /&gt;</content>
  </entry>
  <entry>
    <title>Java mishandles UNC paths on Windows</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/JavaMishandlesUNCPathsOnWindows.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,6a6c2dc7-df2a-4bec-8a2b-0e7d1e652d3f.aspx</id>
    <published>2009-08-02T22:00:20.4093773-07:00</published>
    <updated>2009-08-02T22:00:20.4093773-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <category term="Development/Java" label="Development/Java" scheme="http://www.tomergabel.com/CategoryView,category,DevelopmentJava.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Apparently Java has quite a few known but practically undocumented issues with its
handling of UNC paths under Windows. I’ve specifically encountered <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086147">this
bug</a> albeit in a slightly different scenario:
</p>
        <div>
          <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">@Test<br /><span style="color: #0000ff">public</span><span style="color: #0000ff">void</span> test() <span style="color: #0000ff">throws</span> URISyntaxException
{<br /><span style="color: #0000ff">final</span> URI uri = <span style="color: #0000ff">new</span> URI( <span style="color: #006080">"file://c:/temp/test/ham.and.eggs"</span> );<br /><span style="color: #0000ff">new</span> File( uri ); <span style="color: #008000">//
IllegalArgumentException thrown here</span><br />
}</pre>
        </div>
        <div>
          <br />
Apparently the two slashes after file: are misinterpreted as the authority part of
the URI; <a href="http://stackoverflow.com/questions/1131273/java-file-touri-tourl-on-windows-file/1131465#1131465">this
thread</a> 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.
</div>
        <div> 
</div>
        <div>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:
</div>
        <div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
          <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
            <p>
              <span style="color: #008000">/**</span>
              <br />
              <span style="color: #008000"> * Resolves the specified URI, and returns the file </span>
              <br />
              <span style="color: #008000"> * represented by the URI.</span>
              <br />
              <span style="color: #008000"> *</span>
              <br />
              <span style="color: #008000"> * @param uri The URI for which to return an absolute
path.</span>
              <br />
              <span style="color: #008000"> * @return The {@link File} instance represented by the</span>
              <br />
              <span style="color: #008000"> * specified URI.</span>
              <br />
              <span style="color: #008000"> * @throws IllegalArgumentException &lt;ul&gt;&lt;li&gt;The
URI cannot </span>
              <br />
              <span style="color: #008000"> * be null.&lt;/li&gt;&lt;li&gt;Wrong URI scheme for
path resolution;</span>
              <br />
              <span style="color: #008000"> * only file:// URIs are supported.&lt;/li&gt;&lt;/ul&gt;</span>
              <br />
              <span style="color: #008000"> */</span>
              <br />
              <span style="color: #0000ff">public</span>
              <span style="color: #0000ff">static</span> File
getFile( URI uri )<br /><span style="color: #0000ff">throws</span> IllegalArgumentException {<br /><span style="color: #0000ff">if</span> ( uri == null )<br /><span style="color: #0000ff">throw</span><span style="color: #0000ff">new</span> IllegalArgumentException(<br /><span style="color: #006080">"The URI cannot be null."</span> );
</p>
            <p>
              <br />
              <br />
              <span style="color: #0000ff">if</span> ( !<span style="color: #006080">"file"</span>.equals(
uri.getScheme() ) )<br /><span style="color: #0000ff">throw</span><span style="color: #0000ff">new</span> IllegalArgumentException( <span style="color: #006080">"Wrong
URI "</span> + 
<br /><span style="color: #006080">"scheme for path resolution, expected \"file\" "</span> +<br /><span style="color: #006080">"and got \""</span> + uri.getScheme() + <span style="color: #006080">"\""</span> );
</p>
            <p>
              <br />
              <span style="color: #008000">// Workaround for the following bug: </span>
              <br />
              <span style="color: #008000">// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5086147</span>
              <br />
              <span style="color: #008000">// Remove extra slashes after the scheme part.</span>
              <br />
              <span style="color: #0000ff">if</span> ( uri.getAuthority() != null )<br /><span style="color: #0000ff">try</span> {<br />
uri = <span style="color: #0000ff">new</span> URI( uri.toString().replace( 
<br /><span style="color: #006080">"file://"</span>, <span style="color: #006080">"file:/"</span> )
);<br />
} <span style="color: #0000ff">catch</span> ( URISyntaxException e ) {<br /><span style="color: #0000ff">throw</span><span style="color: #0000ff">new</span> IllegalArgumentException( <span style="color: #006080">"The
specified "</span> +<br /><span style="color: #006080">"URI contains an authority, but could not be "</span> +<br /><span style="color: #006080">"normalized."</span>, e );<br />
}
</p>
            <p>
              <br />
              <br />
              <span style="color: #0000ff">return</span>
              <span style="color: #0000ff">new</span> File(
uri );<br />
}<br /></p>
          </pre>
          <br />
        </div>
        <div> 
</div>
        <div>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.
</div>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=6a6c2dc7-df2a-4bec-8a2b-0e7d1e652d3f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Headphones and the arcane art of sound</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/HeadphonesAndTheArcaneArtOfSound.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,4d275a0e-f07d-4fe5-a019-869142585f0e.aspx</id>
    <published>2009-06-26T21:17:10.5823583-07:00</published>
    <updated>2009-06-26T22:17:42.6281274-07:00</updated>
    <category term="Music" label="Music" scheme="http://www.tomergabel.com/CategoryView,category,Music.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <u>Note:</u> 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. <a href="http://www.hometheater.co.il/vt85769.%D7%94%D7%9E%D7%9C%D7%A6%D7%95%D7%AA-DAC">First
post</a>, <a href="http://www.hometheater.co.il/vt87838.%D7%A8%D7%A9%D7%9E%D7%99-%D7%A6%D7%99%D7%95%D7%93-%D7%9C%D7%91%D7%99%D7%A0%D7%AA%D7%99%D7%99%D7%9D">second
post</a></p>
        <p>
          <a title="Original setup: Beyerdynamic DT880 original edition, G&amp;W T-2.6F with stock 6922EH tubes" href="http://www.tomergabel.com/content/binary/china_audio_large.jpg">
            <img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Original setup: Beyerdynamic DT880 original edition, G&amp;W T-2.6F with stock 6922EH tubes" border="0" alt="Original setup: Beyerdynamic DT880 original edition, G&amp;W T-2.6F with stock 6922EH tubes" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/china_audio_large_3.jpg" width="324" height="224" />
          </a> 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 <a href="http://www.tomergabel.com/TravellingToChinaShoppingAndTheWayBack.aspx">previous
trip to China</a>, hooked up to a G&amp;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. 
</p>
        <p>
          <a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/IMG_1715.jpg">
            <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Tube selection, left to right: Mullard E88CC, Electro Harmonix 6922EH, JAN-Sylavnia 7308" border="0" alt="Tube selection, left to right: Mullard E88CC, Electro Harmonix 6922EH, JAN-Sylavnia 7308" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/IMG_1715_thumb.jpg" width="324" height="244" />
          </a> 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 <a href="http://www.exactaudiocopy.de/">Exact
Audio Copy</a>. 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 <a href="http://thetubestore.com">thetubestore.com</a>.
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.
</p>
        <p>
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.
</p>
        <p>
          <a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/IMG_1732.jpg">
            <img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="JAN-Sylavnia 7308 tubes hooked up to the amp (and before dusting...)" border="0" alt="JAN-Sylavnia 7308 tubes hooked up to the amp (and before dusting...)" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/IMG_1732_thumb.jpg" width="324" height="244" />
          </a>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 <em>better</em>. 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. 
</p>
        <p>
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 <a href="http://www.audiocraftersguild.com/AandE/npt.on.jitter2.htm">here</a>).
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.
</p>
        <p>
          <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Musical Fidelity V-DAC. Ugly but functional" border="0" alt="Musical Fidelity V-DAC. Ugly but functional" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/v-dac_5.jpg" width="320" height="191" /> With
the advice of fellow forum members I resolved to try one of the following DAC trio:
Cambridge Audio <a href="http://www.cambridgeaudio.com/summary.php?PID=320">DacMagic</a>,
Oritek <a href="http://members.aceweb.com/orim/audio/OritekAudio/Zho_mod.html">OMZ
DAC</a> or Musical Fidelity <a href="http://www.musicalfidelity.com/products/vseries/vdac.html">V-DAC</a>.
Following a lead from a fellow forum member I eventually bought the V-DAC for a very
good price from a <a href="http://www.head-fi.org/">head-fi.org</a> forum member.
The V-DAC is a 192KHz/24-bit upsampling DAC with optical, coaxial and USB inputs that
has received <a href="http://www.head-fi.org/forums/f7/musical-fidelity-v-dac-owners-391721/index2.html">high
praise</a> in the head-fi circles and is even available in Israel for a surprisingly
reasonable price.
</p>
        <p>
          <a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/IMG_1740.jpg">
            <img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="JAN-Sylvania 7308 in action" border="0" alt="JAN-Sylvania 7308 in action" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Headphonesandthearcaneartofsound_6238/IMG_1740_thumb.jpg" width="324" height="244" />
          </a>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.
</p>
        <p>
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 <a href="http://www.aqua-audio.com/index.html">Aqua</a> 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.
</p>
        <p>
          <u>Update</u>: Some more pictures can be found <a href="http://www.flickr.com/photos/tomergabel/sets/72157620617979418/">here</a>.
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=4d275a0e-f07d-4fe5-a019-869142585f0e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Presenting: Movies à la mode</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/PresentingMovies%c3%80LaMode.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,2f696dc0-edec-4b65-b408-81c5a4d89eb8.aspx</id>
    <published>2009-05-17T15:59:33.9453164-07:00</published>
    <updated>2009-05-17T15:59:33.9453164-07:00</updated>
    <category term="Movies" label="Movies" scheme="http://www.tomergabel.com/CategoryView,category,Movies.aspx" />
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="html">&lt;p&gt;
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 &lt;a title="It's a boy!" href="http://www.tomergabel.com/ItsABoy.aspx"&gt;finalized
my home theater setup&lt;/a&gt; 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 &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt; is
the perfect platform for quick-and-dirty movie reviews:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
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.&lt;/li&gt;
&lt;li&gt;
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?&lt;/li&gt;
&lt;li&gt;
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.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
With the rationale out of the way, I give you &lt;a title="Movies &amp;agrave; la mode" href="http://twitter.com/moviesalamode" rel="me"&gt;movies
à la mode&lt;/a&gt;: &lt;span class="bio"&gt;140-character movie reviews!&lt;/span&gt;
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;span class="bio"&gt;&lt;a title="Movies &amp;agrave; la mode" href="http://twitter.com/moviesalamode" rel="me"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="moviereviews.logo.shahar" border="0" alt="moviereviews.logo.shahar" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/PresentingMovieslamode_14A3/moviereviews.logo.shahar_3.gif" width="187" height="240"&gt;&lt;/a&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
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).
&lt;/p&gt;
&lt;p&gt;
There are a few reviews up already, go read them and please do comment!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=2f696dc0-edec-4b65-b408-81c5a4d89eb8" /&gt;</content>
  </entry>
  <entry>
    <title>Breakpoint 2009</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/Breakpoint2009.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,cdd0991a-287c-4514-9a58-51378ace54b6.aspx</id>
    <published>2009-05-03T07:22:42.0509297-07:00</published>
    <updated>2009-05-03T07:22:42.0509297-07:00</updated>
    <category term="Demos" label="Demos" scheme="http://www.tomergabel.com/CategoryView,category,Demos.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
A couple of years back I went to <a href="http://www.tomergabel.com/BREAAAAAAAAAAAAAAAAAAAAKPOIIIIIIIIINT.aspx">Breakpoint
2007</a>, 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 <a href="http://en.wikipedia.org/wiki/Kamon,_Israel">Kamon</a> in
2000 and later <a href="http://www.tomergabel.com/DemosceneBBQ.aspx">in 2005</a>,
but I don’t consider those actual demo parties). Along with <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;friendID=163707260">Bacter</a> and
my brother Mickey, we three were the only Israelis to be found at the party.
</p>
        <p>
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:
a<em>mazing</em> people and <em>amazing</em> 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 <a href="http://www.cosmiq.nl/">Cosmiq</a>!) or quoting
Borat with our resident Portuguese <a href="http://scenept.blogspot.com/">Jeenio</a>.
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 :-)
</p>
        <p>
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!
</p>
        <p>
I recommend watching the following productions from Breakpoint 2009:
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52647">
            <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bp2009_mfx" border="0" alt="bp2009_mfx" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_mfx_3.jpg" width="133" height="100" />
          </a>
        </p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52647">Everything is Under Control</a> by
the ever-prolific <a href="http://www.pouet.net/groups.php?which=168">mfx</a> 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.
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52995">
            <img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bp2009_hullabaloo" border="0" alt="bp2009_hullabaloo" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_hullabaloo_3.jpg" width="125" height="100" />
          </a>
        </p>
        <p>
One of the noteworthy demos from Breakpoint 2009 is <a href="http://www.pouet.net/prod.php?which=52995">Freedom
From State</a> by Hullabaloo: this demo was entirely written at the party-place by <a href="http://www.slengpung.com/?id=19713&amp;eventid=528">blala</a>,
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.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=53003">
            <img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bp2009_lft" border="0" alt="bp2009_lft" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_lft_733c6fb4-9421-45e8-8361-380c0c4a96c9.jpg" width="125" height="100" />
          </a>And
in the wicked cool department, lft (of <a href="http://www.linusakesson.net/scene/craft/">Craft</a> fame)
is at it again with another microcontroller-based demo: <a href="http://www.linusakesson.net/scene/turbulence/index.php">Turbulence</a> (or
on <a href="http://pouet.net/prod.php?which=53003">pouët</a>). 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!
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=53021">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_excelence." border="0" alt="bp2009_excelence." align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_excelence._3.jpg" width="133" height="100" />
          </a>
          <a href="http://www.pouet.net/prod.php?which=53021">Excelence</a> 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…
</p>
        <p>
          <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_panda" border="0" alt="bp2009_panda" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_panda_3.jpg" width="155" height="100" />Breakpoint
2009 has seen a lot of first-time productions by new demo groups; of these my favorite
is <a href="http://www.pouet.net/prod.php?which=53013">PC-03 ON/OFF</a> 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!
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=53033">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_systemk" border="0" alt="bp2009_systemk" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_systemk_3.jpg" width="175" height="100" />
          </a> Although
this was not strictly their first production, <a href="http://www.pouet.net/prod.php?which=53033">Conscious
of Blue</a> by <a href="http://www.sys-k.net/">System-K</a> 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!
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52992">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_crush." border="0" alt="bp2009_crush." align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_crush._6.jpg" width="178" height="100" />
          </a> While <a href="http://www.pouet.net/prod.php?which=52992">Crush</a> 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.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52963">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_rebels" border="0" alt="bp2009_rebels" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_rebels_3.jpg" width="182" height="100" />
          </a> It
seems white is the new black, with at least three white-themed productions at this
party alone. With that in mind, <a href="http://www.pouet.net/prod.php?which=52963">060659</a> 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.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=53011">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_gottler." border="0" alt="bp2009_gottler." align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_gottler._3.jpg" width="141" height="100" />
          </a>
        </p>
        <p>
One of the most technically impressive C64 demo I’ve ever seen (possibly on par with
Second Reality 64), <a href="http://www.pouet.net/prod.php?which=53011">Das Gotler</a> by
Extend and Dekadence hits you from the very first moment (with how the C64 basic window
is cleared). The downside? Horrible, <em>horrible</em> music.
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=53045">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_julie." border="0" alt="bp2009_julie." align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_julie._3.jpg" width="178" height="100" />
          </a> 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 <a href="http://www.pouet.net/prod.php?which=53045">Julie</a> 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 <a href="www.higher-lyrics.de/MakingOfJulie.pdf ">“making of” document</a> that’s
a fairly interesting read.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52928">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_speichergurke." border="0" alt="bp2009_speichergurke." align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_speichergurke._3.jpg" width="178" height="100" />
          </a> On
the other end of the spectrum you’ll find JCO’s <a href="http://www.pouet.net/prod.php?which=52928">Spiechergurke</a>,
a fake commercial for a new kind of storage product (<a href="http://www.youtube.com/watch?v=cWYxYmsnQjw&amp;feature=related">watch
with subtitles</a>). Other than being <em>very</em> 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). 
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52968">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_jesus" border="0" alt="bp2009_jesus" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_jesus_3.jpg" width="161" height="100" />
          </a>
        </p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52968">Jesus Christ Motocross</a> 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 <a href="http://en.wikipedia.org/wiki/Tron_(film)">Tron</a> tribute pictured
on the right won my heart.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52998">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_lightshaft" border="0" alt="bp2009_lightshaft" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_lightshaft_3.png" width="178" height="100" />
          </a>
        </p>
        <p>
That said, <a href="http://www.pouet.net/prod.php?which=52998">Lightshaft</a> 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.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=52938">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_elevated" border="0" alt="bp2009_elevated" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_elevated_3.jpg" width="178" height="100" />
          </a> Easily
the best PC 4k intro I have ever seen, <a href="http://www.pouet.net/prod.php?which=52938">Elevated</a> 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!
</p>
        <p>
Other notable productions from Breakpoint 2009:
</p>
        <ul>
          <li>
            <a href="http://www.pouet.net/prod.php?which=53004">Defcon Zero</a> by Scarab for
the Nintendo DS</li>
          <li>
            <a href="http://www.pouet.net/prod.php?which=52983">Syntax Infinity</a> by Tulou and
Traktor for the <a href="http://en.wikipedia.org/wiki/MSX#MSX2">MSX2</a> platform</li>
          <li>
            <a href="http://www.pouet.net/prod.php?which=53000">fr-065: euphotic</a> by farbrausch,
a technically impressive but boring and uninspired PC demo</li>
          <li>
            <a href="http://www.pouet.net/prod.php?which=53052">Enigma Sequence</a> 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.</li>
          <li>
            <a href="http://www.pouet.net/prod.php?which=52965">Luminagia</a> by Loonies, Amiga
4k intro. Not quite as polished as the PC 4ks of the last few years, but damned impressive
never-the-less.</li>
        </ul>
        <p>
I also got to watch the following productions on the big screen at Breakpoint, each
of which is a recommended watch:
</p>
        <p>
          <a href="http://pouet.net/prod.php?which=52931">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_other_rupture" border="0" alt="bp2009_other_rupture" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_other_rupture_5.jpg" width="178" height="100" />
          </a> While
Breakpoint was still in progress, <a href="http://pouet.net/prod.php?which=52931">Rupture</a> by
Andromeda Software Development won 1st place in the demo party at The Gathering 2009
and with all due reason: this demo is <em>fantastic</em>. 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!
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=51438">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_other_stargazer" border="0" alt="bp2009_other_stargazer" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_other_stargazer_3.jpg" width="178" height="100" />
          </a> Conversely,
NVScene 2008 winner <a href="http://www.pouet.net/prod.php?which=51438">Stargazer</a> 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.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=50131">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_other_masagin3" border="0" alt="bp2009_other_masagin3" align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_other_masagin3_3.jpg" width="178" height="100" />
          </a> A
veritable demoscene poster-boy, the NVScene 2008 invitation intro <a href="http://www.pouet.net/prod.php?which=50131">Masagin</a> is
the brainchild of <a href="http://www.paniq.org/">Paniq</a> (the guy behind <a href="http://www.pouet.net/prod.php?which=25864">Die
Ewigkeit Schmerzt</a>). 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.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=51450">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_other_midnight2" border="0" alt="bp2009_other_midnight2" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_other_midnight2_3.jpg" width="178" height="100" />
          </a>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). <a href="http://www.pouet.net/prod.php?which=51450">Midnight
Run</a>, 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.
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=51078">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_other_sizeanti." border="0" alt="bp2009_other_sizeanti." align="left" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_other_sizeanti._3.jpg" width="180" height="100" />
          </a> Proving
my previous point, Euskal 2008 demo compo winner <a href="http://pouet.net/prod.php?which=51078">Size
Antimatters</a> 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!
</p>
        <p>
          <a href="http://www.pouet.net/prod.php?which=51144">
            <img style="border-bottom: 0px; border-left: 0px; margin: 0px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="bp2009_other_fieldtrip" border="0" alt="bp2009_other_fieldtrip" align="right" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Breakpoint2009_E681/bp2009_other_fieldtrip_3.png" width="179" height="100" />
          </a> ½-bit
Cheese are fast becoming my favorite demoscene animators. Their Assembly 2008 wild
compo tour de force <a href="http://www.pouet.net/prod.php?which=51144">Field Trip</a> 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 <a href="http://www.pouet.net/prod.php?which=31591">Realtime
Demo Wannabe</a> fame) to the next level. Groundbreaking!
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=cdd0991a-287c-4514-9a58-51378ace54b6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Google image search: With color?</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/GoogleImageSearchWithColor.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,0affc9f7-4ab1-49c2-a08e-4a0d650c0c26.aspx</id>
    <published>2009-04-20T06:25:17.417476-07:00</published>
    <updated>2009-04-20T06:25:17.417476-07:00</updated>
    <category term="Software" label="Software" scheme="http://www.tomergabel.com/CategoryView,category,Software.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I ran a Google image search today, and was surprised to see this:
</p>
        <p align="center">
          <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="google_images_color" border="0" alt="google_images_color" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/GoogleimagesearchWithcolor_E6E9/google_images_color_3.png" width="560" height="207" />
        </p>
        <p>
          <a href="http://googlesystem.blogspot.com/2009/04/google-image-search-color-filter.html">New
feature</a>, hurray! (and may actually prove useful…)
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=0affc9f7-4ab1-49c2-a08e-4a0d650c0c26" />
      </div>
    </content>
  </entry>
  <entry>
    <title>dasBlog 2.3 update woes: Dealing with SecurityException</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/dasBlog23UpdateWoesDealingWithSecurityException.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,4672705f-4f41-49e2-94b3-8ef57cf25536.aspx</id>
    <published>2009-03-26T06:32:08.708115-07:00</published>
    <updated>2009-03-26T06:32:08.708115-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <category term="Software" label="Software" scheme="http://www.tomergabel.com/CategoryView,category,Software.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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 <a href="http://www.dasblog.info/">dasBlog</a> 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.
</p>
        <p>
The way I update my site is usually this:
</p>
        <ol>
          <li>
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 <tt><a href="http://www.gnu.org/software/wget/">wget</a> –-passive-ftp
–m ftp://user:password@website.com</tt>; I have a daily scheduled task to take care
of this. 
</li>
          <li>
Copy the latest mirrored version to a working directory; set the directory up as an
IIS website/virtual directory. 
</li>
          <li>
Test the new working copy to make sure it works. 
</li>
          <li>
Perform whatever modifications are required. 
</li>
          <li>
Test again to make sure that the website works with multiple browsers (this time I
tested with <a href="http://www.google.com/chrome">Chrome</a> 2.0.170.0, <a href="http://www.mozilla.com/firefox/">Firefox</a> 3.1
Beta 3 and <a href="http://www.microsoft.com/windows/Internet-explorer/default.aspx">IE</a> 8) 
</li>
          <li>
Upload the website over FTP using the <a href="http://filezilla-project.org/">FileZilla</a> client.
I always verify that the relevant configuration files and binaries are overwritten
and nothing else.</li>
        </ol>
        <p>
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 <em>always</em> goes wrong. In this case, although nothing’s changed
in the site configuration I started getting <tt>SecurityException</tt>s just after
the upgrade:
</p>
        <blockquote>
          <p>
            <tt>Request for the permission of type 'System.Security.Permissions.SecurityPermission,
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.</tt>
          </p>
        </blockquote>
        <p>
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 <tt>System.Diagnostics.Trace</tt>, which doesn’t make much sense).
A quick web search brought me to <a href="http://bencoffman.com/blog/CommentView,guid,06e3fffc-b763-434e-ba10-6c44939c90ed.aspx">this
page</a>, which deals specifically with installing dasBlog on a <a href="http://www.godaddy.com">GoDaddy</a>-hosted
website. Because GoDaddy runs ASP.NET applications under a <a href="http://help.godaddy.com/article/1039">modified
medium trust</a> 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.
</p>
        <p>
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 <tt>openidConsumerTrace.txt</tt> 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 <tt>web.config</tt> file:
</p>
        <div>
          <pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">system.diagnostics</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">assert</span>
            <span style="color: #ff0000">assertuienabled</span>
            <span style="color: #0000ff">="false"</span>
            <span style="color: #0000ff">/&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">switches</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">add</span>
            <span style="color: #ff0000">name</span>
            <span style="color: #0000ff">="OpenID"</span>
            <span style="color: #ff0000">value</span>
            <span style="color: #0000ff">="4"</span>
            <span style="color: #0000ff">/&gt;</span>
            <span style="color: #0000ff">&lt;/</span>
            <span style="color: #800000">switches</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">trace</span>
            <span style="color: #ff0000">autoflush</span>
            <span style="color: #0000ff">="true"</span>
            <span style="color: #ff0000">indentsize</span>
            <span style="color: #0000ff">="4"</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">listeners</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;</span>
            <span style="color: #800000">add</span>
            <span style="color: #ff0000">name</span>
            <span style="color: #0000ff">="fileLogger"</span>
            <span style="color: #ff0000">type</span>
            <span style="color: #0000ff">="System.Diagnostics.TextWriterTraceListener"</span>
            <span style="color: #ff0000">initializeData</span>
            <span style="color: #0000ff">="openidConsumerTrace.txt"</span>
            <span style="color: #ff0000">traceOutputOptions</span>
            <span style="color: #0000ff">="None"</span>
            <span style="color: #0000ff">/&gt;</span>
            <span style="color: #0000ff">&lt;/</span>
            <span style="color: #800000">listeners</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;/</span>
            <span style="color: #800000">trace</span>
            <span style="color: #0000ff">&gt;</span>
            <span style="color: #0000ff">&lt;/</span>
            <span style="color: #800000">system.diagnostics</span>
            <span style="color: #0000ff">&gt;</span>
          </pre>
        </div>
        <p>
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 <tt>~/logs/openidConsumerTrace.txt</tt> (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 <tt>system.diagnostics section</tt>; oddly enough, this resolved
the problem…
</p>
        <p>
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?
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=4672705f-4f41-49e2-94b3-8ef57cf25536" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Long due overhaul</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/LongDueOverhaul.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,2526021b-46e6-46a7-bbbb-192c59b69e2d.aspx</id>
    <published>2009-03-23T05:38:33.9434135-07:00</published>
    <updated>2009-03-23T05:38:33.9434135-07:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
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:
</p>
        <ul>
          <li>
Upgraded to <a href="http://www.codeplex.com/dasBlog">dasBlog</a> 2.3 and tweaked
a whole bunch of settings. Hopefully this will enable all sorts of interesting stuff,
such as <a href="http://openid.net/">OpenID</a> commenter identification and <a href="http://www.cocomment.com/">coComment</a> support.
I’ll post my upgrade experiences separately; 
</li>
          <li>
Switched the theme to a slightly tweaked version of the dasBlog “business” theme by <a href="http://www.delarou.net/">Christoph
De Baene</a> (thanks for the help, <a href="http://www.kenegozi.com/blog/">Ken</a>!); 
</li>
          <li>
Got rid of the “advocacy” section on the right. I still strongly advocate <a href="http://www.mozilla.com/firefox/">Firefox</a>, <a href="http://xiph.org/vorbis/">Vorbis</a> and <a href="http://www.openoffice.org/">OpenOffice.org</a> (among
others), but there doesn’t seem to be much point in placing banners just for that; 
</li>
          <li>
Updated the blog-roll with my latest list.</li>
        </ul>
        <p>
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.
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=2526021b-46e6-46a7-bbbb-192c59b69e2d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>.NET production debugging 101</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/NETProductionDebugging101.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,1db72c20-3c25-42ad-93c4-b0551a0fed4e.aspx</id>
    <published>2009-03-19T08:16:24.5529419-07:00</published>
    <updated>2009-05-07T17:58:12.9154429-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <u>Update</u> (8 May 2009): Eli Ofek pointed out in the comments a little-known but
effective tool called the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=80CF81F7-D710-47E3-8B95-5A6555A230C2&amp;displaylang=en">Managed
Stack Explorer</a>. 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 <tt>mse
/s /p <i>&lt;pid&gt;</i></tt>. It’s a little slower than jstack but <strong>worlds
better </strong>than the alternative suggested below.
</p>
        <p>
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.
</p>
        <p>
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 <tt>jstack <i>&lt;pid&gt;</i></tt>;
with .NET it turns out to be quite a bit more complicated:
</p>
        <ol>
          <li>
Download and install the appropriate <a href="http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx">Debugging
Tools for Windows</a> version for your architecture (x86/x64/Itanium) 
</li>
          <li>
If you need information about Windows function calls (e.g. you want to trace into
kernel calls), download and install the appropriate <a href="http://www.microsoft.com/whdc/DevTools/Debugging/symbolpkg.mspx">symbols</a>.
This isn't strictly necessary if you just want a thread dump of your own code. 
</li>
          <li>
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). 
</li>
          <li>
Start-&gt;Programs-&gt;Debugging Tools for Windows [x64]-&gt;windbg 
</li>
          <li>
Attach the debugger to your running process using the menu 
</li>
          <li>
Load the SOS extension with "<tt>.loadby sos mscorwks</tt>" for .NET 2.0 ("<tt>.load
sos</tt>" for .NET 1.0/1.1) 
</li>
          <li>
Take a thread dump using "<tt>!eestack</tt>" 
</li>
          <li>
Detach using "<tt>.detach</tt>"</li>
        </ol>
        <p>
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).
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=1db72c20-3c25-42ad-93c4-b0551a0fed4e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>And isn&amp;rsquo;t it ironic</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/AndIsnrsquotItIronic.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,918cc1bd-e8bb-4952-a4e8-f7c06280c577.aspx</id>
    <published>2009-03-15T02:19:18.6589831-07:00</published>
    <updated>2009-03-15T02:19:18.6589831-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p align="center">
          <a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Andisntitironic_9F28/highscal_irony_2.png">
            <img title="highscal_irony" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="346" alt="highscal_irony" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Andisntitironic_9F28/highscal_irony_thumb.png" width="504" border="0" />
          </a>
        </p>
        <p>
Don’t ya think?
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=918cc1bd-e8bb-4952-a4e8-f7c06280c577" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Life is full of surprises</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/LifeIsFullOfSurprises.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,e4daaeff-248e-4457-b74a-693cd44aa882.aspx</id>
    <published>2009-03-11T08:34:35.9881552-07:00</published>
    <updated>2009-03-11T08:34:35.9881552-07:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
So I had to <a href="http://www.tomergabel.com/MovingOn.aspx">find myself a new job</a>.
Delver was about close down, the employees (including yours truly) were handed notices
and the next few weeks were spent searching for my next job. I guess breaks come not
only when you least expect them but also from the least likely direction: <a href="http://www.wikinomics.com/blog/index.php/2009/03/09/is-sears-making-a-move-into-social-commerce/">Delver
was bought by Sears</a> and made into SHC Israel, not to mention the company’s first
overseas headquarters and development center.
</p>
        <p align="center">
          <a href="http://www.searsholdings.com/">
            <img title="38_sears_holdings" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="255" alt="38_sears_holdings" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/Lifeisfullofsurprises_F775/38_sears_holdings_3.jpg" width="340" border="0" />
          </a>
        </p>
        <p>
You’ve read correctly: Sears. Not Amazon, not Google, not Microsoft. Delver, a strictly
web-based startup, wasn’t acquired by a web company; not even by a technology company
at that. Instead we were acquired by one of the United States’ <a href="http://en.wikipedia.org/wiki/Sears_Holdings_Corporation">largest
retailers</a>. Why, you ask? Well, with any luck you’ll find out in a few months :-)
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=e4daaeff-248e-4457-b74a-693cd44aa882" />
      </div>
    </content>
  </entry>
  <entry>
    <title>IPv6 and localhost on Windows</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/IPv6AndLocalhostOnWindows.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,994db352-2cac-413d-938f-4449a4e5b082.aspx</id>
    <published>2009-03-11T04:02:08.5145271-07:00</published>
    <updated>2009-03-11T04:02:08.5145271-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <category term="Software" label="Software" scheme="http://www.tomergabel.com/CategoryView,category,Software.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was making modifications to one of our components, and running all of the unit tests
revealed that <em>all</em> database-dependant integration tests were failing:
</p>
        <blockquote>
          <tt>
            <p>
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
</p>
            <p>
Last packet sent to the server was 0 ms ago.<br />
&lt;snip&gt; (cut for brevity’s sake)<br />
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2104)<br />
at com.mysql.jdbc.ConnectionImpl.&lt;init&gt;(ConnectionImpl.java:729)<br />
at com.mysql.jdbc.JDBC4Connection.&lt;init&gt;(JDBC4Connection.java:46)
</p>
          </tt>
        </blockquote>
        <p>
Strange error message, but as it turns out the inner exception was far more revealing:
</p>
        <blockquote>
          <p>
            <tt>java.net.ConnectException: Connection refused: connect</tt>
          </p>
        </blockquote>
        <p>
As can be expected, the local MySQL server was up and running, and I was able to connect
with the command line tool as well as with <a href="http://www.webyog.com/">SQLYog</a>,
so it was obviously not a problem with MySQL or the local firewall. Next up I tried
to telnet to the appropriate port (the easiest way I know to check port-level connectivity)
without success:
</p>
        <p>
          <a href="http://www.tomergabel.com/content/binary/WindowsLiveWriter/IPv6andlocalhostonWindows_B796/ipconflict_noconnect_2.png">
            <img title="Can't connect to localhost" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="255" alt="Can't connect to localhost" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/IPv6andlocalhostonWindows_B796/ipconflict_noconnect_thumb.png" width="504" border="0" />
          </a>
        </p>
        <p>
I next tried to connect to the loopback IP (<tt>127.0.0.1</tt>), and experienced a
major WTF moment when the connection succeeded. I <a href="http://www.tomergabel.com/DevelopingOnWindowsServer2008.aspx">use
Windows Server 2008</a> and, as it turns out, it supports IPv6 out of the box. <tt>localhost</tt> has
a slightly different meaning under IPv6 (it maps to <tt>::1</tt>), and as I understand
it traditional IPv4 traffic is tunneled over the looback IPv6 connection; I’m not
yet familiar enough with IPv6 to draw any conclusions on why the above shouldn’t work,
but the bottom line is there are several ways of resolving the problem:
</p>
        <ol>
          <li>
Edit your <tt>hosts</tt> file (it’s hidden under Windows Server 2008, but you should
be able to Start-&gt;Run-&gt;notepad %SYSTEMROOT%\System32\Drivers\etc\hosts) and
change the mapping for localhost from “<tt>::1 localhost</tt>” to “<tt>127.0.0.1 localhost</tt>”.
This does resolve the problem, although I can’t say what impact this will have on
IPv6-enabled applications. 
</li>
          <li>
Set the TCP stack to prefer IPv4 to IPv6 when attempting to connect (it’s the reverse
by default). According to <a href="http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/36f57ccf-7a76-4843-84bd-7bb945aad23f/">this
forum post</a>, this entails setting the registry value <tt>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters\DisabledComponents</tt> to
the DWORD value <tt>0x20</tt>. 
</li>
          <li>
Disable IPv6 altogether for your network connection: remove the IPv6 protocol from
your network connection component list. At this point in time IPv6 is still very rare
so I doubt this will cause any significant issues, but YMMV.</li>
        </ol>
        <p>
For me, changing the <tt>hosts</tt> file was the quickest solution because it works
and is easy to revert. I’ll have to keep a very careful eye on the behavior of my
machine though.
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=994db352-2cac-413d-938f-4449a4e5b082" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Getting decent PHP errors with IIS7</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/GettingDecentPHPErrorsWithIIS7.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,b0897826-14a8-4bff-8475-00e61d62a06b.aspx</id>
    <published>2009-02-02T10:58:44.4613346-07:00</published>
    <updated>2009-02-02T10:58:44.4613346-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you've ever tried to develop using PHP on IIS7 (Vista), you'll find that errors
in your script result in the default IIS7 "friendly" HTTP 500 error page, which is
useless for debugging. This happens in both FastCGI and ISAPI modes.
</p>
        <p>
To save you hours of crawling through the 'net, the solution (found on <a href="http://www.phwinfo.com/forum/1342724-post4.html">this
forum post</a>) is very simple:
</p>
        <ul>
          <li>
Start a command prompt; 
</li>
          <li>
Copy-paste the following: <tt>%windir%\system32\inetsrv\appcmd.exe set config -Section:system.webServer/httpErrors
-errorMode:Detailed</tt></li>
          <li>
Run <tt>iireset</tt></li>
          <li>
Enjoy.</li>
        </ul>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=b0897826-14a8-4bff-8475-00e61d62a06b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Moving on</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/MovingOn.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,ea814899-cbf9-480a-a613-bdba6e06b6cb.aspx</id>
    <published>2009-01-25T09:07:16.7445101-07:00</published>
    <updated>2009-01-25T09:07:16.7445101-07:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Unfortunately the startup I work for (<a href="http://www.delver.com">Delver</a>)
did not survive the current market crisis and has <a href="http://www.globes.co.il/serveen/globes/DocView.asp?did=1000419137&amp;fid=1725">failed
to secure additional funding</a>. As a result I’m on the market again, and am looking
for senior developer and/or software team lead positions, especially those with relocation
opportunities. My résumé can be found <a href="http://www.tomergabel.com/content/binary/resume_tomer_gabel.pdf">here</a>,
and the most recent version can always be found under Navigation on the right side
of this website.
</p>
        <p>
Have an interesting job offer? <a href="mailto:tomer@tomergabel.com">Get in touch!</a></p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=ea814899-cbf9-480a-a613-bdba6e06b6cb" />
      </div>
    </content>
  </entry>
  <entry>
    <title>XmlSerializer Voodoo</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/XmlSerializerVoodoo.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,56f230f3-e6a0-4f0c-b3f8-e9cb80bdf995.aspx</id>
    <published>2009-01-18T08:03:06.2059117-07:00</published>
    <updated>2009-01-18T08:28:51.9559453-07:00</updated>
    <category term="Development" label="Development" scheme="http://www.tomergabel.com/CategoryView,category,Development.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <u>Update</u>: I was wrong, and private setters do not appear to work (strange, I’m
sure I verified this in my test code, but it didn’t work in practice). See below.
</p>
        <p>
It’s been ages since I used <tt>XmlSerializer</tt>, or even written meaningful amounts
of code in C# for that matter, which is why I was utterly stumped by this problem.
Try running this code:
</p>
        <blockquote>
          <pre class="code">[<span style="color: #2b91af">XmlRoot</span>( <span style="color: #a31515">"test" </span>)] <span style="color: blue">public
class </span><span style="color: #2b91af">Test </span>{ <span style="color: blue">private
readonly string </span>_string1; <span style="color: blue">private readonly string </span>_string2; <span style="color: blue">public </span>Test( <span style="color: blue">string </span>string1, <span style="color: blue">string </span>string2
) { _string1 = string1; _string2 = string2; } [<span style="color: #2b91af">XmlAttribute</span>( <span style="color: #a31515">"attr" </span>)] <span style="color: blue">public
string </span>String1 { <span style="color: blue">get </span>{ <span style="color: blue">return </span>_string1;
} } [<span style="color: #2b91af">XmlElement</span>( <span style="color: #a31515">"element" </span>)] <span style="color: blue">public
string </span>String2 { <span style="color: blue">get </span>{ <span style="color: blue">return </span>_string2;
} } }<br /><span style="color: gray">/// </span><span style="color: green">... </span><span style="color: #2b91af">XmlSerializer </span>xs
= <span style="color: blue">new </span><span style="color: #2b91af">XmlSerializer</span>( <span style="color: blue">typeof</span>( <span style="color: #2b91af">Test </span>), <span style="color: #a31515">"" </span>); <span style="color: #2b91af">XmlSerializerNamespaces </span>xsn
= <span style="color: blue">new </span><span style="color: #2b91af">XmlSerializerNamespaces</span>();
xsn.Add(<span style="color: #a31515">""</span>, <span style="color: #a31515">""</span>); <span style="color: green">//
Gets rid of redundant xmlns: attributes </span><span style="color: #2b91af">StringWriter </span>pw
= <span style="color: blue">new </span><span style="color: #2b91af">StringWriter</span>();
xs.Serialize( pw, <span style="color: blue">new </span><span style="color: #2b91af">Test</span>( <span style="color: #a31515">"1"</span>, <span style="color: #a31515">"2" </span>),
xsn ); <span style="color: #2b91af">Console</span>.WriteLine( pw.GetStringBuilder().ToString()
);</pre>
        </blockquote>
        <div>You’ll get an <tt>InvalidOperationException</tt> stating that “Test cannot be
serialized because it does not have a parameterless constructor.” A quick look at
the documentation (or a search which may lead you to <a href="http://stackoverflow.com/questions/267724/why-serializable-class-need-a-parameterless-constructor">this
post</a> on StackOverflow) will get you the answer: add a parameterless constructor
and mark it <tt>private</tt>. Run the test code again and this time no exception will
be thrown; however, you probably won’t be expecting this result:
</div>
        <blockquote>
          <div>
            <pre>
              <span style="color: #0000ff">&lt;?</span>
              <span style="color: #800000">xml</span>
              <span style="color: #ff0000">version</span>
              <span style="color: #0000ff">="1.0"</span>
              <span style="color: #ff0000">encoding</span>
              <span style="color: #0000ff">="utf-16"</span>?<span style="color: #0000ff">&gt;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">test</span><span style="color: #0000ff">/&gt;</span></pre>
          </div>
        </blockquote>
        <p>
The solution? Add a setter to each of your serializable properties. Don’t need a setter
because the class is immutable? <strike>Mark it as <tt>private</tt> and you’re good
to go.</strike> Tough – you’re going to need one anyway, <tt>private</tt>/<tt>internal</tt>/<tt>protected</tt> setters
don’t appear to work. If you must use <tt>XmlSerializer</tt> you should throw a <tt>NotImplementedException</tt> from
these setters, but in my opinion the resulting contract clutter implies you should
simply avoid <tt>XmlSerializer</tt> altogether.
</p>
        <p>
Although this behavior makes sense in light of how <tt>XmlSerializer</tt> can be used
for both serialization and de-serialization, what threw me off was that no exception
is thrown – the contract doesn’t require a setter property, and the serializer output
is corrupt. Beware!
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=56f230f3-e6a0-4f0c-b3f8-e9cb80bdf995" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Now on Twitter</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/NowOnTwitter.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,840ab670-c3d8-4bfc-9fea-da56511f532a.aspx</id>
    <published>2009-01-12T04:06:29.2670749-07:00</published>
    <updated>2009-01-12T04:06:29.2670749-07:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
A couple of months ago I decided to give Twitter a try, and this ended up a permanent
fixture in my online life. As it turns out it’s an excellent tool for posting small
bits of information such as links, so I’ll be posting there much more often, but I’ll
keep the in-depth posts to the blog.
</p>
        <p align="center">
          <a href="http://twitter.com/tomerg">
            <img title="twitter_logo_sm" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="47" alt="twitter_logo_sm" src="http://www.tomergabel.com/content/binary/WindowsLiveWriter/NowonTwitter_B853/twitter_logo_sm_7.png" width="203" border="0" />
          </a>
        </p>
        <p>
Either way you can see my Twitter page <a href="http://twitter.com/tomerg">here</a> (or
follow via <a href="http://twitter.com/statuses/user_timeline/17018404.rss">RSS</a>).
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=840ab670-c3d8-4bfc-9fea-da56511f532a" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Lots of new software</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/LotsOfNewSoftware.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,d43f7ee1-402e-4928-9997-ab95f588e440.aspx</id>
    <published>2008-12-14T02:17:53.3013539-07:00</published>
    <updated>2008-12-14T02:17:53.3013539-07:00</updated>
    <category term="Software" label="Software" scheme="http://www.tomergabel.com/CategoryView,category,Software.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Chrome "final" is out, so go ahead and update your browser. This is essentially an
0.4.x development version that's been promoted to 1.0 status; if you're looking for
more information on Chrome releases, check out <a href="http://googlechromereleases.blogspot.com/">this
blog</a>. You can get the development releases on the Chrome <a href="http://dev.chromium.org/getting-involved/dev-channel/">dev
channel</a> page.
</p>
        <p>
I'm still using Chrome on both machines at home, but at work I'm testing out the new <a href="http://www.mozilla.com/en-US/firefox/all-beta.html">Firefox
3.1 beta 2</a>. While there are many subtle differences between 3.0 and this beta,
the primary differences are: a new privacy browsing mode (a la Chrome's incognito
mode), a thoroughly <a href="https://wiki.mozilla.org/JavaScript:TraceMonkey">revamped
JavaScript engine</a> that brings Firefox's performance to nearly-Chrome levels, and
improvements to the way tabs can be rearranged.
</p>
        <p>
Finally, Microsoft have finally retired FolderShare and replaced it with <a href="https://sync.live.com/home.aspx">Windows
Live Sync</a>. I've only just started using it, and so far it looks the exact same
as FolderShare, which is definitely a good thing. They've also added Unicode filename
support, the lack of which was for me the <a href="http://www.tomergabel.com/FindingTheUltimateFileSynchronizationTool.aspx">biggest
drawback</a> in using FolderShare. I just hope Microsoft intend to actually improve
this amazing tool, since it hasn't seen any visible improvement in over two years.
To be blunt, the Microsoft treatment of FolderShare so far hasn't been very impressive,
as is evidenced by the FAQ posted on the <a href="http://windowslivesync.spaces.live.com/default.aspx">Sync
team blog</a>:
</p>
        <blockquote>
          <p>
            <span class="Apple-style-span" style="word-spacing: 0px; font: 13px arial; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: collapse; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0">
              <span class="Apple-style-span" style="word-spacing: 0px; font: 13px arial; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: collapse; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0">
                <strong>Q.
What will happen to my computers running FolderShare? What about my folders and files?<br />
A.</strong>
                <span class="Apple-converted-space"> </span>Sync is designed to make
the transition easy for you. When Sync releases, <em>any computers running FolderShare
will stop synchronizing files </em>[emphasis mine --TG] and will notify you that you
need to download Sync. All of your files and folders will remain untouched on your
computers, but you need to install Sync on each computer to continue synchronizing
files.</span>
            </span>
          </p>
        </blockquote>
        <p>
          <span class="Apple-style-span" style="word-spacing: 0px; font: 13px arial; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: collapse; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0">
            <span class="Apple-style-span" style="word-spacing: 0px; font: 13px arial; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: collapse; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0">
            </span>
          </span>
        </p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=d43f7ee1-402e-4928-9997-ab95f588e440" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Developing on Windows Server 2008</title>
    <link rel="alternate" type="text/html" href="http://www.tomergabel.com/DevelopingOnWindowsServer2008.aspx" />
    <id>http://www.tomergabel.com/PermaLink,guid,b02c6a5c-6d7e-4795-911a-590edf72216b.aspx</id>
    <published>2008-12-09T09:20:13.6176407-07:00</published>
    <updated>2009-01-12T05:51:22.0040189-07:00</updated>
    <category term="Personal" label="Personal" scheme="http://www.tomergabel.com/CategoryView,category,Personal.aspx" />
    <category term="Software" label="Software" scheme="http://www.tomergabel.com/CategoryView,category,Software.aspx" />
    <author>
      <name>Tomer Gabel</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
          <u>Update</u> (12-Jan-09): The latest <a href="http://download.live.com/">Windows
Live Essentials</a> installer supports Windows Server 2008 (including x64), so no
more hacks are necessary to get Messenger and/or Live Writer to work. 
</p>
        <p>
          <u>Update</u> (7-Jan-09): Check out the addendum on Hyper-V performance issues below. 
</p>
        <p>
I’ve been using the 64-bit version of Windows Server 2008 as my development platform
for the last few weeks, and have been quite happy with it. Following is a more or
less verbatim transcript of the e-mail I sent out to the development guys at <a href="http://www.delver.com">Delver</a>,
which may of be of some benefit to others: 
</p>
        <p>
          <u>Memory Requirements</u>
        </p>
        <p>
Like it or not, this operating system does need more memory, but it also handles more
memory (unlike 32-bit Windows which is practically limited to 3.3 [or so] GB). With
4GB on this machine I run the following applications constantly and it hardly ever
swaps:
</p>
        <ul>
          <li>
Google Chrome (with a buttload of tabs) 
</li>
          <li>
Total Commander 
</li>
          <li>
Process Explorer 
</li>
          <li>
Eclipse 
</li>
          <li>
Outlook 
</li>
          <li>
mRemote 
</li>
          <li>
MediaMonkey 
</li>
          <li>
Notepad++ 
</li>
          <li>
Visual Studio 2005 + ReSharper 3.1.1 
</li>
          <li>
Skype 
</li>
          <li>
Live Messenger 
</li>
          <li>
FolderShare 
</li>
          <li>
KeePass</li>
        </ul>
        <p>
As an aside, this is also a list of software I currently use and recommend :-)
</p>
        <p>
          <u>Application Compatibility</u>
        </p>
        <p>
Practically every application I’ve tried so far works (the exception being the file
monitor in <a href="http://www.mediamonkey.com/">MediaMonkey</a>, I’ve an open bug
on this). I also make it a point to try x64 versions of software where available,
and these are the important bits you should know: 
</p>
        <ul>
          <li>
Eclipse has a 64-bit version (which runs on 64-bit JREs). I tried it for a bit and
it appears to work fine, but are there some problems with <a href="http://subclipse.tigris.org/">Subclipse</a> (the
integration plug-in for Subversion). Subclipse can work in one of two modes: using
a Java-native Subversion client library, which is unfortunately very unstable (the
IDE simply crashes after 5-10 operations), or a native-code thunking API called JavaHL.
The Subclipse distribution only comes with 32-bit binaries, however, and I couldn’t
find 64-bit JavaHL binaries (the <a href="http://www.sliksvn.com/en/download">SlikSVN</a> x64
client works like a charm, but doesn’t come with a JavaHL implementation). For this
reason I’d recommend the following: 
<ol><li>
Install a 32-bit JRE on your machine (the latest JRE is recommended). Either set your
JRE_HOME accordingly or (preferably) use the -vm flag for the Eclipse launcher. 
</li><li>
Install a 64-bit JDK for development purposes. Configure Eclipse (via Windows-&gt;Preferences-&gt;Java-&gt;Installed
JREs) to use the 64-bit JDK as the default runtime. This lets you develop on a 64-bit
VM. 
</li><li>
If you use <a href="http://www.yourkit.com/">YourKit Java Profiler</a>, make sure
to install the integration plug-in in 64-bit mode (it lets you decide) if you use
a 64-bit VM for development.</li></ol></li>
          <li>
            <a href="http://www.checkpoint.com/downloads/quicklinks/downloads_sr.html">Checkpoint
VPN-1 SecuRemote</a> (the Checkpoint VPN client) <i>has no x64 version</i>, which
means it simply cannot be installed. I resorted to a Windows XP 32-bit virtual machine
running on Hyper-V for when I need VPN access. Hurray for Checkpoint. 
</li>
          <li>
Visual Studio 2005: Just install it as you normally would, along with ReSharper. You
don’t need to do anything, and debug sessions for .NET code start as 64-bit processes.
One caveat: it appears that the 64-bit debugger does not support edit-and-continue;
if this is really an issue for you, <a href="http://www.delarou.net/weblog/PermaLink,guid,6fcde84b-c94e-406b-91a7-8df2d633a057.aspx">here
are instructions</a> on running the debugee as a 32-bit image. 
</li>
          <li>
            <strike>The various Microsoft Live! installers (Messenger, Writer, etc.) don’t support
Windows Server 2008, even though the products themselves do. A quick Google search
will get you instructions on how to install them anyway (use the individual MSIs directly).</strike> (12-Jan-09)
No longer relevant, just <a href="http://download.live.com/">download</a> the latest
installer. 
</li>
          <li>
The following applications have native x64 versions that “just work”: 
<ol><li>
Eclipse (other than the problem described above). The version is not easy to find,
you have to go through the <a href="http://download.eclipse.org/eclipse/downloads/">Other
Downloads</a> page any find the x86_64 build. 
</li><li>
MySQL. Everything works as you’d expect. 
</li><li>
Gimp has an experimental x64 version which, again, isn't that easy to find: you have
to go via the SourceForge project page and look in the <a href="http://sourceforge.net/project/showfiles.php?group_id=121075&amp;package_id=250052">stable
releases</a>. So far this version seems quite fast and robust.</li></ol></li>
        </ul>
        <p>
          <u>Things To Do</u>
        </p>
        <p>
You’ll probably want to perform these steps to get the environment closer to what
you’re used to: 
</p>
        <ul>
          <li>
            <a href="http://www.win2008workstation.com/wordpress/2008/03/08/disabling-the-shutdown-event-tracker/">Disable</a> the
annoying shutdown event tracker. 
</li>
          <li>
            <a href="http://www.win2008workstation.com/wordpress/lang/en-us/2008/03/08/disabling-internet-explorer-enhanced-security">Disable</a> Internet
Explorer enhanced security mode. 
</li>
          <li>
Start-&gt;right click on Computer-&gt;Properties-&gt;Advanced System Settings-&gt;Performance
Settings...-&gt;Advanced and select Programs instead of Background Services (changes
the paging behavior and makes everything much more responsive). 
</li>
          <li>
To get a more Vista-like look: 
<ol><li>
Install the Desktop Experience feature from the Server Manager 
</li><li>
Change the “Themes” service startup mode from Disabled to Automatic 
</li><li>
Right-click your desktop-&gt;Personalize-&gt;Theme and change to Windows Vista 
</li><li>
Right-click your desktop-&gt;Personalize-&gt;Window Color and Appearance and change
to Windows Aero</li></ol></li>
          <li>
If you want audio: 
<ol><li>
Change the Windows Audio service’s startup mode from Disabled to Automatic. 
</li><li>
If you get audio stuttering, change the registry key HKLM\Software\Microsoft\Windows
NT\CurrentVersion\Multimedia\SystemProfile\SystemResponsiveness from 100 (0x64) to
20 (0x14)</li></ol></li>
        </ul>
        <p>
If you want to use virtualization (Hyper-V), make sure you update to the latest BIOS
(I had an older BIOS installed that didn’t have an updated processor microcode) and
enable the feature in the BIOS menu (usually disabled by default).
</p>
        <p>
          <u>Benefits</u>
        </p>
        <ul>
          <li>
It’s fast (feels way snappier than Vista) 
</li>
          <li>
64-bit OS (closer to our actual production environment) 
</li>
          <li>
Virtualization support (Hyper-V)</li>
        </ul>
        <p>
          <u>Update: Hyper-V and Multimedia Performance</u>
        </p>
        <p>
Apparently installing the Hyper-V role can have some repercussions when it comes to
multimedia performance in Windows. Specifically, when running under the hypervisor
you may experience very high CPU spikes (mostly kernel time) when starting up any
DirectShow-based application (e.g. Windows Media Player or the considerably better
Media Player Classic Home-cinema) or a remote desktop session. These will effect make
your machine freeze for 5-10 seconds.
</p>
        <p>
According to the rather insightful comments <a href="http://www.win2008workstation.com/wordpress/lang/en-us/2008/03/08/optimize-performance/comment-page-1/#comment-4308">here</a>,
this quite likely has to do with NVidia drivers though I have not yet verified this.
I don't have consistent need for Hyper-V so I simply disabled it, which resolved the
problem. If you require virtualization and still want proper multimedia support you
may have to resort to ATi cards.
</p>
        <img width="0" height="0" src="http://www.tomergabel.com/aggbug.ashx?id=b02c6a5c-6d7e-4795-911a-590edf72216b" />
      </div>
    </content>
  </entry>
</feed>