A test of Google App Engine’s free Java hosting

2010/09/01 at 11:40 am Filed in:Free Stuff | Portfolio | Web Applications No Comments

Shared web hosting for Java (e.g. Apache Tomcat) has generally been more expensive and complex than PHP and basic web hosting. But I’ve recently discovered Google App Engine now offers free hosting for low-traffic sites, with cloud-style pricing for resource use as traffic increases. It’s a very unique service, you have to use their object store instead of MySQL for example, and you need a special appengine configuration file. To try it out, I adapted my simple Jeocoder project to run on AppEngine (you can try it out here).

JEOCODER” is free sample Java code for determining longitude and latitude from a North American address that works with geocoding services provided by GEOCODER.CA and GEOCODER.US. The code was written by Doug Carmichael for my Gigazad project, where we used it for managing geographically-targeted advertising. GEOCODER.CA offers sample code in other languages, and has a link to my site for our Java version.

It was trivial to get Jeocoder running on appengine. More complex applications could be a challenge… apparently the database doesn’t support joins in queries! It will be interesting to see how Google cloud services evolve vs Amazon and the others.

Web site re-launched; WordPress replaces Drupal

2010/08/31 at 11:03 pm Filed in:Web site updates No Comments

Today I’ve relaunched the Skaha Software website using WordPress. It was previously based on Drupal which, like WordPress, is an open-source Content Management System (CMS) implemented in PHP. I had chosen Drupal for the 2007 site relaunch because it seemed like a good platform for a web application I was planning. In my research I found the underlying code to be more maintainable and more easily extensible than Joomla, and as a CMS it was more powerful and flexible than WordPress. So, why the change? WordPress has far more attractive themes, and is much more intuitive to administer.

Making web clients and servers work together: Ruby and JavaScript

2010/08/23 at 2:18 pm Filed in:Web Applications No Comments

It’s not their fault. Microsoft would like us to write both client and server code in .NET (e.g. Silverlight and ASP.NET). Sun (now Oracle) would like us to use Java applets on the client against Java on the server. We’re all using JavaScript on the client, but Netscape intended us to use it on the server too. Hardly anyone is doing that! Inconsistency between client and server languages can be a headache in today’s AJAX-oriented web programming world.

The now-popular Ruby language for Rails web development has dramatically more in common with JavaScript than PHP, C# or Java. This makes it very easy to code client/server interactions. Both Ruby and JavaScript allow the declaration of hash literals, unlike other languages, and this is a great way to create a data structure on the server to be passed by JavaScript to a library like ZingChart. You’ll see that Ruby hashes work nicely with Javascript hashes… mostly. Here’s my code for generating the ZingChart area chart from Ruby arrays. The catch: ZingChart javascript needs “-”s in identifier names (e.g. ‘background-color’), which aren’t allowed in Ruby. Ruby makes it easy to hack built-in functionality though, so I just made a double-underscore in a Ruby identifier translate into a dash when sent as a json string to javascript.

This Ruby controller code sends a JSON file to ZingChart to generate an area chart showing a financial portfolio history:

 render :json => {
       :graphset => [
         {
           :title => { :text => "Portfolio History" },
           :type => @graphtype,
           :stacked => @graphtype=="area",
           :chart => { :background__color => "white" },
           :legend => {
             :header => { :text => "Asset" }
           },
           :zooming => true,
           :series => series,
           :scroll__x => {},
           :scale__x => { :values => date_array }
         }
        ]
       }

It’s a bit of a hack, but the code is much cleaner than the alternative.

MBA student productivity surges with Google Docs

2010/08/15 at 11:02 pm Filed in:Social Apps | Web Applications No Comments

I observed that Google Docs had a dramatic impact on productivity during group work in the EDHEC MBA program. Students typically worked in groups of six students. Initially, they would divide the work so that each student would work on part of a Word document or Powerpoint presentation. One group member would be designated as the “integrator”, and would receive each student’s contribution by email. The “integrator” had to deal with a number of issues, including inconsistent formatting, content overlap (two or more students writing about the same thing), inconsistent style (point of view, 1st vs 3rd person), missing emails and files, mixed up file versions, and other problems. Typically the integrator would receive the files at the last minute, leaving little or no time to work together with team to resolve the issues.

After I introduced Google Docs and Google Groups to several teams, productivity increased dramatically. The role of integrator was eliminated.

The Google Presentation below was prepared for a student group presentation in an Introduction to Information Technology class taught by Professor Vasarhelyi of Rutgers University. Many students in the class were unfamiliar with the concept of using software other than email for group collaboration, and the presenters gave their personal testimony about the significant reduction in effort they experienced using Google Docs instead of Microsoft Office.

“Gigazad” Wi-Fi router technology serves 30,000 users

2010/06/01 at 10:26 pm Filed in:Mobile Apps | Portfolio | Web Applications No Comments

I launched Gigazad Networks Inc. in 2006 after learning about the ability to run Linux applications on Linksys Wi-Fi routers. The “Gigazad” routers I created can insert full screen pages into the user’s browsing experience, to communicate messages such as advertising. For example, full page ads can appear periodically with the ability to allow the user to click through and fully explore an advertiser’s site if they are interested.

A network of Wi-Fi hotspots was established that included Vancouver’s Watermark Restaurant at Kits Beach, Nat Bailey Stadium (with news coverage on CBC radio and The Province newspaper), and Blenz Coffee, as well as locations in Alberta, Ontario, and Washington State. The network had 30,000 users prior to being discontinued in 2010 due to disappointing revenue levels.

We are currently exploring new applications for this technology, which includes an Advertising and Hotspot Management Server implemented in Java, and an embedded high performance proxy server implemented in C (which led to two patent applications). The server integrated with the open-source Customer Relationship Management system SugarCRM.

More information: http://www.gigazad.com

New “Find My Router!” web application launched

2009/02/12 at 9:15 pm Filed in:Free Stuff | Portfolio | Web Applications | Web site updates No Comments

It’s easy to find a web site that will tell you your external Internet address (e.g. checkip.dyndns.com). This new site I’ve created uses Java to also determine the local IP address of your computer. Based on that, and a router knowledge base, it provides links to the likely IP address of your router’s administration web pages. Now you no longer need to memorize addresses like “http://192.168.1.1:8080″.

Check it out at http://findmyrouter.skahasoftware.com.

Forensic Tool helps track down stolen laptops

2007/08/01 at 11:25 pm Filed in:Mobile Apps | Portfolio | Web Applications No Comments

For Absolute Software Corp., a public company in Vancouver, Canada that is known for their Software-As-A-Service project Computrace LoJack for Laptops, I led product definition, implementation, deployment and training for a strategic new tool that increased the success rate and productivity of a team of non-technical staff.

I worked with internal users to determine requirements, and developed Windows systems software in C++ and an ASP web application to meet their needs. I used techniques such as prototyping, object-oriented programming, unit testing, and in-source documentation to shorten development cycles and maximize maintainability. I incorporated new XML/XSL and Javascript techniques for improved user interface design and maintainability.

According to Lyle Singular, Director, Recovery Services at Absolute:  “Trevor’s talents and capabilities have provided us with a tool that only a few short months ago was more of a dream than a reality. Trevor and the QA team had a very tight timeline on this last release and it came together beautifully. On behalf of the Recovery team I extend a huge thank you for this effort.”

August 10, 2010 Update. We have continued to use the tools that Trevor built 3 years ago and they have continually provided a backbone to our successful recovery service. They provided a foundation with which we have expanded and improved our capabilities that continue to secure customers and establish our services as first in the world.

Collaboration with Antisense Studios handles grad school applications

2006/01/01 at 11:27 pm Filed in:Portfolio | Web Applications No Comments

I developed a web application for accepting online applications to a University of British Columbia (UBC)  faculty, using Java, the Apache Tomcat application server, Struts Framework, Java Server Pages, MySQL DBMS, Hibernate Object-Relational Mapping, and Linux. The application was deployed on schedule and exceeded customer expectations.