Nov
7
2009
From time to time I just blast tweets about software development, project planning, team dynamics, or whatever else comes to mind. Here is a synopsis of recent tweets and rants. If you want to follow the conversation follow me at techknow and/or juixe and I’ll be sure to follow back.
Software Development
- I can haz codebyte!
- Hacks are in the eye of the debugger.
- Is there a werewolf in your software, then why do you need a silver bullet?
- I know HACK is a four letter word but it is not a bad four letter word.
- It is okay to paint by numbers but its something different to code by numbers. I code by polynomials.
- If it doesn’t matter either way, why not choose the option that is easier to implement, cleaner to design, and friendlier to use.
- Content is the killer app.
- They say those who can’t do, teach. Well, those that can’t create content, aggregate.
Team Leadership
- The sooner you adapt, the wider your lead.
- Don’t nickel-and-dime old business assumptions.
- When leading the way, be sure to get out of the way. As a leader you don’t want to be a roadblock or bottle neck to the troops.
- A manager should do two things: give precise tasks and expect precise results.
- Don’t confuse opinion for advice, don’t confuse advice for a plan.
- Even a detailed schedule can’t predict the future.
- Sometimes schedules are another way we lie to ourselves.
- Time does not run on a schedule.
- A good skill is to identify the skillset of your team, a better skill is to improve those skills while leveraging them to the fullest.
- Little baby steps add up to giant leaps for mankind.
Product Placement
- In Windows, when you overwrite a file instead of replacing it without a trace, the OS should put a copy in the recycle bin first.
- You can learn a lot about someone by taking a look at their FarmVille farm.
- Is Twitter lists just another metric for users to have a pissing match on Twitter? If comparing followers wasn’t enough…
- Why is it that installing ImageMagick is a longer and more painful process than upgrading OSX?
Self Dev
- In certain task I am worth my weight in gold, in others I am worth my weight in lead, but I do my best to avoid tasks were I cost my weight.
- Many people will ask for out of the box ideas, but they don’t want ideas too far away from the box, more like ideas hovering around the box.
- It’s okay to have your cake and eat it to, as long as you bake the cake yourself…
- Be a double agent of change.
- On man’s problem, is another man’s opportunity.
- Authenticity has no substitute.
- Not failing fast enough is the biggest failure.
- Failure is when you don’t learn from it.
- You have to kill it to win it.
- Fail frequently, fast, and furious
- If I played baseball I would be the GM.
Questions
- What is the opposite of a trophy wife?
- Do you have a failure resume?
- Is Facebook to big to fail?
- How many tweets does it take to get a trend?
- There are wrinkle free pants, when will we see tangle free headphones?
- Which is best Happily Ever After or Happily Ever Now?
- What does it mean to ‘trust the chicken?’
- Do you have to sell out to get buy in?
- If you are not passionate, who do you expect your team to be passionate?
Quotes
- Good ideas are simple. – @jason
- Money is the shortcut. – @garyvee
- Great entrepreneurs don’t have better ideas, they have better process. – Eric Ries
- Pay attention to pixels. – Bump Technologies Job Listing
1 comment | tags: biz, code, codebyte, dev, hack, Programming, retweet, tweet | posted in Programming, Rant, TechKnow
Oct
27
2009
Recently, I gave myself the small task of going through all my Twitter retries and downloading each profile image from each Twitter user that replied to me. To access my Twitter replies I used the Twitter Ruby Gem. I am using Twitter gem version 0.4.1.
The script is small and pretty concise that it can speak for itself. I use my Twitter credential to log on and query for the 40 most recent replies. For each reply download the user’s profile image.
require 'rubygems'
gem 'twitter', '=0.4.1'
require 'twitter'
require 'open-uri'
require 'find'
twitter = Twitter::Base.new(username, password)
replies = twitter.replies(:count => 40)
replies.each do |status|
user = status.user
image_url = user.profile_image_url
image_name = image_url.match(/([\w_]+).(\w\w\w)$/)
file_path = "profile/#{image_name[1]}.#{image_name[2]}"
# Did I already download this image?
unless File.exists?(file_path)
File.open(file_path, 'w') do |output|
# Download image
open(image_url) do |input|
output << input.read
end
end
end
end
2 comments | tags: gem, image, Ruby, tweet, twitter | posted in Ruby
Oct
8
2009
When working with Ruby, the library/class I use and abuse most often is YAML. YAML stands for YAML Ain’t Markup Language and it is a versatile human friendly data serialization format. It is easier to use and understand than JSON.
A YAML file is much like a Java properties file in that is used to store name/value pairs. YAML is more powerful than simple Java properties file but that is a good way to think of it to begin with. Here is a example of a simple YAM file used to store user name and password.
user: juixe-username
pass: juixe-password
The above YAML snippet can go into a file, typically with a yml extension. To load the YAML file in ruby you can do it in with following Ruby code.
require 'yaml'
yml = YAML::load(File.open('userinfo.yml'))
puts yml['user'] # juixe-username
Just replace userinfo.yml with the name and path of your YAML file. The object that is loaded from the YAML file is a regular Ruby hash object so you can iterate through all the name/value pairs like the following.
require 'yaml'
yml = YAML.load_file 'userinfo.yml'
yml.each_pair { |key, value|
puts "#{key} = #{value}"
}
What makes YAML files more powerful than a regular Java properties file is that you can complex object collections, structures, or hierarchies. For example, imagine that I want to log into a series of Twitter accounts and get their most recent at replies. I can keep a collection of twitter account usernames and passwords in a YAML file much like the following.
juixe:
user: juixe-user
pass: juixe-pass
techknow:
user: techknow-user
pass: techknow-pass
Here is the sample Ruby code that can be used to iterate through each user account from the YAML file.
require 'yaml'
yml = YAML.load_file 'userinfo.yml'
yml.each_key { |key|
username = yml[key]['user']
password = yml[key]['pass']
puts "#{username} => #{password}"
# login ...
}
You build more complex data structures than this using YAML, but this should be enough to get you going.
5 comments | tags: data, json, markup, Ruby, yaml | posted in Ruby, TechKnow
Oct
5
2009
From time to time I just blast tweets about software development, project planning, team dynamics, or whatever else comes to mind. Here is a synopsis of recent tweets and rants. If you want to follow the conversation follow me at techknow and/or juixe and I’ll be sure to follow back.
Software Development
- One source of conflict with human computer interactions is that they unsure of themselves, we seek answers and they seek approval.
- What modern Operating Systems need is some level of artificial intelligence subsystem which all applications can use.
- I hate when each application asks the same question, "are you sure you want to exit?" The OS should help apps to be more opinionated.
- Computers prompt us all the time for what smart defaults would do just fine. Computers lack of inteligence is wasting mine.
- Programmers have a form of groupthink, Programmer Think. This is especially true if FUD becomes dogma and design choices are not tested.
- Break Programmer Think, test all assumptions, every design choice, every implementation, every third party library, every different scenario
- If you are testing, have spent two days on a single problem, look in the log file, especially that null pointer exception, chances are that’s the problem.
- Even with all this cloud computing we still can’t forecast the weather accurately!
- First there was the web, the the web 2.0, now the perpetual web beta.
- Going gang busters don’t scale.
- Everything is beta.
Team Leadership
- If you don’t agree on paper, you are not going to agree in code.
- When you don’t take any personal responsibility and make any proper planning, it is always someone else’s fault.
- Seen it happen… Your brains cells are inverse proportional to your climb up the corporate ladder and the resources you manage.
- Each solution comes with a free can of worms!
- OH: you would make a great manager, cause you make a grumpy developer.
Product Placement
- Google can’t commit to a version number that is why everything is in beta. Beta is like a philosophy at Google, testing like a religion.
- Google’s philosophy of the meaning of life, the universe and everything else: Beta.
- This Week in Tech does ads for their ads… to promote the fact that they need to take ads.
- Apple has sold 225 million iPods to date.
- Twitter: If you build it they will come, but if they all come you will epic fail.
Questions
- What happens when someone has buggy code in their test cases, how do you test the jUnit tests for bad test logic?
- Is Mono chasing .NET’s tail lights and .NET chasing Java’s tail light and Java is chasing Ruby’s tail light, …?
- Infinite Shakespeare Theorem: What would get if you have Shakespeare hitting a typewriter keyboard for an infinite amount of time?
- All clicks being equal, is the Amazon affiliate program better than Google Adsense?
- What is your innovation quotient coefficient?
- What is your innovation quotient?
- What name/term has the most website related moniker/naming patterns? e-iComputroniiixr beta 2.0?
- Are social networking sites making you unsociable?
- Is it possible to burn the rice and still have it be under cook?
- Which do you prefer best, an uncomfortable truth or a flattering lie?
- If you can have any view from your back porch, what would it be?
1 comment | tags: apple, google, retweet softdev, tweet | posted in TechKnow
Sep
10
2009
I have to say that the World’s most commonly used excuse is “it works on my machine“. Amongst programmers this excuse must rank up there with other famous excuses like “It’s not you, it’s me” and “sorry, I guess I didn’t get reception.” When ever I hear a developer explain away broken builds, compilation errors, or bugs with “it works on my machine” I usually answer with one of the following replies, depending on my mood.
- Oh, are going to ship your machine to the client.
- Do you want all of us to work on your machine.
- Yeah, so fix it on my machine!

You Break It, You Buy It
1 comment | tags: bug, build, client, code, developer, excuse, Programming, Rant | posted in Programming, Rant, TechKnow