Version control is here!

As the title suggests, version control is finally here! (somewhat)…
 
After doing a lot of research and fiddling with my website via SSH, I managed to set up a subversion repository hosted by my website. I previously tried experimenting by installing Git, but was unable to get it to compile successfully (probably due to permission issues in place on a shared hosting provider, although others on my hosting provider managed to get it working, it involved editing a lot of configurations in the config file, as well as messing with some lines in Makefile).
 
Since I’m still relatively new to subversion (but not version control as a concept), I’ve only activated it for my beta web apps that I’m working on. I didn’t want to try to set it up for my whole website, not knowing how subversion would work with wordpress and having different branches checked out and posting new updates via wordpress and having to commit them to the repository and such (or make an update with my working copy, commit it, only to have it potentially overwrite something I did in wordpress). Yeah, I could probably get around it by always doing an update before committing, but I may not always remember to do that, and frankly, wordpress is doing just fine w/ its own version control so I don’t really NEED it for my entire website.
 
With this version control system in place, I no longer need to (nor will I) make backups of the projects I’m working on by simply copying the directory somewhere else and appending “01”, “02”, etc… to the end of it.
 
Can’t wait to get back to focusing on development rather than part development, part “I better copy this in case I screw it up and can’t figure out how to get it back to the way it was”

Multiple Computer Remote Control

This is a program I wrote in the Summer of 2009 while working for the Steilacoom Historical School District.  The purpose of this program was to speed up the process of installing Windows Updates (before we had a WSUS Server), or to install a program on a computer lab that required interaction.  The program was successful (with a few minor drawbacks), and reduced the time it took to install updates or programs by about 75% (from 4-6 hours, to just over an hour).

Background:

Often, summertime is when we update computers.  In 2009, in order to update a computer lab, I had two options:

  • Go around to each computer and manually run windows update, or
  • Create a new Symantec Ghost image, and ghost the entire computer lab

Running windows update manually on each computer took more work, but it was faster, even though I could only run it on about 6 computers at a time before the bandwidth capped out for the ~700 MB of updates. Building a new image involved less work, but took more time since afterwards, each computer had to be renamed and re-joined to the domain.

I wondered what would happen if…I could get the windows update running on all of the computers at the EXACT same time.  I thought they would all get a portion of the bandwidth, but it would be a lot slower.  Turns out, I was both wrong and right.  They all got some bandwidth, but all the computers were downloading at the same speed as the original 6 were.

Features:

  • Cross-platform
  • Number of possible connected computers limited only by hardware
  • Full-sized, scroll-able (if needed) preview
  • Small program size
  • Windows:  System tray icon to easily see if running
  • Command-line argument for server location

Drawbacks: (due to lack of time to fix / implement changes)

  • If one client disconnects, they all disconnect
  • Occasionally, single-click sent twice (mouse-down + mouse-release, and mouse-clicked)
  • Preview powered by screenshots, not native graphic updates (more bandwidth)
    • However, preview only updates on mouse movement or keystrokes
  • No way to determine if all windows are aligned properly, must visually look at each computer to make sure all windows are in the same location

Files:

RCClient – Code used for the client
RCServer – Code used for the server

System Tray Icon

Image used for system tray icon in Windows.