#########   ##                  ##                        
#########   ##                  ##                        
###       ######                ##                        
###       ###### ######  #####  #####   ######  ## ##     
########    ##  ##    ## ###### ###### ##    ## ######    
#########   ##  ######## ##  ## ##  ## ######## ##  ##    
       ##   ##  ##       ##  ## ##  ## ##       ##  ##    
#########   ##  ######## ###### ##  ## ######## ##  ##    
 #######    ##   ######  #####  ##  ##  ######  ##  ##.com
=========================##===========================    
|proj|txt|moon|hv&hl|cat|##|cowboy|githb|QRs|resume|@|    
=========================##===========================    
                         ##                               

Professional Work by Steve Geluso

Hello, I'm Steve Geluso. I'm a bike enthusiast, Software Engineer, and Web Developer living in Seattle, WA.

Currently I'm working as a course instructor at General Assembly. I co-instruct a 12-week Immersive Web Development course with Sean Robertson and Brian Hague.

Students in the immersive course learn Git, HTML, CSS, JS, Node, Ruby on Rails, Angular, and React. We teach the fundamentals of programming and expose developers to sorting algorithms, data structures, and I like to spend an hour where I show off Vim. :)

In the past I've worked at large companies, small independent firms, and freelanced. I like to work on experimental, interactive projects that require custom work there may not be easy libraries for.

Companies I've worked for include:

&

Check out my work on GitHub, view my resume, or find me on LinkedIn.
Email me at stevegeluso@gmail.com if you'd like to do some work together.

Vim Exercises

Here is a collection of ways I use vim in my day to day work. Each entry includes a description of the situation I was working in and I provide entry-level explanations for all the commands I use. I hope someone may learn something they haven't seen before and I'm always eager to hear ways my approach can be improved.

History of Vim

Vim is a text editor based on Vi. Vi is a text editor based on Ex. Ex is a text editor based on Ed. Ed is the first UNIX text editor.

Someone wrote a short blog post explaining a bit about Vim's predecessor. Read about Explaining Ed.

Friendly Websites

My Single-Serving Websites

Freelance Work

You simply must visit awol-in-ptown.com to see some of my best work. It's an interactive site filled with beautiful sights and sounds promoting a movie, The Immortal Augustus Gladstone.

This site was built for Robyn Miller, co-creator of the best-selling video game Myst. It features a giga-pixel photo of Downtown Portland, built up from 67,325 image tiles. Players pan and zoom through the photo using SONARVISION to find hidden images of characters and props from the movie.

AWOL-in-P-Town is technically impressive because it's completely custom-built. No existing tile mapping tools gave us the degree of interactivity the site required. I devised our strategy to tile, pan and zoom through the images. The tedious process of editing a tile and propagating those changes through all zoom levels was streamlined by learning Photoshop's automated actions. Recording macros is awesome!

Turn on your volume and visit AWOL in P-Town to experience it's immersiveness firsthand, then check out the movie site where you can watch trailers, listen to the soundtrack and find out where to watch the movie.

Personal Projects

Here's a showcase of some of my own personal projects I've done for free and in my spare time. These projects have allowed me to practice skills I've been able to incorporate into my professional work. Be warned, while I'm not on the job I only develop for Chrome.

Catan

Pomme

 

My own JavaScript HTML5 canvas implementation of The Settlers of Catan. This is an experiment in programming board games. Programming the hexes was more challenging than I expected, even after referring this excellent hex guide.

My version includes limited AI that will build roads, settlements and cities, but they're not very competitive. Eventually I plan to experiment with using different geometries for the game board. I'd like to generate random polygons instead of always using hexes. I'm interested to see what will need to change in the program to accommodate such a change.

This is an image association game that plays like Apples-to-Apples with images instead of words. One image is dealt to the center of the table and each player chooses an image from their hand that they think pairs well with it, for whatever reason. Players take turns judging which pair makes the best match. It's fun!

This site was built by Fred and Jules. I came in a few years ago when there was a message asking for help. I've added new features and helped maintain the server. We're currently prototyping an Android app.

Others will need to be present for a game to begin. Invite friends!


Thirty Buck Rainier Tee

Cowboy

 

Here is my own personal site where I sell hand-stitched T-shirts with the Rainier logo. This is the first time site I've built that accepts orders and processes payments. It's a simple, single-purpose site.

The site features Instagram integration which shows pictures including a hashtag of photos of people wearing the shirt and the shirts being made.

In addition to the site I also designed and ordered printed vinyl stickers to promote the site.

This game acts as an ongoing sketchpad where I can practice game programming techniques. Most recently I've been interested in simulating AI movement. I'm using the popular boids algorithm for cow movement. It's not perfect yet.

I'm excited about the opportunity to build a large world where players can visit different towns, talk to characters and find quests.

At it's core, this is a light-hearted story-telling project. It's potential is infinite and it will never be complete.

Custom Image Manipulation

I spend some time using ffmpeg, bash, Python, JavaScript and Photoshop to explore image manipulation and video programming. I'm interested in panoramas, scene detection, subtitles, video effects and supercuts.

Many of these projects are inspired by wondering, "what would it look like if...?"

 

Panorama Extraction

Here's a fun interactive video experiment. I wrote a JavaScript tool that takes still frames from a movie shot and stitches them together into a panorama. The movie shot is from Rushmore, where the camera pans steadily across audience members sitting in a row.

The panorama is generated by taking left-most column of pixels from each frame and drawing them next to each other. It could be modified to take the center row of pixels, or the right-most, it really doesn't matter. The effect is a smearing of all those columns next to each other onto a permanent canvas.

I'd like to improve this by adding more multiple cursors that pan across the screen at once. Ideally, it should be possible to show every character sitting in the row moving smoothly all at once. Perfectly looped too. This would be hard, but I'm not convinced it's impossible.

Clicking on the still image below will take you to the interactive page where you can play with the image being generated in real time.

 

N-Frame Averager

Here's a fun one. I wrote a script that explodes a video into it's individual frames, then iterates over each frame and rewrites it into the average of itself and it's N nearest neighbors. This produces an effect that smooths out images over time and tunes out things that don't appear on the screen for long. It works well for time lapse video of scenes with a constant background.

Here's a video that shows the averager running at four different settings. There's the original time-lapse footage of me driving, then each frame is averaged at two, four, and 20 frames. You can see how the constant features of the sky, road and landscape smooth out as the average window is widened. Passing cars disappear as N is increased. The shadow of the truck on the road is fun to watch.

Big thank you to pretty blue skies in Eastern Washington for this one.