Ruminations of J.net idle rants and ramblings of a code monkey

It’s been too long …

Idle Babbling
Yes, I know. It’s been a while. Well, too long. Holidays and such were BUSY BUSY BUSY. And then … well … I don’t know. But yes, I am still alive and kicking. :-) Quick update on upcoming stuff: Houston TechFest is tomorrow!! Houston tech community uber-conference is happening after being rescheduled due to Ike. If you haven’t registered, you can still show up … you just won’t get a T-shirt. The whole community evangelism team will be on hand and we’ll also have a ton of kewl stuff to give away … including Rock Band 2 and a Lego Mindstorm robot!! Dallas MSDN Developer Conference is on Monday. This is the very last of the MSDN Dev Con series. There’s still time to register also! South Houston .NET User Group is, after a delay due to (once again) Ike, is getting rolling with their first meeting on February 4th at the Clear Lake City – County Freeman Branch Library. I’ll be speaking there … doing an introduction to unit testing with C#. So … what’s been happening with me during all this silent time? Besides being busy with work, holidays and all that stuff, the biggest thing was that I had Lasik done. It’s really cool … I’ve gone from not being able to see the big “E” on an eye chart (was just a fuzzy mess) to having 20/15 vision. It’s almost surreal being able to see so well after wearing glasses since 3rd grade and contacts since freshman year of high school. It was quick, easy and, best of all, painless. I was back up and running just fine the very next day. Another thing of not (on a more personal level, that is) is that I finally bit the bullet and upgraded my personal system to an AMD Phenom 9950 Quad Core … with 8 GB of RAM as well. It’s fast. I really don’t know (yet) what to do with all of it … Finally … for those looking for CSK 3 news … none yet, but keep an eye here. :-)

Geek ride Sunday AM

Idle Babbling
I'm heading out for a ride with a buddy (another geek) this coming Sunday AM, July 13th. We're probably going to head out to Sam Houston Nat'l Forest, where it's an overall nice ride with some good twisties. If you are in Houston and interested in joining up, please do. We'll be meeting at about 7:30 AM at the IHOP at Spring Cypress and 249.

What is an AC Shoulder Separation?

Idle Babbling
And what, exactly, does air conditioning have to do with my shoulder? Yes, I did ask that. It seemed amusing at the time but then, I was also in some amount of pain. As you can probably guess, that happened to me. How? Well, stupidity is really the root of it. Was making a U-Turn on my bike and slowed down too much. Hit too much brake, I believe. Well, if you’ve ever ridden a bicycle or a motorcycle, they behave much the same when when they aren’t going. They fall. And so … my bike fell over on the left side and I fell with it. Hit the road pretty hard on my left shoulder. My head also hit the street, but I was wearing my helmet so that just felt like a little bump. I was also wearing my jacket, which has padding and protective armor. On the shoulder, even, but it’s more towards the top of the shoulder rather than the side. Still, the jacket prevented me from getting any road rash at all. That said, my shoulder hurt. A lot. And it had no strength at all. So … off to the hospital I went. I didn’t think that anything was broken, but I did think that I had a dislocated shoulder. Not quite. Turns out that a shoulder separation is different. You can read about it here but, in short, it’s when the junction of the clavical (collarbone) and the scapula (shoulder blade) are separated. And mine just happens to be a Grade 3 separation. A dislocation involves the humerus (upper arm bone) coming out of the socket. It’s getting better now … when I went to the ER, I couldn't move my left arm much without some pretty serious pain. Taking off my t-shirt was tedious, to say the least. Now, while I still have a good deal of soreness, I can move my arm almost all around without too much pain. Lifting or anything that requires any amount of strength, however, still hurts. Here’s a shot from my XRay. You can see the collarbone sticking up … even up to produce a lump on my shoulder. Doc says that I’ll have this forever unless I get surgery … and the surgery is optional at this point and would mainly be done for cosmetic reasons. So I’ll pass. 

WooHoo! Blog Update!

Idle Babbling
As you can see, I've updated the look of this here little blog o' mine. I know it's not quite perfect and I'm sure some of y'all out there would do a much better job of making it pretty, but I think it's not too shabby for a graphically-challenged programmer-type such as myself. It's still using dasBlog, of course, and I still have a bit to do before it's completely finished ... I want to add some additional graphical decorations and need to do some work on the admin stuff ... but it's mostly there. I also need to add some more blogs to the blog roll. I would like to thank a couple of folks for inspiration: Ben Scheirman: His presentation at the Austin Code Camp seemed to make me think that I could actually pull this off using CSS only for the layout. And also provide some tips. Additionally, I examined (in detail) the layout and CSS for www.dasblog.info, which he designed. So ... after some 10 years or so of using tables for layout, I'm finally moving past them. Joshua Flanagan: I pretty much took the <fieldset> idea for the individual blog items from his site design. John Forsythe: I started with his DirectionalRedux theme for dasBlog. It is somewhat unrecognizable now, but it did provide the base. And a lot of it really didn't change much. The whole dasBlog team, of course! Some notes on the trials and tribulations ... You saw, I'm sure, the issue that I came across if my previous entry. If not, well, go check it out then! That said, the templating engine for dasBlog, while powerful was, IMHO, somewhat difficult to work with ... no editor design support. While I do use HTML view for my markup, I still like the designer views. That's pretty minor though, considering the functionality and flexibility provided by dasBlog. Now, I am using Framework 3.5 for the AJAX support and the AJAX Control Toolkit. However, I found that enabling the search highlighting feature of dasBlog blew that up (at least that's what it looked like). So I turned it off. While it was somewhat difficult to figure out, it's really not that big of a deal. Overall, most of the real trials and tribulations were all my fault ... I'm just graphically challenged and that's that. Ensuring that the site looked OK in both IE and FireFox was fun ... each one has it's own little quirks ... but I'm sure that's not a surprise to any of you. There will be additional updates in the future but, for now, I'm going to start Memorial Day weekend by blowing something up. Virtually, of course! ;-)

<RANT>About Drivers and Fuel Economy</RANT>

Idle Babbling
Driving in Houston, for those that have had the joy, is certainly an interesting experience. It's not uncommon to see a dually zipping down the Sam Houston Tollway at 90 MPH, tailgating (and they brake at the last minute when they do this) and weaving in and out of traffic, sometimes with only a foot to spare. Now, while I could just rant a bit on just how, ummm, un-smart this is, I won't. And this is, for me, quite terrifying when I see this as I'm out and about on my motorcycle. Needless to say, any fight between my motorcycle and said dually would result in a somewhat less-than-pretty outcome for me. That said, this type of driver will be something of an example in what follows. So, here's the deal ... that crazy dually driver is gulping gas at a tremendous rate. Probably getting 5 MPG or so. The vast majority of the vehicles on US highways today are tuned for best highway fuel economy at around 60-70 MPH. Above that and your fuel economy drops exponentially. The exception may be some of the imported German vehicles ... they are designed with the Germany's famous Autobahn in mind. And then, every time he slams on his brakes (to tailgate someone and give himself a bad case of road rage), he's wasting the fuel that got him to that speed. I'm not going to go into that whole green-environmental-global warming argument. No worries. Let's do a little math here. Let's say he's going 20 miles on the tollway (that's 1/4 the loop). And he averages - not instant speed, but average, including all that braking - 80 MPH. At 80, it will take him 15 minutes. At 65 (the posted speed), it'll take 18 1/2 minutes. At 70 (the more reasonable speed), it's 17.15 minutes. Not that much time saved. But he's not going to average 90 -- because of constant acceleration an deceleration. He probably won't even average 80. And his fuel economy will be much worse. Let's pretend he drops from 15 MPG at 65 to 10 MPG (and that lower end is generous ... it's likely lower, with all that weight to keep going). At 15 MPG, he'll use 1.3 gallons. At 10, it's 2.0 gallons. At today's average gas price in Houston (3.23/gallon), that an extra $2.26. It doesn't seem like much, but that's just one trip. Driving the same way back, it's $4.50. If this is a regular trip to and from work, that's $22.50/week. At 50 weeks/year, we're at $1125. Now, for me, that's enough to pay for my insurance. His may be higher, depending on how many wrecks he's had and how many tickets. Oh, and getting busted at that speed will not only get you a ticket (for $205), it may well get you locked up for reckless driving (20 MPH over the speed limit). Finally, it's also an additional 1.4 gallons of gas per day. That's an extra 350 gallons/year. And this is a conservative estimate ... I'd bet that his average fuel economy for this trip is under 10 MPG (all that braking and heavy acceleration). Keep in mind that this is just this guy's daily commute. How much do you want to bet that this'll be the same person that complains the loudest about gas prices? Even with a typical driver, if you increase your fuel economy by 20%, you're looking at some savings. Assuming you drive 12000 miles per year (about average) and currently get 20 MPG, you would save 100 gallons by increasing your fuel economy by 20%. And this is still less than the US Standard for fuel economy. And, judging from what I've seen drivers doing, I'd bet that we could realistically get better savings. Looking at the gallons saved, it looks like a drop in the bucket, right? But once you start adding it up for all of the drivers on the highway, you are getting into some serious gallons. Now, before you start going off that I'm getting into an enviro-rant, I'm not. It's a question of national security and the country's overall economy. Oil, the cost of oil and issues related to securing oil resources in an ever-competitive oil market, the US's need to import massive quantities of oil to quench our thirst for driving like maniacs has put is in something of a bad situation. We are completely dependant on other countries for our very economic engine. One of these is Venezuela, which is interesting considering how much Chavez rails against us. And, of course, the Middle East. So much of our foreign policy today relies on ensuring our stream of incoming oil that it often hampers what we can realistically accomplish ... diplomats and policy makers have to keep this in mind. I was young, but I do remember the OPEC oil embargo of the 70's and have read about what it did to our overall economy (it was a Very Bad Thing™). Getting everyone in the country on board is impossible, of course. But a few individuals here and there can add up pretty quickly. There's an estimated 143 million cars in the US ... if just 2% of them improved their fuel economy by 20% using the MPG assumption above, we're at 286 million gallons/year. And there are additional efficiencies and savings that can also be brought into play to multiply this effect. How to improve mileage? Drive a little slower. You'll be able to get a good idea of where your best efficiency is ... you're tach will tell you. Lower RPM's is better. If you need to stay higher in the RPM's to keep your speed constant, you're wasting gas. Accelerate smoothly and don't floor it. Don't wait until the last minute to break ... just lay off the gas and coast a bit to bleed speed off. This is actually where you get the best mileage (especially at higher speeds) because your engine will be just above an idle ... and that helps your overall average quite a bit. For example, when using a ramp between highways (say the Tollway to I-10), I see many folks keep their speed up while going up the ramp and braking at the last minute. Rather than doing this, let your speed bleed off gradually ... use gravity and the rolling friction of your tires rather than your brakes.  This actually holds for any offr-amp. To do this, make sure you are looking ahead and planning what you're going to do. This is actually a good safety tip and one they drill into you in the motorcycle training course ... and it's made me a better driver in my truck as well. If you're sitting and waiting for someone, just cut off the engine. Sitting still is 0 MPG, so it's a waste. (Don't do this when you are stuck on I-10 during rush hour, though). And try using the cruise control ... it uses just enough gas to keep a constant speed. That task is a little tough for we humans. Finally, track your fuel economy. Set your trip when you fill up and just do a little math at every fill up. Set a target and think about how you drive to get there. Some things you can't help that will hurt ... rush hour traffic, for example. That's pretty obvious. The terrain you are driving over also has impact ... hilly vs. flat.  Again, this is obvious. Wind plays a huge factor as well, both crosswinds and head winds. I've driven to San Antonio on 30-40 MPH crosswinds and it used much more gas just to stay at 65 MPH. Tailwinds, of course, have a positive effect. Before I get going, and before you get the urge to try to accuse me of not practicing what I rant, let me get that out of the way right now. I do drive this way. And I also drive a hybrid vehicle. So, I do practice good fuel economy when I'm in my "cage" (that's a biker term for anything with four wheels and is, or can be, enclosed ... convertibles do count). No, it's not a Prius or anything like that ... it's an '07 Ford Escape. It's an SUV. With that vehicle, I typically average 30-32 MPG -- it has readout on fuel economy average, as well as instant economy, so I am pretty aware of how my gas consumption is currently going. It also has a continuously variable transmission, which help keep my engine RPMs at an ideal rate. With a traditional automatic transmission, you'll have to find this. It also cuts out when it's going slow (like rush hour traffic) and that helps a lot. In the worst rush hour traffic, I'll be on the electric motor 80% of the time ... the engine just jumps in to recharge the battery. This technology is continuing to improve and becoming more and more common My other vehicle is an '07 Kawasaki Ninja 650R. With this one, I typically average just over 40 MPG. I could get it up to around 50 (and I have) depending on how I choose my gear, especially on highway riding, but there's a reason for it. When on the highway, I try to keep my RPM's in the lower edge of the power band. So ... at 70-80 MPH, I'm in 4th or 5th gear, with the RPM's around 6-7000. If I pop it into 6th, I'd be at around 4-5000 RPMs, which is better for fuel economy. But then, on the highway, I want to have the power and acceleration to escape aforementioned dually. And at the lower RPM's, the acceleration is much lower. In 4th or 5th gear, I can get from 75 to 100 MPH is just about 2 seconds. In 6th gear, it takes about 5 seconds. I like having those couple of extra seconds to escape the crazy drivers ... it's a safety thing. Staying at that RPM also allows me to slow down quicker ... letting off the throttle at that RPM range increases the effect of engine braking. That safety thing, however, is not nearly really a concern in a cage. And most of the cars out there can't accelerate fast enough to make much of a difference anyway. Now ... if you don't drive in a way that helps increase your fuel efficiency, I don't want to hear you complaining about the cost of gas.

Blog Code Samples ...

.NET Stuff | Idle Babbling
Well, I just finished creating a resource in MSDN Code Gallery.  If you haven't checked this out yet, you really need to. All kinds of goodness up there. It looks like is running the CodePlex engine (and it probably is) but without a lot of the functionality of CodePlex.  Of course, it has a different goal and purpose. CodePlex is for complete projects and provides a collaborative environment for developers to build Open Source applications. Code Gallery, however, just has code snippets and other useful stuff that you can add to your projects. So ... this resource that I created ... it's not published yet, so you can't find it. However ... I will be adding code samples from this blog up there so that you can download them easily for inclusion in your projects. When I get that done ... and that should be in the next week or two ... I'll post the link to it here and will also have a link on links at the right.

A little trip down Memory Lane

Idle Babbling
Every once in a while, something comes up that gets me reflecting on where I've seen computing come from ... and my experiences with it. Certainly, I often talk to some of the "newer" folks in the IT community and feel like a grizzled old fart (think "I remember when ..."). I can just imagine what these stories will be like with my (hopeful) grandchildren hear them.  So ... I started programming, believe it or not, on a Casio fx 7000-G (I'm amazed that it has a Wikipedia entry). I got it back in my freshman year of high school (it was new then) at a place across from my freshman high school, Calvert Hall, called "Best" (not Best Buy ... just "Best"). Best no longer exists; Calvert Hall still does. By sophomore year (no longer at Calvert Hall, but at Towson High), I was programming this little calculator to do my math problems for me. I don't think my teachers quite got what it was or what it did; it's not like there were many programmable calculators at the time. It wasn't until senior year (by now at Dulaney High) that I actually had a teacher that truly understood what this thing did. He was my physics teacher (I'll not mention his name, but he did talk a lot about his heifers) and he had no problem with it. His attitude was this: if I knew the equations well enough to program the calculator, then I knew them pretty well, which was the point. And this calculator was the reason that I had a 110 average one semester ... not only did I ace all the tests (duh!) but I also wrote a bunch of programs for him to use in his Casio fx 7000 that he gave me extra credit for. He had no idea how to do it and, by this time, I could make that little thing with all its 422 bytes really hum. But, of course, let's not forget the consoles.  I first saw one when I was  somewhere around 8 or 9 (it was before my adopted sister, Nickkie, came along) at my Aunt Toni's place. It had Pong. That was all. I played it all night. I can't remember when we got an Atari 2600 console, but I do remember spending hours on it. But the cool one that I really wanted was the Intellivision with Intellivoice ... a friend Kevin and I would play B-17 Bomber at the Hecht's demo station for hours after walking the 20 minutes to get there. But neither his parents or mine actually got us the unit, much to our dismay. As for "real" computers (as in PC's), my first exposure was at a friend's house in the neighborhood, Karl. His dad was a principal, so they got an Apple ][ and then an Apple IIC either cheap or free (I'm not sure which). He was, at the time, much harder-core than I was and had actually had written some (simple) code on it. He even had 2 floppy drives!! This was before high school, if I remember correctly. My exposure was limited to playing the original Castle Wolfenstein (complete with yells of "Schweinhunt!") and Crusade In Europe. I thought it was cool and we'd spend hours on end playing it (it replaced AD&D as a favorite way to spend the summer -- between the 2 of us, we had all of the books for AD&D). Another friend (JP and Chris) had the Atari system (I forget ... and can't find ... which ... it wasn't the Atari 800) that had a keyboard and dot matrix printer (wow!) with word processing software. We did a neighborhood newsletter on it ... I was the editor. I think there were 2 editions before we got bored with it. For high school. Calvert Hall was actually very progressive ... they had a computer lab with Apple ]['s.  I played Oregon Trail when I wasn't getting into trouble. Then, at Dulaney, I took drafting in junior year and we got the very first Apple Mac's in the county to do some simple CAD. Well, we got the first one. We had one for the whole class and we had turns to do some simple CAD assignments in between doing drafting the hard way (with pencils, that is). I think I still remember how to use a T-square and triangles ... and how to align the drafting paper to the desk and tape it down. That wasn't even analog, folks. I didn't have a computer myself, though. Parents never saw fit to get one and, by the time I was half-way through my senior year of high school I was "emancipated" and struggling just to eat something besides chicken hot dogs and Ramen noodles. It was, to be sure, interesting to explain to the school administration why I was under 18 and writing my own absence notes but, I have to say, there were some great teachers and counselors (Mrs. Kirchner and Mr. Fanto jump to mind) there that believed in me and really helped. That said, I wrote my senior paper at my girlfriend's (Laura) house on WordPerfect v.(I have no clue) since I didn't have a typewriter.  In my first 2 years of college (at Essex Community College, now a part of the Community College of Baltimore County), I took an "Introduction to Computers" course where I learned all about DOS, WordPerfect, Lotus 1-2-3 and dBase. Somewhere in that time, I bought myself a "Personal Word Processor" on my Circuit City credit card ... I guess you can call it a computer of sorts ... to write my papers (very important for a lit major/philosophy minor). It was fun to change the disks for regular and italic. But bold didn't exist. I had a lot of my poetry and short stories on those disks, which are now lost forever. But, by my second year at ECC, I was doing most of my papers at my girlfriend's (Michelle) house ... her parents had a PC with WordPerfect. With that background, I'll move forward into the "J has a computer" era. On graduation with my Associate's Degree, I got my very first computer. It was an AMD-based 386sx25 with an 80MB hard drive, 3 1/2 and 5 1/4 floppy drives, a whole 2 MB of RAM and even Windows 3.1! Remember MemMaker? I was set, now, for my entrance into Goucher College. It was there that I took my first computer programming class ... on QuickBasic ... and got started down my current path. I was, however, still an English lit major. Through that time, I only had one professor that actually "got" computers ... he'd take papers by email (hi tech stuff at the time) and also introduced me to Neil Stephenson's Snow Crash. Of course, I was, I guess, the only student in his classes that got computers in a pretty hard-core way and we'd talk about the possibilities of HyperCard to create reader-driven literary experience that could only exist in the digital world. This was, ironically, the same prof that I had for my Chaucer class. I was, at the time, very interested and heavily influenced by the Reader-response critical theories (I wanted to study under Stanley Fish for my post-grad) and this was a natural extension of it. I also finally had Internet connectivity from my home. With a 1200 baud (that's bits per second for you young 'uns out there) connecting to a Unix host server running all text-based applications. Like Pine, Lynx, some Gopher client (Gopher was cool back then). The UseNet was actually usable. I built my first computer shortly afterwards. It was a 486DX2/50 with 8 MB RAM. It had VL-BUS for the graphics card, which were just beginning to be something more than a stupid thing to push graphics to the screen. I had a Hercules VL-Bus card, though I can't remember the name of it. Oh, yeah, and sometime around then, hard drive storage got down to $1/MB. I bought a 350 MB HDD for $345 and thought I had a vast expanse of hard drive space that I'd have a hard time filling. There was also the EISA architecture out there for add-on cards, but it was too expensive. PCI finally killed it off completely. Now, to get all the parts, I didn't go online. Ecommerce didn't exist then. I don't think that Mosaic had been released yet. I used a magazine call Computer Shopper and browsed through all the ads, calling my orders over the phone (how quaint!) Wolfenstein 3D was out too, and much better than the original Wolfenstein. And let's not forget Doom. Even better, though, I absolutely loved Descent and would actually play a friend over the modem. I'd also upgraded my modem to 2400 baud, then 9600. Eventually, internet connectivity was via a dial-up interface more similar to what we have today (for modems, that is), but configuring it was something of a nightmare. WinSock was a pain to do and get SLIP configured correctly was also a lot of fun. And then standing in line for Windows 95, buying it at midnight ... wow.  It's amazing to look back where all this technology started. In just a few short years, we now have multi-core processors easily available. For the longest time I wanted a dual-CPU system, but it was just too expensive. Now you can get 4 cores on 1 chip (I don't have one of them ... yet). Gaming has gone to new levels on both the console side (XBox 360) and the PC side. Memory? I've got 4 GB. That's bigger than a lot of the hard drives that I've owned. As for hard drive space, my data drive is 1TB. My OS drive is 750GB (for multi-boot). That's almost 2TB on one desktop. High speed internet connections are pretty standard fare ... and you can even get cellular high-speed internet adapters for your PC, so you can have broadband just about anywhere you go. My phone is probably more powerful than my first computer. It's certainly got more memory. And graphics cards? Well, the GPU's are faster than many, if not most, of the computers I've owned and they have more memory than you could even put on a motherboard until recently. These are dumb cards anymore, not by any stretch of the imagination. What will things be like 15 years from now? My mind spins just thinking about it. But ... I have no doubt that we'll look back on today's computing platforms and laugh at how powerful we thought they were.

Team Foundation Server Dogfood Update

Idle Babbling | Visual Studio Tools
Here's the latest on Brian Harry's blog: http://blogs.msdn.com/bharry/archive/2008/01/09/jan-08-devdiv-dogfood-statistics.aspx.  Keep in mind that this is just for DevDiv (Developer Division) ... so we're talking about the developer tools (i.e. Visual Studio, etc).  There are other groups using TFS inside of Microsoft.  Looking at this ... wow ... it gives you an appreciation of the amount of development that is done here.  Speaking of TFS, I heard a customer story about TFS recently that really speaks to the value. So ... a remote dev center was coding away on an application, but Central IT noticed that they had a lot of bugs being re-opened and that overall, things didn't seem to be going too well.  Of course, re-opened bugs ... well ... that's definitely a problem. This was exposed to the Central IT team through the OLAP and reporting capabilities of TFS. But the data and processes ... well, it's easy and natural for devs to work with so they tend to actually do it. Having the working items completely integrated into VS and into your check-in process was a huge thing for me.  So ... Central IT was very concerned and they had the remote team come down to see them. They went over what was going on. As it turned out, the remote team didn't have a clear idea of the vision of the project and this was leading to a lot of issues. They got this resolved ... and the team got back to work. This time, though, the stats were better. It took the business another 3 weeks to notice this; by that time, the underlying issue had been corrected. Three weeks of development time that would have been ... ummm ... less than productive had already become very productive. It saved 3 weeks on a time-critical project. And, of course, the largest cost of a software project is the people ... the developers' time. Well, I thought it was cool.

Bill G's last day at MS

Idle Babbling
.para { font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 10pt; } Well, it's been talked about for some time ... Bill Gates will be retiring from his position as Chief Software Architect here at Microsoft. In commemeration of this (commemeration? well, I guess that works), a video detailing his last day was shown at the CES 2008 keynote. You can check the video itself out at the I Started Something blog.

Forays into LSL ...

Idle Babbling | Second Life
I've made my first foray into LSL ... the Linden Scripting Language.  This is the scripting language used by Second Life to do ... well ... all kinds of things with stuff in SL.  After spending some time playing with it and even more time fighting it, here's my own personal point of view.  Keep in mind, too, that this is coming from someone that's been working with the most advanced code editors in the world for many years ... these being the different version of Visual Studio (no, not Eclipse ... they copied). OK ... LSL is pretty flexible.  You can do some interesting things in-world with it.  If you look around Second Life, this is pretty obvious ... there are a lot of things that are scripted in there.  And it really does add to and enhance the experience.  Things like particle systems, bling, payment and vendor systems ... basically anything that does more than just sit there ... is based on LSL scripts.  It's very similar, structurally to C and C-derived languages such as C++, C#, Java and JavaScript, so if you already know these languages, you have a leg up.  That said ... well ... let's see ... where to start.  I'll start with the most basic thing that a developer needs for any environment.  No, it's not an editor, it's documentation!!!  The official documentation for LSL is on the Second Life wiki's LSL Portal (http://wiki.secondlife.com/wiki/LSL_Portal).  Finding this, at first, was something of a challenge.  You have to know that it's part of the wiki ... there is no self-evident link (that I could find which, of course, means that it's not self-evident in my little world) on the Second Life home page or in-world. Now ... I do think that wikis are an awesome way to disseminate information and get feedback (MSDN has done a great job with this), but I do think that there should be complete documentation provided by the vendor, with wiki functionality as an enhancement. If you look at the wiki, there is even a list of functions that need examples.  Can you imagine if Microsoft did this with .NET?  People complain about out documentation all the time (and I agree ... it could be much better), but it is worlds better than the LSL docs and, in fact, a lot of the other documentation that I've seen out there. There is an alternative documentation effort as well (and why is that?) at http://www.lslwiki.net/lslwiki/wakka.php?wakka=HomePage which, it seems to me, is a bit more useful.  Now ... the in-world editor.  Oh boy.  Reminds me of the VB4 editor ... color coding but that's it. It is very lacking in some of the basic features that modern developers have come to expect in a code editor (regardless of their choice of editor).  There is no Intellisense, no argument help, which results in constant flipping back and forth between the editor and the documentation.  There is a combo box in the editor that lists all of the built-in functions and constants and will insert these, so that's helpful.  However, I was expecting that a function gets inserted with argument placeholders ... this would seem to be easy to do (certainly easier than Intellisense) and make it a little more intuitive.  The development involved to do that would be no different from what they are already doing with this combo box, so I'm somewhat baffled as to why it's not there.  Yes, there are separate editors, but most lack a runtime environment and even those that do, the runtime debugging environment is merely an approximation of the real SL runtime.  And then there's the quandery of taking the externally edited scripts and bringing them in-world.  Closely related to the editor (at least in my mind) is the debugger (after all, it's the editor that you use for debugging, right?).  Ummmm ... what debugger?  Seriously ... what debugger?  There is no in-world debugger.  Yes, there is a test harness posted on the LSL wiki, but it's not really an interactive debugger. Debugging your scripts involves the stuff that we used to do in ASP "Classic" (even with InterDev 6, debugging ASP Classic was something of a challenge at times). So ... yes, just like Response.WriteLine().  Except ... you have to use a dialog channel for it.  Fortunately, there is a debugging dialog channel that goes into the Script Error/Warning Window. But peppering these calls throughout your code?  Ugggh.  Of course, just like in ASP Classic, I wrapped this in a function ... sendDebugMessage(string message) { llSay(DEBUG_CHANNEL, llGetObjectDesc() + ": " + message); } everywhere) with on line commented out. You'll also notice in there the "ll" before every function call. All of the LSL functions are prefixed with "ll". Most of the functions have names that are very obvious about what they do, which does make the code somewhat easier to read.  But they are quite limited in scope (about 300 functions in all, I believe) and there are some functions that I would expect in there that aren't.  There is, in fact, a section on the LSL Wiki that lists a function wish list (see http://wiki.secondlife.com/wiki/LSL_Useful_Function_WishList).Now, one of the very interesting things about LSL that I saw was that each script is actually state-driven.  I can't say it's quite a full state-machine, but it is state-oriented.  (Think VB 6 ... not object-oriented, but it was object-centric)  Each script must have a default state, but also can have a number of other states, depending on what you want to do.  Each state will have its own event handlers for LSL events and there is an LSL function that allows you to change states.  This may initially be somewhat alien to traditional MS developers, but it's pretty easy to pick up.  And if you are familiar with Windows Workflow Foundation, it'll be very obvious (even if you feel it's limited compared to WF). So ... state driven with events.  Object oriented?  Not even close.  VB6 was closer to being object-oriented.  Arrays (or Lists in the LSL type system) aren't even directly accessible but must be handled using a whole set of LSL functions specifically for manipulating them. You can run multiple scripts in an object ... in fact, all scripts contained in an object will run simultaneously and can be in different states at any one point in time.  This does make for some interesting possibilities as well ... though it can pose some challenges if, for  some reason, you need to synchronize states between the different scripts.  Which brings be to reusability and componentization.  These are core concepts of programming languages that date back to ... what?  the Stone Age?  Yet, in LSL, this is quite challenging ... there is no direct way to reuse scripts in multiple objects.  Instead, you have to create a link channel that allows communication between them. Linked messages allow scripts in multiple prims in the same object to communicate ... or separate scripts in the same prim to communicate.  This is, in fact, mentioned quite directly in the official LSL wiki:Using llMessageLinked in a single prim object allows developers to mitigate some LSL limits by breaking up functionality between cooperating scripts and synchronizing actions. When you do this, be extremely careful not to create infinite loops as mentioned above. It does strike me as a somewhat inelegant way to accomplish this. I can see the need for it, I suppose, between multiple scripts in separate prims, but between scripts in the same prim?  I don't know ... slap me twice and call me silly (you wouldn't be the first, I can guarantee that!). Wow ... looking over this, it looks like a major complaining and whining session.  OK ... well, it kinda is.  None of this means that I don't like Second Life and none of it means that I don't think that Second Life has huge potential as a new community and communication paradigm.  And the Lindens have done an outstanding job creating the world and a rich, immersive client.  There is, honestly, quite a lot of amazing stuff that they've put into SL.  It just occurs to me that the scripting environment may not be their strongest talent.  I have heard a rumor or two that they are looking to implement Mono in SL as a scripting language, which would take a great deal of the work off their plates.  I think it's a fantastic idea.  Some of you .NET purists may be frothing at the mouth ... "Why aren't they using the full .NET?  Why Mono?".  Well ... if you are one of them ... chill.  The reality is that the Lindens have to provide a client for Windows, Apple and Linux.  It's just a fact of their business.  The full, Microsoft-provided, .NET Framework doesn't run on 2 of the 3.  Mono runs on all three.  Should this happen (and I hope it does!), we'll get real OO and C#! And now I'm off to dabble in LSL now.  Going to play with the XML-RPC (oh, how quaint!) and HTTP functions to start getting in-world scripts hooked up with .NET web applications running in the cloud.  That could be many levels of coolness!!