Oct 15 2010

Retweet September 2010

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

  • Email is not the future of UI. I dislike services that use email for data entry or input device.
  • Common source of errors, cut and paste!
  • Functional specifications are often times as misinterpreted as the Bible.
  • I’m a programmer by day, developer by night, and hacker in between.
  • Some features are disguised as bugs.
  • One man’s feature is another man’s bug.
  • Void is my favorite return type.
  • Code Commandment: No code shall PrintStackTrace
  • Show me your implementation and I’ll tell you about yourself.
  • The words “it does not compute” does not compute, they are not in my default dictionary.
  • Get your hack on!
  • When a developer says, “pretty much working” it does not mean production quality.
  • I’m not sure that a software application larger than “Hello, World” can be bug free.
  • If there is a giant red ‘Do Not Press’ or ‘Active Dooms Day Device’ button, someone will press it.
  • Every design decision should be a conscious choice, not an accidental assumption.
  • Will work for intellectual stimulation.
  • If you are a User Generated Content site saying you will censor a topic will only inspire your users to find ways around that.
  • What’s your default setting for the Ultimate Bitch Mode setting?

Team Dynamics

  • Just like how there are no any stupid questions, there are no any stupid ideas.
  • In order to get the most out of crowd sourcing you need to source your crowd.
  • Look past people’s past.
  • If you are going to shot for the stars you best have a rocket ship.
  • When the stars align, shoot for them. And if you shooting for the stars you best bring the big guns!
  • When shooting for the stars I bring an Klingon Bird of Prey!
  • And on the 8th day God said, “Let there be a TPS report.”
  • Life is too short to sell yourself short.
  • Don’t think in problems. Dream in solutions.
  • Never say maybe.
  • The next big thing usually starts as a small idea.
  • People will always push your buttons, you need to know how o deactivate those buttons.
  • I don’t fear being wrong. I fear not being able to recognize when other people are wrong.
  • You can’t delete emails once sent, but you can read them before you send them.
  • For every great idea there are hundreds of ways to mess it up.
  • Show me the monetization.

Product Placement

  • Mark Zuckerborg is a geek super evil privacy villain.
  • Boing Boing should just sell out to Rupert Murdoch.
  • Panda Express’ logo says, “Gourmet Chinese Food.” Really, Gourmet? Chinese?
  • American Apparel might file for bankruptcy, maybe China can buy it out and rename it to Chairman Mao Apparel.
  • The company Manpower has a very male chauvinist sounding name.
  • If only mother nature would have patented all her innovations, we would all be paying royalties to her.
  • Why does it cost $30 for Apple’s iPhone earphones? They like $.50 worth of material and $.25 of labor!
  • If you Google for love you will find about 1,930,000,000 results (0.23 seconds). At least one of those results is meant for you.
  • Google Finance should have a “I’m Feeling Lucky” button.
  • The cake is a lie. Do no evil is a lie.
  • The next version of the iPhone should be called ivePhone after it’s designer Jony Ive.
  • Upset that I’ve had to purchase yet another iPhone headset!!! At $30 a pop the white earphone are Apple’s razor blade business!

Resume Writing Tips

  • Resume Writing Tip: Use a good phone line for a phone interview.
  • Resume Writing Tip: At a minimum candidate should be able to figure out our URL by a) clicking the link on job description b) from my email.
  • Resume Writing Tip: The minimum research a candidate needs to do is lookup the company website himself prior to interviewing.
  • Resume Writing Tip: Ensure your cover letter or email is in one font, it shouldn’t look like you cut and pasted from somewhere else.
  • Resume Writing Tip: I would leave out MS Access 2000 out of technical skills. It’s also not necessary to list HTML, DHTML, and HTML5.
  • Resume Writing Tip: Proof read your resume and fix obvious typos, you can’t say you detailed oriented if you have basic spelling errors.

Quote

  • I want to put a ding in the universe. – Steve Jobs
  • The problem with Google is that Eric Schmidt is creepy. – Daring Fireball
  • They [People] want Google to tell them what they should be doing next. – Eric Schmidt
  • People aren’t ready for the technology revolution that’s going to happen to them. – Eric Schmidt

Mar 30 2010

Top 25 Most Dangerous Programming Errors

I’ve always been interested in understanding common programming errors so that I can easily recognize and diagnose problems, hopefully without spending hours staring at my breakpoints in my debugger. Previously, I’ve written on Common Groovy Errors and Top Worse Java Errors.

The US Department of Homeland Security, under the Common Weakness Enumeration initiative put out the 2010 CWE/SANS Top 25 Most Dangerous Programming Errors. Most of the errors noted related to web application security programming errors.

  • Failure to Preserve Web Page Structure (‘Cross-site Scripting’)
  • Improper Sanitization of Special Elements used in an SQL Command (‘SQL Injection’)
  • Buffer Copy without Checking Size of Input (‘Classic Buffer Overflow’)
  • Cross-Site Request Forgery (CSRF)
  • Improper Access Control (Authorization)
  • Reliance on Untrusted Inputs in a Security Decision
  • Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)
  • Unrestricted Upload of File with Dangerous Type
  • Improper Sanitization of Special Elements used in an OS Command (‘OS Command Injection’)
  • Missing Encryption of Sensitive Data
  • Use of Hard-coded Credentials
  • Buffer Access with Incorrect Length Value
  • Improper Control of Filename for Include/Require Statement in PHP Program (‘PHP File Inclusion’)
  • Improper Validation of Array Index
  • Improper Check for Unusual or Exceptional Conditions
  • Information Exposure Through an Error Message
  • Integer Overflow or Wraparound
  • Incorrect Calculation of Buffer Size
  • Missing Authentication for Critical Function
  • Download of Code Without Integrity Check
  • Incorrect Permission Assignment for Critical Resource
  • Allocation of Resources Without Limits or Throttling
  • URL Redirection to Untrusted Site (‘Open Redirect’)
  • Use of a Broken or Risky Cryptographic Algorithm
  • Race Condition

Mar 14 2010

Zombie Code

In this conversation tweet snippet I rant about dead code when someone noted that in a Murphy’s Law sort of way, you don’t need dead code until you delete it. Thank goodness for version control systems.

Zombie Code

  • @techknow: It is a dead end maintaining dead code, unused, and unreachable code.
  • @archiloque There is something schr√∂dingerian about dead code: it is often unreachable *until* you remove it.
  • @techknow: LOL my question is, if you have dead code in a live site is that considered zombie code or sleeper cell code?

Here I question how evil Google really is when a friend warns me that whatever you say about Google may be used against you by going viral. Google is big brother and it’s CEO thinks we can place our trust in it before our governments. I can’t wait until Google hires Hilary Clinton as the Senior Vice President of the Division of State at Google.

Indexable

  • @techknow Google, if you are not evil why you have to make that your motto? Who are you trying to convince?
  • @vladgur: Don’t hate Google on an indexable medium.
  • @techknow: Good advice, Google’s cache does not forget.

Spaghetti Code is when the code is so convoluted that it’s code path resembles a plate of entangled spaghetti. Here I rant about working with code base that smells like a bad plate of spaghetti.

Code for Dinner

  • @techknow: It is possible to make Spaghetti Code out of Obeject Oriented Programmmmmming. Om nom nom.
  • @mcory1: Possible? Heck, its pretty easy sometimes, even if you know what you’re doing ;)
  • @techknow: I’m working on some code that looks like a cross between Spaghetti Code and Lasagna Code. I need a bottle of wine to digest/debug this.

Chat Roulette is one of those ideas that are so simple that they are genius. Here a friend and I compare and contrast between Chat Roulette and the MTV television show Jersey shore.

Jersey Roulette

  • @techknow: MTV or VH1 should do a reality show based on chat roulette.
  • @jzy: It’s called Jersey Shore.
  • @techknow: LOL from what I have seen of Jersey Shore, I would think they used chat roulette to cast the show.
  • @jzy: I was just joking of course, no offense to Chatroulette.
  • @techknow: All kidding aside, I think chat roulette is a great idea. It reminds me of the early days of Twitter, I wish they had an open API.

Nov 7 2009

Retweet October 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

Sep 10 2009

World’s Most Famous Developer Excuse

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

You Break It, You Buy It


Aug 22 2009

Songs in Code

Programming related hashtags don’t make the top trend on Twitter. But last Friday night, when most people are out except geeks, the hashtag #songsincode made it to the top trends on Twitter. As of today, here some of my favorite songs in code.

Songs in Code

  • @juixe: if(self.getLikes().contains(BIG_BUTTS) && !self.canLie()) {other.getBrothers().deny(false); you.getFace().add(ROUND_THING); you.getSprung()} #songsincode
  • @techknow: Rhythm instanceof Dancer == true #songsincode
  • @techknow: 2.times do we_will end; rock_you; face :has => ‘mud’; disgrace you, big #songsincode
  • @anteaya: if “its” === 1999 then party; end #songsincode
  • @cessor: for(int i = 99; i >= 0; i–) { Bottle b = _bottlesOfBeerOnTheWall[i]; b.Pass(); } #songsincode #CSharp
  • @seeflanigan: Love.is_a?(Battlefield) => true #songsincode
  • @stewdio_org: return “that’s” + ( name.indexOf([ “girl”, “stacey”, “her”, “jane” ]) > 0 ? “” : ” not” ) + ” my name” #songsincode #tingtings
  • @malvim: try { me.go(“rehab”); } catch { return “No, no, no!”; } #songsincode
  • @bricriu: if (self.go() { return new Trouble() } else if (self.stay()) { return new Trouble().intValue() * 2} #songsincode
  • @projektdotnet: int main(void){get_your($body_beat); let_your(blood_flow); return 0;} #songsincode
  • @NescioPhone: try { margaritaville.Resolve(“Lost”); } catch (Exception woman) { Trace(this.Fault); } #songsincode
  • @brotzeitbrettl: for(int i=0; i==0; i=1) { we.celebrate(); oh_yeah.allright(); dancing.stop = false; } #songsincode
  • @chiihime: foreach (night in myDreams) { me.see(you); me.feel(you); }; #songsincode
  • @joestump: if (IN_YOUR_ARMS && TONIGHT) { die(); } #songsincode
  • @brentgarner: if($theEnd){$loveYouTake = $loveYouMake;} // #songsincode #beatles
  • @stewartyu: while(money++) { problems++; } #songsincode
  • @dustinfineout: if (time.equals(‘hammer’)) { this.touchable = false; } #songsincode
  • @kevinwo: hold($me, $close++, $tiny_dancer); #songsincode
  • @llemirtrauts: for(var oclock = 1; oclock <= 12; oclock++){rock();} #songsincode
  • @abachman: you.dance if you.want_to?; #songsincode
  • @dbrady: i == sky << eye; i.looking!(@you); i.authorized?(your.mind, :read) == true #songsincode
  • @zarkon: if (you.loves(somebody)) { them.set(free); } #songsincode
  • @llemirtrauts: @paynen [money, show, getReady, goGoGo].forEach(function(value, key) {key + for(value);});!stepOnMy(blueSuedeShoes); #songsincode
  • @jonrimmer: x = ‘Umbrella’; you.Permissions[‘StandUnder’] += self.GetPossession(x + x.Right(4) + x.Right(4) + ‘eh’ * 3) #songsincode
  • @jverdi: while(true) {if(!this.touch()) {echo “can’t touch this”;}}#songsincode
  • @tiemez: while(false){ self.giveYouUp(); self.letYouDown(); self.runAround(); self.desertYou(); } #songsincode
  • @mikemangi: function iWant(){ $rocknroll=’allnite’; $party=’everyday’; keepon($rockn); } #songsincode
  • @librarythingtim: if(!woman) { cry = false; } #songsincode
  • @motherwell: if(you.think(sexy) == true && you.want(myBody) == true ) { you.tellMe(so) } #songsincode
  • @TjoosDude: me.see(you.watch(me.watch(you))); #songsincode
  • @cameronhunter: (function( you ){ return you.getLove().matches(/bad medicine/) })() #songsincode
  • @tower10: @paynen function () { walk(this).way(); talk(this).way(); } #songsincode
  • @eviltabbycat: public interface egyptian {public void walk();} #songsincode
  • @frenchs: int *chicks = (int*)malloc(sizeof (int)); int *money = null; free(chicks); #songsincode #rusty_c
  • @joestump: if (HUMPTY_DANCE) { define(‘TRANCE’, true); do_the_hump(); } #songsincode
  • @paynen: (girls == boys).like(girls.do(boys.like(girls.do(girls.like(boys)))) #songsincode
  • @beenewilliamr: dc -e'[dsm1laxsr]sj[2/ljxlcxq]st[3*1+ljx lcx]sy[d1=qd2%0=td2%0!=y]sc[100P]sw[0P] se[q]sq[d1700!>qdlm%d0=w d0!=esr1+lax]sa28lcx’ #songsincode
  • @skatterbean: if not self.check(): self.wreck() #songsincode (thanks do @dreid for the bug fix)
  • @frenchs: if(!roxanne) { self::turnOnLight(self::RED); } #songsincode
  • @eegiffin: class HotelCalifornia { void checkOut () { canLeave=false; } } #songsincode
  • @ald: try { Britney.Sing(); } catch (Exception ex) { throw new Exception(“Oops”); } #songsincode
  • @herlifeinpixels: while you.find(me, indaclub): me.sipping(bub); if isinstance(you, sexylilthug): you.need = me.got; #songsincode
  • @dhinojosa: assertTrue(heat.isOn()) #songsincode #glennfrye
  • @llemirtrauts: [].push(“ah”).push(“good”).push(“real good”);#songsincode
  • @ara_p: roof.set(“fire”, true); #songsincode
  • @proxymoron: if(wantTo) { we = dance(); } friends = !dance(); if(friends != dance()) { we.remove(friends); } #songsincode

For some unexplainable reason, I found a lot of developers tweeted/coded the song Dude (Looks Like a Lady) by Aerosmith.

Dude (Looks Like a Lady)

  • @davglass: var Dude = new Lady();#songsincode
  • @jrconlin: @davglass Shouldn’t that be: (Lady) new Dude; ? #songsincode
  • @Slow3000: dude.setLook(Looks.LADY); #songsincode
  • @krigsi: LooksLike(“Dude”,”Lady”) #songsincode
  • @ptone: import dude as lady #songsincode
  • @clindh: looks == (lady)dude; #songsincode

I found these three variants of Jay-Z’s song 99 Problems interesting.

99 Problems

  • @brotzeitbrettl: echo count($this->problems) == 99; foreach($this->problems as $p) { echo ($p instanceof Bitch) == false); } #songsincode
  • @peterc: Okay, just one more: # problems.size == 99 && !problems.include?(“bitch”) #songsincode
  • @tome: en(problems) == 99 and “bitch” not in problems

Some songs, in code, by Michael Jackson.

RIP MJ

  • @techknow: dianna.setDirty(true) #songsincode
  • @pud: If (BillieJean.is != my.lover) { BillieJean.justa = ‘girl’; i = 1; } #songsincode
  • @RobertFischer: !my.isLover(billyJean) && billyJean.claims(my.theOne) && !my.isSon(theKid) #songsincode
  • @krigsi: if($Annie = ‘OK’) { SmoothCriminal(Hit) } #songsincode