Ask Eric
Once upon a time i tried to write an article about .Net remoting. Shame on me. Eric Lippert knows how to talk about .Net Remoting. Brilliant, brilliant stuff.
(end of comment, kiddo.)
Once upon a time i tried to write an article about .Net remoting. Shame on me. Eric Lippert knows how to talk about .Net Remoting. Brilliant, brilliant stuff.
(end of comment, kiddo.)
.Net Developers throughout the Australian landmass have just received their free MSDN connection welcome packs. This includes a free magazine of your choice (provided your choice is ".net asia", that is) and a letter from the new author of the MSDN Flash newsletter, Caroline Price, presumably written between bouts of hang-gliding, bungee jumping and so on.
There's also a rather rakish identification card (not photographic, god bless) you can use to earn geek-reward-points. Though my favourite thing is the poster of namespaces from the .net framework.
I think that bribing developers is an excellent idea. Future bribery should include a free tablet PC, a free iPod (not very microsoft, i know) and a free visit to Redmond. I respond well to Gadgets, Sweet Food, Caffeine-Products, Beer and Holidays. I also accept t-shirts. Medium.
The MSDN Connection bribery programme is an initiative by Microsoft to build up developer user groups and communities, and has the blessing of ineta.
Another good resource for Australian .Net Developers is Frank Arrigo's blog where he maintains a list of aussie .net bloggers.
While I'm on the Australia thing, the site superior software for windows is geek bliss, largely due to the work of Adam Cogan.
(end of this waffle.)
(There could have been an article here... but the waffle died out. Comments are enabled... go for it.)
On law and order last night they demonstrated the Infinite Scalability Principle of Surveillance Cameras on Television Shows.
They used a computer to zoom in on a photograph taken for a gymnasium identification card, and they found a figure lurking outside the gym! They then zoomed right in on this figure until they had a crystal clear image of the lurker (who did indeed turn out to be the murderer!)
That must be a pretty expensive camera they use for ID's in that gymnasium, what with having near-infinite resolution. Most identification card photographs just take grainy, warped ugly little photos. (Or is that what i really look like?) I bet their membership fees are near infinite too.
(continues... more about tech-mistakes on tv)
This is a common tech-mistake on tv. Surveillance cameras are the most frequent culprits:
CHIEF
--Let's scan through six hundred hours of
surveillance camera footage, taken from thirty
different cameras, to see if we can find anything
to corroborate our witnesses testimony.
(Three seconds go by.)
OFFICER
--Dammit chief we found nothing.
CHIEF
--I have an idea. Why don't we all stand around
talking for a moment, but leave one of the video
tapes still running on one monitor behind us.
(They talk amongst themselves for three seconds.)
OFFICER
--Hey! will you look at that? There's a car in
the background that matches the rough description
we got from the eye witness. Let's zoom in
on the number plate....
(They zoom in, possibly using the help of
the office geek, who is fat, stutters alot
and has poor personal hygiene. The geek may use
some magical 'image enhancement' filter which
interpolates everything imaginable to create
a perfect image.)
Although the car was photographed from a
distance of 300 hundred yards, in a dark
carpark, at midnight, by a grainy
black and white surveillance camera,
we see a remarkably clear image of the
license plate:
555ZTE4WK1 - Washington.
CHIEF
--Let's run that plate!
IN order to search the database, they will invariably need to perform what I call a "Visual Search."
A Visual Search is where every record in the database scrolls over the screen while it is being compared. This is so spectacularly inefficient it could only have been invented by the television and movie industry.
Let's investiage the metrics of 'Visual Search'. I've done a quick simulation using a console application, and to get the sort of scrolling you usually see on these shows, you need to scroll about 40 records a second, no quicker. At a wild guess I'd say there are 300 million vehicles in the United States. On average you'd expect to find a match by scrolling through half of those, about 150 million records.
(Leon loads calc.exe and does a lot of diving by 60, 24, etc.)
That's about three months of scrolling. But very rarely do you see a little caption that says "Three Months Later".
Also, if you consider that you're transmitting every record of a nation-wide database to a client terminal, there's gonna be 'round-tripping' delays like you wouldn't believe.
You've got to expect to see the occasional scene like this:
The chief leaps out of his chair: CHIEF --Holy fricking jesus! The departmental internet bill is six bazillion dollars! (he calls in the fat, ill-kempt stuttering geek) GEEK --It's all these 'Visual Searches', Chief. The script-writer who designed our information retrieval system had no idea about n-tier architecture. CHIEF --Shut up Geek! You're spittin' baloney at me! And what are all these god-damn lawyer bills! (in comes the sleek, slimey-haired lawyer with the thin briefcase) LAWYER --We're being sued by some real police officers because we trivialise their work, and represent them as a bunch of stereotypical fools. The royal grammar society have a few issues with you as well. CHIEF --We'll kick their asses! LAWYER --Sorry Chief. I have to recuse myself, owing to a conflict of inteterst. I've been disbarred for protraying lawyers as sleek, slimey-haired and for having a thin briefcase. Also, my use of the words "recuse", "disbarr" and "conflict of interest" don't actually represent correct legal usage. What's that smell? GEEK --Sorry. Just burped.
And that's all I've got to say about television right now.
It is about time someone told you!
YOU ARE NOT INADEQUATE.
Reading too many blogs and technical books can sometimes lead you into a mindset where you think you are so far technically inferior to these 'great minds of redmond' -- but you probably do an excellent and practical job, just as you are.
so keep happy, kiddo.
secretGeek recommends:Feeling Good, by Dr David Burns

If, like me, you eat your lunch at your desk (and I know you do, cause while you're reading this, i too am reading you) then you'll know that once in a while you've just got to pick up that keyboard, turn it upside down and shake out those crumbs. Shakity, shakity shake shake! Shakity, shakity shake shake! Out comes cheese! Out comes bread! Out comes chocolate! Out comes tuna! This is more fun than updating your timesheet! More fun than deleting old emails! The most fun you can have in your cubicle during daylight hours and with your pants on! Shake that keyboard baby!
(no further details provided)
(I said no further details provided, dimwit... but feel free to leave a comment...)
I've just returned from a trip to the Whitsunday Islands on Australia's Great Barrier Reef. I declined to inform you (my small but devoted audience) that I would be away for a week, in the hope that you wouldn't use the opportunity to break into my house and steal all my stuff.
The Whitsunday islands are fascinating. Amongst other facts, I learnt that the Clown Fish (Amphiprion percula) has now, apparently, been renamed 'the Nemo fish'.

(continues...)
A week without a computer is a fascinating experience. I might recommend it to you. Or alternatively, you can do a google search on 'life without a computer', and get all the facts in a fraction of the time.
I'll confess though, that I continued to dream of software. One particularly vivid dream involved the file explorer of a futuristic operating system. Hard-drives were respresented by islands, shortcuts were bridges, folders were highways streets and alleyways (of smaller and smaller sizes, the further into the file heirarchy you flew) and files themselves were represented by buildings: different types of buildings for different types of files. Navigation was achieved by flying over the panoramic isle of files. Ahhh. Too many cocktails. Too much sun.
Now I have to devise a way to become a billionaire by Monday, so i need never work again. Hopefully I've forgotten all my passwords in the meantime...
I'm disturbed by a change in the way I use windows. I strongly prefer keystrokes to menus.
To run a program I press "[Windows]-R" to bring up the "Run Dialog," then I type the name of the Exe I want, e.g. "WinWord", "DevEnv", "Excel", "Calc", "Notepad", etc.
Is this some malingering malady? A form of Linuxitus? Or a deep-seated DOS depravity?
(end.)
A general language for transforming raw text files from one format (and/or encoding) to another. The input files do not have to be XML documents. The output files do not have to be XML documents (though often they will be).
When you dream of software regularly, it's a bit of a worry. Anyhow, this is an idea I had while mowing the lawn today. I think it could really speed things up interconnecting legacy systems with the XML-aware world. What do you think?

XPLT borrows from XSLT and Regular Expressions (RE), but also provides a more human-readable style of Pattern-Matching, encapsulated within the Pattern element. Patterns are combined with templates and flow control semantics, that allow for very flexible document transformations.
XPL Transformers could be written on any platform, for any technology. Collections of specific and re-usable XPL documents for converting between any two text-formats could be shared and distributed.
Here are some typical scenarios for which XPLT is useful.
These problems can be solved by writing custom parsers, or, at best, through clever use of Regular Expressions.
Maintenance of such code can prove remarkably expensive. Why?
The main features of the language are:
From XSLT it borrows elements used for these constructs:
In XSLT, the 'Match' and 'Select' attributes reference an Xpath expression. In XPLT the equivalent attributes reference a named Pattern element.
A pattern element serves a purpose analogous with a Regular Expression (RE). It can, infact, be simply a RE, for example:
<pattern name="email" RE:match="(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})" />
[Thanks to Darren Neimke for the RE example, taken from RegExLib.]
Any such pattern can also be expanded using the far more verbose pattern semantics of XPLT.
<pattern name="email" >
<all> <-- inside an 'all' element,
all rules must be applied --/>
<chargroup occurs=1>
<char class='word'/>
</chargroup >
<chargroup occursatleast=0>
<any> <-- inside an 'any' element,
only 1 rule must be applied --/>
<char class='word'/>
<char value='-' />
<char value='.' />
<char value='_' />
</any>
</chargroup >
<chargroup occurs=1>
<char class='word'/>
</chargroup >
<chargroup occurs=1>
<char value='@'/>
</chargroup >
<chargroup occurs=1>
<char class='word'/>
</chargroup >
<chargroup occursatleast=0>
<any>
<char class='word'/>
<char value='-' />
<char value='.' />
<char value='_' />
</any>
</chargroup >
<chargroup occurs=1>
<char class='word'/>
</chargroup >
<chargroup occurs=1>
<char value='.'/>
</chargroup >
<chargroup occursatleast=2 occursatmost=3>
<char class='word'/>
</chargroup >
</all>
</pattern>
Okay - the names Char, Chargroup etc, are pretty ugly. But I've just invented them now. The structure of those pieces could be altered and improved, I am sure. Just food for thought. Rather than
<chargroup occurs=1> <char class='word'/> </chargroup >
<char class='word' length='1'/>
And Rather than
<chargroup occursatleast=0> <any> <char class='A'/> <char value='B' /> <char value='C' /> <char value='D' /> </any> </chargroup >
You could just say:
<chargroup occursatleast=0> <any>ABCD</any> </chargroup >
I guess you would also have 'greedy' and/or 'non-greedy' attributes.
Here's the original picture I came up with -- the complete loop converting proprietary text into XML by using XPLT. Then converting the XML back into properietary text, by way of XSLT.
I'm damn tired now -- so i'll stop there. Cheers!
XPL is not any of the following:
Here's a problem you're likely to get when setting up a new dev' box.
Open a command window and run 'aspnet_regiis' with the -i option
aspnet_regiis -i
A quick way to tell if ASP.net is running, (and what version) is to deliberately get a 404 error on a ".aspx" extension. For example, navigate to:
http://localhost/AnyMadeUpName_MXKAXMAK.aspx
If asp.net is running:
If IIS is running:
If IIS is not running (at this site)
A related problem you may find if client-side scripts are misbehaving the whole time... you need to rebuild the client scripts. Here's how:
aspnet_regiis -c
Related resource: The VS7 Debugger doesn't work. What can I do?
Why suggest add-ins rather than write them? because as Ratbert says: "I'm more of an ideas rat."
You're free to implement these suggestions if you wish. If you end up winning Roy's competition the prizes are all yours, though I wouldn't mind Mike Gunderloy's book (Coder to Developer).
The suggestions fall into two categories:
There's about thirty suggestions. I make no guarantee that these things have not already been implemented.
(continues...)[* I put quote marks around the word Productivity because, as you'll see, it's a fair stretch of the imagination to think that any of them would actually increase your productivity.]
Most of these are fairly obvious and I'd guess that most have been done before. I'm not gonna provide links though.
The more I think about these add-ins, the more I realise 'less is more.'
While I love so many of the enhancements in Visual Studio .Net to date, I think that
most of all it could benefit with being a lot more performant.
This might be achieved only by moving to a Longhorn model where GUI rendering is handled via the graphics card rather than bitmap rendering in regular memory.
Maybe the best 'add-in' would be: