Jun
30
2011
In the era of Apple fanboys and opinionated Ruby on Rails developers, it might not be cool to use Microsoft tools and products. It seems that startup will tend to use Ruby over .NET, Google Docs instead of Microsoft Office, OS X or Ubuntu in lieu of Windows. I’ve never been dogmatic about the technology I use. I’m a pragmatic programmer and the fact of the matter is that a large number of computer users still rely on Microsoft products. In the financial industry, Excel spreadsheets are traded like baseball cards. Microsoft realizes that they are not the cool kids in the block, at least amongst Silicon Valley startups, and perhaps that is why the started the Microsoft BizSpark program.
I’ve been one to always chase my customers and users, not trends and fads. That is why, I’ve been a huge fan of Microsoft DreamSpark and Microsoft BizSpark. Microsoft BizSpark is a program that allows small startups have access to many of its products, frameworks, tools, and resources for free.

Microsoft BizSpark Software Download
Through BizSpark you can get access to applications such as Visual Studio 2010 Ultimate, Office for Mac 2011, Microsoft Windows 3.1 through Windows Vista, and much more for free. There is no need for your CTO to look for serial numbers for Windows Server 2008 on Google and warez sites. BizSpark gives you legit licenses to key Microsoft products.
I’m a huge fan of any company that supports startups and software developers in general. I can’t say enough nice things about Microsoft BizSpark, even if they paid me. And not, they didn’t pay me but I am a proud member. I only wish that the Microsoft BizSpark program also included hardware.
no comments | tags: bizspark, dreamspark, microsoft, office, startup, Tools, windows | posted in Programming, Startup, TechKnow, Tools
Jun
28
2011
I love to share solutions to issues I’ve encountered and explaining programming concepts in layman terms. I do it because that is how I learn. As a side effect of the tutorials and blog posts I write, I occasionally get a nice comment from someone that found some article I posted a while back found useful. I love to get those kinds of comments. Off course, I even appreciate the comments that correct my grammar, spelling, or misconception in a post I wrote 2 or 3 years ago. The one comment I usually don’t react well to is the one from some poor developer that sends me his requirements and asks for me to “provide proper solution.” Recently I got one such request via a comments. It stated…
I need to create a single page spreadsheet web application in RAILS which should be exactly like google doc(should not use google docs API). It should have the following features…
The comment went on and on that it should be a multi-user collaborate real time application with authentication, authorization, and hot keys support to boot.
I can relate with programmer stuck with a daunting problem. More than once have I been tasked with problem outside my domain expertise, and even application. I’ve had to walk through end users with problems that are peripheral to the application I was involved with. For example, I’ve had to track problems down due to network issues and security settings on shared drives in client sites because the some server could read files from that location. Like most developers, I’ve posted comments asking for help to blog articles on issues I’ve been stuck on, such as when using a particular version of a web service library with a particular web application server. That said, I’ve never asked someone to provide me a proper solution to a homework or other project.
no comments | tags: comment, google, help, novice, Programming, solution, spreadsheet, tutorial | posted in Programming, TechKnow
Jun
1
2011
Never underestimate your users, if you do you’ll soon hear about it. Software is often built with assumptions about your users. Your user will be an accountant, your user will understand the labels, your user has experience with Excel, your user is this, that, and the other. Never make blanket assumptions of how your software will be used.
There are assumptions built in in every input field and user control element in software. Common assumptions baked in the User Interface of applications is that your users live in the United States, that they have a zip code or a telephone of a certain pattern. I’ve seen problems with file upload mechanisms when users try to upload a 500 MB PDF document and the server crashes, or when a user tries to enter 10,000 character comment and the database truncates 90% of it.
Facebook and Twitter have learned how to hedge users behavior that could lead to problems with limitations. Twitter best exemplifies this by the 140 character limit of each status update and the 2000 limit on the number each twitter account can follow. The 2000 follower limit can be increased but only when at least that many people follow you back. Facebook has a similar hard coded number of friends you can have.
The less assumptions you built into the software, the easier to use it will be. But as you remove assumptions, consider having caps, limits, and restrictions in case you start to have scaling issues.
no comments | tags: caps, facebook, pdf, twitter, users | posted in Programming, TechKnow
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