May 25 2010

A Search For A Putty Alternative – Putty Tray and Putty Connection Manager

After getting my beta key for Starcraft 2 I’ve been spending a lot of time in Windows. Windows 7 is a huge improvement over Windows XP but I really miss the transparent tabbed terminals in Linux. I’ve become so used to having numerous SSH tunnels and sessions going in multiple tabs that the classic Putty Client in Windows 7 seemed very restricting. I’ve explored a few Putty alternatives and it seems that a transparent tabbed SSH client isn’t an option in Windows. I hope that there is an application that I’ve missed, but at the moment it seems you can either have a transparent Putty client with text that also becomes transparent and illegible with Putty Tray, or you can have a buggy tabbed SSH client with Putty Connection Manager. Both of these applications are less than desirable, but I have settled on Putty Tray. With Putty Tray, the console windows will minimize to the tray and not take up valuable real estate in the task bar. If used with Pageant, Putty Tray is far superior to Putty Connection Manager and it doesn’t have the usability issues that Putty Connection Manager does.

I’m still tempted to install a virtual machine and run some flavour of Linux just for the clean and visually appealing consoles.


Jun 1 2009

Bing VS Google Bandwidth Comparison

With the unveiling of Microsofts new search engine Bing I was curious to see which site uses more bandwidth per load and query. These results are taken from the firefox plugin firebug’s Net feature. This plugin will tell you what files were downloaded and how big they were along with how long they took. It’s a great way to see how fast your site is going to be.

Google Main Page 20 KB
Search for Cody Taylor 38 KB
Search for asdf asdf 10 KB

The search for Cody Taylor was so large because of images displayed at the top of the pages.

Bing Main Page 109 KB
Search for Cody Taylor 22 KB

Over 5 times the data of Google. The search for Cody Taylor on Bing didn’t show any pictures but was still twice the size of a normal Google seearch. If we take into account the New Ajax onMouseOver event on Bing for each search result it becomes 27 KB still without any images. Remember those articles that went off about how much energy every google query uses? Looks like Bing more than triples that amount.

Of course both these sites are much more effecient when we take into account that after the first visit most of the large data is already cached in our browser. For this test I was clearing all my cache between each transaction.

Bing does have quite a few redeeming features and for a first impression it looks like it may be a serious contender but it still lacks the simplicity and speed of google.


May 27 2009

New PHP 5.3 Release June

Q2 is basically April, May, and June and the 5.3 timeline says Q2 stable release. I’ve been reading mostly good things about the experimental release and considering all the new features being added every php developer should be stoked. I’m not just talking about the new closures/lambda functions which are gonna make my life a lot more fun. Here’s a list of all the fun stuff that I’ll be playing with next month:

  • Namespace support. It’s about time.
  • Late static binding. Somewhere between static and dynamic binding.
  • Jump label (limited goto)
  • Native closures. Simple javascript-like lambda functions. None of that create_function stuff anymore.
  • PHP archives (phar). Not sure why?
  • Garbage collection for circular references.
  • Ternary shortcut. Still haven’t seen an example of what this is?
  • Internationalization extension.

I’ve always been told that goto’s are bad programming practice but sometimes they can be very, very useful. Hopefully they get all the bugs out in the experimental versions and I can start using it at work  shortly after release.


May 2 2009

Drag and Drop on a Web Page? WTF?

This is the unconscious reaction of most users when confronted with a web application that has functionality rivaling a desktop application. A large portion of the general populating still feel that the world within the browser is a static one. Even though most of these users will probably get used to this revolution with lots of time and large amounts of exasperating calls to tech support, the fact that you have to reduce functionality on new applications or services to cater to this group’s lack of experience is ridiculous. Desktop rivaling web applications can, with some work, be used and easily understood by the regular user without them having to annoy the creator for explanations.

You basically have two options here. You can make the Internet driven application look, feel, and respond just like any other windows application. Or you can provide plenty of visual clues and instructional material in the application itself. Since no one needs another cumbersome graphical user interface we are left with spending extra time and money on providing the user base with enough visual material in the application itself so that they can figure it out within a few seconds.

The first hurdle to jump is the ubiquitous drag and drop functionality. This was a huge breakthrough back during the advent of windows and apple and has basically changed the way that we interact with our computers. Even though every user has seen and used this feature before they still are baffled when a website can do it. It’s like it’s thier first time on a computer all over again.

Some relatively easy to implement visual cues that every user will understand are cursor changes, proper mouse overs, and short explanatory descriptions. These cues build on what everyone has already learned over the years being tethered to installed desktop applications.

  • If something is movable then why not put the proper square ‘movable’ cursor when the mouse goes over it. This is basic behavior that most windows applications adhere to.
  • When you are dragging something over top of something else then windows would expand or highlight different elements of whatever was underneath. Any web application with drag and drop functionality should do the same.
  • Lastly, short two or three word instructions in the proper places should inform the user of anything that isn’t already self evident. For example putting the text “Drag and Drop to Change” directly above where some list of images or text is will be quick to read and even quicker to process.

As more sites decide to use advanced functionality we will see an increase in stupid questions and phone calls just because some developer on facebook or gmail decided to make their site work one way and the general user subconsciously decided that it was how all web applications should function. Good design is the only way that we all can steal that wasted time back.

Check Cody Taylor’s guide for adding CSS to Dojo javascript


Apr 28 2009

First Dojo Experience. Drag and Drop with Dojo and Ajax.

Lately I’ve been doing a large amount of web based programming for a couple of database driven websites.
This has been an great technical learning experience for me and I’ve thoroughly enjoyed most of it.
Most of my work has been server side php pages allowing customers to edit settings or print off reports.
While having a great design and a mostly self explanatory interface I’ve always felt that the pages lacked the whole web 2.0 feel.

I’ve have used basic ajax throughout my sites but it’s never been as smooth or slick as I’d like.
I’ve never used drag and drop methods on any of my pages and most of my pages reload when the customer hits submit.

I wanted to make my web pages more like a stand alone application and I have recently been playing with a javascript framework named Dojo. Since Dojo is still relatively new to me I’m sure there is a large amount of functionality that I’m missing out on when I describe my experience but here is my journey to get a drag and drop database application running with Dojo as quick as possible with hopefully only the useful steps outlined.

As I always do, I started out with a basic html template. But I’ll assume that everyone knows what that looks like so here is the html document after I put the Dojo includes in :

<style type="text/css">
  @import "includes/dojo/dijit/themes/tundra/tundra.css";
  @import "includes/dojo/dojo/resources/dojo.css";
  .target {border: 1px dotted gray; width: 100px; height: 200px;padding: 5px;}
  .source {border: 1px dotted skyblue; width: 100px;height: 200px;}
  .cody {height:50px;width:100%;background-color:skyblue}
  .taylor {height:50px;width:100%;background-color:red}
</style><script type="text/javascript" src="includes/dojo/dojo/dojo.js"
djConfig="parseOnLoad: true"></script>

<script type="text/javascript">
//Nothing here yet

<title>Cody Taylor's Dojo Test</title>
<body class="tundra">

Pretty basic right? A couple of css files for the web 2.0ish look and the dojo core javascript file.
Next we need to include the dojo.require stuff. From what I understand these statements are the framework’s “Include This Module” statements.
Which is a good idea due to the size of some of the Dojo files. I added these two statements to the page head to add the javascript drag and drop functionality module.


I then added the following code to the body section. Div within a div within a div twice makes up the first “source” div.
The second div provides us with a target. The odd stuff here that you should take note of, and read up on in the documentation is the dojoType, jsId, and the specific dojoDndItem class.

<div dojoType="dojo.dnd.Source" jsId="cody1" class="source">
        Test Source
        <div class="dojoDndItem" dndType="blue">
                <div class="cody">Cody</div>
        <div class="dojoDndItem" dndType="darkred">
                <div class="taylor">Taylor</div>
<div dojoType="dojo.dnd.Target" jsId="cody2" class="target" accept="blue,darkred">
       Test Target

Now we have a working drag and drop example. Awesome right? To bad it looks like garbage. First thing that ruins the impressive effect of dragging and dropping on a web page is that silly arrow with the ‘1’ beside it. Not sure what the point of that is.
Overriding the css class should fix that.

.dojoDndAvatarHeader {
        display: none;

I’ll get into using custom images to drag and drop with dojo and javascript in my next blog. So far though I am very impressed by this extremely simple to use javascript framework. I hope that it is this easy to customize everything for specific applications. I guess I’ll find out when I try to put images and ajax with database driven information in the dojo app that I plan to create in the next two or three dojo examples.

-Cody Taylor


Apr 16 2009

Remember The Milk Get Things Done First Impressions

I just started using some new GTD (Get Things Done) software both for work and for home. It’s called Remember the Milk and it has the ugliest, most annoying, MS paintish looking cow logo that just makes me cringe. I’ve only been using it for a little while but so far it seems useful. It has it’s strong and weak points but overall it’s looking like a promising way to get things done.

Ideally this software will increase the level of organization in my work and personal life, increase collaboration with my co-workers, and force accountability with everyone I have to deal with on a day to day basis. Mostly I’m hoping that getting all the tasks and ideas out of my head and into some database will allow me to focus more thoroughly on the task at hand.

What sucks about it :

  • The back button in the browser works for nearly nothing. Of course this is an issue with most Web 2.0 Ajax applications so I guess it’s just something we’ll all be getting used to eventually.
  • Once you share a task or a list then you can’t unshare it. The documentation says that this is because people that the item has been shared with may have changed the task or list and unsharing it would mean that the changes would be lost. I write programs like this for a living and I can’t see any reason for this. Why wouldn’t it be possible to unshare it with the changes still intact? It must have a really ugly database design or something.
  • The lists are not a very obvious way to get organized. When I first sat down with my manager and co-worker to evaluate this software we didn’t clue in that projects should be organized by lists as opposed to using the tags.
  • The web interface is far too advanced for a lot of the people I work with. I foresee a lot of simple questions and myself muttering “RTFM” way to often in the next couple of weeks. It’s not their fault. People are used to clicking a “Save” or “Submit” button every time they finish entering some data. With this software, after editing or entering a task, Ajax is used to save the field automatically either every character change or when focus moves away from the field.
  • I can’t find an option to share tasks from my iphone. If there is a way to do this then it’s very well hidden.

What is great about it :

  • It’s already installed on my iphone. I’m still a little new to the iphone so it’s novelty hasn’t worn off yet. Anything new I can do with it is a bonus. Also It has applications for both the blackberry and windows mobile based smart phones
  • I can sync my google calendar with it. I’ve been looking for an excuse to use Google calendars more often.
  • Virtual Collaboration. Everyone can express their opinion on every shared project without actually having a meeting.
  • Less interruptions. When someone has a small task that isn’t time critical then they can just post a task and send it. They don’t need to physically walk to another office space, interrupt whatever is already going on and expect it to get done.
  • Fewer critical tasks will get forgotten. No one can remember everything so we all need a way to record what we don’t want to constantly refresh. Not only does this software store it for you but it will also remind you when you want it to.
  • This application gives you an odd looking email address so that you can email tasks to yourself or others. This is especially useful when you want to delegate a task without having to open and log in to RTM (Remember The Milk).
  • Increase accountability by reducing verbal contracts. Without something like this a manager usually asks an employee to do something and the employee says ok. After a few days or weeks there is a possibility that nothing has been done about what was agreed upon and they both probably won’t even remember their conversation. The clients always end up suffering.

I’m sure I’ve still got a lot to learn about this application but those are just my first impressions on the usefulness and downfalls of this particular “get things done” application.