Tuesday, June 2, 2009

Up to Speed

So over a year after my last post, I figured it may be time to reinvigorate this blog. For whatever poor soul happens to stumble across this blog, I apologize in advance for its discontinuity, potential esoteric jargon perhaps only discernible to myself (I tend to occasionally make up words), and its unscientific approach. Honestly, I am using this blog more for my own personal benefit than anything else, as any other intended use seems fruitless and narcissistic.

That being said, this past year I've been keeping busy finishing up school, work, and side projects. As hinted by the title, I've been monkeying around with a bunch of different projects since the end of that MIST directed study in Adobe Air. Some of the projects I've undertaken, finished, or abandoned in the past year are as follow:
  • Built a new Desktop at home after my crappy video card crapped out (who'da thunk)
    • AMD Athlon 64 X2 Brisbane Dual Core 2.7GHz
    • Gigabyte GA-MA78GM-S2HP AM2+/AM2 780G HDMI Micro ATX Motherboard
    • 4GB DDR2 800 (PC6400) Dual Channel RAM
    • RAIDMAX Hybrid 2 RX-530SS Power Supply CrossFire ready
    • WD 500GB SATA II HD 7200RPM
    • WD 320GB SATA II HD 7200RPM
    • NEC 16x DVD-RW
    • ROSEWILL CD-RW/DVD-R
    • ATI TV WONDER ELITE
    • Windows Vista Professional Yeah, yeah, I know...

  • Installed Gentoo Linux Kernel 2.6.24 on Dell Optiplex GX270
    • Apache 2.2.1 compiled from source
    • MySQL 8.42 compiled from source
    • PostgreSQL 8.3.3 compiled from source
    • PHP 5.2.6 compiled from source
    • Gnome 2.20.3
  • Reengineered SMIS web site
  • Reengineering Atlantatrains web site
  • Learned well-formed DOM manipulation with AJAX (no more innerHTML!)
  • Update of UGA Franklin College OIT Project Log Tool
  • Using pdftk to generate and fill PDFs
  • Using AutoSuggest for AJAX autocompleting forms
  • Projects completed for CSCI 4300 Web Programming Course:
    • XSL style formatting
    • XML Schema and DTD
    • Created a simple ticketing system in Ruby on Rails
    • Created a simple bulletin board using Java servlets and MVC
    • Basic ANT build file syntax and usage
  • Scriptaculous sortable
  • Prototype AJAX handling
  • Set up and experimented with Subversion and TortoiseSVN on RHEL5
  • iDeneb OSX dual boot abandoned

Future projects that I hope to document using this blog include (but are not limited to):
  • Setting up OSX within VMWare Workstation (I hear its a doozy)
  • Playing with netBSD, freeBSD, and freeBSD jail within Vmware
  • Installing Oracle Express within a VM
  • Monkeying around with Sun's VirtualBox
  • Potential Projects Courtesy of Microsoft DreamSpark:
    • MS SQL Server 2008
    • MS Virtual PC
    • MS Windows Server 2008
  • Java servlets and Struts
  • Apache Modrewrite
  • Continue learning Regex!
Only time will tell how disciplined I'll be in documenting these projects, but hopefully I will be!

Saturday, April 12, 2008

Ready, Set, Read

I have read through Chapter 4 of the O'Reilly Flex 2 e-book. Thus far, the book has given a thorough introduction into Flex, how its used, and the different components that combine together to create flex applications. Chapter 1 gave a a broad overview of Flex, its integration with Flash (flex apps compile into .swf binaries), and its ability to load content at runtime.

Chapter 2 provided a broad overview of the Flex framework, how to compile flex applications using the SDK and Flex Builder, and setting up cross-domain policies on the server- addressing the security issues that occur with cross-site scripting.

Chapter 3 gave a functional overview of MXML, Flex's markup language (somewhat a mix between HTML and XML) to create user interfaces, including basic tags, containers (to be used later for dynamic content loading), event handling, and data binding.

Chapter 4 gave an overview of ActionScript as it relates to Flex. Essentially, Flex is Actionscript, as is MXML. ActionScript is a full-fleged Object Oriented language, with syntax similar to Java, utilizing packages, visibility modifiers, variable declarations, static variables, constants, and methods and its reliance on class declaration, object instantiation, the importance of scope, and the management of synchronous error handling (try-catches). Key differences with ActionScript is that it does not allow overloading, the way it utilizes getters and setters, the way it handles arrays (more similar to PHP than Java in that they are not strongly typed), its emphasis on event dispatching and listener functionality, and lastly, its inherent integration with XML.

Below is a screen shot of an interface I have developed to test a simple ActionScript:

Sunday, April 6, 2008

Flex 2

This weekend, I have managed to obtain an e-book of the O'Reilly Programming Flex 2 to serve as a reference and building block for creating Flex applications in Adobe Air.

I have also managed to obtain a copy of Adobe Flex Builder 3 to use to code in Flex. I hope to have a working model by tomorrow of a simple calculation script in Air, which I can hopefully extrapolate to rewrite the Credit Union game written in GWBasic.

Monday, March 24, 2008

Open the File

I have made a bit more progress with the text editor. I have a browse button in the application to open an existing text file for editing. I have the dialog open up, and limit the user to only open *.txt documents, then have the application open a file stream and read its contents. For binary data, this is done using

var stream = new air.FileStream();
stream.open( file, air.FileMode.READ );
stream.readBytes( header, 0, 0 );
stream.close();


However I need to read flat ASCII files, not binary files, and this is handled differently in javascript and AIR. I am still searching for a good reference book that outlines the AIRAliases script as well as the AIR document object model (DOM).

Sunday, March 16, 2008

Save File As Prompt

I have a basic model working that allows me to write to a and save the file to the document with a specified name "note.txt" (using the AIR air.File.desktopDirectory.resolvePath()).

This functionality is a start, but it is too limited. I want to be able to save a file to a user-specified location, using a user specified name. I am still in search of a good reference for some built-in AIR DOM and methods.

I have come a cross the method browseForOpen(), which I can use later to open an existing note. Unfortunately, my guess of browseForSave() to save a file is not working...

I will continue searching for a more thorough AIR reference online.

Monday, March 10, 2008

Working with the File System

After completing my image resizing and database applications, I am working on creating a simple AIR application that manipulates/creates a file on the local machine. The application will allow a user to browse for an existing file, make edits to the file, and save it to specified directory (essentially a simplified text editor, similar to notepad). I have begun work on the application, with the basic GUI set up and the basic logic working, but I will need to figure out what AIR file methods are available to both read and write from files/filestreams, as well as how to allow the user to browse his system's file system.

I may end up building on this application to use the AIR default menus.

Thursday, March 6, 2008

SQLite + AJAX

After playing with the AIR SQLite Admin (mentioned in the previous post), I created a simple database using the following SQL:

CREATE TABLE contact (
id INTEGER primary key autoincrement,
fname TEXT,
lname TEXT,
email TEXT
);



I also downloaded this large collection of samples for AIR 3 Beta

I began playing with the CRUD example, which is a simplified version of what I wanted to complete for my project. In the example, a simpler database is used, using only two columns (id and name). I wanted to make my own contact management system, so after about an hour's work, I had a fully working example, using four fields (id, first name, last name, and email). This project helped me better learn how to connect to the SQLite DB from AIR, as well as furthered my understanding of basic AJAX, particularly how to use the javascript methods createElement, and appendChild. The adaptation of the CRUD example provided proved to be a bit more difficult, as it was a bit oversimplified, and adding database columns requires a great deal of modification to the example. Below is a screen shot of my project using the more robust database.


After completing the SQLite/AJAX example, I went on to work on the image scaler. Originally, the scaler used a fixed scale ration (25%). I modified the example to use user input to scale the image appropriately, as well as return a success message on completion. The application appears as the following:

For my next project, I hope to use a Map API such as GoogleMaps or Yahoo Maps Beta

I also will be sure to post more blog updates as I do these projects- I have a tendency to play with AIR for 20 minutes at a time, and not post what I have learned until I have completed the projects. Instead, I will keep my blog up to date as to my progress.