The online home for Greg Leedberg, since 1995.

Saturday, February 25, 2006

Leedberg's List: Cygwin

Leedberg's List is my own little soapbox where I can voice my opinion on a subject that, I think, I'm pretty darn knowledgable about: computer software. In this installment, I'd like to highlight a program which may not be required for every computer user, but for a segment of the population, it completely changes the way you use your computer. The newest addition to Leedberg's List is Cygwin.

Cygwin, fundamentally, is just a DLL -- a library of functions available to Windows program. That doesn't sound so exciting. The key to Cygwin is what functions it provides. Cygwin is an implementation of POSIX functions for use in Windows programs.

POSIX is the set of system calls that make Unix programs, well, "Unix programs." POSIX is pretty much common across all flavors of Unix. By providing a Windows implementation of POSIX functions, developers can produce programs using the POSIX calls they are used to on Linux, but have the programs running on Windows. Cygwin of course doesn't let you just run a Linux binary under Windows, but it lets source code that's written to the Linux environment be compiled and then run under Windows.

Now that would result in limited appeal, for sure. But the real usefulness of Cygwin is that they've taken a huge body of Linux software, and re-compiled it using the Cygwin DLL, making it available for Windows. Now we're getting somwhere!

When you download and install Cygwin, you have the option of also installing all of the programs Linux users are accustomed to having available. Bash, GCC, and all of the other great command-line utilities that make Linux so great.

Cygwin has even re-compiled the X11 GUI system for Windows, so you can run a large array of Linux graphical programs, such as Emacs and Grace. Lots of Linux programs out there supply Cygwin versions, since in most cases it's so easy to take a pre-existing Linux application and make it work with Cygwin -- thereby making it available to a whole new group of users.

For me, Cygwin has effectively negated my need to dual-boot Linux and Windows. I used to dual-boot the two operating systems because overall I liked the user-friendliness and device support of Windows, but there's lots of software on Linux that I like to use. With Cygwin, I can run Windows and enjoy the benefits of that, while at the same time using most of the software that was keeping me on Linux. Without having to reboot all the time!

Cygwin pretty much provides a full Linux-like environment on Windows, great for people who are used to Linux but also appreciate the good aspects of Windows. Even if Cygwin merely provided the great Bash shell, it would probably make Leedberg's List -- it's orders of magnitude better than the command shell that comes with Windows. But Cygwin goes way beyond that and provides pre-compiled versions of tons of other great Linux program at the same time -- all capable of running in Windows alongside Windows applications. If you've ever liked Linux but had to use Windows, Cygwin is for you.

Labels: , ,

Friday, February 10, 2006

The Significance of A Free Visual Studio

I recently discovered that Microsoft is now providing a free version of its Visual Studio development environment, called Visual Studio Express. In November it will become a $50 product, but considering that the full Visual Studio sells for $1000+, that's still a steal. I'm writing about VS Express because I think it's more than just a company lowering the price of their product, or offering a "light" version of a heavyweight system.

I've used Visual Studio for several years. In college I bought a "student" version of VS (which was effectively the same as the full version, but at a steeply discounted price). Even though I was very much coming from the Linux world at the time, I fell in love with Visual Studio. I generally regard it as one of the best products Microsoft makes -- not that there's much competition for that title. It's a great integrated development environment with some top-notch tools for debugging, GUI building, deployment, and just general code exploration. I've never seen anything from the open-source world that comes matches it, although Eclipse is getting close.

The problem with Visual Studio was that, at the cheaptest, it was $100. For students. For regular people, it was much more expensive. It's a great product -- but not that great. Additionally, it's a product that Microsoft needs people to use. Windows is nothing without good software, and good software is built by good programmers, and good programmers like to code a lot. Pricing a development environment out of the range of most common programmers inhibits the creation of good software. Sure, big software companies will buy all the site licenses they need. But, commercial software doesn't win many peoples' hearts. Some of the most popular software of recent times (Napster, WinAmp, PKZIP, to name a few) was developed initially by "hobbyists", not big corporations.

This situation has always put Windows at a disadvantage --particularly against Linux. Out of the "box", Linux comes with an almost endless supply of development tools. Compilers for almost any language, debuggers, editors, all come standard with Linux. Sure, they may not be quite as good, in my opinion, as what you get with Visual Studio, and they certainly don't work together as well. But, they are free, and they're right in front of you when you install Linux. People will use them. To create innovative software. For Linux. I don't care, but Microsoft surely should. When you install Windows, you get no development tools. There are some free compilers and such available, but they all are pretty bad, compared to either Visual Studio or Linux's tools.

I've always thought this to be an odd situation. Microsoft is almost encouraging people to develop for Linux, or to develop for Windows using tools that aren't made by Microsoft. For most hobbyist programmer, it simply isn't an option to buy a $1000 product, and at the same time it simply isn't an option to not program. Hence, non-Microsoft products will prevail.

It's good Microsoft has made a free/cheap version of Visual Studio. At least, for them it is. It's sort of bad for their competitors. But now the average person can install a high-quality development environment without breaking the bank. And this really does benefit Microsoft in the long term. Sure, they'll make less money per copy of Visual Studio. However, probably more people will use Visual Studio as a result of this, which cements their domination in the market. Also, if people (particularly young students) use Visual Studio at home and learn how to program using it, then that is what they're going to feel most comfortable with if they enter the software industry. This will likely cause more big companies to want to buy high-cost licenses of Visual Studio.

In colleges, there's a definite anti-Microsoft sentiment in computer science departments. Maybe this is partially an effort to fight that. If young people had access to Microsoft tools, they might not view them to be quite as evil.

As disclaimer, I have not used Visual Studio Express yet. I don't know how it compares to the full version of VS I am currently using. I intend to try it out sometime soon, though. At any rate, it's not so much the specifics of VS Express that interest me, but rather the idea of it. Microsoft finally got something right.

Labels: ,

Friday, February 03, 2006

In Defense of Walmart

It's popular these days to bash Walmart. For example, the recent hubub over requiring them to provide health insurance for their employees, or the constant hatred for squeezing out small "mom and pop" stores. A lot of the criticism is probably warranted. Big corporations have a tendency towards imperfection. However, it also seems to have become popular to criticize them, even if it's not warranted. I don't think Walmart is perfect, nor do I think any single corporation needs to be defended by me. But, I think a lot of the issues and complaints surrounding Walmart are actually symptoms of larger sentiments endemic to our society. Personally, I feel a lot of these base feelings are, to be nice, not well thought out. As such, this post is a defense of Walmart -- but slanted towards the "bigger picture" of what battling Walmart on specific issues actually means.

First, recently there has been a complaint involving the fact that Walmart doesn't provide its workers health insurance. The complaint says that this forces workers into either a life of squalor, or that health care must be provided at taxpayer's expense. This, in turn, hurts taxpayers while leaving Walmart with big profits.

If Walmart paid for insurance (which it probably will do soon), that money doesn't just come out of nowhere. Walmart makes its money from selling goods. If Walmart decides to take on a big expense such as insurance, then that expense will be paid for through revenue from selling goods. In order to do this, they have to raise their prices (assuming they want to maintain the same profits they have currently). In the end, consumers will pay for it either way, either through general taxes or through higher prices at retailers. The market is a closed system. Striving to lower taxes will only result in something else being more expensive which was previously funded through taxes.

This really comes down to the question of should an employer be forced to provide insurance for employees? For that matter, should an employer be forced to do anything? I don't think so. I'll come back to this later.

Another complaint: Walmart doesn't pay well, and treats its employees badly. Somewhat like above, this can force employees into a life of poverty -- but this time, maybe not at taxpayers' expense. Moreso, people seem to think this hurts society.

However, Walmart is a private company and can do whatever they want. If they don't want to provide insurance, fine. If they want to give low wages, fine. If people really do have much better options available to them, then they won't work there, and Walmart will go out of business with no employees. Employment within a free market is a two-way benefit. I agree to work for you and you agree to pay me. Either party can get out at will, and so both parties need to be pleased -- and to strive to please the other. Staying in a bad situation is only your own fault. Once again, should an employer be forced to be a good employer, or forced to do anything?

But first, one last complaint. It goes something like this. Walmart enters an area and offers a large selection of products at a very low price, with which small stores can't compete, and so they are forced out of business. This leaves just Walmart in the area.

Walmart only squeezes out little stores because consumers allow it to. If you really value your community more than your costs, then don't shop at Walmart. If the majority of people feel that way, Walmart won't make money and won't survive. There's nothing illegal or wrong with Walmart charging a low price. They can charge whatever they want to. If they really charged too little, they wouldn't survive (If they charged too much, they would probably also not survive!). If they force out smaller stores, it's because they offered something that those stores didn't. If Walmart later on decides to raise its prices more than it should, then another, better, competitor can go up against it, with lower prices. Just like Walmart did with the mom and pop stores. The free market is largely self-regulating in this respect, and any attempt to artificially regulate it (by making low prices illegal?) does a disservice to the ideals of our society.

Along the same lines, this just another instance of times changing. Whenever there are major shifts within our culture, people resist them at first -- because most people don't like change. But times change, and those insitutions of the past aren't necessarily going to be a big part of the future. Witness the current battling in the music industry as CDs and record stores give way to MP3s and online music downloading. Witness the phone industry as 100+ years of telephony infrastructure gives way to cell phones and VOIP. The major players of the past that don't adapt will be replaced with new companies who better understand the current market. And in the future, they too will be replaced.

As I alluded to above, all of these issues really come down to whether or not we should tell companies what to do, in the event that they are doing something we don't like. I would say no. The economy and the market are largely self-regulating. Companies can only mess up for so long. A company that becomes a dominate player with low prices is exercising the American ideal, and providing a good service. A company that mistreats employees is setting itself up to not be a desirable place to work, and so will not have as many possible employees to pick from. A company that gives low prices and then raises them merely creates a situation where another aspiring company can swoop in with legitimate, lower prices. Preventing a company from changing the landscape of an industry is attempting to stop natural progress and development. We gain temporary complacency at the expense of forward movement as a society. The economy is almost a natural organism. It can take care of itself, by and large. We, the consumers, as well as the competing corpoartions, are the "checks and balances".

It's fine -- and healthy! -- to have complaints about Walmart, or any company, and to let them be known. But it's not fine to try and undermine free market ideals and forcibly produce what seems, at the moment, to be an ideal economic environment.