...All those moments will be lost in time, like tears in rain....

- soliloquy from Blade Runner

Bits and bytes do get lost, awash in the rain of data flow that is Internet. They slip away from us, never to found again... some of them will be captured here, many more will not... like tears in rain...

Monday, December 8, 2014

When Google fails

 10 years ago, I wrote Windows Service, and I do remember I had to use instalutil.exe to install the thing and that was a pain in the neck to install it, figure out what was wrong, deinstall it and go again... I remember having a batch file to do all this.
 Turns out that there is a trick to do it easily - you use windows console app instead of windows service, and check in Main is this Environment.UserInteractive or not. That way you can attach to the process to debug it and iron out all the issues, and still have your windows service when deployed. In other words, have your cake and eat it.
 And why Google failure? You can not  search for this trick until you know it is possible. Many many people use installutil and forums and StackOverflow are full of answers to that, but to find out console app masquerading as service, you have to know about it, then you will find couple of nice blogs where this is explained.
 So back to Stanislaw Lem story - to ask proper question, you have to know most of the answer already.

Order of sections in configuration files matters

 Looks like order of sections in web.config (or app.config for that matter) matters - you can not have appSettings before configuration section, or it ConfigurationManager will not read it.

Tuesday, November 11, 2014

Fiddle, fiddler on the roof

Fiddles are scaled down environment accessible via web, used to testing, demonstration, or just to share snippets. They usually have a window split for code, markup, output... Very handy.

I've used JSFiddle a lot since it allows you to add easily many popular frameworks, like jQuery, KnockoutJS, Prototype, AngularJS and even allow you to specify how you will run your code (onReady, onLoad...).


It has echo API to simulate API calls.

 Then there is Plunker - it's grown up sibling. It has link to GitHub and ability to split code into multiple files. I really liked it, and my only issue is that they succumbed to Web 2.0 fad and named the site by skipping vowels, making me mistype the site name _every_single_time.


 But beside that unfortunate name, it's really useful tool, good for fast prototyping.

And last one I've found is SQL Fiddle:


It has a list of supported databases (mySQL, SQL Server, Oracle and Postgress) that you can target. In one pane, you can create your db schema, in second pane, you can run your queries.

It supports OpenId login and accepts donations, although I couldn't find a link for donating. Looks like site is work in progress still.

Tuesday, October 28, 2014

classList and className

 JavaScript is a language full of surprises.

Every DOM element always had className property, that was nothing but white space separated list of classes. That was not the most convenient so JQuery encapsulated manipulation of that with addClass and removeClass methods.

Now, new browsers are supporting classList API, allowing JavaScript to add and remove classes from the DOM elements easily, without JQuery. This is important for mobile browsers, where everything should be parred down if possible.

So classList is a list of classes, with length property and this list of methods for manipulation:
  • add (class)
  • contains (class)
  • item (index)
  • remove (class)
  • toggle (class)
Looks like certain browsers allows even to pass multiple classes to add, separate by space.

Of course, older IE does not support this, only IE 10 and up.

 This should do for a check:

if('classList' in document.createElement('elem')) {
   document.getElementById('elem').className += " newClass";

Friday, October 24, 2014

Wednesday, July 30, 2014

Good article on how to make aspx page lighter

Searching for something in dbml

 So far, I've found 2 ways to find something in dbml:

 1) through designer generated code, usually happens by using ReSharper

 2)  using properties panel - if you are visual mode, there is a dropdown on the top of the properties panel, which will show you all objects in the dbml diagram.

Friday, July 11, 2014

Entity Framework 4.4

 Old versions of Entity Framework were really more trouble than they were worth.
 Case to the point - if you are using version of EF that does not support foreign keys, you are actually better of not having them defined on the table at all, because then they are treated as any other value in the table.
If they are defined as foreign keys, then you have to go to extra trouble and retrieve them, as they would be recognized as unsupported property and have value of null.

Friday, January 10, 2014

Javascript - Empty space in numeric field

 I run into the issue when isNaN was returning false for empty string.
 Turned out this is by design, because isNan is comparing coerced values - coercing empty string into 0, and of course, not having issue with 0 not being a number.
 To make sure that user has to enter 0, I added this to the check:


Of course, this is not comprehensive solution, Douglas Crockford has more to say on this topic, especially on recognizing the numbers, but it worked for simple validation I was aiming for.