Davai Blog

The crazy world of 1’s and 0’s

The Inevitable Path of IT, or Is It?

If I had a dollar for every time I saw a mess of an IT infrastructure, I would turn it into a full time job. In the last few years, most of my work involved jumping in to try and save a  company yelling “Help!” because their IT is bleeding money but doesn’t deliver any results, and when I ask how in the world they got to this point, I get a variation of a pattern.

It always starts out as a small initiative to use software for better productivity and the chance to use some cool features. First thing that comes to mind is Excel. The slick little report tool and integrated functions have the pen-and-paper people drooling, but it could be anything. A payroll application, a CMS, or maybe even a custom built tool to do something specific.

Then comes the influx of needs. Whether it’s a start-up starting to grow, or an existing company where someone from the administration saw something on TV where someone used something to do something else and it looked slick. The IT staff, which at this point is a couple of dudes with basic expertise, are flooded with requests to do this, build that. If I had another dollar for every time a client asked me if “we could do it using FileMaker or [insert advertised pre-packaged product name here]” I would double my vacation time every year.

This is when the problems really start to pile up. At first, the IT folks are scrambling to fill needs any way possible. FileMaker to manage client information? Looks doable and quick to put together, so let’s go. Access forms to handle money coming in and out? Why not? If it walks and talks like a solution…

Suddenly everyone has their own little piece of software to do their own little thing, but the needs (and perhaps company) keeps growing. One day, a customer phones in and submits their new contact information (or any other applicable scenario). The IT folks then realize that the information is kept on a number of systems that don’t interact among themselves. This is the “uh oh” moment.

Next comes the total collapse. Requests keep coming in, but everyone now knows that IT is already knee deep in poo poo, and it will only get worse. By now there is usually someone responsible for IT, which means some sort of “unit” or “department” is born. People are unhappy with their existing software because it doesn’t cover newly discovered needs, so they revert back to the old methods of pen-and-paper or basic Excel sheets, which by now have grown to hundreds of sheets in dozens or workbooks interacting with each other through clever formulas.

There is sometimes an extended scene to this horror flick. Upon losing massive amounts of hair due to the growing disaster, IT managers look for a way out, a path of least resistance of sorts, which is where pre-packaged software vendors come in. “Access doesn’t let you create the functionality you need? Buy our product and you are on your way to peace of mind”. The demo always goes great, and managers and CIO’s eat it up. However, everyone later discovers that with scaling and ever changing needs the new software package is becoming obsolete and nobody wants to use it. It winds up collecting virtual dust, if there is such a thing, or a digital stool sample, or… well I can go on all day.

For managers, this is worst than for Greenpeace web developers to discover that googling  hurts the planet.

The temporary peace of mind is quickly fading, and the company is back to the software stone age. But wait, there is a twist! There are enterprise management software vendors with a list of reputable clients ready to sweep management off their feet with a business proposal. Management is desperate, so choices here are limited. Anyone has a pen?

New requirements are satisfied and everyone seems happy now. There is a maintenance fee to maintain that happiness, but by now it definitely seems worth it. Looking at it from the side, however, you see the big picture and it isn’t pretty. A company dependent on ERP software is glued to the upgrade ladder. There is the option of switching software vendors, but guess what? The vendors thought of that and made sure that switching is going to cost an arm and a leg, so the company is stuck paying upgrade fees every time a new version comes out, and there is nothing they can do about it.

Not exactly a Hollywood ending, but can a company rewrite the script? Yes.

The key is to give IT the priority it deserves. Business decisions are made on the fly, and a steady stream of them will cause the IT infrastructure to fall apart. A bunch of suits get into a room for a couple of hours, and afterwards IT is stuck trying to find ways to comply with the “decisions”.

In today’s economy IT is king. Good IT often means competitive advantage, so decision making should be IT driven, and IT should be given the power of veto and ability to mold the “decisions” into decisions that take into consideration the cost and potential future implications.

The problem with that is it clashes with the short term corporate mentality of most companies, especially start-ups. Long term thinking often costs more in the short term, so it is pushed aside to meet deadlines, and that is unlikely to change any time soon. The right hand man of the CEO is the CFO and not the CIO, which means I will always have work waiting for me. If only I had a dollar for every time I saw a mess of an IT infrastructure…

No comments

Rethinking Databases

1NF, 2NF, 3NF. Get through that and you have a well structured database schema. Make it BCNF and now you’re really in business. Years back a developer with normalization skill was in high demand due to the cost of storage space. Split the data into bits and pieces small enough and you are worth your weight in gold.

Things have changed. I can buy 16 gigs of space on a stick for a few bucks. Disk space is dirt cheap, and performance is now the number one priority, yet developers keep going through the motions of normalization.

A JOIN in a query is a heavy operation, and most queries in any complex system have a number of them. Now that space isn’t an issue, a little repetition can go a long way in terms of performance, but it’s hard to let go of thorough normalization. In our eyes it’s a freakin’ religion.

A good idea would be to move some of the operations to the application level. In Java, the ResultSet object is, at its base, an array of objects with a few basic functions. Get this, move cursor there, update that. Why not enhance it? Add methods to sort the data, query the result set, and allow them to interact amongst themselves.

I might pull out a list of clients in one set, a list of products in another set, and create additional sets of clients who bought certain products to be used for whatever purpose I might have in store. Code can be made efficient, which is much more difficult to achieve with a database, and all logic will be executed in the application. The database becomes data storage only.

This would follow the trend to take away responsibility from the database and give it to the program logic. An example of that is the increasingly popular tendency to omit foreign key constraints from the schema. Every time an INSERT, UPDATE, or DELETE is executed, the database must first execute a number of commands in the background if foreign key constraints are present. Eliminating these constraints can greatly improve performance if the integrity of the data is ensured by the application logic.

Until better tools are available to deal with database-application interactivity, developers are stuck trying to find a balance between constraints, normalization, indexing, and application logic when working towards optimal performance.

12 comments

How Great Minds Can Lead To Failure

There is a reason employers often don’t hire overqualified people, especially in the field of software engineering. A person always needs to be challenged, or else they lose interest. It’s like playing a game against the computer and always winning; you get bored pretty quickly.

What’s even scarier is when a person creates a challenge that wasn’t there in the first place. Overthinking is a major reason start-ups fail, and a good example of that is Cuil, the “next Google” of last year. After recently hitting rock bottom, Cuil is quickly becoming a classic example of catastrophic failure that will be examined in marketing classes for years to come.

Everyone points to bad search results, server crashes on the first day, and all sorts of other hoopla as the reasons behind Cuil’s fate, but I have another theory. All of what was said is true, but it all happened because the people behind the product tried too hard.

I remember a few months ago Google went down for a few hours. I was working on something or other and needed to do a few searches. I went on Yahoo and Live but couldn’t for the life of me find anything relevant, and I am talking about stuff I usually find in the top three on Google. I realized then that if anything ever happens to Google we are all doomed, but also that there is room for a competitor to step in and quickly gain market share.

Cuil had the fanfare and a buzz very few start-ups get to benefit from, which makes their failure a real shame, but they have nobody to blame but themselves. Declaring itself Google’s kryptonite wasn’t smart, but the biggest mistake they made was overthinking the product.

People use search engines because they are looking for something and not because they enjoy spending time searching away. If I spend more than ten seconds on Google I get irritated, but Cuil tried to build a “tool” you can use to filter out search results, narrow down, pick and choose, switch categories, and so on and so forth and tic tac tic tac and I’m there more than ten seconds so I give up and google it. I’ll try again if the first result didn’t suit me, but I’m in and out in no time.

Using a search engine is like asking a stranger for directions when you’re in a hurry, and Cuil is the idiot that offers to help you out over a cup of tea and biscuits. MSN Live isn’t doing much better. I have a 12 inch screen on my laptop and I have to scroll down to actually get to the search results. Tic tac tic tac and I’m an unhappy customer.

The people behind the product are brilliant, but they are overthinking.

Cuil would have been much more successful promoting itself as the little train that could, release a simple engine with an algorithm that isn’t half bad, and easily grab a chunk of the market. With the kind of attention they were getting, the web would have been flooded with “they aren’t half bad” instead of variations of “total failure”. Keeping it simple would have been the key to avoiding what are now damaged goods in the eyes of the people.

Bottom line: it is often more difficult to produce something simple.

No comments

The Power of Perforce

I recently had the chance to use Perforce, the source control management system said to be the leader of its field.

I won’t go over all of the features and benefits of Perforce as I am not here to write a book, but instead focus on my personal experience.

First, installation was a breeze. I installed the latest version for FreeBSD 6.1 and it’s a walk in the park for anyone even vaguely familiar with UNIX. A couple of downloaded binaries, a process start, and you’re done. Adding the users was even quicker.

I had difficulty installing the web client, but I am running Vista, so it is most likely my fault. The p4 client worked out fine, and the functionality offered is solid. The list of features might seem overwhelming at first, but if you labor through the learning curve, Perforce is a true beast. If you cling to the command line like there’s no tomorrow, you can use it, but the learning curve is much steeper.

The system is fast due to the interaction of the depot on the server and workspace on the client. Each client keeps and works on the code locally, and the Perforce client synchronizes with the depot on the fly. Checking out or submitting tons files is blazing fast compared to other products out there (uhum… ClearCase).

Another awesome feature that could be extremely useful in large scale development is the submissions of changelists instead of single file revisions. This means that if a bug involved modifying nine different files, you submit all nine files under the same changelist and attach a comment to it for reference. The reason I like this feature is that I can track the progress of a project not by the updates on files, which is difficult to do when you deal with hundreds of them, but instead with changelists, where you can see changes to groups of files for various purposes.

To keep pouring the gravy, you can preview images in the depot through the client, and Perforce supports most image formats, as well as Photoshop and some 3D modeling software files.

Also, the system includes a powerful merging tool. You can resolve modification differences by either letting the system figure it out, or put the two versions side by side and do it yourself. If the changes aren’t overlapping, the system handles it automatically. Otherwise, user intervention is necessary, but the tools are there to make it easy on the developer. I heard this feature is great for project branching, but I didn’t have the opportunity to go into that yet.

The back end database is rock solid as the folks at Perforce have thought of everything. I can’t submit a batch of files until the system makes sure none of them conflict with any changes made by other users. In other systems, a submission gets interrupted when a conflict is detected, but some of the files have already been submitted, creating a mess that’s hard to deal with.

We have had zero file corruptions so far, the system is practically crash proof, and I have pretty much forgotten that I am admin as there isn’t any of that administrative overhead you come across in other systems.

In terms of pricing, the system is available at around $750 per user with an additional $150 for support. Some will say that Subversion is an alternative and it is free, but the documentation is scarce, and if you have more than a few developers using it, you will need to bear the cost of a full time administrator, as well as the time wasted dealing with crashes, errors, and corruptions, so in the end Perforce might actually be the less expensive alternative.

All in all, I am a harsh critic of bad software, but Perforce (the company) built Perforce (the software) from the ground up with emphasis on speed, ease of use, and robustness. Everyone else should be paying attention.

No comments

The SEO Landscape Is Constantly Changing

There was a time when you could stuff your site with white text on a white background and gain the status of SEO guru. There was also a time when you could repeat a keyword a hundred times on one page, with a dozen or so in bold, and gain solid traffic. The people visiting your site could barely understand the text, but who cares? They’re here.

Times have changed, or better yet, they keep changing, and that at an increasing rate. DMOZ doesn’t matter much anymore. The days of paying $100 to get listed in some directory are long gone. In fact, SEO is evolving so fast, between the time an expert du jour writes up an article on best practices and the time that article winds up at the top of the search engine rankings, those practices become outdated.

If you look up SEO tactics on the web, a lot of the stuff you will get is worthless. Link exchanges were hot for a while. Find a site that covers a similar topic and exchange links, thus building link popularity. However, I noticed that recently Google began to penalize this practice, even if some of it is legit. Putting keywords in bold tags is also history, as well as interlinking a bunch of domains together.

Blogs were legitimate traffic builders if done right, but then comment spamming appeared, so the no-follow rule was introduced. I personally got my fair share of Viagra offers when I started. Also, some blogs just copy paste other people’s content and give a link to the original post as if that does any good. Starting a blog is still a solid way of building traffic, but the main purpose of the blog should be to share information. Content is king of the blogosphere.

In the end, a good SEO strategy should be composed of tactics that will outlast a wave or two of changes. If you are thinking long term, don’t take the risk of being penalized for trying the latest tricks. These days, good SEO takes commitment and creativity.

Commitment means doing it right and sticking to your plan. Build traffic with useful content, start a blog and invest the time in it, get people to link to you because it’s worth it, not because you paid them, and so on. It might seem depressing at first as your efforts will produce little results, but if you tough it out, the investment will pay off in the long run. Also, SEO is something you constantly work on as there is no being “done”. The minute you think you are “done” is the minute the competition will start to catch up.

Creativity is what distinguishes the great from the not so great. Here’s an example: forget Google and do your research on the ranking algorithms of Yahoo, MSN, and Ask. Yes, Google owns the competition, but you must play with the percentages. Around 80% of search engine users click on the first 3 search results, with the top spot getting over 50% of the overall clicks, while the second page is there mostly for decorative purposes. Now, Google owns around 70% of the search engine market, which leaves 30% for the other poor saps, but everyone is shooting for that top spot on big G, so why not go for the top spot of the competition instead? With a top 3 ranking in Yahoo you are well on your way to SEO success, Google be damned.

That’s it. I just hope you read this stuff before it is scrap knowledge.

1 comment

Economic Crisis Spells The End For ERP

Everyone is feeling the pinch, even the gray haired dudes in upper management of large corporations. Just ask the CIO’s that work for them. When there is no money to go around, companies cut cost in I.T. mainly because the people making the decisions don’t really understand its importance or what this “Information Technology” stuff is anyway, except that it draws massive expenses on the balance sheet.

Over the years, CIO’s relied on Entrerprise Resource Planning systems to avoid the headaches of splintered systems, but it came at a cost, and by cost I mean the wheel barrels of money folks like SAP were regularly coming by to pick up. Then the economic crisis hit, and of course I.T. were among the first to get their leashes shortened. Today, a CEO catches a CIO in the hallway with a wheel barrel and asks…

- “Where are you going with that?”
- “The SAP guy is downstairs” replies the CIO.
- “Tell him were not home”

…and so begins the movement by companies towards open source. I use visualization for effect, but reality isn’t far from it. CIO’s must now answer for every dollar spent, which is difficult to do due to companies like Google and Shell flaunting their open sourceness.

Aside from that, cloud computing is emerging as the next big thing in I.T. and, if adopted in the right way, can provide the benefits of an ERP system without the massive setup and maintenance costs. That’s bad news for SAP and the gang, and the next move is theirs, but whichever way this thing turns out, it will benefit the industry as a whole. SaaS providers will emerge as industry leaders, and companies like Oracle won’t just decide to close shop, so we should expect something fresh from them as well. The only certainty is that ERP is past its prime.

No comments

Why Cloud Computing Will Succeed

When we turn on the water, we don’t wonder where it came from. We use it when we need it, and turn it off when we don’t. Call it cloud water distribution.

Now replace the water with computing power and you get cloud computing, the future of software distribution. Here’s why we should all embrace change:

  • Bye bye versions: since the software runs on a central server, the specs of the device accessing it is irrelevant, as long as it can access the internet.
  • No maintenance, upgrades, or debugging: as a user you always get the latest version while the vendor does the hard work.
  • Easy scalability: as the computing or infrastructure needs of a company change, so does the money spent on satisfying these needs. No resource gets wasted and no major upgrade cost needed.
  • Focus on the way, not the means: if you set a goal, you can focus on achieving that goal, and not on what architecture needs to be set up for it. Also, sharing resources among factions of the company is simpler.
  • Start-ups and small businesses eat it up: a small or nonexistent setup cost is tempting for a company with a limited budget and limitless needs. As those companies grow, so does the popularity of the cloud.
  • Potential for security: with all of the data in one place, better monitoring and security can be achieved as opposed to dealing with data coming and going all over the place.
  • Efficiency is making a comeback: with a lot of the cloud computing business models based on a cost per usage model, inefficient software will head towards extinction.

The list of proponents for cloud computing is growing, and the constant addition of new cloud based applications will only accelerate the transition.

No comments

Why Cloud Computing Will Fail

It’s all the rage these days. The “cloud” is on every company’s mind, and CIOs are scrambling to try and take advantage of it. Here’s why I think the cloud will blow over and dissipate:

  • Switching is a pain: any established company has an established tech infrastructure, which is usually tailored to some specific business needs, therefore scrapping it would nullify any competitive advantage gained over the years.
  • Fear of dependence: adopting cloud computing means a company is now heavily dependent on a vendor, which means trusting them with privacy and security, continued support, and most importantly to keep showing the love. If the vendor goes out of business, decides to mix things up in their business model, or simply doesn’t want the company’s business anymore, sleepless nights are inevitable, especially since vendors aren’t giving out any guarantees right now.
  • Lack of competition: there isn’t much choice out there when it comes to vendors. Google and Amazon are well known, although Google is a newcomer, but the rest of the field is sketchy. Old school software vendors have the numbers and reputation to keep their customers.
  • The technology and people aren’t there yet: only the big boys can truly afford cloud computing by spending money on needed staff and on upgrading their networks. The rest are simply picking at it, and for them it’s probably overkill anyway.
  • Limited feature list: you can do more with desktop applications than with their cloud counterparts. This is bound to change eventually, that is if cloud lives on.
  • Stubbornness: the big companies are adapting to change with the speed of a flying bullet, aren’t they?

Cloud computing has ways to go before being welcomed as the new “it”, but it’s inevitable that in the distant future personal computers will become nothing more than dumb terminals, and networks will replace internal buses, which is why in my next post I will look at why the cloud will suck everyone in.

No comments

Lack of a Standard for SQL

Choose your database vendor carefully, because if you miss, heavy meth users have a better chance at recovery. Building a whole infrastructure on top of the DB will force you to use a vendor-specific version of SQL, so you are officially on the upgrade leash.

A lot of gibberish is said about why the database software vendors don’t adapt a standard, so if you know the basics about databases, look it up and have a laugh. The real reason is simple: a standard means fierce competition to not only go after new clients, but retain current ones, and that’s a 365 day a year task the vendors avoid like the plague.

Switching from one vendor to another, especially for a big company, is as much fun as sitting home alone on Friday night playing Russian Roulette. If the cost of switching is double the cost of upgrading, the CIO will upgrade even while knowing that money can be saved in the long run with a switch, and that’s because short term cash flow is priority one for any company.

The database vendors know that, which is why there is no standard on basics such as date/time data types, indexing (seriously?), and selected row count limit. The scary part is that the problem gets worst as new functionality and complexity is constantly added.

The solution lies in an open source middleware project, MS Access (Jet) be damned. ODBC has been around for a while, but it didn’t ease the pain. UnixODBC looks promising, but they should stop hating Microsoft for a second and work on migration from any vendor. Last I checked, Oracle and DB2 were in on the scam as well.

No comments

Radical Idea for Microsoft: Split the OS Brand

Shampoo makers have been doing it for years. There appears to be dozens of brands on the shelf in any given store, but if you read the back label, you realize that they are all manufactured by only a handful of companies. The competition is an illusion, and the variety allows for better niche marketing.

The Windows brand has taken a serious hit in the last couple of years with the introduction of Vista, and it’s reputation lives and dies by each release. I think it’s time for Microsoft to consider changing up their marketing strategies and take a page out of shampoo manufacturing’s play book.

Others have done it with success. Car manufacturer Land Rover enjoyed it’s solid reputation while being owned by Ford Motors from 2000 to 2008. Ford vehicles have seen declining support among the public, but Range Rovers weren’t really affected.

For Microsoft to pull it off, they need to focus on a specific need of their client base. These days, people own several computers, each having a purpose, and most use them for simple tasks such as writing text documents and surfing the Internet. An operating system such as Vista comes prepackaged to handle anything, but in most cases a lot of the available features are never used.

A bold idea would be to release a low cost stripped down operating system under a different name. Call it “Doors”, I don’t care, but make its retail price under $100 and booting time under 15 seconds. Hardware capabilities have been improving at an astounding rate, but I still have to wait a while for my OS to load just as I did over ten years ago.

Microsoft should overhaul its strategy and go for performance instead of complexity. Take XP, strip it down, make sure it works, and launch it with a new logo. For those who aren’t satisfied with the feature list, there is always Vista and soon Windows 7, but many will live with the basics in return for performance. I know I would on my portable machine.

Due to the lessened complexity of the OS there should be less faults, and XP has been stable for a while now, so there is something to build on. In addition, Microsoft could take credit if the launch turns out to be a resounding success, and start developing various versions and levels of comlplexity in  “Doors” for future releases, creating “competition” for Windows, and competition for everyone else.

No comments

Next Page »