Accreditus: Gama System eArchive 

One of our core products, Gama System eArchive was accredited last week.

This is the first accreditation of a domestic product and the first one covering long term electronic document storage in a SOA based system.

Every document stored inside the Gama System eArchive product is now legally legal. No questions asked.

Accreditation is done by a national body and represents the last step in a formal acknowledgement to holiness.

That means a lot to me, even more to our company.

The following blog entries were (in)directly inspired by the development of this product:

We've made a lot of effort to get this thing developed and accredited. The certificate is here.

This, this, this, this, this, this, this, this, this and those are direct approvals of our correct decisions.

Categories:  .NET 3.0 - General | .NET 3.0 - WCF | .NET 3.5 - WCF | Other | Personal | Work
Saturday, July 05, 2008 1:18:06 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Sysinternals Live 

This is brilliant.

Sysinternals tools are now (actually were already when I left for vacation) available live via a web (http and WebDAV) based resource on http://live.sysinternals.com and \\live.sysinternals.com.

This means I can do the following:

[c:\]dir \\live.sysinternals.com\tools

 Directory of  \\live.sysinternals.com\tools\*

 2.06.2008   1:16         <DIR>    .
 2.06.2008   1:16         <DIR>    ..
 2.06.2008   1:16         <DIR>    WindowsInternals
30.05.2008  17:55             668  About_This_Site.txt
13.05.2008  19:00         225.320  accesschk.exe
 1.11.2006  15:06         174.968  AccessEnum.exe
 1.11.2006  23:05         121.712  accvio.EXE
12.07.2007   7:26          50.379  AdExplorer.chm
26.11.2007  14:21         422.952  ADExplorer.exe
 7.11.2007  11:13         401.616  ADInsight.chm
20.11.2007  14:25       1.049.640  ADInsight.exe
 1.11.2006  15:05         150.328  adrestore.exe
 1.11.2006  15:06         154.424  Autologon.exe
 8.05.2008  10:20          48.476  autoruns.chm
12.05.2008  17:31         622.632  autoruns.exe 1.11.2006  
...
 1.11.2006  15:06         207.672  Winobj.exe
30.12.1999  12:26           7.653  WINOBJ.HLP
27.05.2008  16:21         142.376  ZoomIt.exe
     24.185.901 bytes in 103 files and 3 dirs
109.442.727.936 bytes free

Or, I can fire up a Windows Explorer window (or press the start key, then type) and just type: \\live.sysinternals.com\tools.

Or:

[c:\]copy \\live.sysinternals.com\tools\Procmon.exe
        C:\Windows\System32
\\live.sysinternals.com\tools\Procmon.exe =>
        C:\Windows\System32\Procmon.exe
     1 file copied

Brilliant and useful.

Categories:  Other
Thursday, June 19, 2008 6:52:52 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Laws and Digital Signatures 

Suppose we have a document like this:

<?xml version="1.0"?>
<root xmlns="urn-foo-bar">
  <subroot>
    <value1>value1</value1>
    <value2>value2</value2>
  </subroot>
  <Signature xmlns="h
ttp://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod
        Algorithm="
http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
      <SignatureMethod
        Algorithm="
http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <Reference URI="">
        <Transforms>
          <Transform 
            Algorithm="
http://www.w3.org/2000/09/
              xmldsig#enveloped-signature
"/>
        </Transforms>
        <DigestMethod
          Algorithm="
http://www.w3.org/2000/09/xmldsig#sha1" />
        <DigestValue>1Xp...EOko=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>nls...cH0k=</SignatureValue>
    <KeyInfo>
      <KeyValue>
        <RSAKeyValue>
          <Modulus>9f3W...fxG0E=</Modulus>
          <Exponent>AQAB</Exponent>
        </RSAKeyValue>
      </KeyValue>
      <X509Data>
        <X509Certificate>MIIEi...ktYgN</X509Certificate>
      </X509Data>
    </KeyInfo>
  </Signature>
</root>

This document represents data and an enveloped digital signature over the complete XML document. The digital signature completeness is defined in the Reference element, which has URI attribute set to empty string (Reference Uri="").

Checking the Signature

The following should always be applied during signature validation:

  1. Validating the digital signature
  2. Validating the certificate(s) used to create the signature
  3. Validating the certificate(s) chain(s)

Note: In most situations this is the optimal validation sequence. Why? Signatures are broken far more frequently then certificates are revoked/expired. And certificates are revoked/expired far more frequently then their chains.

1. Validating the digital signature

First, get it out of there:

XmlNamespaceManager xmlns = new XmlNamespaceManager(xdkDocument.NameTable); [1]
xmlns.AddNamespace("ds", "
http://www.w3.org/2000/09/xmldsig#");
XmlNodeList nodeList = xdkDocument.SelectNodes("//ds:Signature", xmlns);
 
[1] xdkDocument should be an XmlDocument instance representing your document.

Second, construct a SignedXml instance:

foreach (XmlNode xmlNode in nodeList)
{
  // create signed xml object
  SignedXml signedXml = new SignedXml(xdkDocument); [2]

  // verify signature
  signedXml.LoadXml((XmlElement)xmlNode);
}

[2] Note that we are constructing the SignedXml instance from a complete document, not only the signature. Read this.

Third, validate:

bool booSigValid = signedXml.CheckSignature();

If booSigValid is true, proceed.

2. Validating the certificate(s) used to create the signature

First, get it out of there:

XmlNode xndCert = xmlNode.SelectSingleNode(".//ds:X509Certificate", xmlns); [3]

[3] There can be multiple X509Certificate elements qualified with http://www.w3.org/2000/09/xmldsig# namespace in there. Xml Digital Signature specification is allowing the serialization of a complete certificate chain of the certificate used to sign the document. Normally, the signing certificate should be the first to be serialized.

Second, get the X509Certificate2 instance:

byte[] bytCert = Convert.FromBase64String(xndCert.InnerText);
X509Certificate2 x509cert = new X509Certificate2(bytCert);

Third, validate:

bool booCertValid = x509cert.Verify();

If booCertValid is true, proceed.

3. Validating the certificate(s) chain(s)

Building and validating the chain:

X509Chain certChain = new X509Chain();
bool booChainValid = certChain.Build(x509cert);
int intChainLength = certChain.ChainElements.Count; [4]

If booChainValid is true, your signature is valid.

Some Rules and Some Laws

We have three booleans:

  • booSigValid - signature validity
  • booCertValid - certificate validity
  • booChainValid - certificate's chain validity

If booSigValid evaluates to false, there is no discussion. Someone changed the document.

What happens if one of the following two expressions evaluates to true:

1. ((booSigValid) && (!booCertValid) && (!booChainValid))
2. ((booSigValid) && (booCertValid) && (!booChainValid))

This normally means that either the certificate is not valid (CRLed or expired) [4], or one of the chain's certificate is not valid/expired.

[4] The premise is that one checked the signature according to 1, 2, 3 schema described above.

The Question

Is digital signature valid even if CA revoked the certificate after the signature has already been done? Is it valid even after the certificate expires? If signature is valid and certificate has been revoked, what is the legal validity of the signature?

In legal terms, the signature would be invalid on both upper assertions, 1 and 2.

This means, that once the generator of the signature is dead, or one of his predecessors is dead, all his children die too.

Timestamps to the Rescue

According to most country's digital signature laws the signature is valid only during the validity of the signing certificate and validity of the signing certificate's chain, both being checked for revocation and expiry date ... if you don't timestamp it.

If the source document has another signature from a trusted authority, and that authority is a timestamp authority, it would look like this:

<?xml version="1.0"?>
<root xmlns="urn-foo-bar">
  <subroot>
    <value1>value1</value1>
    <value2>value2</value2>
  </subroot>
  <Signature xmlns="
http://www.w3.org/2000/09/xmldsig#">
    ...
  </Signature>
  <dsig:Signature Id="TimeStampToken"
   
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
    <dsig:SignedInfo>
      <dsig:CanonicalizationMethod
        Algorithm="
http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
      <dsig:SignatureMethod
        Algorithm="
http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
      <dsig:Reference
        URI="#TimeStampInfo-113D2EEB158BBB2D7CC000000000004DF65">
        <dsig:DigestMethod
          Algorithm="
http://www.w3.org/2000/09/xmldsig#sha1" />
          <dsig:DigestValue>y+xw...scKg=</dsig:DigestValue>
      </dsig:Reference>
      <dsig:Reference URI="#TimeStampAuthority">
        <dsig:DigestMethod
          Algorithm="
http://www.w3.org/2000/09/xmldsig#sha1" />
        <dsig:DigestValue>KhFIr...Sv4=</dsig:DigestValue>
      <dsig:/Reference>
    </dsig:SignedInfo>
    <dsig:SignatureValue>R4m...k3aQ==</dsig:SignatureValue>
    <dsig:KeyInfo Id="TimeStampAuthority">
      <dsig:X509Data>
        <dsig:X509Certificate>MII...Osmg==</dsig:X509Certificate>
      </dsig:X509Data>
    </dsig:KeyInfo>
    <dsig:Object
      Id="TimeStampInfo-113D2EEB158BBB2D7CC000000000004DF65">
      <ts:TimeStampInfo
         xmlns:ts="
http://www.provider.com/schemas
           
/timestamp-protocol-20020207
"
         xmlns:ds="
http://www.w3.org/2000/09/xmldsig#">
        <ts:Policy id="
http://provider.tsa.com/documents" />
          <ts:Digest>
            <ds:DigestMethod Algorithm="
http://www.w3.org/2000/
              09/xmldsig#sha1"
/>
            <ds:DigestValue>V7+bH...Kmsec=</ds:DigestValue>
          </ts:Digest>
          <ts:SerialNumber>938...045</ts:SerialNumber>
          <ts:CreationTime>2008-04-13T11:31:42.004Z</ts:CreationTime>
          <ts:Nonce>121...780</ts:Nonce>
      </ts:TimeStampInfo>
    </dsig:Object>
  </dsig:Signature>
</root>

The second signature would be performed by an out-of-band authority, normally a TSA authority. It would only sign a hash value (in this case SHA1 hash) which was constructed by hashing the original document and the included digital signature.

This (second) signature should be checked using the same 1, 2, 3 steps. For the purpose of this mind experiment, let's say it would generate a booTimestampValid boolean.

Now, let's reexamine the booleans:

  1. ((booSigValid) && (!booCertValid) && (!booChainValid) && (booTimestampValid))
  2. ((booSigValid) && (booCertValid) && (!booChainValid) && (booTimestampValid))

In this case, even though the signature's certificate (or its chain) is invalid, the signature would pass legal validity if the timesamp's signature is valid, together with its certificate and certificate chain. Note that the TSA signature is generated with a different set of keys than the original digital signature.

Actually booTimestampValid is defined as ((booSigValid) && (booCertValid) && (booChainValid)) for the timestamp signature/certificate/certificate chain [5].

[5] Legal validity is guaranteed only in cases where 1 or 2 are true.

Categories:  Other | XML
Wednesday, April 16, 2008 6:32:29 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 European Silverlight Challenge 

If you're into Silverlight, and you should be, check out http://www.silverlightchallenge.eu, and especially sign up on http://slovenia.silverlightchallenge.eu and join one of our many developers who will participate in this competition.

More here.

Categories:  Other | Silverlight
Friday, January 04, 2008 10:33:22 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Oh my God: 1.1 

Shame? Nokia?

Same sentence, as in Shame and Nokia?

There is just no pride in IT anymore. Backbones are long gone too.

Categories:  Apple | Other | Personal
Wednesday, August 29, 2007 5:40:16 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Oh my God: 1.0 

This post puts shame to a new level.

There is no excuse for having Microsoft Access database serving any kind of content in an online banking solution.

The funny thing is, that even the comment excuses seem fragile. They obviously just don't get it. The bank should not defend their position, but focus on changing it immediately.

So, they should fix this ASAP, then fire PR, then apologize.

Well-done David, for exposing what should never reach a production environment.

Never. Ever.

Categories:  Other | Personal
Wednesday, August 29, 2007 5:35:38 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 All Things Digital: Jobs + Gates 

Microsoft Windows Vista Ultimate, $499.

Apple iPhone, $599.

Jobs and Gates sitting together. Priceless.

Categories:  Apple | Microsoft | Other
Thursday, May 31, 2007 1:14:25 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 IIS6: Changing the Locale ID when Regional Settings Won't Work 

I noticed an awkwardness on my IIS6 server installation today.

All my sites were running with a US locale, thus invalidating the currency/date time/decimal calculations by an order of magnitude.

The problem was that the server was installed using the default settings, and also applied those to the Network Service account under which most of my sites work.

How do you fix this?

  1. Login (RDP is OK)
  2. Change the locale to your preference on the logged in account, use Control Panel's Regional Settings UI, you may need to reboot
  3. Go to HKEY_CURRENT_USER\Control Panel\International
  4. Right click, choose Export
  5. Open the file in Notepad, replace "HKEY_CURRENT_USER" with "HKEY_USERS\S-1-5-20", this is the Network Service account
  6. Save the .reg file
  7. Double click the .reg file and import the settings
  8. Restart IIS

You should have your locale set.

Oh, on the other side, while investigating this, here's a scoop on how to get to clear text passwords of IUSR_MACHINENAME and IWAM_MACHINENAME accounts:

  1. Go to C:\InetPub\AdminScripts and open adsutil.vbs script in Notepad
  2. Change the only occurrence of "IsSecureProperty = True" to "IsSecureProperty = False". Save.
  3. Run "cscript adsutil.vbs get w3svc/anonymoususerpass" in command prompt
  4. Run "cscript adsutil.vbs get w3svc/wamuserpass" in command prompt
  5. Don't forget to revert to "IsSecureProperty = True" in adsutil.vbs
  6. Don't forget to save the file again

You should have both passwords now. This comes handy when you need to fine tune the settings of both built-in accounts.

Categories:  Other | Work
Wednesday, April 18, 2007 12:04:31 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Using Dark Room 

If you need a distraction free writing environment, grab a copy of Dark Room. I found it after a few years of using WriteRoom, the original, on a Mac.

I write most of my draft documents in it. Then I move them to Word and apply formatting. I write all blog entries - exclusively in Dark Room - every post.

It does what every text editor should be doing first. It makes you concentrate on the subject.

And, best of all - it's small footprint, single .exe app. Xcopy it to your path. Bam.

Categories:  Other | Personal | Work
Sunday, March 11, 2007 10:19:35 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Hassle Free Setups and Market Penetration 

Harry Pierson is discussing the correlation between market penetration and hassle free installation experience and hits the nail on its head.

Big market success of Adobe Flash, its omnipresence and high install base can definitely be traced back to flawless install experience. In fact, it's so perfect, that most users don't even know which version they're running. They don't care (me included). And they shouldn't care.

The first thing any platform needs to achieve is simple and effective installation experience. I don't want to manually download platform installers to use certain web services. It has to auto-install and has to be safe. This is what Flash does perfectly.

All current virtual machine based platforms can be installed independently. Or they can be flawlessly smuggled in by a host application setup program. The problem is, that we can't compare CLR (or JVM) based platforms to Windows (as a platform), since the user can't run five of the latter at the same time.

Flash 9 market penetration is currently at ~40%. Flash 8 penetration is ~90%, while Flash 6 penetration is ~96%.

WPF/E will have the same install experience. Bet on it. If it wants to succeed, it will also have to allow multiple versions to coexist gracefully.

Categories:  CLR | Other
Sunday, March 11, 2007 9:37:09 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 BITS Download Manager: Version 1.1.0 Available 

I updated my BITS Download Manager yesterday, making it even more Vista compatible.

Well, the compatibility was there from 1.0.2. But now, it shouldn't make any unnecessary UAC prompts go off.

If not for large HTTP based file downloads, I use it to track podcast downloads RSSBandit makes when using the new feature set.

Categories:  Other | Personal
Wednesday, February 21, 2007 4:26:14 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 The curse of Vista x64 

This post has been cooking for quite some time, quietly sitting on my desktop. Since Miha started the debate, I'm letting it go...

I've had a pleasure to work with the Acer Ferrari 4005 machine for a while. It was a great machine: AMD Turion 2.0 GHz, 64 bit, 2 GB RAM workhorse. Until I left it on the roof of my car and drove off...

Since then, I've been hammering on IBM Lenovo ThinkPad T60p, same specs, although x86 architecture. This is, in all terms, a great machine.

Having said that, I was running Windows XP x64 SP2 + Windows Vista x64, and Ferrari is actually one of the best machines to be on, when running x64. They have flawless driver support.

Let me get straight to the point.

Current prevailing architecture is x86. It's not going to stay that way for long. In the beginning of next year 99% of machines sold will have x64 support. Core 2 Duo is going to sweep the x86's dusty history.

The problem is, the majority of consumer base will decide by comparison, as always. It's just the magic of numbers, again. Imagine all the talking going on inside different computer stores and online forums, speculating how much better x64 is. In reality, x64 is currently (and for at least a couple of years) not going to be substantially faster - in the consumer space - than x86.

Nevertheless, a lot of people, who will now own the x64 chip, will want to run a x64-based edition of the OS. And here the problem lies.

Consumer Windows drivers have not been known for their robustness in the x86 world. There are devices that have real trouble running on Windows XP x86. Even though Vista will require signed x64 drivers, their availability is subject to questioning.

So the situation is this:

  • You get the latest and greatest hardware, including a Core 2 Duo
  • You get the latest and greatest software, including Windows Vista x64
  • There are numerous well known problems with running apps in WoW, on x64 machines
  • Currently, general device support is, well, flawed
  • The drivers that exist have not been tested - for the consumer market.

Enterprise x64 market is quite different. There are a lot of production systems running Windows Server x64 successfully.

People are going to be pissed. It's Vista x64 and it is not going to launch successfully to the customer base.

Categories:  Other | Personal | Windows Vista
Saturday, September 09, 2006 2:05:56 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 BITS Download Manager 

There is Background Intelligent Transfer Service (BITS) present in every Windows XP/2003/Vista setup. BITS manages Windows Updates downloads, but is also capable of transfering other files.

More on BITS can be found here.

Since the infrastructure is there, I wrote a lightweight application, which manages the user queue of the BITS service.

Here are some screenshots:

BITS Download Manager

Menu in system tray

Notifications

System tray 'Download Complete' notification

Main features:

  • Download files in the background
  • Fire and forget
  • Handles dropped connections
  • Handles system downtime
  • Handles bandwidth usage
  • Can start download from IE (IE right click integration)
  • Can autolaunch at system boot
  • System tray notifications
  • Harmless, small footprint
  • Windows Vista support

You can download the installer or a ZIP version. If you grab the ZIP, you should change the installation path inside the .html file for the IE integration to work properly.

Download (Version 1.1.0):

Requirements:

BITS Download Manager will quitely sit in your system tray and wait for you to give it something to download. When you initiate the download, it will progress in the background only if there is enough bandwidth available.

I use it to download large files over HTTP, being from my own server of those damn Windows SDK 1GB downloads which seem to break every now and then.

Update: Version 1.0.2 available [2006-07-04]

Minor bugs fixed regarding appropriate single instancing when launching a download from IE. Context menus fixed when no downloads are in progress. You do not need to uninstall version 1.0.0 before installing this one.

Update: Version 1.1.0 available [2007-02-20]

Minor bugs fixes, Windows Vista support.

Categories:  Other | Personal
Tuesday, July 04, 2006 11:46:21 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Hibernation Issue on Windows XP SP2: >1GB RAM 

If you happen to run Windows XP SP2 on a machine with more than a GB of RAM, you may likely see the following notification appear on the system tray:

Hibernate Error on Windows XP SP2

This happens after hibernation is attempted. The error is: "Insufficient system resources exist to complete the API."

The solution is Q909095. There is a hotfix available, but you have to call Microsoft PSS to get it download the patch. It includes a new OS kernel which works flawlessly on my ThinkPad T60p with 2GB.

Knock knock. 

[Update 10/17/2006, Download available]

Categories:  Other | Personal | Work
Wednesday, June 14, 2006 10:24:15 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 On AJAX being dead 

A fellow MVP, Daniel Cazzulino, has a post titled AJAX may be the biggest waste of time for the web. While I agree with most of the points there, one should think about what Microsoft is doing to lower the AJAX development experience boundary.

Having to deal with JavaScript, raw (D)HTML and XML is definitely not going to scale from the developer penetration perspective. Nobody wants to do this is 2006. Therefore if Atlas guys make their magic happen, this would actually not be neccessary. It they achieve what they started, one would be abstracted from client side programming in most of the situations.

<atlas:UpdatePanel/> and <atlas:ScriptManager/> are your friends. And they could go a long way.

If this actually happens then we are actually discussing whether rich web based apps are more appropriate for the future web. There are scenarios that benefit from all these technologies, obviously. And if the industry concludes that DHTML with XmlHttpRequests is not powerful enough, who would stop the same model to produce rich WPF/E code from being emitted out of an Atlas enabled app.

We have, for the most part, been able to abstract the plumbing that is going on behind the scenes. If it's server side generated code, that should be running on a client, and if it is JavaScript, because all browsers run it, so be it.

We have swallowed the pill on the SOAP stacks already. We don't care if the communication starts with a SCT Request+Response messages, following by the key exchange. We do not care that a simple request-response model produces 15 messages while starting up. We do not care that there is raw XML being transfered. After all, it is all a fog, doing what it is supposed to do best - hiding the abstraction behind our beautiful SOAP/Services stack API.

Categories:  Other | Web Services | XML
Saturday, May 27, 2006 11:07:39 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 On Windows compared to 'other' OSs 

Having an option is always a good thing, right? But there comes a time when we all have to face the truth of the free (economic) world. There are things that just do not fit in common line-of-though agenda.

Like this one (Rob Enderle, link):

Windows is free to the OEMs. In fact, not only is it free, but Microsoft, in effect, pays them to take it. Regardless of the cost, Windows is a logical choice, and a straight pass. Dell (Nasdaq: DELL) pays about $80 for it and typically charges about $80 for it. There is rarely much of a mark up. If Microsoft were to lower its price that lowered price would be reflected in virtually all desktop hardware immediately.

Microsoft provides a number of services which include development support, service support, marketing support, technicians, classes, databases and support materials, and it picks up a lot of the service load as well. In addition, it provides marketing co-op dollars, incentives for early adoption of new products, and ensures a somewhat level playing field (which could be good or bad) for the vendors.

This is the world we all live in. Market share is made by a conglomerate of superiorities. Not necessarily just technical ones. We do need to acknowledge that sometimes market can be gained by offering better business environment for the complete food chain. One needs to respect the box movers too, they need those extra dollars. They need the extra revenue.

Now, here's the question. What if RedHat/Apple/Ubuntu had Microsoft's position? What would happen then?

Short term? Lower prices - better quality of life.

Long term? The same thing.

If Apple had an opportunity to excell at Microsoft's position, I bet they would exercise it! Actually, they are doing it already.

That's why I (mostly) agree with the quoted article.

Categories:  Other | Personal
Thursday, April 27, 2006 7:47:07 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Eagle View 

Now this is interesting.

Live bald eagle nest, streamed to your house.

Let's hope the parents are not disturbed too much.

Categories:  Other
Tuesday, April 04, 2006 4:22:27 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Joel Spolsky Discussion on Frameworks 

This has to be one of the best written analogies between current framework use cases ever.

We indeed are in a state of using ANYTHING that can make our developer lives easier, no matter what the consequences are. An often times, consequences manifest themselves in increased costs, time-to-ship prolongation, complexity and speed.

Go read it. It's worth way more than the time spent.

Categories:  Other | Work
Thursday, March 09, 2006 12:54:08 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Regarding Origami 

Well, as more news bubbles up, there's a couple of things the 'Origami consortium' should do:

  • It should pull a Steve Jobs on Origami: "... and it's available today for $X99."
  • It should NOT discuss the follow-up models. I just do not want to know that in 6 months a better Origami will surface. One with a keyboard and 12 hour uptime, for example.
  • It should make sure that the Xbox 360 launch does not replay itself in terms of market congestion.

Tommorow at 9-12AM GMT a new Origami video will be available on Channel 9. I'm watching that space.

Categories:  Other | Personal
Wednesday, March 08, 2006 7:50:39 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Presentation Styles of Mr. Gates and Mr. Jobs 

If you've got 10 minutes and want to read a couple of pages, this is a must read.

There is so much difference between how Jobs and Gates do presentations. If you haven't seen one of them yet, there are many (Gates CES 2006 speech) options (Apple MacWorld 2006).

Categories:  Other
Sunday, January 29, 2006 11:54:53 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Longest product name ever 
 Installation issue with December CTP of WinFX Runtime Components 

If you are planning to install or have already done so, there's an issue with the automated install of December CTP of WinFX RC (Runtime Components).

The following link will install November 2005 WinFX RC:

http://www.microsoft.com/downloads/details.aspx?familyid=BD3BA2D5-6ADB-4FB2-A3AA-E16A9EA5603F&displaylang=en

And to make it even more complex, if you happen to install it in Windows Vista December CTP, there is no way to remove it and have a clean machine afterwards.

Use the complete download link, ie:

How do you know if this thing screwed you up? You will not be able to install a 1GB pack of Windows SDK (December 2005), which also includes WinFX docs and samples.

Another proof are filename timestamps of for example System.ServiceModel.dll and friends, which are 11/18/2005 - equaling to November 2005 CTP dates.

Categories:  Windows Vista | Other | Personal | .NET 3.0 - General | Work
Thursday, December 22, 2005 1:25:33 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Apple <> Intel 

I've said it before - in the last two years I have become a huge Apple fan.

It all started with me being inquisitive and buying a peace of furniture - Apple iMac G5. It went on with iPod nano.

I love Apple hardware. I like Apple software. There are known limitations inside the Mac OS X platform for it not being able to compete with Microsoft in terms of development experience and development technology adoption. They are ages behind in some critical areas, but also a couple years ahead in terms of OS GUI experience. Things like search, metadata, clean user inteface or, in general, end-user things work perfecly in the current builds of Mac OS X 10.4.3.

Now, it seems that Apple is trying to push out new Intel based laptops in January. I am definitely reconsidering when it comes to having the best of both worlds.

Categories:  Other | Personal
Thursday, December 15, 2005 2:32:41 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 The Order of Adoption 

Today, when I was driving back home from a client of mine, I managed to squeeze some time off between the necessary phone calls to reason about the state/discrepancies of technology adoption between different businesses.

There's an obvious dicrepancy present.

There are businesses which challenge technology. There are businesses which know about Vista/Indigo/Avalon/Workflow progress. There are businesses which think they know about Vista/Indigo/Avalon/Workflow progress. And then, there are real businesses.

They don't care.

By real I don't mean successful businesses. A business can be successful and not real at the same time. What I mean by real is large, heterogeneous, multi-platform, cross-racial businesses. They just do not care.

A line of thought, which is mostly present in these scenarios is this: What and how do we use technology to drive our business opportunities? And if one thinks about it, they are right in both cases:

  1. Adopting a new technology can help you increase business opportunities. It can also slow you down during the learning cycle. If there are too many learning cycles, you can be slow all the time.
  2. New technology usally costs money. It costs in terms of licences, training and lost working hours trying to make it work. This is counter productive in terms of fulfilling/achieving business opportunities.

The outcome is that real businesses take wise decisions and adopt when the time comes. They do not rush it. That's one of the reasons that makes them successful.

This should not be read as if my opinion is to wait till technology matures. There are rare cases that mandate usage of new technology instantly.

Categories:  Other | Work
Tuesday, December 13, 2005 10:24:33 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Indigo Debugging 

While doing some serious Indigo development I noticed that a process was up and running for a long period of time after any errors in the Indigo runtime occured.

It was dw20.exe. Doctor Watson.

Thank you Doctor, but I only read the brutal stack trace.

So, if you're like me and don't care about sending specific self-induced pre-beta technology error traces to Microsoft, do this:

  1. Open Control Panel/System
  2. Goto Advanced tab
  3. Click Error Reporting button
  4. Disable error reporting
  5. Disable critical error notifications

Indigo develoment is a lot more enjoyable now.

I normally disable this anyway, but this was inside a Virtual Server image, and as it goes, you learn it the hard way.

Categories:  .NET 3.0 - WCF | Other
Thursday, July 21, 2005 1:06:15 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Software patents: CII directive 

I was in Brussels on Wednesday the previous week, spending time at the European Parliament. We had meetings with our 7 MEPs (Member of the European Parliament). I can only agree with the general points Clemens made in his blog entry and with the fact that MEPs have a hard time deciding on this.

We did, however, manage to present our opinions on the CII directive successfully. There is still a strong pressure inside some of the EP groups not to support the directive. And there are still groups which are deciding on whether to only support it with certain amendments.

The problem is that, as it seems, this directive will not be voted by MEPs individually. All groups will decide internally and then go for a group vote. It is therefore of much importance that anybody with access to their MEPs voices his/her opinion. Anybody can do it. Here's the link.

CII should be supported in its current form, without any "force of nature" or "interoperability" amendments. They will make things much worse over time and help paralyzing the patent system in EU.

Our viewpoint on this is available in English on my download site: http://downloads.request-response.com/cii.zip (118KB).

I strongly believe that the majority of opponents seem to think this issue is one of large vs. small companies. It is not. It has nothing to do with an impact on the bureaucracy work too. The CII directive only helps - is a first step toward - harmonizing the patent system throughout 25 member states. And again, it does not allow software patents per se. It makes me quite sad to see that most of the arguments are strongly voiced having only a populistic stance over the CII directive. It is a good thing to have, a good thing to support innovation and a good thing to enforce ones rights over his/her invention.

I have also included the draft version of CII in the above ZIP file.

Categories:  Other | Personal
Thursday, June 30, 2005 10:17:37 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 TechEd 2005 Orlando Podcasts 

For those of you (especially in our land), who didn't manage to get to TechEd 2005 Orlando, there's a two step process to get insight and up-to-date:

  1. Download a Podcast client (see this site to find out how)
  2. Use this endpoint for TechEd 2005 Orlando podcasts

Have fun. I attended, but am still scraping through the content. It's brilliant.

Categories:  Other | Conferences
Friday, June 10, 2005 7:09:28 PM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Apple Goes Intel 

Oh my god.

Have to admit. We own this and this and she loves it.

Steve Jobs (Apple):

“Our goal is to provide our customers with the best personal computers in the world, and looking ahead Intel has the strongest processor roadmap by far. It’s been ten years since our transition to the PowerPC, and we think Intel’s technology will help us create the best personal computers for the next ten years.”

Roz Ho (Microsoft):

“We plan to create future versions of Microsoft Office for the Mac that support both PowerPC and Intel processors. We have a strong relationship with Apple and will work closely with them to continue our long tradition of making great applications for a great platform.”

Glad they agree. Join the teams. Passion and market penetration always resonates.

Categories:  Other | Personal
Tuesday, June 07, 2005 1:12:07 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 TechEd 2005: Orlando 

Categories:  Other
Thursday, March 31, 2005 11:14:11 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Slovenian Developer User Group (SLODUG) Launched 

Yesterday we launched a developer oriented user group in Slovenia. The event was held in Microsoft Slovenia conference room (Ljubljana, BTC).

First three talks were:

We had around 25 attendees, some beer and pizza. As always, everyone is welcome.

Will follow up with specific URLs of SLODUG homepage, when it becomes available.

Update: PPTs are available.

Categories:  Other | Work
Friday, November 05, 2004 10:14:38 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 Google Did It Again 

In one of my previous posts I said it will take three years for Google experience to come to the desktop.

It's here now. The other company I dearly love did it. Experience it, it will change the way we think about fast local searching.

Categories:  Other | Personal
Friday, October 15, 2004 9:09:46 AM (Central Europe Standard Time, UTC+01:00)  #    Comments

 

 What I use Gmail For 

Gmail is wonderful. It gives you around 1GB of storage space for no-spam email. It can give you even more.

How I use it:

  • When I get my mail to my laptop, I do not delete it from the server
  • When I get mail on my main machine, I have it setup so that messages are deleted after a month of residing on the server. Yes, Outlook has this option. This gives me more than enough time to grab t