Archive Of Blog Entries (Jan to Oct, 2006)
secretGeek .:dotnuts about dotnet:.
home .: about .: sign up .: sitemap .: secretGeek RSS

Archive of Blog Entries

blog entries from Jan to Oct, 2006...

Wed, 18 Oct 2006 23:15:22 GMT

Switching off the OS

I was reading about these people switching to mac, and switching back from Mac and everything... and you know, i just thought: what a bunch of losers. So last season.

I finally made the switch away from operating systems. It was like a light switching off in my head.

I uninstalled all my operating system stuff. All i use now is a browser and a usb key.

I use google docs, google spreadsheets, google calendar, google mail. And for searching I use msn. i mean google.

Now that all my info is online I don't need a hard-drive either. Virtual memory goes onto the usb key. I took out the hard drive and just gave it to a kid who was walking down my street. What a liberating moment.

Drives for my remaining hardware are bundled into a self contained file that's called by a bootstrap from the BIOS. I used a bunch of stuff from sysinternals to extract the driver code away from the full windows drivers, like a surgeon removing healthy tissue from a tumour, and bundled them into a self-booting chunk of code on the afore mentioned usb key. Updates are gonna be tricky. I'll work aroud that when I get to it.

The only thing i don't have is a decent ide. Maybe lisp can help there.

Read On...


Wed, 18 Oct 2006 22:03:19 GMT

Quick Tip: Show Shortcut Keys in Visual Studio

Customize Toolbars, Options, Show shortcut keys in ScreenTips

Right click in the tool bar area --> choose customize, you get the 'Customize' dialog.

On the 'Options' tab there's a little check box that says "Show shortcut keys in ScreenTips".

Like so:

Customize Toolbars, Options, Show shortcut keys in ScreenTips

This is off by default. But you're like me. At least I think you are. And when you spend much of your life inside an application, you want to learn a few good short cut keys. So check that box!

Of course, to really take it to the next level, use KeyTraino ;-).

Read On...


Wed, 18 Oct 2006 05:44:14 GMT

Code Quiz: That Empty Feeling

Which would you use to test if a string is blank? And why?

1. x.Equals(string.Empty)

2. x = ""

3. x.Length = 0

4. x = string.Empty

5. string.Empty.Equals(x)

Read On...


Wed, 18 Oct 2006 04:39:29 GMT

A Kilo of Days Ground

So The Daily Grind is just about set to celebrate it's 1000th edition!

Mike Gunderloy is an industry legend. If you want to feel that you're keeping up with the vast amount of new stuff that the programming world keeps throwing at you, all you need to do is visit the Daily Grind, daily. Here's looking forward to another 1000! You don't need to subscribe to any blogs. Check the Daily Grind every day, and you're up to date. Anything you subscribe to beyond that is purely for entertainment.

Read On...


Tue, 17 Oct 2006 21:50:22 GMT

ShinyPower Now Opensource

Need help getting started with Powershell? Or need help working out how to automate powershell from .Net?

I wrote a quick and dirty tool a few months ago, called 'ShinyPower'. I've now made it open source, and available from CodePlex -- source code and all.

Read On...


Fri, 13 Oct 2006 11:23:16 GMT

Moveable Modal and a different kind of 'Modal' form

When one form in an application is modal: you can't *move* the underlying forms around.

This is a shame -- because often you need to see something in an underlying form, to help you decide what to enter into the current form.

It's okay that you can't interact with the client area of the underlying forms... but it would be good if you could move the underlying forms around.

It's a tricky problem though: it would be hard to let you move one of those non-modal forms around without giving them focus...

The top-most modal form would need to be 'always on top' for the application, so that while moving underlying forms around, you can't "lose" the form you are supposed to be working on. Anyway. That is my feature request for today.

And here's another idea that i had about modal forms...

Read On...


Thu, 12 Oct 2006 21:34:57 GMT

Unlikely to fill Gmail account before I die

i've just done some quick maths.

In two years of using gmail, i've ended up with 212 mb.

If my email usage remains constant (just say) and I live another fifty years, i can expect to have about 5.512 gigs of data in my gmail account when i die, fat and happy, aged sixty-five ;-).

Gmail have been steadily growing the size of my gmail account. It started at 1 gig capacity, soon doubled to 2 gig, and now it's crept up to 2.773 gig.

I don't have to do the math to know that within 50 years it will have doubled again.

So at my current email consumption rate, i won't run out before death sets in.

Read On...


Fri, 06 Oct 2006 01:47:46 GMT

Goodbye DLL Hell, hello Security Hell.

Too busy to blog, just wanted to share that phrase.

(This is in belated response to news that the only development environment fully supported on Vista will be VB 6.

Wow.

Read On...


Sat, 30 Sep 2006 09:31:00 GMT

Is 'Agile' a religion? (or merely a cult)

The ever-entertaining Steve Yegge (see also) put out an instantly notorious blog post last week, Good Agile, Bad Agile in which he says that Agile is a new age religion. My attention span waned before I completed the article, but it got me thinking: is it really a religion? Or is it merely a cult?

Back in high school i was taught that there are six dimensions to a religion, to wit:

  1. doctrinal
  2. ritualistic
  3. experiential
  4. ethical
  5. mythical
  6. social

And if you lack any of those aspects, you're a cult, at best.

So how does Agile stack up? Cult or Religion?

(continues...)

Read On...


Wed, 27 Sep 2006 00:20:10 GMT

Annotating Your Code with Simple Tests

Simple Tests, in XML Comments

Another idea: what if you annotated your functions with notes that say exactly what the most interesting edge cases are for that function.

Basically at the top of each method you could specify a few test cases. And only where you really need them. It's kind of a minimalists approach to test driven development.

Here's an example function -- leap year. With a few deliberate bugs in it.

continues...

Read On...


Tue, 26 Sep 2006 23:15:53 GMT

Thought Game: Duplicate Driven Programming

who wrote this piece of junk?

Here's an idea i had once. An idea too crazy to implement, but still an idea that's worth the time it takes to think about it.

Imagine a new programming paradigm: Duplicate Driven Programming.

continues...

Read On...


Mon, 25 Sep 2006 09:38:11 GMT

Realtime CSS Editor -- with thanks to SquareFree.

Today i've seen a revival in popularity of the SquareFree Html Editor, which is a nifty instant way to craft some html.

Some time ago I built a CSS Editor using the code from it, but never told anyone about it. Well, why not share, i guess. It's located here:

> > Realtime CSS Editor< <

It's inspired by Nick Bradbury's excellent Top Style (lite)

Personally I now use the 'developer toolbar' plug in for mozilla. But top style lite was a weapon of choice for a few years there.

Read On...


Sun, 24 Sep 2006 23:03:43 GMT

The Truth About Lisp

In which the truth about lisp is revealed, and some alternatives are enumerated.

Continuation here.

Read On...


Thu, 21 Sep 2006 01:56:32 GMT

Transparency In Vista

transparency in vista

Have you seen the great transparency feature in vista? It's excellent -- it even works in notepad, check it out...

Read On...


Fri, 15 Sep 2006 02:12:36 GMT

How to be a programmer


intellisense
||
\/
code >>> compile >>>> run >>> success ;-)
/\ || ||
^^ \/ \/
^^ errors errors
^^ \\ //
^^ \\ //
^^ google
^^ ||
\\ \/
\<<<<<<< cut N paste

Read On...


Thu, 14 Sep 2006 23:13:33 GMT

Time for a rewrite.

Sorry I haven't posted in the last few hours. I've been rewriting all my code in Wasabi on Wails.

(You don't follow? Go here, then here, then here then here then here then... get back to work.)

Read On...


Thu, 14 Sep 2006 02:26:57 GMT

11 Tools for Database Versioning

If you're developing code today, it's probably 'controlled' using a version control product of some sort. (We use Vault here, and in the past we used V S S)

That's great, your code is covered. But what about your stored procedures, and your database schema? Many developers (I suggest 'most') have no form of version control on their stored procedures or their table structures etc.

So here's some articles and some tools, to get you thinking about how you can implement change control over this other, crucial, piece of your work.

(continues....)

Read On...


Wed, 13 Sep 2006 01:16:35 GMT

Stop Rolling Your Own CSV Parser!

Would you write your own XML Parser? Only if you're f***ing crazy.

Yet developers constantly write their own "little" csv parsers.

How does this madness occur?

Step 1 -- Ignorance

"Oh this will be easy, I'll just read the file one line at a time, calling String.Split(',') to break each line into an array.

"Then I'll be able to refer to each item by number."

(You're already headed for stormy water... anything you do from now on will only drive you into the rocks harder and faster...)

continues...

Read On...


Sun, 10 Sep 2006 11:49:39 GMT

TimeSnapper 2 Goes Live!

timesnapper 2.0 released

After much work -- and almost a year since we entered the Larkware developer competition, we've reached our next major milestone with TimeSnapper.

TimeSnapper 2.0, the 'Professional Edition' is now available (you can go to TimeSnapper.com, or download directly from here)

The good news is that there's a bunch of new features. The not-so-good news is that the Professional version has a price tag (you do get thirty days to try it out for free). But then, the other good news is that the classic version is still free.

(continues, with details...)

Read On...


Sat, 09 Sep 2006 05:51:16 GMT

Australia in a state of mourning

I don't like to talk about sad things on an otherwise upbeat blog, but Australia has lost two of its favourite sons in the last week.

As you no doubt know, Steve Irwin, 'the Crocodile Hunter' was killed by a stingray barb. And yesterday, legendary racing car driver Peter Brock, died in a car accident.

Peter Brock is probably not as well known outside Australia as Steve, but within Australia he is a much loved hero, having won our biggest car race (the bathurst 1000) a record nine times.

I think there's some consolation that in each case the men died quickly, doing what they love. It would be akin to Scott Hanselman getting zapped by a lightning bolt while installing a new wireless hub on his roof.

I've tried hard to come up with a cheerful joke revolving around the death of these two heroes, on the proviso that it is neither degrading nor exploitive. Here's the best I could do (and of course this is based on an old old joke of my father's):

Read On...


Fri, 08 Sep 2006 07:49:49 GMT

The absolute most fun activity in the world

a plane

(no, it's not what you think.)

When I was but a child, I imagined that the coolest thing in the world would be Flying.

I wanted to be a bird, or, if necessary, a pilot. As things worked out, I never did sprout wings, nor did I learn to fly a plane.

Cut forward to now, I've ended up as a computer programmer. I guess I'll never know just how much fun I'm missing out on.

Luckily, I have a friend who is both a commercial airline pilot and a programmer. (He writes airline safety systems)

He became interested in programming initially for practical reasons; he needed to track information efficiently. But over time, he's really gotten into it. He writes excellent applications.

Here's the thing: he told me recently that programming is more fun than flying a plane.

;-) So there you go. No regrets. Programming is the absolute most fun activity in the world.

Read On...


Thu, 07 Sep 2006 22:32:04 GMT

PowerTools for Powershell

I've collected a small list of tools for powershell.

Powershell Development Environments

Helper Applications

Script Repositories

Other Tools

Community Extensions

Visual Studio Add-Ins for Powershell

I can't find anything else in this category!! (Quote from Alan Stevens's blog: "I went to talk to members of the Visual Studio team about the possiblity of a PowerShell add-in for VS. They've never heard of PowerShell! ") Anyone have ideas for a useful powershell related VS add-in/macro?

Read On...


Tue, 05 Sep 2006 21:34:38 GMT

Why Geeks are Freaks

We are different to other people. So very different.

And why is this? What is it that makes us different? And why is this dangerous?

Read On...


Mon, 04 Sep 2006 22:18:23 GMT

Microformats: Another 3 min guide i won't be writing

Des Traynor has written a great little introduction to microformats and hCard. If you're reaching the "Curious Tipping Point" with microformats yet, then read what Des has to say.

The legendary Phil Haack wrote a slightly longer Developer's Introduction to Microformats a while back.

Read On...


Thu, 31 Aug 2006 04:44:00 GMT

Boolean Operators Missing From Cell Expressions In Excel?

(how's that for a geeky title)

Okay, the simple excel function i wanted to teach someone to write:

How would you write that as a cell function?

Read On...


Wed, 30 Aug 2006 04:56:42 GMT

Gripping Reading, All The Way Through!

Your system throws up an error message. It's tempting to read the first few words and jump to a conclusion. 'Oh I know what that is...' But you really have to read the entire error message. Often the best bit isn't until the very end.

Error messages are not like those predictable hollywood films that you can walk out of before the end, and still know exactly how it finished up. "Oh yeh, they defused the bomb, he got the girl and the dog learnt a new trick."

Here's two messages I had yesterday:

Read On...


Tue, 29 Aug 2006 20:49:24 GMT

Sql Down Under Code Camp

If you are going to be in Australia in October (2006), between Saturday the 7th and Sunday the 8th, you ought to attend the Sql Down Under Code Camp.

The main organiser Greg Low is simply a legend. We (at advantech) ask Greg for help whenever we hit a problem that is well over our heads. One of the guest speakers, Itzik Ben Gan, is a right genius. We use tricks he showed us (in a previous talk) for a lot of our more advanced sql solutions. We use those tricks every day. Other speakers like Geoff Orr and Adam Cogan are well known experts.

The camp is in Wagga Wagga, which is centrally located (read: 'the middle of nowhere') and it is free!

Read On...


Sun, 27 Aug 2006 11:27:08 GMT

F# -- the 3 minute guide!

By popular demand, we're going to spend three minutes learning as much as we can about F#.

So what is F#?

F# is "a mixed functional/imperative/object-oriented programming language"

Sorry -- that description's meaningless to all but a handful of people. What I want to know is:

Is F# really "Fortran .Net?"

No! An earlier name for F# was: "Caml.Net" because this is essentially a ".Net" implementation of "Caml"

That doesn't help, unless you know what Caml is...

Caml is a popular French variation on the ML Programming language, where ML means 'meta-language'.

Then I take it F# has nothing to do with Sharepoint's Caml language?

Nothing whatsoever. It's unfortunate that the sharepoint team used that name. Enough said.

You know what? Let's just get our hands on the code...

(Continues)

Read On...


Thu, 24 Aug 2006 05:14:07 GMT

syntactic sweeteners, part ][

(A small update to yesterdays thoughts on syntactic sugar)

First here's a chunk of Linq, that i think might be fairly valid (though i haven't (a) compiled it or (b) ever actually compiled any linq code... so whadda i know??)

(continues....)

Read On...


Thu, 24 Aug 2006 02:44:22 GMT

BabySteps In WPF And XAML

One thing I'm not gonna write is a "Getting Started with Windows Presentation Framework" article.

If you want to get started with wpf/xaml/xbap etc, just go to LearnWPF.com and see what Joseph Cooney has to say. That site is a fantastic starting point.

Read On...


Wed, 23 Aug 2006 08:16:03 GMT

sweet syntactic sugar

consider the following chunk of code:

List<Person> people = db.GetAllPeople();
foreach (Person p in people){
  console.writeLine(p.Name);
}

Day dreaming during a tech.ed lecture this morning, I thought:

Ah, but what if the syntax waz reversed?

What if the following code compiled to the same thing under the hood....

List<Person> people = db.GetAllPeople();
in (people visit Person p) {
  console.writeLine(p.Name);
}

Okay... it mightn't change our lives... but it's a wacky thought none the less. Don't reject it too quickly. Drink it in. Suck it up. Chew on it. Swill it around before you spit it out.

When you type the words "in (people visit..." the intellisense would have a chance to think:

people hey?? What type of objects are collected inside that? Person is...

You'd get a nice little intelliswiftness in there i thinks.

Nextly, whatif, instead of calling a Object.Method(), we allowed the syntax: Method Object, for example, instead of:

console.writeLine(p.Name);

Imagine you were allowed to say:

WriteLine Console (p.Name);

That's right!

Method First, Object Aft!

When you write the method name "Writeline" the intellisense then thinks to itself...

Writeline hey?? What objects do i have with that method? What static methods do i have with a method like that?

This is a different kind of intellismarts you're calling on -- it's about putting verbs before nouns, like that steveyegge article joel spolsky pointed to recently (you know the one). tink about it.

Read On...


Tue, 22 Aug 2006 02:14:33 GMT

Momentum as a substitute for Quality

Y'all know the famous maxim from Fred Brookes: "Adding manpower to a late software project makes it later." (see addages named after people at wikipedia)

Yet big, late projects constantly get more people added to them.

Just today we heard about a large local project, to which far too many more resources have just been added. Why? we asked, why?

There's a rarely mentioned side effect of adding more people to a project: momentum.

Yes: Adding more people will make a project cost more per day.

Yes: It will slow down the daily progress, making it take longer.

And Yes it will lower the quality of the output, as personal responsibility becomes diluted.

But:

Adding more people may decrease the velocity, but it increases the mass enough to give a larger overall momentum.

And a larger overall momentum makes it harder to stop.

The people who make the decision to add more people are desperate to keep the project moving. In their mind, the only way to fail is to have the project canned by higher powers.

Budget overruns are not failure. Time overruns are not failure. The only true failure is if the entire project is stopped.

An object with huge momentum is harder to stop. Throw in consultants. Throw in hardware. Throw the bike on! We're gonna ram our way through! Unstoppable!

The problem with huge momentum is that when it does stop it makes a hell of a mess.

To stretch the metaphor: A fast moving train can still be derailed.

To mix a metaphor: assigning blame becomes a fruitless task. Blame is spread over a larger area.

Once failure is big enough, it becomes a success on other levels. Think titanic. Think war. Think 'time to polish your resume'

Read On...


Mon, 21 Aug 2006 00:07:46 GMT

Tech.Ed Sydney

this is me

I'll be at Tech.Ed Sydney this week. If you want to catch up, I can be contacted at leonbambrick at gmail etc.

To better facilitate your facial recognition algorithms, I've published a picture of myself. If you see me come up and say "hi".

I'll be giving a cabana session on "how to skip lectures by attending cabana sessions". Details will be announced privately after the event.

Read On...


Sun, 20 Aug 2006 09:25:59 GMT

Concurrent Tautologys (all happening together at once)

I step away from the inkernet for five minutes and of course I miss six million little things.

  • L Sharp .NET is "a powerful Lisp-like scripting language for .NET."
  • Chickenfoot is "a Firefox extension that puts a programming environment in the browser's sidebar ... a superset of Javascript that includes special functions specific to web tasks." (meanwhile i still haven't gotten dirty with grease monkey...)
  • hAxe is an OO language that can compile to js, flash or server-side byte code on apache webservers. It's strictly typed, but uses type-inference (...not unlike Ruby, F#, Powershell... and C# 3.0 ;-) ) .
  • Livewriter is a microsoft tool for bloggin. Looks buggy for now but bound to be popular later.
  • Marcos Meli seems to have done a nice logo for the larkware 1000 competition.
  • hanselman gets into dynamic languages
  • Eric Sink thinks you might as well get into multi-core programming.

  • Read On...


    Wed, 09 Aug 2006 03:30:28 GMT

    What next for the 3 minute guides??

    Lately I've written a bunch of 'introductions' to newish technologies.

    Watir, JSON, Powershell (Part 1, Part 2)-- all of them completely new to me.

    If you've been interested in this series to date, can you make a suggestion for what technology to tackle next?

    Some ideas currently:

    • F# -- microsoft's functional programming language
    • Ruby On Rails -- an absolute beginners guide, targeted at Microsoft developers
    • WPF (formerly avalon)
    • WCF (formerly indigo)

    What is there that scares you? Come on, 'fess up.

    (I bet it scares me too. So let me go off and research it for the both of us ;-)

    Or, what technology has you intrigued?

    Read On...


    Fri, 04 Aug 2006 04:22:06 GMT

    Joel asked: Can your language do this?

    And he gave this example to illustrate his point:

    function Cook( i1, i2, f )
    {
        alert("get the " + i1);
        f(i1);
        f(i2);
    }

    Cook( "lobster",
        "water",
        function(x) { alert("put " + x + " in pot"); } );
    Cook( "chicken",
        "coconut",
        function(x) { alert("boom boom the " + x); } );

    Which outputs something like:

    get the lobster
    put lobster in pot
    put water in pot

    get the chicken
    boom boom chicken
    boom boom coconut.

    Simple, yeh?

    Now how would you go about doing this in C#?

    Read On...


    Tue, 01 Aug 2006 01:54:36 GMT

    Babysteps in WATIR

    That nutty kid Scott Hanselman is always talking about technologies I don't understand.

    In the last year or so he's mentioned 'Watir' (pronounced 'Water') a bunch of times, and I've mostly ignored it.

    His most recent mention of Watir gave some fairly easy steps for getting started with it. So I did.

    This post is shamelessly inspired by his post. I'm going to walk quickly, but thoroughly over the first few steps of using Watir.

    So here's the 3 minute guide to watir (includes a cheatsheet).

    [yeh, it continues...]

    Read On...


    Sun, 23 Jul 2006 05:39:08 GMT

    Understanding JSON: the 3 minute lesson

    JSON and the GLDN FLECE

    If you are anything like me (and I fear that you are) then this is your experience with JSON so far:

    1. Two months ago you'd never heard of JSON
    2. One month ago you'd heard the term but paid no attention
    3. One week ago you'd heard it mentioned a few times and started to think, right... some more crap to learn
    4. Today you woke up with an alarm bell ringing in the back of your mind that said WHAT THE BLOODY HELL IS THIS JSON THING AND WHY IS IT EVERYWHERE ALL OF A BLOODY SUDDEN!

    Well I had a slow bus ride home tonight (friday is always slow) and i took a pile of "JSON" tutorials with me. So now I can gently lead you through some BabySteps in JSON.

    here we go...

    Read On...


    Fri, 21 Jul 2006 05:53:36 GMT

    Why You Need a Domestic Robot

    You need a robot for picking things up and putting them down.

    When purchasing an item from a grocery store, for example, you pick it up and put it down seven times (code sample below).

    This is ridiculous!

    [continues with code examples]

    Read On...


    Fri, 21 Jul 2006 04:34:03 GMT

    3 Examples from the Future of CSS

    More html news from Gaks[1]...

    Following on from the W3C announcement of a 'Tags' attribute, I'll show you how this tags information can be utilized using CSS 2.0, today, and CSS 3.1, in the future.

    First, a simple example, using just plain old CSS 2.0 attribute selectors, available today in firefox.

    Consider the following chunk of style information:

    <STYLE type="text/css">
    p[tags] { background : lightgreen }
    </STYLE>

    It basically says "All p elements that have a Tags attribute should be shown in green." (You can use this today in firefox.)

    [continues with code examples]

    Read On...


    Thu, 20 Jul 2006 02:07:06 GMT

    W3C to Support 'Web 2.0' concept of 'tags'

    Strange news from my strange friend Gaks[1].

    He's forwarded me a fragment of the w3c's proposed new attribute: 'tags' which is defined for almost every html element.

    A 'tags' attribute acts as a flexible meta-data repository, and here's how you use it:

    Say you want to link to a document, and you want to 'tag' that document as being 'funny', 'rude', 'useful' and pertaining to a few key topics such as 'html', 'xml' and 'css' (and why shouldn't it?) then your anchor element could include a 'tags' attribute like this:

    <a href='http://secretgeek.net/gaxml.asp' tags='funny rude useful html xml css'>What does XML look like on other planets?</a>

    Gaks tells me that this is particularly useful when used in conjunction with the whatg's Web Forms 3.0 specification of a tagCloud control. I have yet to find out how one of those works.

    Gaks further says that the best new attribute in html is 'time', defined for anchor elements, which lets you specify not just where a link points, but when. Relative-time values can be used for fetching tomorrow's newspaper headlines today, and so on, which causes hell for rss aggregators etc.

    Read On...


    Wed, 19 Jul 2006 02:53:19 GMT

    G-MAIL is dead!

    gmail is dead... google mail emerges

    it seems that the marketing gods at google have spoken. Gmail is no longer 'Gmail'

    The logo in the top left now says 'Google Mail' instead.

    I'm sure there's a lesson in there somewhere, about marketing and brand-identification and other stuff. But I just don't think it looks as nice as the gmail logo.

    Read On...


    Mon, 17 Jul 2006 01:04:29 GMT

    Web 2.0: Something's Missing

    To some (small) extent, you can think of web 2.0 as the sudden realization that:

    'hey! with Ajax we can build the entire Office suite online!'

    There's lots of contenders to replace and extend many apps/features of the Office Suite:

    • Word -- writely and a hundred others...
    • Outlook -- gmail and a hundred others...
    • Excel -- numsum and a hundred others...
    • Calendars -- kiko and a million others...
    • Powerpoint -- s5 and a few others...
    • IM -- meebo and a few others...
    • One-note -- webnote and millions more...
    • even Visio! -- gliffy and probably some others...

    But there's one glaring ommission. One of the most influential parts of Office seems to have evaded web 2.0 completely. (and no, I don't mean clippy)

    (continues...)

    Read On...


    Thu, 13 Jul 2006 11:10:07 GMT

    Babysteps in PowerShell part deux: Variables! Real Proper Variables!

    Alright, I've been tinkering with PowerShell for a few evenings now, and the latest thing I've started to unravel is how variables work.

    Variables are prefixed with a dollar sign. [This is probably an idea they got from the world's simplest code generator ;-) ].

    And they seems to use implicit typing [aka 'Duck Typing']

    Now watch as we get the basics sorted out, and prepare to move on to trickier things...

    (continues...)

    Read On...


    Wed, 12 Jul 2006 21:56:05 GMT

    syntax, lang = 'sweet', 'ruby'

    check this syntactical sugar from ruby:

    @title, @mood, @fulltext = title, mood, fulltext

    (Example from _why's amazing online Ruby tutorial: 'Try Ruby in your browser')

    Love it!

    any chance that 'multiple assignments' can be added to C#? How about VB.Net.Next, hey paul?

    Here's an explanation of the above syntax, taken from the Ruby spec:

    " Multiple assignment form performs multiple assignment from expressions or an array. Each left hand side expression must be assignable. If single right hand side expression given, the value of the expression converted into an array, then each element in array assigned one by one to the left hand side expressions. If number of elements in the array is greater than left hand sides, they are just ignored. If left hand sides are longer than the array, nil will be added to the locations."

    Read On...


    Tue, 11 Jul 2006 23:32:27 GMT

    An Abolute Beginner's Babysteps In PowerShell...

    In which i demonstrate that any old DOS hacker can download PowerShell (aka Monad) and teach it to themself, without any prior training or special knowledge, using any old XP machine.

    What you need

    1. Windows .Net framework version 2.0
    2. Powershell (2.2 MB download... that's nothing!! Do it! Do it now!)
    3. [Optional: Powershell 'getting started' documentation (i haven't looked at this... that would be cheating)]

    Okay -- so kick off the powershell (via the icon in your start menu, or by running 'powershell.exe' [located in C:\Program Files\Windows PowerShell\v1.0 for me.])

    You'll be presented with a console, and a prompt.

    (continues...)

    Read On...


    Mon, 10 Jul 2006 02:05:46 GMT

    ShinyPower!

    ShinyPower!

    ShinyPower is a little C# app i wrote to automate browsing PowerShell's help files.

    Requires PowerShell RC1 and the .Net Framework version 2.0

    It's very rough, and is just a proof of concept really.

    download ShinyPower!  Download ShinyPower (and then unzip) from here.

    Q: Why 'Shiny?' A: Firefly.

    Q: Any other C# tools/samples that automate Powershell?

    A:This Turtle Logo application [called 'MSH Logo'] is wikid. Also, scott hanselman posted up a snippet recently.

    The first step in automating powershell is to add a reference to System.Management.Automation.dll, which (for me) was located in:

    C:\Program Files\Windows PowerShell\v1.0\

    Read On...


    Fri, 07 Jul 2006 00:46:54 GMT

    Cascading File Types

    A different kind of Microformat

    Say you've just created an application, and it uses a new type of file. This new type of file will be identified by its very own file extension, associated with the new app.

    For example, you might use a ".snapper" file extension, even though the file itself is just "xml".

    The ".snapper" filename is not very helpful to a user, as it hides the fact that this is an xml file. The only way for a person to work out that this is an xml file, would be to look inside.

    Conversely, a ".xml" file extension would be unhelpful to the operating system, as it hides the fact that this is a snapper file. Again, the only way to work out that this is a snapper file, would be to look inside, and find the schema that this document matches (if any) (knowing me, probably none... sorry).

    And this is a common scenario, particularly with variations of xml files.

    So i'm suggesting a new micro-format, and this micro-format has nothing to do with the current microformat buzz on the internet. This is to do with multiple file extensions, set theory, cascading inheritance, and all sorts of tricky stuff. Yet it's very simple.

    You can pick it up in under a minute.

    (continues...)

    Read On...


    Thu, 06 Jul 2006 04:36:27 GMT

    XML isn't a mark-up language.

    There. I've said it. XML isn't a mark-up language. I've said it twice. I must mean it. I'd better explain myself, quick.

    This thought has been brewing inside my brain for too long now.

    XML has always been called a mark-up language, and it's derived from SGML, which is also referred to as a mark up language.

    And maybe if enough people speak an untruth often enough, it becomes a sort of quasi-truth. A pseudo factoid, maybe.

    My point is... [continues... long]

    Read On...


    Thu, 06 Jul 2006 01:01:14 GMT

    Dragging and Dropping are not a good idea.

    Have you ever dragged a folder from one place to another, when you didn't mean to?

    Have you ever accidentally dropped a file into the wrong folder?

    If so, join the Society For People Who Have Stuffed Up While Dragging And Dropping.

    At the SFPWHSUWDAD, we will give you all the support you need.

    To join us, just write your name on the back of an envelope, and drop it in a post box near you.

    (Do try to be very careful not to drop it in a rubbish bin adjacent to a post box though. This has been happening to a lot of our members recently, and we are not sure why).

    (Also, if you drop in to see us, be careful not to knock on the door next to ours. That's the offices of "The Society For People Who Get Angry At Anyone Who Knocks On Their Door", and sometimes they can be downright grouchy.)

    Read On...


    Wed, 05 Jul 2006 02:14:05 GMT

    You Learn Something (Scary) Every Day

    Well it turns out you can actually use 'goto' statements in C# !!

        private void button1_Click(object sender, System.EventArgs e)

        {

            goto done;

            MessageBox.Show("Bet this doesn't get shown!");

            done: return;

        }

    Conversation overheard in the next cubicle:

    I didn't realise that VB.net still has 'goto' statements. Scary.

    Want to know something even scarier?

    (pause for a beat.)

    C# has a goto statement too.

    Really!?

    Yeh, but no one ever uses it.

    Why not?

    Cause you'd be shot. That's why.

    Read On...


    Wed, 05 Jul 2006 01:24:34 GMT

    DotCom versus Web 2.0

    DotCom:

    Whoever builds the first Online Pet Food Store targeted not at people, but Dogs, will OWN the market Forever!

    Let's assign this thought a picture:

    dotCom

    Web 2.0:

    Whoever builds the first Ajaxian Social Application targeted not at people, but Dogs, will be thought-leader in that knowledge domain Forever!

    The picture for Web 2.0 would be:

    web 2.0

    Read On...


    Sun, 02 Jul 2006 22:05:21 GMT

    How To Read "Functional Programming For The Rest of Us" For The Rest of Us

    The article "Functional Programming For The Rest of Us" is a great article, but it scares people off because it is long and has a very very slow start.

    But it can be read quickly, if you follow these instructions.

    First: Learn this little definition:

    Got it? Functions in, functions out. Rather than your typical values in, values out.

    Now -- when you go to read Functional Programming For The Rest of Us, don't start at the beginning. Here's a link that takes you to the right place to start, a few pages in:

    Start here!

    This way you'll be starting at the subheading that looks like this:

    Functional Programming (subheading)

    The style settles down from there, and you won't need to read about Plato taking a walk in the park. Unless you want to, of course ;-)

    Read On...


    Sat, 01 Jul 2006 07:25:41 GMT

    4 Lazy Ways To Stop Yourself Being Lazy

    Here are four tricks I use to try and encourage myself to write the correct code at the right time.

    1. Use the Compiler to catch work that isn't done yet.
      • Before writing a method, write the code that calls that method.
      • That way, when I try to compile, errors will be reported for any methods that aren't yet written.
    2. Write a 'TODO:' comment.
      • That way I can still compile but can track down the items that aren't done yet.
    3. Write a Unit Test that catches each problem as it is foreseen.
      • That way while my code might compile, nUnit will tell me that the full story is a little more complex.
    4. Use Debug.Assert statements to hard-code your assumptions. Helps you find when your assumptions are wrong.

    You can bounce from any one of these methods to any other. The order can go something like this:

    1. First write 'pseudo code' with each line labelled as 'TODO:'
    2. Convert the pseudo code into calls to fictional methods/properties. (Methods/properties that aren't written yet).
    3. Next, write the outline of these methods, but populate them with TODO's.
    4. Maybe now (or sooner) write unit tests to test the empty methods.
    5. As the tests are run, add some todo's or even some code to the methods.
    6. ...Continue compiling, writing, testing, planning -- all together.

    Read On...


    Fri, 30 Jun 2006 04:32:07 GMT

    Brisbane Thai Restaurant

    My brother-in-law has recently opened a Thai restaurant in Brisbane, (in Paddington, a very funky suburb)

    I've eaten there three times now, and love it more and more each time. If you're in Brisbane, please go along and take all your friends. Mention the website special offer and get a free serve of spring rolls. (Details here).

    Of course I'm biased to like the place. But don't forget that I'm a naturally cynical and critical person. So i think my recommendation still has some validity. ;-). Anyway, go there, eat that, enjoy the place, check out the way they specially sculpt the carrots and the potatoes. it's worth the visit for that alone!

    The house special is number 26, "Seafood Madness". Damn I'm salivating just thinking about it.

    Read On...


    Wed, 28 Jun 2006 03:56:58 GMT

    KeyTraino

    KeyTraino is a tiny and super useful utility.

    KeyTraino knows all the keystrokes for all the applications you use.

    KeyTraino knows all about the office suite, many business applications, many development tools (even query analyser!)

    When you're using an application and you hold down the control key, the alt key, or the WinKey... KeyTraino provides a friendly semi-transparent popup window (don't worry -- no animated paperclips) that gives you all the options available to you for the current application.

    When you hold down a function key -- KeyTraino tells you what that key will give you, and what it *can* do if you combine it with other keys...

    (continues...)

    Read On...


    Hey good looking!

    I see you've scrolled all the way to the foot of the page. Check out the secretGeek archives!

    Articles

    NimbleText 2.0: More Than Twice The Price! NimbleText 2.0: More Than Twice The Price!
    A Computer Simulation of Creative Work, or 'How To Get Nothing Done' A Computer Simulation of Creative Work, or 'How To Get Nothing Done'
    NimbleText 1.9 -- BoomTown! NimbleText 1.9 -- BoomTown!
    Line Endings. Line Endings.
    **This** is how you pivot **This** is how you pivot
    Art of the command-line helper Art of the command-line helper
    Go and read a book. Go and read a book.
    Slurp up mega-traffic by writing scalable, timeless search-bait Slurp up mega-traffic by writing scalable, timeless search-bait
    Do *NOT* try this Hacking Script at home Do *NOT* try this Hacking Script at home
    The 'Should I automate it?' Calculator The 'Should I automate it?' Calculator
    aaron swartz: the early works aaron swartz: the early works
    Finding (and removing) duplicate files on your hard drive Finding (and removing) duplicate files on your hard drive
    Harvey, a .net chat server built with RabbitMQ Harvey, a .net chat server built with RabbitMQ
    LeonBambrick.com LeonBambrick.com
    So your domain has been stolen. What now? So your domain has been stolen. What now?
    kv can remember it for you, wholesale kv can remember it for you, wholesale
    Hello IT Department Hello IT Department
    Dialog Between a Man and His Vista Laptop Dialog Between a Man and His Vista Laptop
    NimbleText 1.6, Codename Jetboat NimbleText 1.6, Codename Jetboat
    On Task Hoarding and Todo Bankruptcy On Task Hoarding and Todo Bankruptcy
    Developer UI Done Right: Mercurial Commandline! Developer UI Done Right: Mercurial Commandline!
    Rediscovering the Amstrad CPC 6128 Rediscovering the Amstrad CPC 6128
    Just Wally Just Wally
    The Correct Order for a First Time Viewing of The Lord Of The Rings The Correct Order for a First Time Viewing of The Lord Of The Rings
    A new era for Android. A new era for Android.
    Mind-boggling Demo of New Gaming Genre, aka Folder-Based Hangman, aka Fun with Recursion Mind-boggling Demo of New Gaming Genre, aka Folder-Based Hangman, aka Fun with Recursion
    Got CSV in your javascript? Use agnes. Got CSV in your javascript? Use agnes.

    Archives Complete secretGeek Archives

    TimeSnapper -- Automated Screenshot Journal TimeSnapper: automatic screenshot journal

    25 steps for building a Micro-ISV 25 steps for building a Micro-ISV
    3 minute guides -- babysteps in new technologies: powershell, JSON, watir, F# 3 Minute Guide Series
    Universal Troubleshooting checklist Universal Troubleshooting Checklist
    Top 10 SecretGeek articles Top 10 SecretGeek articles
    ShinyPower (help with Powershell) ShinyPower
    Now at CodePlex

    Realtime CSS Editor, in a browser RealTime Online CSS Editor
    Gradient Maker -- a tool for making background images that blend from one colour to another. Forget photoshop, this is the bomb. Gradient Maker


    [powered by Google] 


    How to be depressed How to be depressed
    You are not inadequate.



    Recommended Reading


    the little schemer


    The Best Software Writing I
    The Business Of Software (Eric Sink)

    Recommended blogs

    Jeff Atwood
    Joseph Cooney
    Phil Haack
    Scott Hanselman
    Julia Lerman
    Rhys Parry
    Joel Pobar
    OJ Reeves
    Eric Sink

    Aggregated Links

    proggit
    dzone
    hacker news
    dot net kicks

    Human Link Machines

    interesting finds
    a continuous learner's weblog
    arjan's world
    weekly link post

    LinkedIn profile
    LogEnvy - event logs made sexy
    Computer, Unlocked. A rapid computer customization resource
    Aussie Bushwalking
    BrisParks :: best parks for kids in brisbane
    PhysioTec, Brisbane Specialist Physiotherapy & Pilates
    home .: about .: sign up .: sitemap .: secretGeek RSS .: © Leon Bambrick 2003 .: privacy

    home .: about .: sign up .: sitemap .: RSS .: © Leon Bambrick 2003 .: privacy