May
24
2011
No matter what your position in an organization, no matter your title, or pay grade you often need to manage those you work with. Sometimes you need to manage your own manager, co-workers, and other resources. You might work with the boss that travels often and consistently sends you notes on features and requirements right after client demos. Maybe you may work with a project manager who keeps hand written half crossed out tasks scattered in a series of prints out. Worse yet, you work in a team that delegates work by forwarding and replying to essay length emails.
Highly effective development teams have a series of habits that they routine practice including using a version control system and bug tracking software. As an individual contributor, you also need to develop habits to help you team. Here is a short list of habits you can develop to help you succeed in a team environment.
- Manage tasks in a single document.
- Keep lists of work items.
- Keep correspondence with other short and simple.
- When email people about separate issues, separate issues in different bullets or different paragraphs.
- When describing a problem, list possible causes and solutions.
- Use screenshots and image editing software to help you illustrate your point.
- Use screenshots and image editing software to help you illustrate your point.
There are a multiple tools to achieve this, you can use Outlook Tasks, Google Documents, Microsoft Project. An effective organization has every member using the best tools available to organize their tasks and those of the people around them. The key to success is to make it easy for yourself and those around you to achieve your goals.
no comments | tags: leadership, organization, outlook, process, tasks | posted in Team, TechKnow
May
23
2011
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.
Software Development
- Thread.sleep(28800000);
- You don’t need a PHD in PHP to be a great Web Developer.
- Not Another Expression Language. There should be one expression language to rule them all.
- I am not afraid of rolling up my sleeves and debugger.
- It’s a thin line between feature and bug.
- Code is a blunt instrument.
- We ain’t afraid of no code block.
- Web designers are modern day alchemists.
- If developers are a dime a dozen, then product idea people are a silver dollar a dozen.
- I don’t read romance novels or non-fiction before going to bed, I read programming language technical specifications.
- New Name For Rock Band: Death By SQL Injection
- Let there be code.
- Just code it.
- Code the future.
- Crack the code.
- Don’t be a code donkey.
Team Dynamics
- Are you a value creator, subtractor, divider, or multiplier?
- AWS failure is the perfect storm to the cloud.
- Stress is excess, we don’t need it in our lives.
- You can’t buy the scrappy mentality.
- Scale your thought process.
- The right time is right now.
- Strive to do what you do well better.
- People don’t scale and multi-task as well as computers do.
- Give a man a thought, and he will think for a day. Teach a man to think, and he will think for himself.
- You don’t want someone to reinvent the wheel, you need someone that makes it turn!
- Everyone has great ideas, what is needed is great execution of great ideas.
Product Placement
- Is Automattic, the company behind WordPress, working on an ad network? With millions of WP blogs out there, maybe it should.
- Jiffy Lube peeps are great at up selling you on add-on services.
- Forget HAL 3000, I’m afraid of my iPhone 3000. “I’m sorry Dave, but I’m afraid you can’t do that and I’ve notified the authorities.
- Google announcing that better ads are coming to GMail is like the power company announcing that a better billing system is coming.
- I feel like I get more snail mail spam than email spam. I wonder if GMail can also filter out my snail mail spam.
- If you add up all the zero-day holes in Adobe products, you get a lot of days spent patching and upgrading buggy software.
The Valley
- Welcome to the Blubble 2.0.
- The trouble with the blubble.
- I think we are in a #bubble when a website for listing free crap is valued at multiple millions of dollars.
- Don’t pivot while you pitch.
- How do you monetize the bubble?
- Ah, Silicon Valley, the land of vanity startups, founders with ADD, fan boi VCs, me-to products, one trick apps, companies on pivot mode…
- Bubbles are like snow flakes, there are no two alike, so we can conclude that this tech bubble I’d different from previous ones.
General Technologist
- If Arthur Miller were alive today he would have written a sequel to Death of a Salesman called Death of a Social Media Marketing Ninja.
- You know your service or product is successful if GOOG wants to buy you for a billion dollars, FB copies you, and if MSFT doesn’t get it.
- Any lawmaker who proposes any bill related to technology should be able to correctly setup a wifi router, Facebook privacy settings, …
- My iPhone knows too much about me. I think I want a dumb phone, instead of a scheming evil genius phone that is tracking my every move.
- If TinyUrl was a utilities company it would force upgrade everybody to use smart grid meter and charge us extra to use green friendly links.
- Twitter management seem to play musical chairs with titles. It seems like everyone at the company has had a turn at being CEO.
- There are different degrees of open in open platforms, from marketing buzzword open to data portability open.
- What I learned by reading Rework by 37signals: Emulate drug dealing celebrity chefs and up sale the by-products of what you do.
no comments | tags: 37signals, adobe, aws, blubble, code, debugger, facebook, gmail, google, microsoft, PHP, Programming, spam | posted in Startup, Team, TechKnow, Tools
Apr
29
2011
Can you spot the infinite loop in the following snippet of code?
int i = 0;
{
i++;
}while(i < 5);
The above code caused a critical bug in a application I was working on. At first sight, the code looks okay, especially since it compiles. It’s a do-while loop with a condition that seems that it would break when the variable i is equals or greater than 5. The variable i is set and incremented correctly but unfortunately this causes an infinite do nothing loop. Did you spot the problem? An important keyword is missing from the do-while loop, the do. Let me add comments to explain each statement as the compiler sees it…
// Initialize the variable i
int i = 0;
// Create a block and increment i by one
{
i++;
}
// Infinite loop with an empty code block
while(i < 5);
The problem is that the while loop can have zero or one code block of statements (where a single statement can be a code block). If the state of what you are testing in the condition does not change because of the test, or because of the statement you are looping over, then you have an infinite loop. In the above code, because of a badly written do-while loop, this loop does not have statements that update the variables in the condition and so this while loop never breaks out.
The correct code would be the following…
int i = 0;
do {
i++;
}while(i < 5);
no comments | tags: bug, error, infinite, Java, loop, probrammging | posted in Java, Programming, TechKnow
Apr
28
2011
Google Buzz is more Safe for Work (SFW) than Facebook in the sense that it looks like a a typical GMail account and the URL to access it also resemble GMail’s URL. Employers don’t typically block personal email access but do block networking sites. Its so easy to switch between Google Buzz and GMail.
Gutenberg died broke, his problem was that when he invented the printing press he printed the Bible. Ben Bernanke learned that lesson and instead of printing religious tomes he prints cold hard cash.
Between easy and hard, you’ll see a lot less competition if you go for what is difficult and you’ll see a lot more adoption if you make easy what was once hard.
First they seized crack warez sites and I didn’t speak out because I wasn’t a cracker. Then they came for the torret sites and I didn’t speak out because I don’t pirate content. Then they came for offshore online gambling sites and I didn’t speak out because I don’t play poker. The they came for my blog and there was no one left to speak out for me.
Reading about the recent Dropbox security issue and I realized that I have more valuable and personal information in the cloud than in my home. I have family pictures, calendar events for contacts, tax documents, inner most personal writings and journal entries, and much more on Google Docs, Dropbox, Yahoo Mail, and whatever other cloud service I use. Yet police agencies do not require a warrant to access that information but they do to come into my home and conduct a search. The search warrant is now obsolete. Google and other online services has made the search warrant obsolete.
It was recently reported that the US State Department is developing a mobile phone panic button, probably in the form of an app, for pro-democracy activists in foreign countries to erase a phone’s contents when they have are detained by the secret police. At the same time, the US Department of Justice and California’s Supreme Court have upheld the right of police to search the contents of a detained person without being arrested or having a warrant. Police are using digital equipment that can read all of the data in a phone in minutes at the point that police has stopped someone. Welcome to the future of pre-crime proactive policing.
no comments | tags: buzz, cell, dhs, doj, google, mobile, phone, police, precrime, privacy, technology, warrant | posted in Programming, Social, TechKnow, Tools
Apr
27
2011
In Java, the primitive value of type char can be converted to the primitive int. An an integer within the range of a character can be converted to a char. For example, the ASCII character code for the character A is 65, for B is 66, etc. Because of a char value can be interchanged with the integer value that represents its character code I can create a loop that starts from the letter A and stops at the character Z and I increment one character at a time. Here is the code snippet to print each letter of the alphabet in a loop.
for(char c = 'A'; c <= 'Z'; c++) {
System.out.print(c);
}
1 comment | tags: ascii, code, Java, loop, snippet | posted in Java, Programming, TechKnow
Apr
25
2011
In Java, object coercion from one type to another can led to interesting results, and possible bugs when done implicitly. For example, a common type conversion bug is when you have a method that accepts a primitive boolean but pass it an an object of type Boolean. If the object is null, the conversion from a Boolean object to a boolean primitive will cause a NullPointerException.
But mixing between Strings, characters, and integers can result in an interesting mix of results. For example, I think that any Java developer would have some doubt in describing the output from the following Java code.
System.out.println("Hello, "+(char)('A'+1));
System.out.println("Hello, "+('A'+1));
System.out.println("Hello, "+'A'+1);
The one rule to remember about coercion is that if you are performing a calculation with two different types, the least accurate type will be coerced or converted to the more accurate. In this case, adding a character and an integer will result in converting the character to the corresponding integer value before performing the addition operation. Because the integer equivalent of the char value ‘A’ is 65, then ‘A’+1 = 66. When adding between a string, character, and integer the character and integer are converted to strings because concatenating the values into a new string.
"Hello, "+(char)('A'+1); // Hello, B
"Hello, "+('A'+1); // Hello, 66
"Hello, "+'A'+1; // Hello, A1
no comments | tags: bug, code, coercion, conversion, nullpointerexception, puzzler, type | posted in Java, Programming, TechKnow