Steven Spain - 2001 REU Participant
Last updated: 3Aug2001.
  May
  S M T W T F S
    1 2 3 4 5
  6 7 8 9 10 11 12
  13 14 15 16 17 18 19
  20 21 22 23 24 25 26
1 27 28 29 30 31  
 
  June
  S M T W T F S
1   1 2
2 3 4 5 6 7 8 9
3 10 11 12 13 14 15 16
4 17 18 19 20 21 22 23
5 24 25 26 27 28 29 30
 
  July
  S M T W T F S
6 1 2 3 4 5 6 7
7 8 9 10 11 12 13 14
8 15 16 17 18 19 20 21
9 22 23 24 25 26 27 28
10 29 30 31  
 
  August
  S M T W T F S
10   1 2 3 4
  5 6 7 8 9 10 11
  12 13 14 15 16 17 18
  19 20 21 22 23 24 25
  26 27 28 29 30 31  
Photograph of Steven Spain
Hello! I'm Steven Spain, an undergraduate student majoring in Management Information Services. I was placed at Steward Obeservatory where I built a database and web front-end for the Center for Astronomical Adaptive Optics. This page is the week-by-week trace of my progress through the summer.

Contact me! My e-mail address is sspain@as.arizona.edu. I'll have an updated office location when I return to Steward Observatory at the beginning of the fall semester.

Weekly Report - Week of June 11-15
This week proved a learning experience for me. I've done server-side web programming in VBScript and JScript using Microsoft's Active Server Pages technologies. I taught myself rudimentary Perl skills and wrote a search engine that scours all code I've written for the keyword or phrase I want to find. I also had to become very resourceful and learn a little bit about Unix. Granted, I can only do a few things at a Unix prompt, but I'm learning more daily and discovering new things through interaction with others here at Steward and through web-based research of my own. I will need a few additional tools to do serious web development, and I require the spec for the database, but I don't think I'll have any trouble completing a system soon.

Weekly Report - Week of June 18-22
This week continued my education in Perl: The beginnings of the project specification did not arrive until Thursday, leaving me all of Monday, Tuesday, and Wednesday to try to cement my Perl skills. I worked extensively with regular expressions, and also worked on hashes and arrays. While the Perl interpreter was written in C and Perl syntax is C-like, certain constructs prove a bit confusing to somebody who's as accustomed to the rigorous structure of C as I am. Nevertheless, I did some powerful things with what I know thus far. With the arrival of my specification, I have begun the development of the project: I began by creating a visual design that is pleasing to the eyes, clean, lightweight, and efficient. I based my design on the CAAO homepage for consistency; however, I added a few of my own touches to increase visual interest and place more information on the page than would have otherwise been there. I've been in contact with the webmaster at the Physics department, so I know what I can and cannot do with my personal homepage. I will be completing that as soon as possible, as well.

Weekly Report - Week of June 25-29
I spent a great deal of time this week configuring my workstation as a web server. I added Internet Information Services as part of the Windows NT Option Pack, the ActivePerl scripting engine, and the MySQL database server to my system. Because the final server for the project will be running Perl and MySQL, I expect to be able to simply recreate the database on the final server and copy my code without (major) modification. My time investment in installation and configuration was significant, however I fully expect to save time in the long run. I've been able to interface to the database from my pages, and SQL is quickly coming back to me. I do not yet know how I'll be securing the database in its final incarnation. In an attempt to experiment with security, I somehow made the site so secure that it can only be accessed from my workstation with my username and password. I myself cannot log on remotely! That's what I call security! The new server should be configured and ready by the end of next week, and I hope to have most of the code complete by then. I am researching the Internet Request For Comment archives to learn about the MIME format so that I can handle uploaded files. I expect that to be a lengthy script; thus, I will most likely implement it after I have a working site.

                                         
Don't forget! Wednesday, 4Jul2001 is Independence day! Do you know the proper way to fly the flag? Learn this and more at the American Legion's Flag Code page, http://www.legion.org/flagcode.htm.
                                         

Weekly Report - Week of July 2-6
Beta 1 is complete! I created a statement of compliance to compare the work I've completed to the spec presented to me, and I have most of the functionality prepared. The most crucial points that remain to be implemented are the security, which will be contingent upon the final server configuration, and the image upload, which will require a great deal of coding. A development meeting and some research have led me to believe that PHP might be better for this project than Perl: PHP code is embedded in HTML whereas HTML is embedded in Perl, and PHP has image upload handling built into the language. The second revision of the package may mean a port to PHP. Unfortunately, that means learning another language in a short period of time; fortunately, PHP is very Perl-like. Future revisions may include Microsoft's Active Channel technology and, possibly, a new visual design that I hope to make cleaner and more efficient.

Weekly Report - Week of July 9-13
The conversion to PHP has begun. I took time this week to reconfigure my local server for PHP development and began converting some of the code I'd written in Perl. Thus far I've converted the entire class library I'd written plus the index page for the system. I've enhanced some functionality and will be adding new functionality very soon. Perl is a great language, but designed to do both web scripting and other scripting tasks on the local system. PHP, on the other hand, was designed with the web in mind, and thus presents a richer feature set for web development. I'm pleased with what I'll be able to do just by switching languages. Unfortunately, the PHP documentation is sparse in comparison to the documentation for Perl, and there are a few calls that I'm not sure will port easily from Win32 to Linux. This will take research. I hope to complete the port of existing code next week and be left with enough time to begin work on securing the site before it goes live.

Weekly Report - Week of July 16-20
The port to PHP is complete. I've greatly enhanced the class library that each page in the site uses, and I've given the site an entirely new visual design. I've reexamined the initial specification for the project and have now found that I am in at least partial compliance with all of the points of the specification and have added features and functionality that will allow the database to scale nicely. I have only to enhance the way queries against the database are displayed so that they can easily be printed and to finalize security before I am in full compliance with the specification. The query modifications should not be a lengthy process. After reaching full compliance, I will check each line of code and look for ways to streamline the site. I will go through the debugging process once more, which should leave me ready to implement the final security scheme and take the site live on its new server.

Note: This marks the first version of this page to be in XHTML, not HTML. Click the "Valid XHTML" icon below for more information.

Weekly Report - Week of July 23-27
Security works! I do not have the security scheme implemented on the visible version of the site at this moment as the code is messy and in need of refinement, but the security system does work. I've been informed that I can expect all users to have JavaScript installed on their systems, so I've got the site set to automatically encrypt the passwords before sending them; thus, a plain-text password will never be sent over the wire during the login process. Instead, the user receives a salt value, prepends that to an MD5 hash of the password, and then does an MD5 hash of that mess. The user's password is stored in the database as an MD5 hash, so the actual password does not exist anywhere but in the user's mind. The database does the same hashing process and compares the results. If the two match, the user is granted access. Because of PHP's easy session management functions, I have to work harder to get the password encoded than I do to get the user logged in for the entire session. This is a big breakthrough and one with which I'm most pleased.

Weekly Report - Week of July 30-August 3
In a triumph of great timing, I went live with the website this week. The site functions on the new server and is ready for primetime. I have successfully completed the project placed before me, and have been able to add many additional features to it. From my beginning tinkerings with Perl to my efforts to port to PHP, I've worked hard on the site, and I believe I've done a good job with it. I'm very pleased with the website, and especially proud of the security scheme: If a browser cannot encode the user's password, the password simply is never sent! That's a great feature! I must say that I have enjoyed working at Steward Observatory, and I've been asked to return with the beginning of the fall semester. I eagerly anticipate returning to work and the new projects I will take charge of. I'd like to say thank you to the mentors and past participants of the Summer Bridge Program and to all the researchers who brought us into their labs; I've enjoyed these ten weeks and am grateful for the opportunity to take a position in a research environment.




Page not looking so great? Get Microsoft Internet Explorer!

Valid XHTML 1.0!    Valid CSS!