Skip to content

Progress in the New Year

Welcome to the New Year! A lot has happened already, between Google changing their page rank, Apple’s numerous announcements and tons of other cool stuff. I’ve been getting back into the swing of things and mostly trying to figure out how to start off the new year right, i.e. if there was some great “first post” for the year I could conceive.

As can be the case, my desire to make an amazing impression has resulted in me making none, until now.

I graduated from college with a B.S. in Computer Engineering and for anyone not familiar with a Comp.E. degree I tell people I’m a cross between an Electrical Engineer and a Computer Scientist.

Truly, I’m more of a Scientist then an Engineer and probably should have gone the C.S. route based on my job history through the years. However, I like being able to call myself an Engineer and it fits with who I am and how I approach problems.

I tend to act as a “translation layer” and like to approach problems with tangible exploration. I’m more of a system programmer (i.e. C and perl) then a “pomp and circumstance” application architect (e.g. java and relational DB’s).

However, as the “active complexity” (or perceived complexity) of development and IT moves “up the stack” I’ve felt my programming skills start to slip. It’s not theory and design failing but that the barrier of taking ideas to fruition has becomes steeper.

Intending to rectify that situation, and loving the compartmentalized development approach that web services brings, I’ve begun learning python and intend to practice the application and not just theory of programming.

My first “new year need” has been to “spring clean” my data files, I have around 20,000 pictures with many dups (the result of recovering a HD). So coupling intent with need I’ve written my first real python program.

It’s not fancy, and only serves to break out a large directory of files into a smaller (3rds) subset. However, it was a great exercise for me so far. Transitioning to Python isn’t really a syntactical problem but an exercise in realizing that things which were once hard are now easy!

It’s an exercise in mind-shift that we should all try to initiate this year, try it early and start your year out right!

So in case it helps anyone here’s my “code”. I’m sure there are some more “python-esque” ways to do it so if you’ve got any insights please leave a comment!

#!/usr/bin/python

from glob import glob
from os import stat,mkdir
from shutil import move

mkdir(”1″)
mkdir(”2″)
mkdir(”3″)

def size_cmp(x, y):
if stat(x).st_size > stat(y).st_size:
return 1
elif stat(x).st_size == stat(y).st_size:
return 0
else: # x<y
return -1

files = glob(”*.JPG”)
files.sort(size_cmp)
num_files = len(files)

for f in files[0: num_files/3]: #slice 1
move(f, “1″)
for f in files[num_files/3+1 : num_files*2/3]: #slice 2
move(f, “2″)
for f in files[num_files*2/3+1 : num_files]: #slice 3
move(f, “3″)

{ 2 } Comments

  1. jay | January 18, 2008 at 12:34 pm | Permalink

    Well,
    I already know I have an off by 1 bug…

  2. jay | January 25, 2008 at 4:47 pm | Permalink

    Here’s a better bit of code for the last part:

    slice_1 = int(floor(num_files/3)) #1st 3rd
    slice_2 = int(floor(num_files/3)*2) #2nd 3rd
    print “slice 1: %s and slice_2 %s” % (slice_1, slice_2)

    for f in files[: slice_1]: #slice 1
    move(f, “1″)
    for f in files[slice_1 : slice_2]: #slice 2
    move(f, “2″)
    for f in files[slice_2:]: #slice 3
    move(f, “3″)

Post a Comment

Your email is never published nor shared. Required fields are marked *