Programming, Policitcs, and uhhh Pineapples.
# Monday, October 31, 2005

Installing VS2005 and SQL2005

Monday, October 31, 2005 5:30:37 PM UTC

RTM versions were downloaded over the weekend and I'm setting them up now.

Weird error encountered with SQL Server 2005 setup; On a WinXP SP2, I'm getting the following message:

"SQL Server Setup failed to modify security permissions on WMI namespace \\.\root\Microsoft\SqlServer\ServerEvents\DEV2005. To proceed, verify that the account and domain running SQL Server Setup exist, that the account running SQL Server Setup has administrator privileges, and that the WMI namespace  exists on the destination drive."

I googled the first line and found no results, so I figured I'd post this in case anyone else runs across this error.  Further googling led me to an MSDN article regarding Setting Namespace Security.  I followed the instructions but wasn't able to find the namespace \\.\root\Microsoft\SqlServer\ServerEvents\DEV2005.  Note that I'm installing 2005 as a named instance ("DEV2005" being the name of my instance), so this may not be an issue with default instances.

My current action is to abort the install and try again...I'll update if there are other developments.

Update: I switched to the default, non-named instance and it seems to work fine...however, I get an error when the installer tries to install the sample databases 'doh!  It says that my account is not an admin account, even though it is...

# Friday, October 28, 2005

CS476 Represent!

Friday, October 28, 2005 3:22:03 PM UTC

Heh, this is a Friday shout out to my project group for CS476--Ed (Myung) Kim, Roger Chang, and Craig Lichtenstein.  These guys were a great group to work with as everyone really took responsibility for their parts of the project and helped to deliver, what I felt, was a pretty cool application.

First, a little abstract.  In college computer science courses, even though you're told that you're supposed to work on programming assignments yourself, I think that no one really ever did.  If I may opine, this is a poor idea to begin with as no programmers in the real world work in isolation.  Now keep in mind, there are different working relationships.  In some cases, people are just moochers and just want to copy your code or steal your solution ideas.  In others, it's really a relationship where each of the students feeds off of the others to arrive at the solution together.  I had such a relationship with one Lew Fernandez, a fellow computer science major who was my roommate for half of the semester (a rocky freshman year).  I've always been one of those guys that could figure things out better if I had to discuss and explain different aspects with other people.

At some point, the idea occurred to me that it would be cool if we could work on the same codebase, collaboratively and interactively, even from remote locations (for example, if he was on one campus, and I was in our dorm room) without having to install any software.  Basically, you could work on code collaboratively from anywhere that you had access to a web browser.  Thus was born the idea of what would eventually turn out to be WebEdit, the project I designed for my CS476 Advanced Web Applications course.

This application popped back into my head recently as I was browsing a post on Web 2.0.  I came across the application Writely and it clicked, immediately, that what we had built was eerily similar to the idea behind Writely.  Admittedly, the implemenation and polish is very different (ours was slapped together in what I would say was roughly a week's worth of development time).  But it's nice to know that we had some good ideas back then.

WebEdit (aka JavaCVS3), utilized a Java applet frontend embedded in a web page that could communicate with a central server using Java RMI.  Chat was also in there, but that required a socket connection between the applet and the server, so it was limited somewhat depending on the networks and the firewalls sitting between any given client and the server.  The really cool part was that we didn't explicitly use the file system to manage files; everything was done through CVS.  Projects had to be imported to a CVS repository after which, different group members could check out a working copy by simply selecting the project from a drop down (projects were associated with groups).  As you're working on your working copy, you can update your copy if another user commits (you are notified interactively) and, using CVS merge, we were able to automatically merge your changes to those that were checked in by the other user.

While I'm here, I'd just like to take a moment and thank the guys for doing such a great job on the project and really working like a team (we pulled at least one 10 hour programming session topped off by celebratory coffee and doughnuts from DD).  As I was digging through some of the old documentation while trying to get everything set up again (to be clear, it was lacking in that respect), I was just amazed by the level of detail and attention in the documentation, especially by Ed; it made the process a bit easier for me.

So in any case, all this nostalgia made me want to see it up and running again.  The original application was designed to run on the Unix platform (including all of the sub-systems like CVS, Apache, and MySQL).  I know that at some point, after I graduated, I had tried to port our work over to a Windows platform quite unsuccessfully and gave up.  I was somewhat saddened as it was great work, but just not enough documentation/information to set it up and make it work on a different platform...until today.

After a lot of digging, prodding, and trial and error, I finally got it working again!  I had to substitute CVS with CVSNT, not knowing whether CVSNT would work exactly like the version of CVS we were running at Rutgers (no one ever wrote down the version).  It took me a few tries, but I finally figured out the version of Java that we originally compiled the source with (or at least the highest version without issues).  I also had to reverse engineer the database from the codebase (the database documentation was very high level and I didn't have any sample data to work from) and change the code to work with SQL Server instead of MySQL.  After a whole day of fidgeting, I finally got it working again!  Joy!  Particularly enjoyable since I haven't worked with Java in so long (roughly 2.5 years now).

webedit_capture.jpg

So this post is for you guys, if you should ever happen to stumble across this blog ;-)

# Wednesday, October 26, 2005

Walmart = Evil?

Wednesday, October 26, 2005 4:15:18 PM UTC

After reading the recent articles regarding the leaked Walmart memo regarding the hiring of "unhealthy" persons, I couldn't help but be repulsed by Walmart.

Another retailer, CostCo, which battles Walmart's Sam's Club, is almost the complete opposite of the Walmart in terms of business practices, values, and principles. I dug up a little writeup from a few months back:

Jim Sinegal = Hero

I was really moved by an article that I read about CostCo Ceo, Jim Sinegal.

"Costco's average pay, for example, is $17 an hour, 42 percent higher than its fiercest rival, Wal-Mart's Sam's Club. And Costco's health plan makes those at many other retailers look Scroogish.
...
Costco was founded with a single store in Seattle in 1983; it now has 457 stores, including two in the Houston area. Despite Costco's impressive record, Sinegal's salary is just $350,000, although he also received a $200,000 bonus last year. That puts him at less than 10 percent of many other chief executives, though Costco ranks 29th in revenue among American companies."

There are other positive articles on CostCo's business practices floating around the web.  I also learned a lot about CostCo and their absolutely awesome business practices from some people on Fark.

How's this for being treated well...

I'm an hourly NON-MANAGEMENT employee at a non-union location who makes $19.32 per hour and time and a half on Sundays for $28.98 per hour.

Besides this I get a bonus of $3,000 twice per year (full time employee), I get FIVE Weeks of paid vacation each year, 8 paid holidays, 6 paid sick days, I pay 4% of the total cost of my health insurance, I get 2% back on all my purchases, I get a free turkey every Christmas (winter holiday), ....

Did you know that a cashier at Costco who has worked for the company full time for 4 years makes more money than an Assistant store Manager at Wal-Mart?

Wait HERE's A GREAT ONE THAT I ALMOST FORGOT!!!!! ONE THAT IS SURE TO MAKE THE LIBERALS FLAME!!!

If you are a Costco employee and leave the company to enlist in the military, COSTCO HOLDS YOUR JOB FOR YOU FOR 5 YEARS!! AND IT GETS BETTER! If you end your active military service (you can stay in the reserves) and decide to come back to Costco within 90 days of your discharge, Costco not only takes you back, BUT THEY TAKE YOU BACK AS IF YOU HAD NEVER LEFT!!! You get the same or equal position and you accrue raises and bonus eligibility based on how many hours you worked per week for Costco before you left for the service!!!

So if you're a full time employee with say 6 months on the job, you can join the service, do a 4 year tour to get your GI bill, leave the active duty military and come back to Coscto as a topped out employee making $18.32 per hour with full benefits!!!!

-- "The_Pink_Pimp"

Now that is impressive; all this stuff really moved me (strange, I know). To me, this is what true patriotism is in the 21st century; it is supporting your fellow Americans by giving them fair wages, good benefits, and treating them like first class people.  An honest business practice that actually rewards the people that make the business profitable day-in, day-out?  That's almost unheard of in todays environment of Enrons and Tycos. As the cherry on top of the whipped cream, CostCo is also more profitable per square foot of retail space and per worker than Walmart...by a large margin:

Costco actually keeps its labor costs lower than Wal-Mart's as a percentage of sales, and its 68,000 hourly workers in the U.S. sell more per square foot. Put another way, the 102,000 Sam's employees in the U.S. generated some $35 billion in sales last year, while Costco did $34 billion with one-third fewer employees

Just goes to show you how fair pay, good benefits, and respectable business practices do pay in the end as employees are far more motivated, satisfied, loyal and, ultimately, far more productive.

I checked out their website and found out that they use ASP.Net :-D

CostCo just got another convert.

Acrylic Doodle

Wednesday, October 26, 2005 1:25:19 AM UTC

scan.jpg

A little doodle I did in Acrylic. I'm really digging the vector brushes; they're great for doing lineart like this (looks even better in higher resolution). There are some quirks when working with bitmap and vector layers involving an opaque bounding box around the brush stroke that blocks out the other layers.

# Monday, October 24, 2005

Porn, Hollywood, and Microsoft

Monday, October 24, 2005 6:26:51 PM UTC

It's a wonder why you and I are still viewing movies via physical mediums like DVDs.  To be honest, I'm really not sure why there's even such a huge fuss over BluRay vs. HDDVD.

About three or four years ago, I was working at Dreamzotic (NSFW!!).  First of all, from what I understand, Rob, the founder, was streaming video via Dreamzotic all the ways back in 1996!  Yes, almost a decade ago.  When I worked there, we were streaming up to 300 Kbps.  Today, I don't know the exact number as I no longer work there, but it would seem that Dreamzotic is offering near 1 Gbps!  On top of that, they also have a managed download so that you can grab the movie in its entirety.  The DRM protection prevents the video from being played on any machine other than the original.

I was once told that porn has been one of the largest forces behind innovation in Internet technologies.  To some extent, I think we can all agree that this is very, very true, especially in the case of streaming video.

So what I don't quite understand is what Hollywood doesn't understand about the current state of the movie industry as a whole.  With the introduction of large, high definition televisions and cheap, affordable surround sound systems, the theater going experience is dated.  To be clear, I hate going to the movie theater to see new releases.  Hate it, hate it, hate it.  From the stupid kids with their cell phones to the jokesters that try to be funny during a film to the dirty, dirty floors and restrooms, what is there to like?

For the past 8 months, I've been using Netflix and basically avoiding the movie theater (which is right across the street from our development).  It's quite obvious that the only two downfalls of Netflix is the method of distribution and the fact that no one has the balls (or insight) to do a simultaneous theater + DVD release (well, Mark Cuban has both, but I haven't seen anything major from him yet).

Whereas the porn industry has been chugging along (especially with the introduction of DRM to Microsoft Windows Media Services), you really have to scratch your head at all of the fuss in Hollywood and why it's taken almost a decade to catch up.

Bill Gates gets it right regarding BluRay vs. HDDVD:

"Well, the key issue here is that the protection scheme under Blu-ray is very anti-consumer and there's notmuch visibility of that. The inconvenience is that the [movie] studios got too much protection at the expense consumers and it won't work well on PCs. You won't be able to play movies and do software in a flexible way.

It's not the physical format that we have the issue with, it's that the protection scheme on Blu is very anti-consumer. If [the Blu-ray group] would fix that one thing, you know, that'd be fine.

For us it's not the physical format. Understand that this is the last physical format there will ever be. Everything's going to be streamed directly or on a hard disk. So, in this way, it's even unclear how much this one counts"

# Saturday, October 22, 2005

Thoughts on Microsoft Acrylic

Saturday, October 22, 2005 8:48:18 PM UTC

I started playing with Acrylic a bit today and I'm amazed (bet you didn't see that one coming).

For the purpose of reference, so you know where I'm coming from, here's some background:

  • I started doing graphics work with Paint Shop Pro back in the day and I eventually moved onto Adobe Photoshop 5.5.
  • Since then, I've only upgraded to Photoshop 6.0, so I haven't had much experience with the newer CS versions of PS.
  • I've used Illustrator a bit, but mostly to draw my lineart, and not for any serious graphic design.
  • I have a copy of Corel Painter 8 or 9, but I never got into it because it was sooooo poorly optimized that I'm not sure how anyone seriously used it.  Likewise, doing freehand artwork in Illustrator 9 is insane.  At 300dpi, an 8x10 image takes nearly 5 minutes to save (and I'm on a 2.4 Ghz Pentium IV with 1280 MB of RAM).
  • I've also worked with Corel Draw and Flash.
  • I haven't been doing as much artwork lately.

Okay, with that out of the way, I'd like to say that I'm pleasantly surprised by Acrylic (I remember reading a lot of bad first impressions very early on).  Some observations first:

  • First of all, it seems to combine many of the tools into one as it allows for the creation of pixel (bitmap) and vector layers so that you can work with both types of objects in one document.  Previously, at least with PS6, this was not possible.
  • It's much more finely optimized than Illustrator or Painter.  No slowdown at all (and I'm currently on my laptop).
  • Some of the new UI paradigms are great; I'm quite fond of the "combo-lock" style toggles and the easy to access sliders (in PS6, a lot of the sliders are hidden/context sensitive).
  • To go with the above, many graphic artists are going to have to do a bit of retraining.  I mean, gosh, I feel like the Adobe PS interface is so ingrained in my mind that I find it a bit hard to adjust...I feel kinda lost :-S.
  • Acrylic allows to to completely customize the hotkeys!  Excellent!
  • Unlike the Adobe products I've used in the past, this, even in such an early stage, ships with tons of predefined brushes.
  • Wow, I love the way it allows you to toggle the width of a vector brush stroke.  I think I'm in love.  Illustrator was such a pain in the ass in this respect.
  • There's an XAML exporter as well (as a seperate install).  I'll have to try that out later and see how it works.  I'm actually quite curious how the vector and bitmap objects will map to XAML.
  • I don't know that I'm so fond of the way the layers are represented.  Unlike in PS, where layers are in their own window, the layers are represented with a subwindow of the main document.
  • Where is the history?
  • There is no "Save for Web" option as far as I can tell...

I'll keep updating this post as I play around with it a bit more.  I think I'm going to move one of my current projects into Acrylic instead.  So, my biggest question now is: Microsoft, how much is all this gonna cost?  If they price it around PS, work on a some minor UI oddities (embossed icons? I dunno), and add a web optimization interface, I think they have a winner on their hands as it seems, at least on initial inspection, to be quite a good product.

Now what I really want to get my hands on is Sparkle.

# Friday, October 21, 2005

More Microsoft Stuff

Friday, October 21, 2005 5:58:20 PM UTC

Have I mentioned that I'm excited about the tools and technologies coming out from Microsoft in the near future?

Via Manuel Clement, there is a preview (CTP) of the Acrylic graphic design tools available for download from MSDN.

I also came across a set of videos for the Visual Studio Express line of tools (and .Net 2.0 in general).  Gonna have to slot some time for these videos.

Lots of exploration to do this weekend when I get some time.

# Thursday, October 20, 2005

The Parable of the Concept Car

Thursday, October 20, 2005 7:32:08 PM UTC

There's a great article in this month's Time magazine on Steve Jobs and Apple's success, even though the company operates counter what conventional wisdom dictates.

One bit that really caught my attention was Steve's "Parable of the Concept Car":

Ask Apple CEO Steve Jobs about it, and he'll tell you an instructive little story. Call it the Parable of the Concept Car. "Here's what you find at a lot of companies," he says, kicking back in a conference room at Apple's gleaming white Silicon Valley headquarters, which looks something like a cross between an Ivy League university and an iPod. "You know how you see a show car, and it's really cool, and then four years later you see the production car, and it sucks? And you go, What happened? They had it! They had it in the palm of their hands! They grabbed defeat from the jaws of victory!

"What happened was, the designers came up with this really great idea. Then they take it to the engineers, and the engineers go, 'Nah, we can't do that. That's impossible.' And so it gets a lot worse. Then they take it to the manufacturing people, and they go, 'We can't build that!' And it gets a lot worse."

When Jobs took up his present position at Apple in 1997, that's the situation he found. He and Jonathan Ive, head of design, came up with the original iMac, a candy-colored computer merged with a cathode-ray tube that, at the time, looked like nothing anybody had seen outside of a Jetsons cartoon. "Sure enough," Jobs recalls, "when we took it to the engineers, they said, 'Oh.' And they came up with 38 reasons. And I said, 'No, no, we're doing this.' And they said, 'Well, why?' And I said, 'Because I'm the CEO, and I think it can be done.' And so they kind of begrudgingly did it. But then it was a big hit."

I think this is a common downfall of many organizations and projects and it results from a sort of "design by committee".  Fred Brooks makes a similar point in The Mythical Man Month with regards to building software:

Simplicity and straightforwardness proceed from conceptual integrity.  Every part must reflect the same philosophies and the same balancing of desiderata.  Every part must even use the same techniques in syntax and analogous notations in semantics. 

Concpetual integrity in turn dictates that the design must proceed from one mind, or from a very small number of agreeing resonant minds.

In the case of Apple, Steve Jobs is the bolt that holds the whole structure together and the success of Apple can be directly related to Jobs' vision.  From concept to implementation, he enforces coceptual integrity at all levels of the organization.

I think the significance of conceptual integrity struck me when I was sitting in OfficeMax one day as my wife was looking for some supplies for school.  Christopher Lowell's Seven Layers of Design: Fearless, Fabulous Decorating was sitting on a desk that was next to the executive chair that I was fiddling with.  In summary, Lowell drives each of the project rooms in the book with his "seven layers of design" to demonstrate how easy it is to change a room from drab to fab in seven easy steps (yes, that sounded non-hetero in my head, too).  As I flipped through it, I couldn't help but admire how he made his philosophy so succint and consistently applied it throughout the book; it made it seem so easy.

I think the lesson to be learned from this is the importance of conceptual integrity from design to implmentation.  Good designs often fall flat in implementation due to poor adherence to the core concepts and ideas of the designer.

# Wednesday, October 19, 2005

"Cross of Iron"

Wednesday, October 19, 2005 4:59:16 PM UTC

I came across a blog post today that examined Dwight D. Eisenhower's 1953 speech, titled Cross of Iron.

What struck me a bit was the similarity of his message and vision to that of the Dalai Lama when he was at Rutgers a few weeks back.

In particular, the following excerpts mirrored the the perspective of the Dalai Lama with regards to war in the modern, globalized world:

"First: No people on earth can be held, as a people, to be enemy, for all humanity shares the common hunger for peace and fellowship and justice.

Second: No nation's security and well-being can be lastingly achieved in isolation but only in effective cooperation with fellow-nations.

Third: Any nation's right to form of government and an economic system of its own choosing is inalienable.

Fourth: Any nation's attempt to dictate to other nations their form of government is indefensible.

And fifth: A nation's hope of lasting peace cannot be firmly based upon any race in armaments but rather upon just relations and honest understanding with all other nations."

In his lecture at Rutgers, the Dalai Lama expressed that, in today's world, as we are increasingly dependent on other nations in one way or another, it doesn't make sense to label countries as enemies and wage war.  In doing so, in a sense, a nation wages war against itself.  This is true on many levels with the US as we have seen our soldiers die, our funds sink into a hole as a (very expensive) natural disaster hits our shores, and our reputation damaged for the near future.

Gonna have to read the rest of that sometime later today.

# Tuesday, October 18, 2005

MSDN ASP.Net 2.0 Documentation

Tuesday, October 18, 2005 5:53:56 PM UTC

With the release of Visual Studio.Net 2005 right around the corner, I think it's about time to start a deep dig into ASP.Net 2.0 and C# 2.0.

The MSDN documentation is as good a starting point as any book, and it's free to boot!  As my friend Dave likes to say, "You can't beat free!"

Here are some of the more interesting topics (a personal bookmark of sorts, I guess):

Perhaps the feature I'm most excited about, with regards to C# 2.0, is generics.  My goodness, this will save so much time, effort, and silly code.  I've been using various typed collection generators so I'm happy to see this added to the framework.  On the ASP.Net front, I'm very excited about the provider model (and all of the different built in components like membership and roles), Atlas, and master pages.

A lot of stuff to digest, for sure.  Now my only question is how long it will take before any of our clients are even remotely interested in doing projects with .Net 2.0.  Past experience tells me it'll be at least 2-3 years before companies start to move over and some may never do so (Newegg is still using ASP Classic; why change what's not broken?).

I keep telling myself that I'm going to start a small mini-project in ASP.Net 2.0, but I'm just too turned off by the idea of mystery feature cuts between beta/RTM and the final product.  I've been in a "wait and see" type of mode, but reading more about the framework itself.

On a loosely related note, I found that Jason Gaylord did a port of the very early .Net 2.0 starter kit photo gallery project to .Net 1.1.  I've been looking for a good .Net photo gallery app for a while now, so I may take a look into this.

A Small World Indeed

Tuesday, October 18, 2005 1:17:45 PM UTC

On an interview yesterday, one of my interviewers asked about my experience at ITT.  Specifically, he asked whether I knew Chris :-o.

Now a quick flashback; Chris was my second level manager at ITT.  Towards the end of my stint at ITT, he and I were butting heads over whether to use Plumtree to satisfy an internal client's request.  Obviously, management wins in these situations.  He also took me into his office one time and chewed me out for asking for a raise (which he was nice enough to give to me anyways).

Back to the interview; I was kinda thrown off a bit and had to think for a moment on how to respond.  I mean, I have no hard feelings towards Chris, as I was able to work with a lot of freedom and responsibility when I was at ITT, but I can't say that we parted ways on the best of terms.  I decided to give the honest answer: Chris is one of those stubborn, hardnosed guys that can be difficult to work with at times (I am too :-D).  I think he took it well, as anyone who knows Chris knows that he can be a tough to work with at times (as am I).  All in all, I think it was a bad interview, but not necessarily any fault of my own.

To begin with, I had missed several tabs of an Excel spreadsheet that I was supposed to fill out and email back to the HR recruiter (who notices tabs in a spreadsheet?).  Doh!  In addition, there was tons of paperwork and a set of pre-interview questionaires that the recruiter had to fill out (would have been faster if I typed it instead of her).  That alone took 1.5+ hours to complete.  Then, during the interview, it really didn't seem like the interviewer was very interested (seemed as if he had more pressing matters).  He pretty much asked me the same questions I answered in the pre-interview questionaire (even though he was holding and obviously reading it).  Blah!  I also brought along my laptop with demos of my work, but the interviewer was obviously not interested, as I hinted several times that I could demo some of the work that I mentioned in my resume.

Not only that, it wasn't overly technical at all.  Actually, there was no discussion of technical skills whatsoever, which is a bit disappointing, as I think it gives good insight into the types of people an organization has (and also gives me a chance to shine).

As an aside, I've always wondered why IT consulting companies still rely so heavily on paper based procedures.  It would have been much easier to have the forms online and allow applicants to fill it out before the interview.  I mean, who keeps records of the addresses of your employers filed in your head?  What about reference contacts?

They did have a very nice building though.  Damn, it's one of the nicest buildings I've ever been in (even nicer than the Merrill Lynch Hopewell campus, which was a pretty nice building).  Even had a huge Samsung DLP television in the conference room; Awesome.

Overall, not a very good interview, but who knows.

In any case, it's one of those "wow" moments when you realize how small the world really is.  As I learned in the last month, one of my coworkers here at Immedient, Evan, previously worked at MarketSource, where my friend Hoon had worked just a few months before (he's now an actuary).  Oh yeah, and I almost forgot, the recruiter mentioned that she used to work down the street from where I work now and she used to cold call our company (for what purpose, I don't know).

A small world indeed.

# Monday, October 17, 2005

Overview of Computer Science

Monday, October 17, 2005 9:54:09 PM UTC

As I was laying down to sleep one night last week, I started thinking about the computer science field and where I would want to focus if I were to do graduate studies (probably software engineering or UI related work).  I started to build a "map" (okay, it's not really a map) of the CS field in my head and I thought I'd share it with anyone that's looking to study computer science.

Without further delay, here is my map and commentary:

csmap.gif

Core Principles

In my opinion, the core principles of computer science are:

  • Mathematics.  At the heart of it all, computer science is really a branch of mathematics.  I don't think anyone who doesn't have a fondness for math (you don't have to be terribly great at it) will make it far in computer science (and if they do, they probably copied their calc. homework :-D).  If you look at most computer science curriculums, you'll find that they're heavy in mathematics.
  • Programming Languages.  All computer scientists must know at least a few useful programming languages (and the good ones know many). Programming languages are the mechanism by which we communicate human ideas and concepts to machines.  Different areas of study will typically involve different types of languages.  For example, most application development is done in a general purpose programming language (like Java, C#, or Visual Basic.Net).  From my understanding, most of the work in the field of AI is done in functional languages such as Scheme, Lisp, and Prolog (these languages were designed for AI).  In mathematics applications, you'll find that many computer scientists rely on math programming languages like MATLAB.  So each branch in computer science typically relies upon and utilizes different types of languages (although you see crossover as well).
  • Tools and Environments.  All computer scientists rely heavily upon their tools to get their work done.  From emacs, to vi, to pico, to Visual Studio.Net, having the proper tools for the job is very important to the computer scientist.  The core tool is almost always some mutation of a text editor (like Notepad).  Most computer scientists are familiar with at least one or two different environments/platforms as well (for most universities, this is Unix/Solaris).
  • Algorithms.  In computer science, there are a few universally useful algorithms and concepts that everyone learns.  For example, binary sort.  Another good example is recursion (not so much an algorithm as it is a concept).

Main Branches

In my view, CS can be broken out into three main branches:

  • Mathematical. As I mentioned, computer science is deeply concerned with solving problems in the area of mathematics. This branch of computer science is really about the application of computing to solving mathematical problems. For example, one of the persistent problems in computer science is how to efficiently factor large prime numbers (the basis of current data encryption algorithms). While this itself is more of a mathematical problem, the practical application of such solutions falls into the computer sience field. Computer scientists in the extremes of this branch (those that are practically pure mathematicians may rarely program computers and work primarily with algorithms and pseudocode).
  • Theoretical. This branch of computer science deals with the theory of computing. For example, creating, categorizing, and analyzing algorithms. At Rutgers, I would say, from what I garnered from my TAs, most of the graduate level research was in this area (as opposed to mathematical or practical). The work done in this field is often not useful by itself. For example, I would classify the graduate work that Larry Page and Sergey Brin did at Stanford into this branch. Google, the search engine that you and I use daily, really falls into the third branch.
  • Practical/Application. While the Rutgers graduate curriculum focuses primarily on theoretical computing, some schools focus more heavily on application/software development. This includes the actual implemention of theoretical algorithms, building user interfaces, and writing software (in the general case).

Of course, the boundaries between the different branches are not hard boundaries, but rather very loosely defined; however, generally, there is a distinction between one extreme and the other and, typically, someone intersted in one extreme will not be interested in the other extreme.

Number of Students/Types of Students

What I've noticed is that there are generally more students in the third branch than the others, with the least number of students in the mathematical branch. What I've also noticed is that at the left end of the spectrum, you'll find most of the nerds. On the right end of the spectrum, you'll find mostly geeks.

At the far right end of the spectrum (also the most populous among the CS students), are the idiots. These guys are the ones that always try to mooch code off of you as the deadline for handing in the assignment looms near. They are the stragglers that try to latch onto the nerds and geeks in hopes of getting that CS degree because of the tech boom and not because they are intrigued by the different aspects of computer science.  Not all idiots are doomed to failure; to be honest, I would classify my mother into this category (she has a masters in mathematics with "computer option").  I really don't know how she managed that one, but she told me that there was a lot of mooching :-D In any case, she's been highly regarded everywhere she's worked for the last few years as one of the better AS/400 developers.  So all hope is not lost; most of the idiots can become very successful and productive programmers once they realize that mooching can't get them through life.

Moving on, there are also the assholes. They're like idiots, but their people skills make them even worse since they posess superior people skills and they will try to manipulate the nerds and the geeks. You can spot these types of people by how they try to use other to their advantage.  For example, organizing study groups.  Real nerds and geeks don't need study groups to prep for exams. And if they do, they will typically do so with a select group of fellow nerds and geeks.  Another common behavioral trait is that they tend to ask many stupid questions, which, aside from the idiots, everyone in the damn lecture hall knows the answer to already.  You can almost hear everyone groan when one of these guys/gals raises his/her hand during a lecture to ask a question with an obvious answer. They ask not because they're curious, but rather to get facetime with the professor. These types of people will typically end up in IT management because of their type A personalities and lack of any real understanding of CS. It's like they accidentally enrolled in CS when they really should have enrolled in business, finance, or opertions management.

Real World Applications

Just for the sake of illustration, I listed some of the real world applications (off the top of my head) assiciated with each branch. Don't make too much of my placement of the text as, clearly, database systems require significant knowledge from each of the branches.

Areas of Study/Disciplines

As with the real world application, these are just rough estimations of a few of the areas of study/disciplines in computer science (random list off the top of my head).

Summary

If there's one thing that you can take away from this, it's that computer science is not for everyone. I think people don't realize how math heavy it really is and how certain fields require extensive knowledge of mathematics. At Rutgers, for example, I think calc. II and introductory linear algebra are required.  You'll find, though, that almost all levels of math courses beyond the required ones play a significant role in different areas of computer science (for example, calc. III and linear algebra (non-intro) are important for anyone that wants to get into computer graphics). In fact, you'll find that many of the courses in math and computer science are cross discipline and can count as credit towards either major (like linear optimization).

In addition, at the graduate level, there are different types of philosophies at different institutions. At Rutgers, the curriculum and research has a heavy theoretical bias (from what my TAs told me) whereas, based on my research, a school like Steven's Institute of Technology offers more practical masters/certificate programs.

I don't know if this will actually help anyone, but I'm throwing this out there for anyone that's thinking about obtaining a computer science degree. Bear in mind that this is from the experience and perspective of one person, me and I offer none of this as fact, so take it with a grain of salt ;-)

# Friday, October 14, 2005

A Video Card w/ External Power!??

Friday, October 14, 2005 8:47:44 PM UTC

Talk about monstrosities.  Wow.  Check out the Asus N7800GT dual GPU vid card :-o

Got CS?

Friday, October 14, 2005 1:36:22 PM UTC

Good news for us CS (computer science) graduates!  Well, at least according to Mr. Gates:

"Gates addressed University of Michigan students Wednesday in kicking off a three-day college tour aimed at getting young people interested in computer science and related fields.

Gates said the global market has greatly expanded the need for technology and innovations and needs young people to create them. Although many computer science jobs are being created overseas, there still are plenty of opportunities in the United States, Gates said."

For anyone that may be interested in CS, stay tuned.  I composed a little mini-map of the CS field (at least according to my knowledge of it) that I think is helpful for those of you thinking of getting into CS.  I think I'll work on that this weekend (if I can find my map (I have a habit of writing random things on random pieces of scrap paper that either end up being recycled by someone or lost in a pile somewhere)).

On a sidenote, I encountered this lovely error message (twice!) yesterday while working on a project:

catastrophic.gif

Yes, not once, but twice yesterday!  Luckily, my computer didn't explode and, to my amazement, the Earth still exists.  Whew!  Here I was hoping for the worst, too.  I started laughing as soon as I saw it and just had to take a screenshot and share :-D

# Wednesday, October 12, 2005

Workshop : CDOSYS + .Net

Wednesday, October 12, 2005 8:46:29 PM UTC

As anyone who has used the .Net System.Web.Mail namespace can attest, the default .Net mail classes are woefully lacking in functionality.  It's really a shame too, considering that they're based off of the very powerful CDONTS/CDOSYS libraries, which allow a lot more functionality.

In this first investigation into unleashing the full power .Net web mail, we will create a simple web interface to send email messages with a user uploaded attachment without saving the uploaded attachment to disk first.

Some of this functionality is likely built into many third party mail packages, but why pay for it if you have time and you can build it for free?

So if you're still interested, hop on over to the workshop article.

As always, please leave comments, questions and criticism in the post.

Badass Site

Wednesday, October 12, 2005 6:03:04 PM UTC

Came across a great site today.  Now permalinked on the nav bar.  Just had to share :-D

The Ghetto Jacob's Ladder is badass.  I especially like this line:

"A flyback transformer in the monitor generates a few kV that is used to accelerate electrons in the CRT to hit the screen, and produce the pornographic images we all love to view because no girl will talk to us."

LOL.

Don't miss Ghetto Tattooing either; OMG, that last photo is hilarious.

David Stern, Rutgers Alum!

Wednesday, October 12, 2005 1:03:36 AM UTC

With the NBA season opening soon (Nets vs. Indy tonight, preseason), it seems fitting to have an NBA related post.

David Stern  is a Rutgers Alum! Very cool.  Sandra was looking up some stuff on the Rutgers website and I noticed an article on David Stern.  I dunno...I guess just a bit of Scarlet Pride :-D

On a slight tangent, I noticed that the Rutgers Graduate School of Education website looks really sharp (well, the menu is kinda out of position on the main page, but seemingly okay on sub-pages).  I especially like the tabbed navigation on some of the sub-pages for different views of the data; much easier to use than dropdowns (well, I guess the one drawback is that the page is limited in the number of pixels in that space, but I think it works better than a dropdown).

On the flipside, the HTML is not that sharp.  Heavy use of tables and a pure JavaScript menu where a CSS/list-based one would have sufficed and been more efficient.

In keeping with my random tangents (totally random), I'd just like to share that this company, Maranatha, makes some of the best peanut butter.  Got it at Sam's Club the first time, but I'm trying to ween myself off of Sam's and, unfortunately, Costco doesn't carry it yet.  Unlike a lot of the all natural peanut butters you can get in the grocery store, this peanut butter is soooo finely ground, that the oil is able to work itself through the paste.  This means that when you get to the bottom of the jar (huge 26 oz. jar), the peanut butter isn't crusty and unspreadable like most other brands.  Yah, I feel like a little kid :-D I have a peanut butter and jelly sandwich everyday at 10:00 AM.

# Tuesday, October 11, 2005

BizTalk Vs. Windows Workflow Foundation

Tuesday, October 11, 2005 1:08:26 PM UTC

Having worked with BizTalk Server 2004, SQL Server Integration Services (replacement for DTS), and having taken a quick glance at Windows Workflow Foundation, I was kind of confused why Microsoft would create so many competing technologies, especially considering the high license costs of BizTalk Server.

As an aside, during my time with BizTalk, I was thoroughly unimpressed.  To begin with, I hate working with technologies where you can't easily see every piece of the whole.  Too much of the functionality of BizTalk is hidden in property menus and context menus...I can't stand that type of crap.  Even more annoying than that is the dependency on the GAC.  It takes a ridiculous amount of time to build and deploy the assemblies.  Consequently, it's a PITA to test and debug.  I've not found any real scenarios yet where I've felt that I would recommend BizTalk over some other solution, especially considering the insane licensing costs for what amounts to nothing more than an XSLT engine with some workflow and connectors built into it.  People, especially Microsoft, will try to convince customers that it's the solution to everything.  They tried to convince one of our clients to use it for a task that was 10x easier and more efficient (time wise) to do using DTS.  Not to mention the client already had a license for DTS whereas it would have cost them in the neighborhood of $40k just to get a BizTalk server up and running. I dunno, maybe I'll be impressed by the next version.

If you're still interested, there's some discussion about the main differences between Windows Workflow Foundation and BizTalk on the web today, so I'd thought I'd share with anyone else that's interested:

The short answer is that WWF (no, not the one with big men in spandex) is a framework to be used to develop intra-application workflow whereas BizTalk is aimed at inter-application workflow and [buzzword alert] "business process management".

WWF looks promising.  Without realizing it, I actually built a mini workflow framework for a recent project I worked on which required automating the UI of Microsoft Project Pro 2003.  It allowed developers to program against an API to create "Steps" and "Actions" whose results could be linked to and iterated over by subsequent Steps and Actions.  Very cool stuff.

# Monday, October 10, 2005

Saw the Jets

Monday, October 10, 2005 11:07:50 PM UTC

Yesterday was my first time at an NFL football game (Jets vs. Bucs).  This also means that I've been to each of the three major sports (NBA, MLB, and NFL).  (For my international readers, the NFL is the highest league for American-style football).

I must say, the experience is quite something.  It's very different from either of the other big three sports in that there is a whole huge sub-culture in the football world.  If you've never experienced it, there's nothing quite like it at all.

Sadly, I didn't have my camera with me, but driving into the parking lot of Giants Stadium I was just struck by how many people were there tailgating.  It was incredible, it was like a little town sprung up there that morning, with people pitching tents, watching TV, eating BBQ, throwing footballs around.  I mean, it felt like these people lived there.  What caught my attention as well was that a lot of men would urinate right by the side of the road without hesitation (since the lines for the port-o-potties was ridiculous.

The stadium itself was tremendous.  There's nothing quite like it in the enormity of it all; you get kinda queasy sitting in the third tier just looking down.

The game itself was great.  Vinny Testaverde was playing in his first game in 9 months since retiring with the Cowboys after last season.  I have to say, I can only hope that I'm that mobile and that fit when I'm 41, because damn, the guy can still move and throw the long ball.  He had the crowd roaring during pregame warmups when he threw a 60-70 yard pass to Laverneus Coles.  Wow.  Vinny only threw one interception, which was unfortunate (it was short only by a little), but acceptable considering that just two weeks ago, he was hanging out on his sofa watching the Jets play :-D

Afterwards, listening to Vinny talk, I was reminded of The Incredibles.  Vinny had some great years (the best of his career) with the Jets and here he was again, up to his old heroics after retiring from football.  And like in The Incredibles, it took a team effort to overcome the opponent.

In a totally unrelated sidenote, I got my copy of "Ghost in the Shell 2: Man-Machine Interface" on Friday.  My review is on Amazon, but I'll copy it here for the lazy:

"Before you read on, bear in mind that I'm writing this review in comparison to the first "Ghost in the Shell". While Shirow does mention that this book is not a continuation of the first, there are some major differences in style.

Let's start with the artwork. As I've noticed with Shirow's work, all the ways from Appleseed, his style has matured with each work and is at a very advanced level, in my opinion, among top comic book artists in the world. He has a certain style of coloring that, to me, is really unique in how subtle, lifelike, and tactile he makes fabrics and skin. While only roughly 35-40% of the book is colored, it is done so fantastically.

In addition, Shirow has a supreme mastery of the female body form. It's simply stunning to see how beautifully he can render the female body, especially with the dynamic energy he brings to his characters. While he renders many of the panels with the female characters in the buff, he does not render "R" nudity, but rather "PG-13" nudity, except in one panel). (As a sidenote, parents of younger readers should perhaps consider this an "R" rated book. While none of the nudity is gratuitous, it can be a little too much for some).

As fans of Shirow have noticed, he has been experimenting with integrating 3D, rendered environments and objects with his 2D artwork. He shows his mastery of this technique in many of the panels, where it seems seemless; you feel as if the character is really a part of the scene. Then in others, it seems poorly done (for example, he renders pigs in a sequence of panels and the pigs just look weird). I'd also offer some criticism of his rendering of "virtual space", as it quickly becomes cluttered and very difficult to navigate, visually, especially in the low-res, black and white lineart panels.

As with all Shirow works, there is certainly enough cool technobabble and gadgets to get your geek juices flowing. From exoskeletons that envelope and "swallow" the pilot, to oddly constructed androids, to the techno-metaphysical discussions of reality, life, existence, and justice.

My main criticism with the work is the incontinuity *within* the plot itself (I fully understand and accept that this is not a continuation of the first). Without going deeply into the plot, there are some scenarios where he will start what seems like an arc, but then the arc disappears, without entering into the plot again. It seems like whole parts of the book were created just for the sake of showing artwork, and not progressing plot (to me, plot should always come first in a written work, which this is, despite the medium). It feels like the recent Star Wars movies in that they are really a showcase for Lucas's technique with fully rendered sets and have lost any semblence of a cohesive plot and the great acting (especially Harrison Ford) that made the first three the classics that they are. Yes, while I do appreciate the eye candy, this is still a graphic novel, and, as such, I expect a cohesive plot and not random interjections of this and that and whatever.

Some fans will also find the lack of action (compared to the first book) a bit disappointing. The first book was far grittier and more action packed than this book. It also had a richer cast of characters. "Man-Machine Interface" really only features one character (albeit in various bodies and forms) and thus loses some of the dynamic interactions between characters. Shirow never gets a chance to fully developer the chief of Poseidon police and his crew.

Overall, this book is excellent if you simply love Shirow's beautiful artwork, mastery of the female body form, and creative techno-gadgets. The plot, especially the ending, will leave you sorely disappointed. Whereas the first ended on a revelation of a metaphysical type, this book ends in a fizzle."

If you're a fan of Shirow, it's a no brainer, you gotta pick it up, but it's certainly not for everyone.

I'm also working my way through Fred Brooks' "The Mythical Man Month".  I'm only 1/3 of the way through the book at the moment, but it's absolutely a great book that everyone in an IT organization (everyone!) has to read.  I mean, even after all of these years, the same problems persist in software development (doesn't anyone learn from history?).  If you're in the IT industry, whether you're a manager, a salesperson, or a developer, be sure to pick this one up.  It's an easy read, too, since Brooks' style is very inviting and personable.  He makes some excellent analogies.  I think I'll do a mini book review after I'm done with the book :-D

That's it for now...been busy at work, so less time to post during the day >.<

# Friday, October 07, 2005

Workshop : EditPlus + SQL

Friday, October 07, 2005 12:32:48 AM UTC

Welcome to the second installment of my workshop series of articles.

This time, the workshop focuses on tools, for what is more important to the master craftsperson than the tools used in the craft?

While most people are resigned to using Microsoft's default IDEs for working with SQL Server (Query Analyzer, SQL Management Studio), both utilize terribly subpar text editors which are just too clunky to work with when dealing with complex procedures.

Enter EditPlus, the greatest text editor, ever.  Evar.  I've been using it since my Freshman year in college when a co-worker at iCan Services introduced it to me.  I've been using it for everything from Prolog to Java to C# to DHTML to TSQL.  With a little help from some of the tools that ship with SQL Server, we can hook up EditPlus so that working with TSQL is no longer a pain in the butt.

If you're tired of working with Query Analyzer and you're a cheap bastard like me, then this workshop is for you ;-)

Please feel free to leave comments, questions, criticisms, error reports, and what not in the thread.

Enjoy.

# Thursday, October 06, 2005

Miyamoto Interview at Engadget

Thursday, October 06, 2005 2:08:56 AM UTC

Engadget is featuring an interview with Shigeru Miyamoto

In commenting on the Revolution controller, Miyamoto says:

"Personally, I feel that first-person shooters are really well-suited for this controller. I’ve worked on them in the past in the Metroid Prime Series. And to be honest, I felt that first-person shooter controls on a classic controller were kind of clunky. They didn’t feel very—they didn’t feel very right. Whereas with this controller, with the nunchuck-style of controller it’s extremely natural and extremely intuitive. First-person shooters are a genre that are very popular in the United States, and I think that when gamers get their hands on this controller and start playing first-person shooters with it they’re going to find it’s probably the best way to play that kind of game."

Yeah, I can recall when I first made the leap from console gaming to PC gaming.  I had been playing way too much Goldeneye on the N64 (possibly the single best console shooter, ever) for months during my freshman year of college.  At some point, I started playing Rainbow 6: Rogue Spear, a very fun tactical shooter.  It was hard to play Goldeneye after that since FPS controls on a console just seem weird.  To date, I haven't purchased a single FPS (MGS3 (check out my review on Amazon) doesn't count) on console systems for the specific reason that there's no reason for me to do so.

As has been iterated by others, this will be a huge selling point for Nintendo: they will offer all games and non-gamers an entirely unique experience that cannot be had on any other platforms, including PC.  So far, the Revolution is the only "must have" on my list of next-gen consoles.

On a related note, there's a nice discussion regarding the Revolution hardware at Arstechnica.  I, along with some other Nintendo fanbois, make some good arguments for the plausibility of the "leaked" hardware specs.  Let's hope that Nintendo pulls through ;-)

Man, I'm just salivating for more info!

# Tuesday, October 04, 2005

EditPlus Resources

Tuesday, October 04, 2005 1:54:27 PM UTC

I came across the Editplus Wiki page today and had to share the joy :-)

For those of you who are not familiar with Editplus, it is quite possibly the best free text editor for developers (all things considered).  It's lightweight (it'll fit and run off of a floppy), it has excellent and highly customizable syntax support, the list just goes on and on.  It's pretty much all that I used in college for everything I did, from Prolog to C++ to Java to HTML.  I still us it daily for all of my DHTML work, simple ASP.Net proofs of concepts, working with files on remote servers, T-SQL work, and formatting the stupid HTML generated by FTB.

Best of all, it's free (it'll warn you after 30 days that you should pay for it, but it'll happily let you keep using it).  One of these days, I gotta get around to paying these guys; I've been using it exclusively (with VS.Net for other needs) for the last 6 years.  Possibly the only feature that I've found a want for is an "Export to HTML" button that would export a selected section of code as formatted HTML for display in web pages (that would rock so hard).

One of these days, I need to put together a writeup: "Editplus for Beginners".

# Monday, October 03, 2005

Confusion

Monday, October 03, 2005 12:41:41 PM UTC

I'm kinda puzzled by the nomination of Harriet Miers for the seat left open by Sandra Day O'Connor.

What has me confused is Miers' background, according to CNN:

"Miers, who has never been a judge, was the first woman to serve as president of the Texas State Bar and the Dallas Bar Association. She also served on the Dallas City Council."

Hmmm.  While I have no idea what the president of the Texas State Bar does, I'm quite certain that the job is entirely different from that of a judge.  Analogously, I certainly wouldn't expect that our CTO be "nominated" as the lead architect on a new software project.

Is it a coincidence that she's from Texas?

I guess that's why I'm not in politics...none of this makes any sense to me at all.

I recently read through an article in Time that asked "How Many More Mike Browns Are Out There?"  It will shock you how many people, in key positions, are lacking in real credentials and experience for the leadership roles that they're in.  One has to wonder whether the correct question to ask today is "How many more Mike Browns are going to be appointed?".

RSS 2.0 Atom 1.0 CDF