Friday, June 13, 2008

Beware the Viral WiFi

This may be old news since it has been documented elsewhere for a couple of years now (see the link at the end of this post), but I only discovered this recently. Over the past several years, I have worked with a number of wireless networks, but only recently have I had the very different experience of moving through the world with my own personal wireless device.

Picture me walking through New York City on a beautiful summer day. Having finished a few personal errands, I'm looking to settle down in one of its several parks for a little bit and get some work done on my Macbook Pro. Since most of my work recently involves development of web applications, naturally I get a lot more done if I have an internet connection. I have heard that many of the parks in the city are outfitted with free wireless, so I drop down my Airport list and begin scanning through the several wireless networks my lappy has found. I come across one called 'Free Public WiFi'. This looks like it could be what I'm after, so I connect, get a very strong signal but no valid IP address; no internet; nothing.

Another day, similar scenario, but another part of the city. And this time, my Airport has already automatically connected to a strong signal. You guessed it, 'Free Public WiFi'. Again, no kind of internet love coming from this network. But now I'm curious, so when I do find a valid connection, I set out googling about this mysterious network.

Turns out it's a bug in Windows. It's a viral wifi epidemic that has swept at least this country, if not by now, the world. On the whole it's fairly harmless, but the potential for danger is very great, and it's taught me a lesson that I should have realized earlier.

Here's what happened:
  • Somewhere, someone created an ad-hoc network, named 'Free Public WiFi', either intentionally as a hoax, or for some indiscernible valid purpose.

  • One or more people connected to this ad-hoc network using a Windows laptop, again, either because they were duped into thinking they'd have free internet access, or for some unknown valid reason.

  • (Here's the fun part): Once a Windows machine has connected to an ad-hoc network, when it disconnects, it now begins to broadcast that same ad-hoc network as an available connection, essentially inviting anyone to join.


And so it spreads. As more and more Windows machines connect to ad-hoc networks named like 'Free Public WiFi' thinking they'll get free internet, more and more Windows machines end up broadcasting that same network. Take into account business travel, and you should see how quickly this thing is able to spread.

The danger here really should be self-evident. It is two-fold:
  1. An attacker could be broadcasting such a network, waiting for someone to connect in order to attempt exploiting their machine.

  2. If you're running Windows, you yourself may be broadcasting that network, essentially inviting anyone, including potential attackers to connect to you.

My partial solution to this is to not use Windows. :) The rest is a principle learned that I will be careful to apply and which, I think, more people should apply as a best practice: only connect to networks that you are certain about. For example, after this experience, I researched more carefully what public wifi is available in the city, who provides it and their locations. So now I'll know what I'm looking for.

Even so, it is likely if you have a mobile device that at some point you will open yourself up for attack. So there is sound reason to make sure your system is secure as a rule. Use a local firewall service. Update your system often. Don't take candy from strangers.

See: http://www.nmrc.org/pub/advise/20060114.txt

Sunday, June 8, 2008

JavaScript: Who knew?

It's been around for a long time, and it's had its fair share of abuse. If you're like me, perhaps you can recall when one of the most popular uses of JavaScript was for dynamic looking buttons. Do a little mouse over on the button and the button glows, or changes shape, or some other little effect which really amounted to swapping out an image. It was often being used more obnoxiously than elegantly.

Then came Flash. Everyone loved it. And again, everyone over-abused it. Finally, it became obvious (at least to me...) that people tend to prefer simpler design with occasional purposeful animation. In walks JavaScript (again).

Developers began using JavaScript in much more powerful, interesting, and ultimately elegant ways. One of the biggest ways being accessing and modifying the DOM. By listening to user initiated events (mouse clicks, keyboard entries), a developer can dynamically alter, rearrange, delete or create new document objects, all on the client side. A user can even initiate a server request (via the XMLHttpRequest object) and receive its reply without reloading the entire page.

The power, flexibility and standard implementation of JavaScript make it a powerful tool in building web-based applications. It would be a mistake to ignore it. I'm certainly getting my hands dirty with it (honestly, more by chance than anything else) and I've been loving the experience. A book that I've really found a great tool in helping me get the most out of the experience is called The Art & Science of JavaScript. I'd recommend it to anyone in the business or habit of building web-based applications.

Thursday, June 5, 2008

Web-Based Charting

Just adding to my previous argument to move away from massive spreadsheets (See WebApp vs. Data Tennis) is the infoSoft Global application FusionCharts. I'm a huge proponent of being able to visualize data in a way that will make the most impact for your audience. This shouldn't be sacrificed just because the application is on the web. As a matter of fact, it should be even more impacting with the speed of which information can be transfered and displayed. 

We recently came across FusionCharts searching for a simple way to integrate web graphing with our already matured LAMP Application. The flash based graphing works well with PHP, Python, Ruby on Rails just to name a few. The best part is that all you need to do is feed it the right XML datafile and the graph is done. This makes it easy to read directly from a database (which we did) utilizing a few string manipulation techniques. 

Did I mention that they have a free version?

Wednesday, April 30, 2008

Coding with the SDK

Yes, there has been quite a bit of lag between posts. I started to suffer from the Fallen Tree in Forest syndrome. I'm trying to make a melody with this blog but I'm not sure if it is even making a sound. That said, I'm posting again. I'm doing this not to force a noise in a plethora of internet data.  I feel the need to share my lessons learned with Objective-C and the iphone SDK. 

Here is where I am so far (in order):
  • Downloaded the newest SDK - Duh
  • Downloaded the core documentation for the SDK via xcode workspace guide - Getting Warmed up
  • Ran through iphone Fundamental Documents - Shallow Waters
  • Started the "Your First iphone Application" document in the workspace guide - Where's the boat?!?!
I'll pause there. There were really no issues following the documentation and getting a working application.  It was way more than an echo "Hello World". As a total laymen in Objective-C and lacking a solid C++ background, I needed something a little easier to make the connection. 


Of course you could find plenty of other places to go, but I found this one as I was searching for something familiar to grab hold of. I've been doing plenty of php scripting and this was a useful transition site. 

After getting aquatinted with my first application and reading some basics on Objective-C, I downloaded all the sample programs on the Apple Developers website. I'll say that I'm making some progress.

The goal of all of this? Besides being part of a technical tsunami, I've been avoiding non-scripting languages. Now was as good as any time to start tinkering again. I'll let you know how long I last.

Thursday, April 3, 2008

iphone SDK - Sky's the Limit?

The iphone SDK has been installed!

For a neophyte with little objective-c skills, I'm still highly attracted to the possibilities open to developing for the iphone. Business users all over are constantly in demand for rich presentation in a small package. I'm convinced that the iphone will pave the way for that to happen. 

But here-in lays the uncharted territory. How far will CIO's and their organizations go to develop custom applications to bring their executives into the new wave? Most executives travel light but require the information at their fingertips. I foresee a new demand for companies to step to the plate and provide rich media in that custom package. The iphone may not be the device of choice, but it is certainly moving the mobile community and enterprises to build the right custom application. 

Tuesday, March 11, 2008

Why Script?

If you have a Unix or Linux background, scripting should be second nature to you. Even 'Windows Gurus' usually do some little bit of automation with custom scripts. The power and flexibility that comes with the command line is hard to ignore, once you've tasted it. Still, those who have tasted both a Unix-type shell and the Windows command line will generally agree, Unix has the advantage here.

Although there are ways to do in Windows some of the things possible with Unix tools, it's quite a bit more cumbersome. By taking advantage of Cygwin, you can bring that power and flexibility to Windows. A simple example of how I have used Cygwin alongside Windows tools involves Active Directory user creation, deletion and modification. The tools provided in Cygwin allow you to do advanced pattern matching and generate a list of users, file paths, etc., and then using the Bash shell, it is simple to create the logic necessary to call the Windows command line tools for modification of Active Directory. With the arsenal of useful tools that become available to Windows by using Cygwin, the possibilities for better automation grow considerably.

The Advanced Bash-Scripting Guide offers a great starting place for increasing your ability to write useful and powerful scripts.

Wednesday, March 5, 2008

Keeping Up With Moore's Law

If you are like me, you've gone through several different computers over the course of a decade. I've had Dell, Toshiba and HP laptops all that provided (at the time) the needed processing punch. Eventually my software demanded more memory and computational power. Now I reached the age of my MacBook Pro and......."Wham"! It feels as if there is enough horsepower under the hood to last me a lifetime. Or so I think for the time being.

My feelings of laptop longevity, albeit easily susceptible to change, raises a question. Besides the fame and glory of trying to fabricate smaller and smaller chips, is it really necessary to continue the march down the nanoscale for the average home/business PC?

Don't get me wrong! I'll be the first one to ogle at the latest and greatest technology. Also if it wasn't for chip makers getting smaller, conserving power, we wouldn't have marvels like the Macbook Air. However, as chip fabricators are currently in the 45 nanometer range shooting to get even smaller, I wonder if Moore's Law will stop for general consumers sooner than we think.