|
|
Go to Computer Stuph Page: 1 2 3 4 5 6 7 8 9
|
Anything Computer Related goes Here |
|
|
|
2009-09-17: Why I Hate Commercial Software
|
Back in the old days (6 years ago) I was a free software zealot. I was very anti-Microsoft, and usually I would try to avoid proprietary solutions on sheer principle. Sure, there were a boatload of solid technical reasons for my decisions, but I'd be lying if I said there wasn't an emotional component to these decisions.
These days I am a lot mellower. I am more of a pragmatist, and I even run Windows on my home PC. (although this was solely because I wanted to run Pokertracker on it) But when it comes to programming, I still just can't stand commercial tools.
The reason is that programming with Open Source (free) software is just easier than doing so with commercial tools. Everything you ever need to know is just laid open with Open Source software. And not just because the source code is open -- it's the entire culture surrounding the tools that makes the experience far more conducive to effective development.
In the commercial software world, however, everything is business-speak and bullshit. As a developer, it is a virtual impossibility to make heads or tails of how to develop for their stupid crap. Right now I'm preparing my software to connect to a Documentum server. I don't currently have access to the server at all, but I thought I'd hit the web and try to get a head start. So I hit their website and go to their developer page:
http://www.emc.com/products/documentum-platform/developer-components.htm
OK. And this is AFTER I dug through their byzantine list of software offerings. Nowhere on this list of developer tools is there any mention of language bindings, platforms, or anything. Are these tools available for the MAC? For the iPhone? Linux? PC? Who freaking knows. What languages can you use with these developer tools? C? ASP? Perl? Python? Who knows.
So I picked what seemed to be the most low-level of the APIs, the "SDK" and clicked the link. From there I was given a bunch of non-specific horse-puckey. However, there was a link to "Descriptive & Technical Info." A PDF datasheet. Hooray! It was two pages, and was full of crap like you see in the attached image. It was full of technical info like how their SDK leads to "Reduced Cost" and "Faster Time to Market."
Fuck commercial software. I am so sick of digging and digging and digging and digging to try to find any technical info. And I'm not calling their goddamn number so somebody can try to sell me a fucking SDK. I have been down this road before, and the last time I tried calling a commercial company's "developer hotline" some jackass in the call center sold me a fucking VB COM component -- when I explicitly stated I was writing a C++ app in Linux. (I ended up writing straight to the socket on that project.)
And the "developer community" for this tool is just as bad. The only references I can find to people accessing this thing under PHP are instantiating COM components (i.e. Windows Only) The hilarious thing is that in all of the cases I've found where people are expressing difficulty accessing Documentum from PHP, nobody even bothers to ask on which platform their PHP installation is running. In that world, EVERY computer is running Windows, of course, and it's not even on the radar to consider any other possibility.
Permalink to this post.
|
|
|
|
2007-05-11: Handheld Redux
|
Despite occasional rants, I am actually a reasonably pro-Microsoft guy. While I may dislike some of the effects that their practices have on the industry, it is hard for me to ignore the high quality of much of their software. But their efforts in the handheld market are almost diabolically bad.
There have been several instances in my career where I picked a Microsoft solution because I felt it was the safest solution. Ironically, it is exactly in those instances that Microsoft turned out to provide not only an inferior solution, but a solution that I am convinced was designed by a sadist bent on glibly screwing the hapless Microsoft fuckwits that have no other choice.
I have several projects in the pipe that all coincidentally require handheld software. I have spent the past week laboriously digging through the mess that it the handheld world. The current state of handhelds is remarkably like the early mainframe days of computing. Everyone's everything is proprietary, binaries don't work across machines, and hell, your code doesn't even compile well across platforms. Java? Haha. I laugh at you. The reality is that picking a handheld is like picking the Wii vs. the PSP.
During this process I have been leaning pretty heavily towards a Windows Mobile platform. When I checked out pda-programming forums, the Windows boards had n^2 more posts. The Windows platform was consistent, had only one viable development tool, and could be trusted to survive.
Palm? Palm split into two...you had the people with the name rights to "Palm," and the people who owned the PalmOS source code...The Palm (TM) people may be moving into Windows Mobile devices, and the PalmOS was bought by a Japanese firm called Access who renamed it to Garnet, and while they're releasing it for now, will ultimately be retiring it for their own Internal OS...In other words, PalmOS is deader than Coke.
And then you have good ol' Linux. Linux on the handheld is just like Linux on the PC. It's a big mess of dudes hacking together shit. Linux doesn't even have a foothold in the market, and it's already fragmented. You have GPE, you have QTopia (PDA edition), you have QTopia Core (framebuffer only), and you have Opie (A fork of QTopia's GPL code). This is enough to scare away even the most stalwart amongst Linux dudes.
But the thought of Windows Mobile makes me ill. I'm sure it's better than CE, but it's an all-or-nothing endeavour. If I use Windows Mobile as the handheld, I cannot sync with Linux. I cannot develop under Linux. I cannot do anything with any machine I am familiar with. Unless I have Developer Studio installed on the machine, unless I have the installed commercial tools, I cannot write software or even communicate with the device.
And it goes back to the command line. It goes back to SSH. It goes back to the fact that once I get a command prompt on a Linux box I can do anything. Once I get that command prompt I have complete and total control over the machine.
So I ordered the TDS Recon from SDG Systems. Within two hours of receiving the unit, I had an SSH connection to it, and had compiled a C++ app (with GUI) onto it.
I have SQLite. I have vi. I have total control over the system. I don't have wizards, or high-level languages, or abstracted bullshite...But I have almost atomic control over the device. If there's an API I need, I know that I could port it over given a bit of time. Nothing is impossible.
If you are a programmer who is familiar with Linux, and are looking to delve into PDA programming, I recommend you contact SDG Systems. While the TDS recon device is a bit pricey, I guarantee that this company will impress you. When I called their number I spoke to a developer. The guy on the phone knew the hardware, he knew the software, and he spoke candidly about its strengths and limitations. I was on the phone with a guy who not only would, but *could* solve any problem I had. This, my friends, is the meaning of support. Some random script-jockey at Microsoft is not support. Support is being able to talk to a talented developer on the phone for the low-low price of giving them business.
Linux isn't socialism, it is good ol' fashioned capitalism.
Permalink to this post.
|
|
|
|
2007-04-20: Microsoft Culture
|
Prologue:
A good friend of mine convinced me to pull this post down a few months ago. "You might want to consider who may be Google-ing your site," he said. Besides potentially pissing off other people in my industry, it directly insulted other "computer types" with whom I had worked. At this point, I have more enemies than friends in "the biz," and it would be dishonest for me to express anything other than disdain for their total inability to write quality software.
I was berating my poor wife with tales of my day at work and the term "Corporate Culture" came up. I was explaining that different companies have different cultures, and you can see common traits in the employees of these companies. I was explaining about how the employees of my company were very reactionary and quick on their feet due to being employed at a disaster response company.
Then I read some random article about Microsoft, and I thought about the difference between Microsoft guys and Unix guys. There is a huge rift there, and the strange thing is that Microsoft has tons of great software for solving problems, but it is the Microsoft Culture that makes "Microsoft Guys" just...Suck...When compared to Unix guys.
First of all, let me tell you something about computer guys. There are TONS of guys out there who are just barely above power-user who pretend to be the masters of computers. I would go so far as to say that 80% of the people in this industry have no business doing the job they have. It is a very bad situation. I deal with utterly unqualified people on a regular basis, and I have to grin and bear it when they spew jargon out to impress the non-technical in the meeting.
It is almost impossible for one of these people to develop on a Unix system. If you are a Unix guy who doesn't know his shit...Your system isn't going to work at all. You will not be able to make anything happen. Your database ships without the "-i" flag allowing network connections, your webserver ships with virtual hosts and symlinks turned off, your software ships essentially crippled, and it is up to you to turn these things on. Contrast this with the Microsoft Way which is to turn everything on by default, and let the user turn stuff off that they don't need.
This is how my company ended up with an open relay Exchange Server running before I showed up.
This Microsoft Culture is so pervasive that it is scary. People refer to modern relational databases as "SQL Servers", not understanding that SQL is the language used to access all of these modern databases. To them, the term "SQL Server" is synonymous with any modern relational database. To be fair, Microsoft branded their product "Microsoft SQL Server" to intentionally cause this confusion, but it is scary when you work with professional software developers (who have written books on ASP development, no less!) who have no idea that Oracle, Pervasive, and PostgreSQL all use SQL as their query language.
And Microsoft Office. Oh, that bane, that thorn in my side. First, a disclaimer. Office is a great set of tools. They are highly functional, and are really great little "glue" tools. After years in the Linux environment, one of my coworkers was understandably impressed at the power of Access Linked tables over ODBC. But here's the rub: Office is a set of tools. They are good for solving basic problems. I look at Office kind of like duct tape. When you have a problem with data or documents that you have to fix quickly and without expertise, then Office is a great set of tools. Once your problem domain becomes large, Office should be avoided like the plague. They are utility tools -- not development tools for enterprise applications.
Every dude that uses Microsoft Access fancies himself a computer programmer. Every dude that can write an Excel macro imagines that he can run a company off of it. The reality is that large-scale processes are complex, and the tools available in Microsoft Office are woefully inadequate for solving any but the most basic of business problems.
If you disagree with me, you are a fucking scrub.
So now we saunter away from the Office Geeks and move into another world of the Microsoft Culture. That world of the VB (Or ASP) Guy
This guy thinks he's a programmer, but is not. This guy looks at every problem as a way to combine existing (3rd party, usually commercial) components into a solution. This guy doesn't write code that is algorithmic, or using data structrures, but rather this guy uses code to simply glue together input, 3rd party components for processing, and (usually) 3rd party components for output. This guy usually uses the word ".NET" as a noun, verb, and adjective.
This guy uses bound controls in VB, this guy can't parse text, this guy would never open a socket, this guy would never consider reading the spec on a file format, this guy DOESN'T PROGRAM. This guy fumbles and fights with components that other people have written. This guy is the bread and butter of the Microsoft Culture.
There are great tools on the Windows platform. ASP is great, C++/QT is great, and Visual Studio is the best C++ IDE on the planet. But it's almost like you have to be a Unix guy to navigate the psychological landmines in the Windows world. It's not like I refuse to use Microsoft products. To this day I sill write VB6 applications to solve problems. Even with all of my zealotry, there are times when this is the best tool for the job. Today, I recommended that my coworker use Excel to eyeball data. It is not the Microsoft tools that are the problem.
It is the culture. You can, as a total fucking N00B, use Microsoft Visual Studio to shit out a C++ application with a full GUI. I have watched clueless morons do this.
Coming from the Unix world, it is a practical impossibility for anyone other than the skilled to produce a GUI C++ application.
In the Unix environment, you cannot pretend. If you get so far as your app existing at all, you probably know what you're doing. There are very few wizards.
I often say that it is the limitations of the 16 bit era that made the games so good. It forced the developers to implement innovative games. Similarly, the fact that developing for Unix requires a certain base level of skill ensures that you are not a charlatain. If you can write an app that runs on the Unix platform, you most likely know something. Not so in Windows.
The most unskilled monkey in the Windows world can crap out an app that looks professional, and only the skilled can tell the difference. If you can develop something in Unix...At least I know that you aren't a complete fucking moron.
P.S.
I didn't have the stamina to cover all of the Microsoft Culture dudes. There are still the Whatever-New-API-Microsoft-Pushes C++ guys, the Throw-Out-The-Term-XML-Whenever-I-Can Microsoft guys, the list goes on and on.
I hate Microsoft guys. Not just because I'm a Unix guy. I hated Microsoft guys even when I didn't know dick about Unix. I hated them because they were scrubs. I knew there was something wrong with everyone else...They were afraid to program. They were afraid to dig into protocols. There were afraid to understand file formats. Even when my entire world was being a Microsoft Solution Provider, I knew there was something wrong with all of the programmers around me.
Permalink to this post.
|
|
|
|
2007-04-06: Linux is not ready for the desktop.
|
Bold statement, I know. And in a futile attempt to stem the flood of hate mail I always receive whenever I dare to question Linux's omnipotence, let me throw out a bit of my Linux Street Cred. My primary work machine runs Gentoo Linux, my primary home machine runs Gentoo Linux. The only Windows machine I regularly use is a laptop for proprietary odds and ends. I maintain upwards of ten Linux servers for mail, Samba, CVS, PostgreSQL, Apache, etc. I have extensive C++ development experience under Linux, with my new favorite toy of the year being QT. I have been around the block with this OS.
Let me walk you through some of the excitement.
SPREADSHEET ADVENTURE
One of my web apps has an "export to Excel" button which simply sends some mime headers, causing your browser to attempt to open the an app associated with that mime type. In Windows, this will launch Excel if you have it, and under Linux it will launch OpenOffice, Koffice or whatever. I find this function to be pretty useful for exporting data from my system, modifying some of it, and then re-importing it by posting the cell contents into a textarea. This allows me to do batch operations on a large number of records.
The default version of OpenOffice on my machine has an odd quirk with these streamed spreadsheets. It creates a file in /tmp/ to temporarily hold the data, which is normal. The odd thing, though, is that if I select File/Save As from my menu, the menu pops up momentarily and disappears. It is impossible to do a save as. Aha! But I am the clever computer guy, so I click on File/New to create a new spreadsheet, alt-tab to the original spreadsheet, CTRL-A to select everything, CTRL-C to copy everything, then alt-tab back to the new spreadsheet, and CTRL-V to paste it. Clever me. Then I click File/Save as...and the same interface glitch occurs which keeps me from saving the file.
As luck would have it, because of some weird Gentoo portage behavior, I accidentally have two completely independent versions of OpenOffice installed on my machine. I open this other version of the spreadsheet program, paste the contents into it, and do a Save As. This worked, thank Shiva! But the adventure isn't done yet. I modify the spreadsheet, copy all of it, and paste it into a textarea in Firefox, submit the form and...my machine reboots. Yes, Linux the uncrashable crashes.
Thinking this is an aberration, I do the exact same steps after a reboot. This causes another reboot. It turns out that my page was sending the textarea contents as a querystring rather than as a post, and the URL was too long. I tried this from my Windows machine with no problem. The URL was still too long, but I got a nice Apache error instead of my machine crashing. I modified my code to use a post instead of a get, and all was well in the world. That is, until I wanted to email the list of files I changed to one of the managers at my company.
I copied the one of the columns from my spreadsheet and accidentally pasted it into my Thunderbird mail message without selecting "Paste without Formatting". My entire machine hung, unresponsive, for about a minute. It finally posted the entire formatted spreadsheet column in the mail which is of course not what I wanted. I hit CTRL-Z and sat through another unresponsive minute. No matter what I did, I could not get rid of the spreadsheet nightmare in my mail message. I had to open a kedit window, paste into there (which took another minute), copy the plain text, and finally paste that into a *new* mail message, because the other one was forever infected with a poisonous spreadsheet format.
Alsa Adventure
My favorite thing about Alsa is that it installs by default with everything muted. (This is sarcasm.) Only slightly more awesome than this is its exciting behavior on my home machine. Alsa just mutes itself for no reason every other day or so. No reason. Just does it. So I get to open up a bash shell and type "alsamixer", get the oh-so-awesome text interface, select the muted column and press the "m" key, and then CTRL-C to exit the program.
Yep. This puppy is ready for the consumer desktop any day now.
Alsa behaves similarly on my work machine. The difference is that it isn't the result of a muted channel, and that it just stops working in Firefox. I don't know why. Everything on my machine will be able to play sound except for Firefox. No YouTube, No Pandora. Restarting Firefox doesn't fix it. The only thing that fixes it is restarting Alsa. This wouldn't be so bad if restarting Alsa didn't kill Firefox. Nothing more fun than having 8 tabs open, and then having to kill them all because the audio stopped working on your Fiona Apple song.
Any Video Site but YouTube
There is not one Flash-based video viewer other than YouTube that works on any of my Linux machines. When Kotaku first started embedding Gametrailer videos, they would automatically start playing -- every one of them -- with full audio but no video. This was really fun first thing in the morning when I opened up all of my news sites in tabs. Mario themes and zombies grunting. I kept forgetting about the bug and had no idea what was making the noises.
This bug has been fixed, but the video still doesn't work. I get audio just fine, so I can see how awesome the next-gen games are going to sound.
The Lament of the Graphics Tablet
I have been trying off and on to get a graphics tablet working under Linux for about 3 years now. I have written 20,000 line pieces of software that were less complex to work with than graphics tablets in Linux. It is so mind-numbingly complex that it would be a farce to even bother enumerating the steps in setting one up. Suffice to say that during the process I ended up compiling my own custom copy of X. It's really that bad. If you'd like an entertaining view of just *some* of the crap I tried to get this thing working, check out this email I sent to the Aiptek driver mailing list.
Note that I started off my graphics tablet adventure with a Wacom graphire, and after becoming disgusted with the Linux support I bought an Aiptek tablet specifically because I read that it was well supported in Linux.
Hah.
DHCP
One of the most awesome things in the world is having your main NIC on your laptop setup for DHCP, and then when you're on the road having it hang for 3 minutes on boot because it can't find a DHCP server. And then not starting any of your network services because it can't give the device an IP address. Windows manages to background this behavior and start services with no physical device, I can't imagine why Linux behaves so poorly. I have been dealing with this undesirable behavior since my first foray with Redhat many years ago.
Wireless
Dude, wireless networking in Linux is just broken. The drivers are such a complex mess that I know a guy who preferentially uses the NDIS wrapper with the *Windows drivers* just because the wireless drivers in Linux don't make any sense. I have setup about 10 or so laptops with Wireless in Linux, and every time I have to re-learn it because it is so complex and broken.
The system clock makes no sense
I do not know one Linux user who understands the system clock in Linux. Not one. Not even our NTP administrator where I work understands the Linux clock. Linux doesn't use the hardware clock...directly. It maintains some sort of weird offset based on your timezone. Unless you have it configured for localtime...Or maybe if you have it set to UTC it does a difference on GMT...Or..er...Nobody really gets it. All we know is that it's complex. And the best part is that sometimes Linux messes with your hardware clock for no good reason. There is no way that I know of to just tell Linux "Hey, trust the damn hardware clock, report that, and don't mess with it." I'm pretty sure that's impossible. There are all these complex bells and whistles and timezones and /etc/zoneinfo/blah/blah and symbolic links to /etc/localtime and whatnot. And the best part is if you do it wrong you can end up with skewed time between your database and webservers! (I had this cause a MAJOR problem at my office where timezone errors caused data to be written with the wrong timestamp.)
Of course you can use NTP, but then NTP is yet another complex text-file-configured mess. I still don't understand NTP. Last time I set it up I got my network blacklisted for NTP spamming. Meanwhile my WindowsXP clocks all just chug away and work fine without me touching them, and they even adjust for daylight savings. Linux guys on Slashdot gloated about Microsoft's problem adjusting to the new Daylight Savings. Hell, I have trouble just getting my *normal* time working in Linux.
SPECIAL KDE BONUS:
If I accidentally hit my scrollwheel over my system tray clock, it shifts the timezone to another part of the world -- Moscow being its first choice. So on top of my already screwed up time, sloppily using the scrollwheel on web pages often causes my clock to scramble by 12 hours.
Conclusion
A lot of stuff in Linux is really really really broken. Whenever I complain about this stuff in front of Linux guys, they immediately go on the offensive and accuse me of being a noob, or of being lazy, or of using the wrong distro, etc. Dudes. Get with reality: I am a professional software developer. I have written more C code in Linux than anyone I have ever met. I maintain Linux machines for a living. And using Linux as my desktop is extremely difficult and annoying for me.
Linux is ready for the desktop the fanboys say? Look, if that's the case then I don't think it should be necessary for me to intimately understand the internal implementation of the Linux clock mechanism for me to use Linux. I shouldn't have to understand the Aiptek tablet driver down to the kernel level just to get it working in Gimp. I shouldn't have to even know what Alsa is for my sound to work.
Go read that mail I wrote about the graphics tablet. Go ahead. Read it. Do you really think normal people will ever do any of that crap? Ever? Ever ever? Normal people can't even download a patch and install it. Normal people can't even find the file after they've downloaded it. Do you really think they can handle the inconsistent, complex, and often broken mess that is Linux?
Update 2008-07-03
I use Ubuntu now, and all of this is magically fixed. Linux is easier to use than Windows now. Seriously.
Permalink to this post.
|
|
|
|
2007-04-03: The Psychological Wall of the HFS
|
After years in the computer business you learn to spot when someone "gets it." There is a definite line between the people who understand computers and those who don't. I have talked with other computer guys for many hours on this subject, and we always have trouble identifing exactly what "it" is.
After much deliberation, I think I have it. "It" encompasses a lot of things, but I think it ultimately boils down to an understanding of the heirarchical file system. It is the ability to internalize exactly how things are laid out inside of your computer. When you understand the file system, you understand that the Desktop, the icons, the shortcuts, the songs and everything else are ultimately files that live somewhere inside of your computer.
My introduction to directories was on my friend Gerald's 286. He had a 20 meg hard drive, and to run different games you had to use the cd command to traverse the directories and run the programs. Gerald spent about 5 minutes explaining to me the concept of a heirarchical file system. In 5 minutes I understood directories and I could navigate around Gerald's computer. That was it.
Since then, I have explained directories to hundreds of people, and I have found it completely random whether they understand them or not. When people get it, it usually takes only a few minutes, and when they don't, I might as well forget about it because nothing I say or do makes any difference. I draw diagrams on the whiteboard, I make analogies to folders and files in a cabinet, I walk them through the DOS prompt, but nothing matters. Some people just don't -- and will never -- get it.
This is a pretty bad situation, as the heirarchical file system is the fundamental underpinning of computing. All work you do ultimately boils down to a file on a disk somewhere, and that file is likely stored in a directory. A person with no understanding of the file system is a helpless babe on their machine. They cannot peform simple operations. They are almost useless.
Traditional software vendors are trying to work around this problem. Modern software is rife with shortcuts and tricks aimed at making even the most superficial understanding of the system unnecessary. Almost every application has a "recent documents" list, and many computer users cannot find anything that is not in this list. In Windows, pretty much every app defaults to the "My Documents" directory, and about 90% of users cannot find anything unless it is in this directory. The retardification of the computer user accelerates. The problem with this model is that once a computer user is off of their familiar computer they can't do anything. Their files aren't there, their shortcuts aren't there, and since they have been dumbed down to the point of uselessness, they can't get their files onto another machine without the help of an IT person.
I am starting to think that us computer types made a serious mistake in the design of computer software. Way back when, some computer dude invented the heirarchical file system, and other computer dudes understood the design. All of us eggheads ran with this, and built the entire paradigm of computing around this model. Those people that didn't get it? Cretins, morons, idiots. We just kept on our merry way and ignored the confused masses.
Everybody did this. Adobe, Borland, Lotus, Microsoft, Symantec, everybody. Pretty much every traditional application on the face of the earth is designed like this. If you don't understand the heirarchical file system, you're going to lose your work.
And then the Internet happened, and what's odd is that people get it. Sort of. I mean, people don't really get it, but they are able to use it very effectively with virtually no understanding of what in the hell is going on. That blue "E" on their Desktop is the Internet to them. Email, FTP, SSL, VOIP, -- hell, even their computer -- are all just "The Web" to them. They can't find that spreadsheet they made in Excel yesterday, but they sure as hell can bling out their MySpace page with a photo montage of their dog shotgunning bong hits to the tune of "Don't Fear the Reaper."
The point of all this is that I think Google is on to something. I think this whole "Web 2.0" buzz is happening not because the snazzy web technologies are so powerful, but because normal proles understand it. Or rather, they don't have to understand it to use it. All they have to remember is the word Google and their password, and they can find their email, their files, their work. They can do this from any computer on the magical Internet without having to bring a thumb drive, without having to understand files or folders, and without having to worry about versioning. Their files are floating in the magical sea of the Internet, they can use them from anywhere, and they don't have to understand a damn thing to do so.
Permalink to this post.
|
Go to Computer Stuph Page: 1 2 3 4 5 6 7 8 9 |
My Adventures |
Misc Stuff |
Toilets |
Philosophy |
Dream Page |
Media Reviews |
Video Games |
Poker |
Computer Stuph |
People |
Hardcrawler |
My Weight Loss Program |
Random People |
Live Show Reviews |
John's Guide to Being a Metrosexual |
My MAME Project |
Gods of F*!@ING Rock! |
The Coolest Men on Earth |
Hottest Hotties of Hollywood |
 My Taiwan Adventure
 My Hong Kong Hijinks
|