June 2012 Archives

SouthEastLinuxFest 2012 After Action Report

| No Comments | No TrackBacks

This last weekend I took the 3.75hr trip up to Charlotte, NC for the southeastlinuxfest. This was my first trip to SELF and I was very impressed by the number of good talks and presentations.

Friday

On Friday, I arrived a little after the conference got underway and spent the morning in the “hallway track”, talking with and meeting a good number of people.

After a rather hasty lunch with herlo. We hurried back to the conference where I helped him give his presentation on the GoOSeProject. That presentation went VERY well, we ended up passing out all 10 of the GoOSe cds we had.

Sometime on Friday I also went to a presentation on OpenShift. However, I forgot to write down the name of the presenter so I don’t know who gave it. My schedule says it was likely Russel Bryant but I’m not sure.

I then skipped out on the afternoon sessions to go to a business lunch with some associates. The evening’s after-party, however, was lots of fun. I got to know a lot of folks: zonker, SUEHLE, Zach, Brian (the two aussies, didn’t get their addresses/emails), and others.. A lot of fun was had, good music, cards and discussion.

Saturday

Demoggification

The real meat of the conference for me came on Saturday. After the keynote which I arrived late to. I went to the “Demoggification” talk by John Rose. This talk was awesome. It was about a lot more than just removing the “useless use of cat”. I got the following tips out of it:

  • Use Here STRINGS

    Herestrings are like Heredocs but lighter. Instead of doing:

    echo "foo" | some_command
    

    try this:

    some_command <<< "foo"
    
  • The /dev/tcp and /dev/udp files in Bash.

    I’ve used these before, they’re a great lightweight way of testing connectivity. I didn’t get a demo written down so I’ll research and do a blog post on them later.

  • Brace expansion tricks

    The common use is just to spit out generated strings.

    mkdir -p foo/{bar,baz,qux}
    

    However, brace expansion can do much more (like replace seq)

    echo file{01..10}
    

    It can also do both at once

    echo {foo,bar,baz}{01..10} # < no space between
    
  • Regular expression matching =~

    Try this instead of a case statement if you only have one fork of your condition.

    if [[ $foo =~ (FOO|BAR|BAZ} ]]
    then
      echo "found the string"
    else
      echo "nothing there"
    fi
    
  • You can also do pattern matching on your variables.

    $ FILENAME=/usr/share/doc/tmux-1.6/examples/screen-keys.conf
    $ echo ${FILENAME%/*}
    /usr/share/doc/tmux-1.6/examples
    $ echo ${FILENAME##*/}
    screen-keys.conf
    

I had seen a few of these tricks earlier when I attended a talk by Michael Potter called Seatbelts and Airbags for BASH.

How to Quit Your Job (or How to Fire Your Boss)

My favorite presentation was the Saturday talk by Ryan C Gordon on how to quit your job. As I was recently let go from my full-time position and have been working for three months as a contractor/consultant this one hit home a lot of the points I’ve heard elsewhere. It also did a lot for giving me the “PEP TALK” I have needed in recent weeks. I kept three whole pages of notes. Here is what he talked about in brain/notebook dump format:

  • Pluses to being your own boss

    • more money (potential)

    You are not tied to just a single line of revenue, your potential for growth/income is no longer limited by one budget.

    You’re not going to be stuck on a single project for long. There is more diversity.

  • Minuses to being your own boss

    • less money

    you are going to start out making less money, so jumping into consulting without a safety net (something I was lucky enough to have) is almost always painful.

    • no medical insurance, no 401k, no safety net

    • more Lumberghs

    You no longer have to deal with one Lumbergh, but many Lumberghs. Luckily you don’t have to deal with them for the long term.

    • more hustle

    Being your own boss is a LOT of work. If you don’t have hustle you’ll starve.

  • Find a vertical market

    If you find your niche in a vertical market, you then need to stand out from the crowd. Which isn’t too hard, you only need to “Be better than the dumbasses.”.

    Ideally you would want a market with a lot of money and not many people in it.

  • “Your product is named ‘You’”

    You are your product. Sell yourself. Work hard at selling yourself. Don’t sell yourself short.

  • Milk your contacts

    Finding work is the hardest part. Milk your contacts for as much as you can.

  • Do Open Source

    A github page (with good content) is an excellent resume.

  • Always build your resume

    Your resume should always be easily found. Mine is http://blog.friocorte.com/resume/

  • Always be interviewing

    This helps your people skills. It also helps you sell yourself properly.

  • Your online persona should be awesome

    Don’t post pictures of yourself puking in your twitter/facebook account. Always be aware of what your online persona looks like.

  • Hustle, do, ship

    It’s of tantamount importance that you actually SHIP aka deliver a product. If you never deliver you will never be invited back as a consultant.

    I always like the way Dave Ramsey puts it

    Get up.
    Leave the cave.
    Kill something.
    Drag it home.
    
  • Always be learning

    Ryan talked about how he was playing around with Lua once and blogged about it. That blog post led to a contact being made because of his “Lua knowledge”. If you play with stuff, learn stuff and blog about it you will have a working resume.

  • Keep records

    Not only of your timesheets for customers, but of what you’ve worked on. Again back to the living resume.

  • Married == uphill struggle

    Your relationships will have a harder time when you are contracting as the stress can cause issues.

    It is paramount to find a good balance

  • Budget Carefully

    Not just your money but your time.

  • Ask for more than the job is worth

    Always negotiate. Always go up. Double your rate.

    No one will walk away from a number without saying something like “hey that’s too much”.

    Have a minimum price, if the customer can’t match it, walk away.

  • Schedule well

    Over estimate times two.

    DON’T MISS DEADLINES

  • Fire customers if they suck

    “The customer is always right” isn’t always right. Fire the hard ones.

    I first heard this advice from the guy who wrote “The no asshole rule”.

    Have a contract breaking clause.

  • Never say you are running out of money

    Always present yourself to customers as if you are on good footing

    Ryan mentioned the talk F#@k you, Pay me!. Good points, but LANGUAGE WARNING

  • Hire a lawyer

    You should talk to a lawyer at least once, and have a relationship with one for when you get sued.

  • Hire an accountant

    Not only for tax purposes, but for investing your money when you start to do well. Remember you don’t have a pension or 401k anymore.

  • Business type

    Sole Proprietorship, Default and easiest. Most risk.

    LLC, little harder, more protection. Hard to sell (the business).

    C or S Corporation, most difficult, lots of tax considerations.

  • Self Esteem

    Work on your self esteem, you need it to sell yourself.

  • Contracts

    If it’s not in writing, it didn’t happen. No verbal contracts.

    At a minimum, follow up with an email to any phone conversation.

  • Get health insurance

    Without insurance, one trip to the ER can bankrupt you.

  • Take care of yourself

    Buy a nice chair, nice monitor and a desk which sits at the right height.

  • Don’t rent space

    If you don’t have a space in your home, don’t rent/lease space. Find a coffee shop. Many multi-million dollar companies have been founded/sold without ever buying or leasing office space (more so in recent years).

  • Stick it out

    Don’t give up. Working for yourself is hard work and takes time to build a base. Hard work most often will turn around down times. Get out and pound the pavement.

    However, you should have an escape plan/failsafe. Start with a ‘failure condition’ in mind.

  • Have balance

    You need to balance your work, play, sleep and love. When any of these don’t get the attention they deserve you’ll end up burnt out rather quickly.

This morning I got bit by what appears to be a nasty grub/anaconda bug. I was upgrading my Fedora 16 laptop to Fedora 17 and ran into some issues.

This is the best I can tell what happened:

I installed Fedora 15 using the following partition scheme:

1G /boot partition 122G windows vista partition (NTFS) 50G Fat16 partition 526G lvm partition * swap, /, /home and /srv are each LVs on this VG

upgraded to Fedora 16 using the DVD.

upgraded to Fedora 17 using the DVD, anaconda had an error message stating there were "bootloader problems" and said there would be issues rebooting.

rebooted and got the grub rescue prompt.

rebooted again into rescue mode, using the fedora 17 DVD, and tried to do 'grub2-install /dev/sda' which is where I got the above error:

    Path `/boot/grub2` is not readable by GRUB on boot. Installation is
    impossible. Aborting.

After some googling I found this bug report but there didn't seem to be any resolution.

So I banged my head against this problem and stumbled into a work-around. (this should be done in a chrooted environment inside the rescue method of the Fedora DVD)

  • backup the /boot partition

    mkdir /boot-backup
    rsync -rav /boot/. /boot-backup/
    
  • unmount and zero out the boot partition

    umount /boot
    dd if=/dev/zero of=/dev/sda1 bs=1024k
    
  • create a new ext4 filesystem

    mkfs -t ext4 /dev/sda1
    mount /dev/sda1 /boot
    
  • re-run grub2-install

    grub2-install /dev/sda
    
  • copy the files out of the new /boot into /boot-backup

    rsync -rav /boot/. /boot-backup/.
    
  • copy the backed up files BACK into place

    rsync -rav /boot-backup/. /boot/.
    
  • re-generate the grub2 config

    grub2-mkconfig > /boot/grub/grub.cfg
    

at that point you should be able to exit the rescue mode, and reboot and things should be back to normal.

If not ping the bug and have them fix it.

Also, it's nigh on impossible to replicate by just installing Fedora 16 then trying to upgrade. It appears to be an issue with the Fedora 15 created partition scheme.