exec, system, and “
Haven’t used this since 2007 and completely forgot. Yes, I use this blog as a notebook.
exec(“ls”) => exits from irb or the program
system(“ls”) => returns true or false (crap out)
`ls` => returns the output of the command as a string -> Nice!
1+1
1+1 shouldn’t be 1 1/2. However, usually this is what happens in terms of developer output. People expect 2, but that never happens, unless, there’s a proper management controls along with the right leadership that can produce 3 and increase exponentially as you add developers. I learned this from my early years when I had to work with extremely limited resources and budget.
People think it’s all about code. That’s true to a certain degree, but a company and the technology development is mostly about people. My recent startup-hopping showed me that too many people don’t get this.
Do you have 1+1 problem? Give me a call.
5th Annual Philly Emerging Tech Conference
From Andrea…
Registration is open for the 5th Annual Philly Emerging Tech Conference (a.k.a. Emerging Technologies for the Enterprise), which is set for April 8 – April 9 at the Society Hill Sheraton: www.phillyemergingtech.com
Rubyists on the roster include David Black (author of Ruby for Rails and the Well-Grounded Rubyist); Yehuda Katz (Rails Core Developer); Brian Marick (author of Every Day Scripting with Ruby); Ezra Zygmuntowicz (creator of the Merb framework and co-founder of Engine Yard); Mike Dirolf (who has developed Ruby drivers for MongoDB) and Adam Blum (CEO of Rhomobile, which developed the Ruby-based Rhodes framework for smartphones ).
Talks about a wide array of languages and technologies complement the Ruby content. The event features Clojure creator Rich Hickey; Twitter platform lead Alex Payne; Venkat Subramaniam (author of Programming Groovy); Mary Poppendieck, who popularized Lean Software Development; Linda Rising (co-author of Fearless Change: Patterns for Introducing New Ideas); and many others.
The keynote speakers will be “Uncle Bob” Martin, who served as the first chairman of the Agile Alliance, and industry analyst Michael Cote.
The list of confirmed speakers can be viewed here: http://www.phillyemergingtech.com/speakers
More speakers and session abstracts will be added in the coming weeks.
The Early Bird rate, available through February 15, is $275 per person. The rate goes down to $206 per person if you can take advantage of the group discount (4 colleagues or friends, not necessarily from the same company, registering at the same time).
To register, or for more information: www.phillyemergingtech.com
Happy New Year!
I’d just like to wish everyone Happy New Year!
I have to say that the year 2009 hasn’t been the best year of my life, and I’m really looking forward to 2010. I plan on generating more screencasts, write more tutorials, and finally contribute to an open source project.
RubyMine Review
In my endless pursuit of more productivity, I decided to give the latest RubyMine IDE one more chance. I’ll make this review nice and concise by listing the pro’s and con’s.
Pro’s
- Helps stimulate the economy by giving $99 to JetBrains.
- Its sluggishness gives you more time to think.
- You get a great exercise from using your mouse since you have to constantly scroll to the right to see the rest of the code. That’s right, no wordwrap.
- You get to install gems that does not appear anywhere in the code, even the Windows gems although these does not get installed on my Mac or Linux.
Con’s
- When evaluating my existing projects, “refactor” does not work.
- I get full of red dotted lines underneath constants and variables, even after “indexing”.
Conclusion
Nice try, but I’ll stick to VIM and TextMate.
Modern Day Sweatshop
Below describes the working conditions of a sweatshop according to Wikipedia.
“crowded, dangerous, low-paying, and without job security…”
I’d also like to add long hours and shitty benefits to this list.
Sounds familiar?
It should. I’m finding out that this is the working conditions of many developers. Yet, we take it like there’s nothing wrong with it. Why?
First of all, we’ve been brain-washed by the success stories of successful tech entrepreneurs bragging about working under these conditions. I don’t think I ever heard any of them actually talking about having a balanced life. If you really think about it, aren’t these people also the employers of developers? Do you think they have a financial incentive?
Another great bullshit I’ve heard is that developers get paid lot more than others. Well, if you take the amount and divide by the hours we’re forced to work, then you’ll know that we’re actually making less than others. I’ve also heard some grumble about consultant’s hourly rate. Well, if you think about it, there’s no sick days nor vacation days. How about the cost of health insurance and other overheads? I know, I did the calculations.
You must be thinking that I’m describing the working environment at a start-up. Not so. For some stupid reasons, people at well-established companies also think that they can treat “techies” like crap. It’s fascinating that we’re de-humanized, and therefore we don’t have human needs.
This has to change and it has to start from the top.
One thing I’m really proud is that when I was a CTO, I did not run a sweatshop operation. I made sure the working environment is a friendly one and made sure people are treated with dignity. I made sure they’re not overworked and always available for their family. Sure, there were times where we had to work crazy hours for few days, but they were far and few in between. I also made sure that a death march is a shameful event. It means we didn’t do a great job of planning and it’s a total collapse of expectation management.
So, next time you hear a developer bragging about how much he works, tell him that he’s working at a modern day sweatshop and should really shut the fuck up.
Introduction to MongoDB – Part III, MongoMapper & Rails
This is the third and final episode on introduction to MongDB. In this screencast, we demonstrate MongoMapper and how to use it in a Rails app. Get the code at http://blog.rubyhead.com/files/mongodemo.zip
Introduction to MongoDB – Part III, MongoMapper & Rails.
6-Mo of Full-Time Consulting
Today marks six months of me going full-time on my own. It’s been both exciting, disappointing, fun, hard, tiring, and most of all, extremely educational. Although not a complete list, I thought I’d share some important things I learned.
Getting Paid
Before you sign anything, make sure you have a payment schedule from your client and it’s same as stated in the contract. I made this mistake with a firm that handles the payment for the client I work for. Although I was given a payment schedule, the firm decided not to honor that and went with net 30 term. That effectively screwed up my budget and it’s not pleasant explaining that to my wife.
As for the payment term, if you invoice after two weeks and the payment term is net 30, you have to expect that there will be minimum of 6 weeks of non-payment when you go on your own. That is, if they don’t give you “the check is in the mail” line. Make sure you get a retainer upfront and check the credit of the company you’ll be receiving the payment from.
My advise here is that if you’re faced with working with a consulting firm and not the client directly, don’t do it. It’s much easier to talk to the people you work with than some outside company. I also saw this happen to other consultants when I worked with a consulting firm as a CTO.
Work Load
Don’t ever take on more work than you can handle. You’ll always get tempted by the financial reward but there’s more to life than money. I originally went into consulting because I thought I’ll get to see my family more. However, I ended up working like I did before. Always think about why you’re doing this to begin with.
I had to reduce the work load by transferring some clients to others who I trust. That’s another thing, always make sure your client that you can’t handle to good hands.
Time Management
As a consultant, time is money. I don’t have to explain how important time management is. Stay away from anything that is not considered productive use of your time. e.g. going out for drinking.
I have a gig that requires me to be onsite. What that means is that I have almost 4 hours of non-billable time per day. If you’re going to take on an assignment that requires you to be onsite, make sure your rate can cover that lost time. I use my commute time to catch up on studies and work online using EVDO.
Knowing My Place
Although I can offer lot more than what’s on the agreement, I have to be sensitive to the client’s employees and the management. The last time I opened my mouth and said what I thought, I ended up becoming a CTO. However, I did it because the person I was saying it to can handle it and was okay to do so based on the conditions at the time.
It used to frustrate me when I saw people making the same mistakes I made years ago. However, I now accept my role and there’s some comfort in knowing that they too, will learn from the mistakes. It may not always be the best thing for me to help. However, I’ll always roll up my sleeves if asked.
Introduction to MongoDB – Part II, Ruby
This is the second part of the series on MongoDB. In this screencast, we create a small Sinatra app called YASI that accesses the data using MongoDB. Get the code at http://blog.rubyhead.com/files/yasi.zip
Introduction to MongoDB – Part II, Ruby
Introduction to MongoDB – Part I
Here it is, the first of a series on MongoDB. I decided not to go over the concepts since there are extensive coverage already on the net. I highly recommend the presentation slides from nyc.rb and also checkout Peepcode’s screencast on CouchDB.

