“Beware of bugs in the above code; I have only proved it correct, not tried it.”(Donald Knuth, 1977)
“It is practically impossible to teach good programming style to students that have had prior exposure to Basic; as potential programmers they are mentally mutilated beyond hope of regeneration.”
(Edsger W. Dijkstra, 1982)
“The question of whether computers can think is like the question of whether submarines can swim.”
(Edsger W. Dijkstra)
“The use of COBOL cripples the mind; its teaching should therefore be regarded as a criminal offense.”
“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.”
“Software suppliers are trying to make their software packages more ‘user-friendly’… Their best approach so far has been to take all the old brochures and stamp the words ‘user-friendly’ on the cover.”
“Never trust a computer you can’t throw out a window.”
“Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.”
“Computers are like bikinis. They save people a lot of guesswork.”
“No matter how slick the demo is in rehearsal, when you do it in front of a live audience, the probability of a flawless presentation is inversely proportional to the number of people watching, raised to the power of the amount of money involved.”
“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.”
Walking on water and developing software from a specification are easy if both are frozen.
(Edward V Berard)
"If you want to set off and go develop some grand new thing, you don't need millions of dollars of capitalization. You need enough pizza and Diet Coke to stick in your refrigerator, a cheap PC to work on and the dedication to go through with it."
Software and cathedrals are much the same - first we build them, then we pray.
Seth Godin’s blog is one of those that I religiously follow. He is a great marketing guru, wrote numerous books and speaks at various conferences. He always finds the right way of saying things and he’s simply a great writer.
If you haven’t already done so, add his feed to your feed reader. You won’t be disapointed.
For example, here is Seth’s post for today. Very insightful.
The telephone destroyed the telegraph.
Here's why people liked the telegraph: It was universal, inexpensive, asynchronous and it left a paper trail.
The telephone offered not one of these four attributes. It was far from universal, and if someone didn't have a phone, you couldn't call them. It was expensive, even before someone called you. It was synchronous--if you weren't home, no call got made. And of course, there was no paper trail.
If the telephone guys had set out to make something that did what the telegraph does, but better, they probably would have failed. Instead, they solved a different problem, in such an overwhelmingly useful way that they eliminated the feature set of the competition.
The list of examples is long (YouTube vs. television, web vs. newspapers, Nike vs. sneakers). Your turn.
This is a problem, which can be easily solved by children before
entering elementary school. If you want to give it a try, please forget everything you have ever studied. Here it comes:
8809 = 6
7111 = 0
2172 = 0
6666 = 4
1111 = 0
3213 = 0
7662 = 2
9312 = 1
0000 = 4
2222 = 0
3333 = 0
5555 = 0
8193 = 3
8096 = 5
7777 = 0
9999 = 4
7756 = 1
6855 = 3
9881 = 5
5531 = 0
2581 = ?
Can you solve it ?
According to Silverlight Development Team Leader, Scott Guthrie, the next Silverlight release is planned for 2009. The new Silverlight 3 will bring in a lot of new features and cool stuff. Here is a small list of the most important new features :
- New media enhancements (including H.264 video support)
- Major graphics improvements (including 3D support and GPU hardware acceleration)
- Application development improvements (including richer data-binding support and additional controls)
- The possibility for a Silverlight 3 application to run outside the browser
On the Financial Times’s blogs Tony Barber wrote this article about his recent experience of machine translation. After hearing a recommendation that bloggers should “try to use computer-generated translations” to provide foreign language versions of their own blogs he decided to see for himself and he put Google Translate to the test.
One section that was especially funny was taken from a Polish Newspaper and translated into English using Google Translate it says,
“A sign of the collapse of the French culture of the restaurant is visible on the streets of Paris rash of quick-service bar, offering generally pogardzane a few years ago and cheeseburgery hamburgers.”
Cheeseburgery Hamburgers — brilliant!
Within a few moments of President Obama being sworn in, a new whitehouse.gov was revealed. The new site looks great, and promises greater transparency about the actions the american government.
Speaking about transparency, check out its robots.txt file, in entirety:
Compare this to the robot.txt from Bush's era… I’ll let you draw your own conclusions.
Want to call a meeting today?
Then first, stop and consider the hourly cost of the people that will be attending your meeting. You'll realize quickly that calling a meeting is very expensive since no productive work is done during that time.
It's important to ensure that every person present and every minute of your meeting adds value. It’s equally important that your motivation for calling this meeting is justified and need a consensus of everyone attending. Don't invite people who won't participate but will simply report back to their boss or team (sending a copy of the meeting minutes by email will be a lot more effective). Also, don't call a meeting to tell people things that could be communicated by email or memo.
In fact, you should only call a meeting when actual decisions needs to be taken or something really needs to be discussed live with the attendees.
Then when you finally decide that you need to hold your meeting, make sure that:
- You are prepared. People don’t like seeing the main speaker confused or ill-prepared.
- You assign someone to the note-taking task. Everyone else can then actively participate, knowing that the full meeting notes will be emailed to them later that day.
- You verify that everyone present has a good reason to be present.
- You keep it short and sweet. A long, boring meeting is useless and energy-draining. The most effective meetings I've seen are the daily stand-up meetings in the Agile Methodology. They typically last from 5 to 15 minutes and still manage to get a lot done in that period of time.
A man sat at a metro station in Washington DC and started to play the violin; it was a cold January morning. He played six Bach pieces and his performance lasted about 45 minutes. During all that time, since it was rush hour, it was calculated that thousands of people went through the station, most of them on their way to work.
Three minutes went by and a middle aged man noticed there was musician playing. He slowed his pace and stopped for a few seconds -- then hurried to meet his schedule.
Then, maybe a minute later, the violinist received his first dollar tip from a woman who threw the money in his violin case and, without stopping or looking at the musician, continued to walk.
A few minutes later, someone leaned against the wall to listen to him, but the man looked at his watch and started to walk again. Clearly he was late for work.
The one who paid the most attention was a 3-year old boy...
His mother tried to rush him, but the boy stopped to look at the violinist. Finally the mother pushed hard and the child continued to walk turning his head all the time. Something interesting is that, every single time a child walked by the musician, he or she tried to stop and watch. And every single time, a parent rushed the kid away.
Some time later, a lady stopped and gave the musician a long hard look before walking on. It turns out that she didn’t even notice the music. She were trying to figure out what he was doing there, how does this work for him, can he make much money, would it be better to start with some money in the case, or for it to be empty, so people feel sorry for him? She was analyzing it financially.
In the 45 minutes the musician played, only 6 people stopped and stayed for a while. About 20 gave him money but continued to walk their normal pace. He collected $32. When he finished playing and silence took over, no one noticed it. No one applauded, nor was there any recognition.
No one knew this but the violinist was Joshua Bell, one of the best musicians in the world. He played one of the most intricate pieces ever written with a violin worth 3.5 million dollars.
Two days before his playing in the subway, Joshua Bell sold out at a theater in Boston and the seats averaged $100.
This is a real story. Joshua Bell playing incognito in the metro station was organized by the Washington Post as part of an social experiment about perception, taste and priorities of people. The themes were: in a commonplace environment at an inappropriate hour: How do we perceive beauty? Do we stop to appreciate it? Do we recognize the talent in an unexpected context?
One of the possible conclusions from this experience could be:
If we do not have or take the time the time to stop and listen to one of the best musicians in the world playing the best music ever written, how many other things are we missing?
Want to be really innovative? Notice what's going on right in front of you and appreciate it.
I’m back from my little vacation and I just found a great post on managing teams of developers, programmers and others geek-type employees. I think the author is right on point and I agree with him on everything.
Here are my favourites from his post:
Try to measure productivity in output, not in hours.
Geeks automate. Geeks script. Geeks compile. They summon computing power to get things done quickly on their behalf. If your geek seemingly spends all day on Twitter and Fark but somehow manages to still complete tasks ahead of schedule, your geek is multi-tasking. This is normal.
Assign tasks to the geeks who are most interested in them, not the ones with the most experience.
When geeks are interested, they are passionate. When they're passionate, they learn fast. You'll get more productivity out of an interested geek with no prior experience than you will with a bored drone who's been doing the same thing for the past five years. Sometimes, the one with the most experience is the one that's most interested. In those cases, you are a lucky manager!Segregate the corporate, compensatory hierarchy from the leadership hierarchy.
With a team of geeks under you, one or more will eventually become to go-to guy (or girl) for certain things. You don't usually need to assign a "team lead" - Through meritocracy, the Alpha Geek will emerge. That Alpha Geek may lack seniority, but will have the most influence. It's best to let this occur naturally. It's awkward when the one who best fits the role has to answer to someone else just because they've been around longer. Furthermore, the members of your team will still go to the Alpha Geek because the wrong person has the "Team Lead" label. As Paul Glen puts it: Geeks don't hate hierarchy. They hate your hierarchy.Don't grill us on our resume and work history.
You'll know you've found the Alpha Geek when you see people from your team (and likely other teams) at said geek's desk getting advice or validation on a frequent basis.
You don't hire a geek for what he or she did two years ago. You hire them for what they will be able to do for you now and in the future. Ask your geek to describe scenarios where problems arose that required them to pick up a new skill set to solve. All geeks worth their salt have stories like that and love telling them.Instead of asking about skills that qualify them for the position, ask about their interest in the kind of work they think they'll be doing.
Remember: Interested geeks work harder. The above requirement will still let you H.R. types ask that oh-so-predictable question: "What is it that you think this company does?" while offering your candidate a chance to really show he or she will be a good match.