Archive for December, 02005

PGOR - In-Place Description Editing

Thursday, December 29th, 02005

I've added in-place photo description editing to the Rails photo gallery software I'm working on. I'm tentatively calling the app PGOR (Photo Gallery on Rails). Adding this kind of advanced AJAX functionality is fairly easy with Rails and Script.aculo.us' In Place Editor.

There's still no user login, so anyone can edit descriptions, but it's a throw away copy of the database, so it's not too important.

A Screencast of the functionality.

Luminarias

Sunday, December 25th, 02005
2005 Luminarias near Peralta, New Mexico 2005 Luminarias near Peralta, New Mexico 2005 Luminarias near Peralta, New Mexico
2005 Luminarias near Peralta, New Mexico 2005 Luminarias near Peralta, New Mexico

Luminaria photos from this and past years:

Merry Christmas

Saturday, December 24th, 02005



Fall 2005 Grades

Friday, December 23rd, 02005

I got an A in this semester's Advanced Computer Architecture class. The pressure to maintain my 4.0 grade point average mounts:



Try Ruby!

Thursday, December 22nd, 02005

What to try out Ruby without the fuss of getting stuff installed on you computer? Check out Try Ruby!. It gives you a hands-on Ruby tutorial right in your web browser.

Highly recommended.

Porting Photo App to Rails

Wednesday, December 21st, 02005

I've started porting my photo gallery app to Ruby on Rails. The idea is to use my huge existing database (14 MB SQL / 46 GB jpg) as a base and build a rails application around it.

I developed the software I'm using now with Perl/HTML::Mason (code). It has some pretty cool features, but I want it to do a lot more - especially on the administrative side. I considered slogging out some new Perl to add the features I need, but a port to Rails' rich framework holds the promise of a more productive environment, once completed. That, and playing with Ruby and Rails is simply more exciting!

You can view the work in progress at http://bohnsack.com/rails/photos/list, though the URL will probably change in the future.

I hope to get a lot of work done over Christmas break and code checked into RubyForge in a week or so. This will also get me the opportunity to learn SVN.

We Shall Move in This Direction

Wednesday, December 21st, 02005

SCGI and Rails on Apache 1.3.x

Tuesday, December 20th, 02005

Some notes on setting up a rails app with Apache 1.3.x and SCGI on Linux. The following allows a rails app to be setup as a single directory (/rails) underneath a webserver that might be running other non-Rails stuff (PHP, HTML::Mason, etc.) underneath other directories.

The SCGI protocol is a replacement for the Common Gateway Interface (CGI) protocol. It is a standard for applications to interface with HTTP servers. It is similar to FastCGI but is designed to be easier to implement.

  1. Download and install SCGI Rails Runner:
    $ wget http://www.zedshaw.com/downloads/scgi_rails/scgi_rails-0.4.3.gem
    $ gem install scgi_rails-0.4.3.gem
    
  2. Install other required gems:
    $ gem install cmdparse
    $ gem install highline
    
  3. Make sure your Apache has DSO support
  4. Download SCGI v1.9
  5. Build SCGI as a DSO Apache module:
    $ tar -xzvf scgi-1.9.tar.gz
    $ cd scgi-1.9
    $ cd apache1
    $ /path/to/apxs -i -c mod_scgi.c
    
  6. Add directives to httpd.conf to load the DSO and connect to a SCGI process running on localhost:9999:
    # At the end of the LoadModule list...
    LoadModule scgi_module        libexec/mod_scgi.so
    	
    # At the end of the AddModule list...
    AddModule mod_scgi.c
    	
    # Inside of the correct virtual server context...
    Alias /rails "/toplevel/directory/where/your/rails/app/lives/public"
    SCGIMount /rails 127.0.0.1:9999
    # matches locations with a dot following at least one more characters, that is,
    # things like   *,html, *.css, *.js, which should be delivered directly from
    # the filesystem
    <locationmatch \..+$>
      # don't handle those with SCGI
      SCGIHandler Off
    </locationmatch>
    <directory "/toplevel/directory/where/your/rails/app/lives/public">
      Options +FollowSymLinks
      Order allow,deny
     allow from all
    </directory>
    	
  7. Setup your Rails project to run with SCGI and start SCGI server:
    $ cd /toplevel/directory/where/your/rails/app/lives
    $ scgi_ctrl config
       What password do you want? foobar
    # consult config/scgi.yaml for default configuration
    	
    $ scgi_ctrl start
    $ scgi_ctrl status
    $ scgi_ctrl stop
    
  8. Enjoy your SCGI-servered Rails app at http://yourhost.com/rails/

The Chronic (what?) nles of Narnia

Monday, December 19th, 02005

The Chronic (what?) nles of Narnia - The Pib + Red Vines = Crazy Delicious!

Update: Available for free on iTunes

Christmas Lights

Monday, December 19th, 02005

I put up some Christmas lights tonight, but I ran out of 1/2 off Hobby Lobby strands and the shelves were bare when I returned to get more. As a result it's kind of 9/10 complete.

Better than nothing I guess...

I may attempt an adjustment tomorrow.

Update:

Semester #2 is finished

Saturday, December 17th, 02005

Semester two of grad school is finished. Both the class in advanced computer architectures and department seminar were worth the time spent. In general, I'm finding grad school to be a lot of work, but very beneficial. Things are beginning to click together into a seriously detailed "big picture" that didn't exist before I began my graduate studies. I'm definitely developing an increased insight into my work. Don't get me wrong - I was working towards this insight on my own, but I think that the formalism of school, coupled with seven years of intervening practical experience, is helping me get there a lot faster.

I'm taking two classes next semester. They cover topics that I've studied "on-the-job", but I look forward to a more formal (and hopefully more complete) examination of these concepts:

ECE432

Dr. Maccabe

Introduction to Parallel Processing (MWF 11:00am - 11:50am in Mitchell Hall room 221):

Machine taxonomy and introduction to parallel programming. Performance issues, speed-up and efficiency. Interconnection networks and embeddings. Parallel programming issues and models: control panel, data parallel and data flow. Programming assignments on massively parallel machines.
ECE437

Dr. Riesen

Operating Systems Principles (TR 12:30pm - 1:45pm in Mitchell Hall room 111):

Basic principles of modern operating systems design: emphasis on concurrency including problems (nondeterminism), goals (synchronization, exclusion) and methods (semaphores, monitors); resource management including memory management and processor scheduling; file systems; interrupt processing.

Classes start on Tuesday January 17th 2006, and the last day is Saturday May 13th.

On a percent of credit hours complete basis (including 6 thesis credits), I'm now 10/31 (32%) finished with the MS. After next semester's classes I'll be 16/31 (52%) done.

I've updated by grad school curriculum page to record this semester's classes as finished and next semester's as a work in progress. Spring 2006's expenses have also been recorded.



All the New Mexico Space Port

Tuesday, December 13th, 02005

LONDON - Virgin Galactic, the British company created by entrepreneur Richard Branson to send tourists into space, and New Mexico announced an agreement Tuesday for the state to build a $225 million spaceport.

Story (via dig)

GalaXQL SQL Tutorial

Sunday, December 11th, 02005

GalaXQL is an interactive SQL tutorial using SQLite that allows you to change the composition of a galaxy with SQL!

Via the Farm, which also has a lot of other cool stuff. e.g., Monkey Knife Fight.

Junction: Rails-like framework in Javascript

Saturday, December 10th, 02005

Junction a Rails-like framework implemented in Javascript that enables self-contained AJAXy webapp goodness. Wow. An example app called Next Action is available to help one implement the methodology advocated by David Allen in Getting Things Done.

local.live.com

Friday, December 9th, 02005

Microsoft's copy of Google maps is up in beta at http://local.live.com/. They're totally biting on Google's style, but that's OK. Competition is good. It seems quite buggy still, but the actual maps are better than Google's in a lot of cases. The detail that can be found in the "birds eye view" is amazing. For example, here's my house. Much spookier: A certain lab in Albuquerque.

Social Styles - Driving Analytical Driver Seeks Versatility

Friday, December 2nd, 02005

By tomorrow evening I'll have spent most of two days in a social styles class with a group of people from work. I was reluctant to go, but it's been very instructional, so I'm happy I took the time to learn something different.

Social styles consideres two main ways that others perceive your behavior:

  • Assertiveness: The way in which a person is perceived as attempting to influence the thoughts and actions of others. This scale ranges from "Ask" to "Tell" and is ultimately about "pace".
  • Responsiveness: The way in which a person is perceived as expressing feeling when relating to others. This ranges from "People" to "Task" and is ultimately about "showing emotion".

When combined and split into quadrants, the following classifications emerge:

  • Amiables (ask-directed assertiveness and people-directed responsiveness (slow pace, lots of emoting)):
    • Cultivate loyalty and dedication
    • Offer support and reinforcement
    • Encourage cooperation and teamwork
  • Analyticals (ask-directed assertiveness and task-directed responsiveness) (slow pace, little emoting)):
    • Weigh all alternatives
    • Offer consistent, well-organized data
    • Make practical business decisions
  • Drivers (tell-directed assertiveness and task-directed responsiveness) (fast pace, little emoting)):
    • Provide clear expectations
    • Offer solutions based on facts and options
    • Produce results efficiently
  • Expressives (tell-directed assertiveness and people-directed responsiveness) (fast pace, lots of emoting)):
    • Create excitement and involvement
    • Share visions and ideas
    • Motivate and inspire

When you add four levels to each axis, a 16 element matrix is formed:

Ask-Directed
Assertiveness
(slow pace)
Task-Directed Responsiveness (shows little emotion) Tell-Directed
Assertiveness
(fast pace)
  D C B A
1 Analytical
Analytical
Driving
Analytical
Analytical
Driver
Driving
Driver
2 Amiable
Analytical
Expressive
Analytical
Amiable
Driver
Expressive
Driver
3 Analytical
Amiable
Driving
Amiable
Analytical
Expressive
Driving
Expressive
4 Amiable
Amiable
Expressive
Amiable
Amiable
Expressive
Expressive
Expressive
People-Directed Responsiveness (shows lots of emotion)

My peers perceive me as a "driving driver", but I think I'm a little more analytical than that extreme - maybe an analytical driver. Perhaps this means that I’m somewhat versatile (able to change my style in certain situations) or perhaps this is a delusion. All things seem to point to versatility as the key, either way...

It's thought that drivers have the most difficulty with versatility, but it's also true that they tend to achieve the greatest results, once they've mastered it. So, as indicated by the today’s instruction, I'm going to try and show more patience when others try to express the merits of their ideas and engage in a thorough analysis of situations. This should allow me to be more versatile.

I'm looking forward to tomorrow and learning more about how the different social styles interact.

Update after day #2 - After some more discussion in class, it's become clearer that I am an analytical driver, instead of a driving driver. The charts and diagrams I keep on my walls and my tendency for overdelivery all point towards this catagorization. My feedback showed that I am more versatile than average. This is good, but I now have tools to improve this even further, and I indend to use them

Firefox 1.5

Thursday, December 1st, 02005

Firefox 1.5 was realeased a few days ago. Go get some SVG, Exposé, del.icio.us extension, View Rendered Source Chart, and Resizable text area love.