An Application of iPad

I really hate the timing of this post, but the ideas are fresh in my head. You can consider this ‘just another iPad post’ if you want.

Ever taken a survey on the streets from someone with a PC style tablet? I’ve taken a few. I’m always surprised by the hardware choice. For some things, it seems like a clipboard and paper would be better.

At work, there is an upcoming project that involves something like the above. Here is why I think the iPad is a better choice. It mostly comes down to boring IT Operations reasons, aka management of the underlying platform.

  • With iPad, you never have to defragment your disk.
  • With iPad, you never have to run antivirus or update antivirus definitions.
  • With iPad, you never have to run anitspyware or update antispyware definitions.
  • With iPad, there is no moving and spinning disk which is prone to higher failure.
  • With iPad, you don’t have to worry about some slick-kid or script kiddie downloading and installing some crazy software that turns your computer into a bot or even just overwrites important files preventing you from booting the next time.
  • With iPad, you don’t have to worry about not having a replacement part available if a piece of hardware fails.
  • With iPad, the user will have a more familiar experience. Given the prevalence of iPhone, it is likely that an end user will understand many of the touch and drag gestures.
  • With iPad, there is no stylus like the PC Tablets of old.
  • With iPad, there is a very clear future. When was the last time apple canceled a product line? Newton? Ok, how about under Jobs? I’ve no idea.

I’m as anti-fud as any person that I know. Yes, the above is definitely anti-windows fud cited by Mac and Linux lovers everywhere and normally I’m the first person to refute it. However, I think under that fud there are tiny grains of truth. For certain applications those bits of truth are highly amplified. It is a different risk vector. These things become very important and translate directly to cost of ownership.

Notice that I’ve listed no pros or cons for iPad as a general purpose device. I don’t care to go there. I’ve also not mentioned if there is much of a market for the above use case (there isn’t enough to sustain the device alone). These are all things to be answered elsewhere. My point in short: here is a use case if you have been wondering for what kind of things iPad can be used.

My Whole App is a LINQ Expression

I just published an application which I consider useful over on codeplex with source hosted on launchpad.

http://wlanchannelinfo.codeplex.com/

https://code.edge.launchpad.net/~evarlast/+junk/WlanChannelInfo

I wrote this because Wifi in my home is very slow. Its so slow I’m tempted to run a network cable to my couch so that even when I’m couch surfing I can have fast access to my server.

In an effort to diagnose my slow Wifi, I tried to see if my neighbors were causing interference by running Wifi on the same or overlapping channel as me. I downloaded netstumbler; it didn’t work. I downloaded some other tool; neither did it.

So I wondered how hard it would be to write my own. It turns out Windows 7 added to the Wlan* api to expose all of the necessary data. After some digging I found the managedwlan project on codeplex. Now I got to play.

Once I figured out the api, I was able to write the entire application with pretty much one LINQ expression:

var client = new WlanClient();
var retval =
from wlanIface in client.Interfaces
from bssentry in wlanIface.GetNetworkBssList()
from network in wlanIface.GetAvailableNetworkList(Wlan.WlanGetAvailableNetworkFlags.IncludeAllAdhocProfiles)
where InterfaceService.GetStringForSSID(network.dot11Ssid) == InterfaceService.GetStringForSSID(bssentry.dot11Ssid)
select new WifiInfo
{
bssentry = GetStringForSSID(bssentry.dot11Ssid),
channel = Wifi.FrequencyChannelMap[bssentry.chCenterFrequency],
frequency = bssentry.chCenterFrequency,
linqQuality = bssentry.linkQuality,
strength = bssentry.rssi,
signalQuality = network.wlanSignalQuality,
wifitype = network.dot11BssType
};

The result of that expression is directly databound to a WPF DataGrid and I can now view the data that I want to.

I really love the platform (C#+.NET) on which I work.

I’m Lazy And I Need My Helpers

public static class NumericExtensions
{
public static bool IsZero(this byte number)
{
return 0==number;
}
public static bool IsZero(this short number)
{
return 0==number;
}
public static bool IsZero(this int number)
{
return 0==number;
}
public static bool IsZero(this long number)
{
return 0==number;
}
public static bool IsZero(this float number)
{
return 0==number;
}
public static bool IsZero(this double number)
{
return 0==number;
}
public static bool IsZero(this decimal number)
{
return 0==number;
}
}

I wanted something like this today as I was toggling between NUnit and MSTest. Sure, Assert.That( something, Is(0) ) is readable, but its not portable. Its NUnit only, and for this project, I can’t do that. I also like the english reading of IsZero() vs. Is(0)

I think I’ve stated before that any code on this blog (c) by me and licensed under the MIT/X11 License, but for certain bits of code, I see no point in that. So I’m going to start tagging code with CC0, Unlicense and/or WTFPL.

Windows Home Server backup database

I’m seriously thinking I should change my backup strategy. I use Windows Home Server for one thing and one thing only, Backups. Sure the file share stuff is nice, but I already have a Linux server with samba with my file shares. WHS lovers will say I should migrate, but all I see that gaining me a day or so of copying files and no real benefit.

I recently got a new laptop and when adding this into the mix I had to add more storage to my WHS. I did, and after doing so I got this:

HomeServer-AllBackupsLost

What good is a backup system if it loses your backups? Not much good IMO.

Windows 7’s backup is very good now and I think I may benefit from just using it rather than WHS. I’ll duke it out with WHS one last time, but I won’t be recommending it to Mom, Dad or Grandma anytime soon.