Wednesday, August 25, 2010

The Position I Seek

Only a few weeks ago I received word that my company's operations would be transferring from New York to Boston.  The entire New York team of this struggling start-up was being laid off.  Rather than a setback, I see this as an opportunity.  I've learned a lot during my nearly two years with this company, and I'm ready to learn more and advance professionally.  So, what position do I now seek?  It's easier if I just bullet-point what I'm seeking:
  • Funded start-up, based in New York.
  • Primarily customer service/community management with social media management possibly somewhere in the mix.
  • Company's development done using Ruby on Rails, preferably utilizing the agile  methodology.
  • The opportunity to work with the development team to build on my basic programming and qa knowledge. 
  • Full-time with medical benefits.  
In essence, I want to continue what I was doing before but with the challenge and opportunity to grow.  I know how to wear many hats and have a strong desire to acquire new skills and deepen the ones I already have.  I'm an analytical thinker and team player.

Check out my resume below, and be sure to have a look at my LinkedIn profile.  I have plenty of references.  Contact me if you think I may be the person you're looking to hire.

Resume

Monday, August 09, 2010

Looking for the Next Big Opportunity to Advance in Tech

Having worked nearly two years with an Internet start-up in Manhattan, I find myself laid off (along with the rest of the New York staff) as the company relocates offices to Boston in a larger overall shift of focus. These were two very productive years for me. I've gained familiarity with GNU/Linux, Mac, the command line, Ruby, Rails and basic testing with Selenium. I'm ready now for the next big opportunity to grow professionally and contribute to tech development.

Check out my LinkedIn profile as well as my resume, below. Feel free to pass it along to any hiring managers in the greater NYC metro area. Let me know if you have any questions.

I'm excited about the possibilities.

Resume

Wednesday, July 28, 2010

Terminator and CDargs: Two Great Command Line Tools

The average Linux user isn't going to need to use the command line, and in my opinion, shouldn't feel compelled to use it.  Still, developers and system administrators use it intensively on a daily basis.  Recently two very handy tools for managing the terminal have come to my attention.

First, Terminator.  It allows you to open a terminal window and then split it into multiple views within the same window.  You can be browsing directories in one, using interactive Python in another and running an applications from another...and still split the terminal further.


Ubuntu users should have no problem downloading Terminator either through the command line with sudo apt-get install terminator or through synaptic.  Check out the man page for commands to open, close, resize and more.  H/T to ars technica for bringing this one to my attention.

Second, CDargs is a very useful tool for bookmarking directories.  Rather than have to type the full path to a directory you access frequently, bookmark it.  Once you have CDargs installed, you can go to any directory you wish to bookmark and create a shortcut to it.

Let's say you want to bookmark the desktop.  With CDargs you would do as follows:

user@user:~$ cd Desktop
user@user:~/Desktop$ ca desk


Then, from the home directory (or any other) type in cdb desk and it will take you back to the Desktop.

Simple, right?  Check out the tutorial on Linux.com where I learned about this to find out how to install and begin using CDargs.

Is there something you like to use in the terminal that makes your life easier?  If so, let me know about it in the comments.

Friday, July 23, 2010

DebConf10 is Coming Soon to New York!

DebConf10, the annual conference of Debian developers, is coming to New York in just over a week.  As I understand it, this is the first time for this gathering to be held in the United States.  Here's some basic info from the website:
Debian Conference is the annual Debian developers meeting, an event filled with coding parties, discussions and workshops - all of them highly technical in nature. It will be held in New York City, USA, August 1-7, 2010.
This year's schedule of events promises to be exciting, productive and fun. As in previous years, DebConf10 features speakers from around the world. Past Debian Conferences have been extremely beneficial for developing key components of the Debian system, infrastructure and community. This year will surely continue that tradition.
Debian, for those who don't already know, is a distribution of GNU/Linux.  Further, it is the one upon which the Ubuntu distro is based and still depends.  Ubuntu developers often contribute to the Debian project, even as they draw the benefit of other's efforts with Debian to apply to Ubuntu.  So, although Ubuntu is my distro of choice, I am still reaping the benefits of Debian.

There will be no vendors at this conference, as it is really more of a technical gathering for the Debian community.  As such, the presentations for the most part will be, as the quote above states, "highly technical in nature."  However, the first day of DebConf10, Debian Day, will feature presentations oriented toward a more general audience.
Meanwhile, decision-makers interested in discovering the benefits of Free Software and Debian users are invited to attend Debian Day on Sunday, August 1, 2010. This day will open DebConf attendance to the broader public and the schedule includes presentations of more general interest.
My plans are to attend Debian Day and at least one afternoon session later in the week.  If anyone else plans to be there on August 1 and would like to meet up, please let me know.

Oh, did I mention that this conference is entirely free to everyone?  Just show up and attend any session.  Free is good.

Wednesday, July 14, 2010

Learning to Program in Ruby


For quite a while I've been saying I wanted to learn to program in Ruby.  Actually, the first programming language I thought I'd learn was Python, but working for a start-up that uses Ruby on Rails, Python doesn't make a lot of sense.  In any event, I'm glad to say that, despite the loneliness of having my wife and kids gone on vacation visiting family in Brazil for more than a month, this has been an excellent opportunity for me to devote time to Ruby.  I'm finally getting somewhere!

There are a lot of good, free online books and tutorials about Ruby, but the one I've been using is "Learn to Program" by Chris Pine.  This tutorial can be accessed for free online or you can obtain a hard copy from Amazon.com.  This tutorial assumes no knowledge of programming at all, starting the aspiring programmer out at the most basic information.  For me, this was perfect.

One problem I noticed was that when I went looking for help online with some of the exercises, the answers given by more advanced programmers utilized techniques way ahead of what the book itself provides.  All of the exercises given in the book can in fact be done with the information provided up to that point, so if you do go looking for help online in forums and elsewhere, be careful to look for pointers that use what you should know already from the book.

Just for fun, here's a little program I cobbled together from my limited understanding of Ruby as I was going through the section on loops.  It's based on the argument between John Bender and Principal Vernon in The Breakfast Club.

#famous scene from The Breakfast Club
#just the principal's part will be correct

puts 'You\'re not fooling anyone, Bender. The next screw that falls out will be you.'

answer = gets.chomp
 
puts 'What was that?'

puts 'I said, ' + answer + '.'

answer = ''

while answer != 'stop' 
 
puts 'You just bought yourself another Saturday.'
 
answer = gets.chomp

puts 'You just bought one more.' 

answer = gets.chomp

puts 'We\'ll keep going. You want another one? Just say the word say it. Instead of going to prison you\'ll come here. Are you through?' 

answer = gets.chomp

if answer.downcase == 'yes' 
  yes = 'stop'
  puts 'Fine, now everyone shut up.  I\'m going back to my office.'
  Process.exit
else

  puts 'I\'m doing society a favor.' 

  answer = gets.chomp

  puts 'That\'s another one right now! I\'ve got you for the rest of your natural born life if you don\'t watch your step. You want another one?' 

  answer = gets.chomp

  if answer.downcase == 'no'
    no = 'stop'
    puts 'Fine, now everyone shut up.  I\'m going back to my office.'
    Process.exit
  else
    puts 'You got it! You got another one right there! That\'s another one pal!' 

    puts 'You through?'

    answer = gets.chomp

    if answer.downcase == 'yes' 
      yes = 'stop'
      puts 'Fine, now everyone shut up.  I\'m going back to my office.'
      Process.exit
    else 
      puts 'Good! You got one more right there!' 

      answer = gets.chomp

puts 'Another! You through?'

        answer = gets.chomp

        if answer.downcase == 'yes'
          yes = 'stop'
          puts 'Fine, now everyone shut up.  I\'m going back to my office.'
        else 
          puts 'Let\'s just do this again'

          end
        end
      end

    end

end

Below is the first of a video series about programming in Ruby, though not based on the book I've reviewed here.  I provide it simply to provide a basic intro to the language, though of course if you find the series helpful, by all means follow up with the others in the series.


 

Wednesday, July 07, 2010

How to Make a Tar Archive (a.k.a. "tarball")

So you want to compress a directory. Here's how you make a tar file, also known as a "tarball," from the command line. What follows assumes you already have a basic familiarity with how to navigate the via the terminal.

First, change your current working directory to the parent directory of the folder you want to archive. In other words, if you want to make a tarball of a directory whose pathname is /home/username/Documents/computing/linux/ , you would use the following command:

cd /home/username/Documents/computing

Second, select a name for the tarball that ends in .tgz . For example, you could call the tarball for the directory above linux.tgz

Third, create the tarball with this command (here I continue with the same example as above):

tar -cvzf linux.tgz linux

What does the command above mean and do?

-c tells tar to create an archive. v makes it display the names of of the files as it processes them. z is to compress the file and f tells tar to use the next name in the command (in this example, linux.tgz for the tarball being created. The final argument in the command is the name of directory (folder) to be saved and compressed.

Hope this helps!

Wednesday, June 30, 2010

Setting Up Conky on Ubuntu


Conky is a pretty cool desktop app that displays system monitoring information.  I began using it months ago and recently had to go through setting it up again when I did a fresh install of Ubuntu 9.04 on my laptop.  Yes, 9.04.  For some reason 9.10 just didn't seem to agree with me.  Anyway, the following steps are specific to Ubuntu 9.04.  You may need to do some tweaking to use it on your version of Ubuntu.  Steps for installation and set-up on distros based on anything other than Ubuntu will vary.

First, install Conky either through Synaptic (simply look up "conky") or via command line with the following:

sudo apt-get --assume-yes install conky

Second, make a configuration file in your home directory. This is where you will put the code for what you want displayed on your conky desktop.

gedit /home/your_user_name/.conkyrc

Third, insert the code for your conky display. There are many options made available online by more knowledgeable minds than mine, but the following is what I use.  I adapted it from something I found on the Ubuntu forums (see here)  You can copy and paste it into the conkyrc file you should still have open. Once you've done this, save and close the file.
Code:
# UBUNTU-CONKY
# A comprehensive conky script, configured for use on
# Ubuntu / Debian Gnome, without the need for any external scripts.
#
# Based on conky-jc and the default .conkyrc.
# INCLUDES:
# - tail of /var/log/messages
# - netstat shows number of connections from your computer and application/PID making it.
 
# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
 
# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes
 
# fiddle with window
use_spacer right

# Use Xft?
use_xft yes
xftfont DejaVu Sans:size=8
xftalpha 0.8
text_buffer_size 2048
 
# Update interval in seconds
update_interval 1.0
 
# Minimum size of text area
# minimum_size 250 5
 
# Draw shades?
draw_shades no
 
# Text stuff
draw_outline no # amplifies text if yes
draw_borders no
uppercase no # set to yes if you want all text to be in uppercase
 
# Stippled borders?
stippled_borders 3
 
# border margins
border_margin 9
 
# border width
border_width 10
 
# Default colors and also border colors, grey90 == #e5e5e5
default_color grey
 
own_window_colour brown
own_window_transparent yes
 
# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right
 
# Gap between borders of screen and text
gap_x 10
gap_y 40
 
# stuff after 'TEXT' will be formatted on screen
 
TEXT
$color
${color blue}SYSTEM ${hr 2}$color
$nodename $sysname $kernel on $machine
 
${color red}CPU ${hr 2}$color
${freq}MHz   Load: ${loadavg}   Temp: ${acpitemp}
$cpubar
${cpugraph 000000 ffffff}
NAME             PID       CPU%      MEM%
${top name 1} ${top pid 1}   ${top cpu 1}    ${top mem 1}
${top name 2} ${top pid 2}   ${top cpu 2}    ${top mem 2}
${top name 3} ${top pid 3}   ${top cpu 3}    ${top mem 3}
${top name 4} ${top pid 4}   ${top cpu 4}    ${top mem 4}
 
${color green}MEMORY / DISK ${hr 2}$color
RAM:   $memperc%   ${membar 6}$color
Swap:  $swapperc%   ${swapbar 6}$color
 
Root:  ${fs_free_perc /}%   ${fs_bar 6 /}$color 
hda1:  ${fs_free_perc /media/sda1}%   ${fs_bar 6 /media/sda1}$color
 
${color grey}NETWORK (${addr eth0}) ${hr 2}$color
Down: $color${downspeed eth0} k/s ${alignr}Up: ${upspeed eth0} k/s
${downspeedgraph eth0 25,140 000000 ff0000} ${alignr}${upspeedgraph eth0 
25,140 000000 00ff00}$color
Total: ${totaldown eth0} ${alignr}Total: ${totalup eth0}
${execi 30 netstat -ept | grep ESTAB | awk '{print $9}' | cut -d: -f1 | sort | uniq -c | sort -nr}
${color orange}LOGGING ${hr 2}$color
${execi 30 tail -n3 /var/log/messages | awk '{print " ",$5,$6,$7,$8,$9,$10}' | fold -w50}
Fourth, create a bash script for starting Conky when the computer boots up.

gedit .conky_start.sh

Place the following code in the new file you have created, then save and close.


#!/bin/bash

sleep 2 && conky;


Do the following to ensure that the file is executable:


chmod a+x .conky_start.sh

Fifth, add the conky start script to "Startup Applications" (System > Preferences > Startup Applications).


The command is located at /home/your_user_name/.conky_start.sh

Sixth, restart your computer and enjoy Conky.  Play around with the config file if you want to change colors or other settings.  As I mentioned above, there are other codes mashed together out there on the Internet that you can use for a different look.  Mine isn't definitive, by any stretch.

Wednesday, June 23, 2010

Mobile Blogging with Tumblr for Blackberry

If you have a Blackberry and are into blogging, Tumblr offers an app to allow you to use the former to do the latter.

The Tumblr app for Blackberry is free and it allows you to post text, photos and more to your Tumblr blog.  Of course, you need to have a blog hosted by Tumblr first for this to work.

Assuming you have a Tumblr blog, once you download and install the app to your Blackberry you just have to provide your login info for Tumblr.  One clear drawback I see with this app is that, so far as I have found, it isn't possible to write a post and then insert a photo. However, an extended commentary can be included with photos.  Also, there isn't much in the way of formatting options either (italics, bold, etc).

Since it is possible for the device or upload process to fail, I recommend writing your blog post as a note on your Blackberry first, saving it regularly, and then copying and pasting it to the Tumblr app for upload.

The rss feed from my Tumblr blog is imported into my Facebook notes, so this might be an option you want to look into as well.

Folks on the train into Manhattan might wonder why I'm tapping away so intently on my Blackberry when I have no signal (underground tunnel), but once I'm out on the street and have a connection, I upload my post.

Click here from your Blackberry to install.