The following content is comprised of personal opinions, and in no way reflects the opinions of the Peace Corps or the U.S. Government.

Monday, August 13, 2012

The Website Quest

The quest to make and host a website, all for free.

For our ICT initiative, one of the things I am working on is creating a web site. I have very minimal experience with HTML coding, and even less with other codes and scripts like CSS, Python, and Java.

Another issue we have is cost. The basis of this Task was to use our resourcefulness as Volunteers to find a FREE way of hosting out information on the Internet. Volunteers tend to be really good at getting out of paying for an otherwise non-free service.

Let’s recap. Here are the goals:
1-Design clean, professional looking website
2-Host it for free (preferably at www.projectisabre.com, but that’s flexible)
3-Be finished by November 12th, the Launch Date for STIR (the Resource in development)

You’ll know the project has succeeded when you can click that link and it works.

I started refreshing my brain on the syntax and references of HTML code. Not too bad. A quick look through www.w3schools.com took care of that. Still not an expert, but enough for this project.

I spent a few hours constructing a small webpage in Notepad, then changed the extension to .html and launched it in Google Chrome. Everything looks good, although it occurs to me that there are 2 problems: 1) There is very little style in my webpage. Adding this will require the use of Cascading Style Sheets (CSS) in an external document. Not proficient at coding style sheets. 2) Even the simple web page is getting past my organization ability in Notepad. As I add more complex elements to better the site, this will become a major problem.

After poking around www.w3schools.com again for CSS syntax, I was thoroughly confused and a little annoyed at my prospects, so I’m tabling that one for now. The second project is much easier. A quick Google search for ‘free html editors’ reveals several choices. CoffeeCup looked to be the most appealing, so I downloaded the free version and installed it. It appears to be a little limited (can’t use the really cool ‘snippet’ feature) compared to the licensed version, but we’ll make do. Contemplating trying to torrent a cracked copy of the full version, although this technically counts as software piracy. Hmm.

CoffeCup's HTML Editor, one of 'the best in the world'

The next problem area is free hosting. There are tons of places that host websites for a small annual fee. They have some great perks (large storage space, free email address, stream updates, etc), but most of them are just fluff for us. Our website won’t be too large (still debating if we wish to host our resource documents on our site or if we wish to keep them as direct-downloads from Google Drive). With the prevalence of free email accounts with just as good features as ‘professional’ email clients, having an email address through the site host becomes pointless (although the address shawn@projectisabre.com would be kinda cool). This google search yielded fewer results, and no real.

After some digging, I am again turning to Google for a solution. There are two possible platforms: Google Sites and Google App Engine. Google Sites is extremely user friendly, but it doesn’t look like it’s possible to upload a full website built independently. While I like the Blogger feel to Sites, it’s not what we want.

Google App Engine, on the other hand, looks promising. Up front, it doesn’t seem to fit. Websites get generated in Python, which is a problem because I know nothing about Python. But after some more rooting around, I found a web review that reassured me Google App Engine was the right fit and gave me everything I needed to get started.

The Login for Google App Engine

Goal 2 finished. We will be hosting our website with Google App Engine, totally free. The address is www.projectisabre.appspot.com.

The URL is not pretty, but I’ve picked up a few hints in my rooting and digging that it may be possible to redirect the index to a new URL for free. Well, we’d have to get the domain name and register it for a nominal fee (something like sub $5). So maybe this won’t be totally free. Or maybe we’ll stick with an appspot URL.

Uploading the website is a little trickier than I thought. Following the directions from the review above, I downloaded the Python (2.7) runtime and the Google App SDK. Python installed fine and is up and running, so did the App SDK. However, the App SDK wraps up everything in a (somewhat) simple Launcher, but I had to redirect the file paths to the proper executable for Python and the App SDK. The Labnol website had a very basic website pre-built to launch with Google Apps. Downloaded, unzipped, and modified the application identifiers to load to our project. Launcher tested well and the default website loaded. Done.



The Google App Engine Launcher interface

The App Launcher was a little tricky to get down. Mostly because App Engine runs in Python. The basic website I downloaded came with a Python script file (.py) that compiles properly with App Engine. It also included a YAML file (.yaml), a sort of all-script-use file designed for use by non-genius people. Sweet. In order to upload, I have to load the project into the Launcher (this is only required the first time), and then Deploy it. The Launcher requires an email username and password (that has access to the App Engine Project). Launcher verifies the information, connects to App Engine, checks prior versions, and then loads the Python file (I think). The Python file initiates the YAML file, which loads the index.html file (the website’s homepage) and then all the other pages, style sheets, images, etc. A simple 5-page website takes about 20 seconds to Deploy. A larger one takes about 5 minutes. Not bad for Africa.

There seemed to be a problem at first with the Launcher actually publishing the website. I was editing the YAML file’s ‘version’ code so I could check the functionality. However, just because the App Launcher uploads it doesn’t mean App Engine publishes it. App Engine allows several versions to be hosted and linked, but recognizes a default that is live at the URL. If the ‘version’ code of the YAML file is the same as the live version, it gets published. However, we lose the previous version (App Engine overwrites it). The only way to keep all previous version remotely in App Engine is to change the ‘version’ code each time (it accepts alpha-numeric [like 12c]), upload, and then open up App Engine, go to the ‘versions’ tab, and set the new version as the default. A little annoying, but it works. It helps that the App Launcher has a shortcut to open up the App Engine Dashboard in your default browser. That’s nice.

I’ll move forward with the actual building of the website and style sheets later.