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.
less of Lumbergh
less burnout
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.