GeekSpeak comments edit

Shout at the
Devil!I have a pretty diverse group of friends, some of whom are developers and some of whom aren’t.  A subset of the non-developer folks have, at times, mentioned to me that they really want to learn how to program but:

  • They don’t have a computer background.
  • They fear it takes a long time to learn how to do anything good.
  • They don’t have time to go to school.
  • They don’t want to read thousands of pages worth of books before writing code.
  • They’re intimidated by the seeming complexity of programming.

There are plenty of people out there who are self-taught programmers. For non-developers who want to learn, don’t be discouraged.  Here are my recommendations for people in this situation:

  • Start small.  Don’t try to build a 3D rendering engine as your first program.  Don’t try to build an RSS reader as your first program.  Don’t try to build a screen saver as your first program. Instead, pick a small task that you do all the time and automate that.  Maybe once a week you copy last week’s status report and rename it to something new so you can start this week’s status report.  Maybe you manually read through a text file and summarize a report out of it every day.  Pick something small and repetitive to automate as your first task.
  • Avoid GUI programming.  There are lots of great WYSIWYG tools out there for dragging buttons onto forms and having cool things happen, but these tools mask a lot of the goings-on from the developer and that’s not always a good thing.  If things work perfectly, no problem.  If they don’t… well, it can be a frustrating experience for the newbie.  Write something that runs at a command line so you won’t have to deal with the windowing environment.
  • Keep focused on your task.  Your first program that prints something to the screen is referred to as a “Hello World” program (because, classically, the first line it prints is “Hello World”). Do your “Hello World” and then get back to the task you chose to do.  Why?  Having a task to accomplish is a milestone.  If you’re just tinkering around in “Hello World” land, it’s hard to really see any results or feel fulfilled that you’re learning anything.  That’s discouraging and I’ve seen several folks just give up because they didn’t feel like they were getting anywhere.
  • Use a scripting language.  You probably shouldn’t try your first program in C++ when there are so many far easier languages to use to accomplish simple tasks.  I’d look at VBScript, batch scripting, AppleScript, or some other simple, high-level scripting language of your choice. (HTML is nota programming language, so don’t pick that.)
  • Take online tutorials and do the exercises.  There are several free online resources to learn how to do simple scripting.  Take advantage of them.  When you see code examples or exercises in these tutorials, do them.  There’s nothing quite like actually doing it to help you understand.
  • Get a tutorial book and a reference book.  Once you’ve picked a language (most likely after you’ve done one or two of the online tutorials) go to your local bookstore and pick up a tutorial book and a reference book on your chosen language.  The tutorial book will teach you how to do simple things in your language and will have a title like “Learn BlahBlah In A Week.”  Tutorial books are good to augment the online tutorials you find out there.  The reference book will help you as you’re working so if you need to look up what all of the options are for a certain thing, it’s right there.  When you’re starting out, a book might easier to deal with than trying to coordinate online help and your script across multiple windows/monitors.
  • Don’t get overwhelmed and don’t give up.  Programming isn’t slam-dunk easy.  If it was, there’d be a lot of programmers out of jobs.  Don’t let yourself get overwhelmed by your efforts.  If you find that it’s becoming so overwhelming that it’s not fun anymore and you don’t feel like you’re making any progress, maybe you picked a task that was too difficult.  Instead of giving up, pick a smaller task or maybe break the task you’re trying to automate down into smaller sub-tasks and solve each one independently.  For example, if you’re copying and renaming a file and that’s too hard, maybe just do the copy part first and handle the renaming after you get the first part down.

For the developers out there, what do you tell people who ask you how to start learning to program?

GeekSpeak, dotnet comments edit

I’m all about testing.  I do my best to adhere to test-driven development (though, admittedly, sometimes that’s hard when you’re doing some experimental work just to see if something’s possible).  I even go as far as mocking full page request lifecycles to test controls and page behavior.

But say you have a little code block like this:

if(!initialized)
{
  lock(syncroot)
  {
    if(!initialized)
    {
      Initialize();
    }
  }
}

Standard lock/double-check stuff to ensure things only get initialized once.  Does anyone have a good way to test that?  A quick search of the net turns up… well, pretty much nothing.

media, movies, books comments edit

For those who haven’t read the His Dark Materials trilogy, do that, and prepare for the movie coming out in December.

Neat thing about the movie site - you can take a little quiz to see your daemon. I dig it. Here’s mine. If you know me, you can vote on this for the next few days) and say whether you think it fits or not:

General Ramblings comments edit

First, out with it: I’m getting laser hair removal on my face.

“Seriously?”

Yes.  Interesting that’s the first reaction people have when they hear that.  But figure it this way: I can’t actually allow my facial hair to grow.  If I do, I have all sorts of skin complications ranging from pretty bad ingrowns to severe acne and everything in between.  Talking to multiple dermatologists, I’m not ever supposed to let it grow. Ever.  So I get the exciting fun of shaving for, well, ever.  No point in that, now, is there?  Laser hair removal to the rescue.

I went in on Saturday for my first treatment.  When I scheduled the appointment, I was told there were two different lasers that could be used: The MeDioStar or the Dermo Flash.  (Okay, the Dermo Flash is technically a Non-Contact Pulse Light, not a laser, but whatever.)  The MeDioStar removes hair by zapping each individual follicle; the Dermo Flash is more of a broad-spectrum thing that can cover several hairs at once.  The MeDioStar was described to me to feel “like having a tattoo.”  I don’t have any tattoos, so that didn’t help me.  The Dermo Flash was described as more of a “heat” oriented thing.

I have like zero pain tolerance, so I specifically requested the Dermo Flash.

When I went in on Saturday, the technician told me that the Dermo Flash was pretty new so they didn’t know how well it would work on coarse hair like the stuff on my face, but hypothetically it should work. (According to the company, it should work.)  On the other hand, the MeDioStar is more of a “guaranteed results” thing… but it hurts. “No pain, no gain in hair removal,” said the technician, Jessica.  “The Dermo Flash is pretty new and we haven’t really tried it out on some of the more coarse-haired folks.  It’s supposed to work, but we haven’t really tried it out much.  The MeDioStar always works.  Why don’t we just start you on the MeDioStar and see how it goes?”

“Okay,” I said.  “I’ll have to take your recommendation on this.  I don’t know much about it.”

“I’ve got to warn you, though,” said Jessica.  “It hurts.  Bad.  The only time I’ve really ever made guys cry is with this thing.  It’s far worse for coarse, dark hair than it is for light hair, so it’s not like if your wife was to have her legs done or something.  This is 100 times worse than that.  My boyfriend has had some work done with the MeDioStar and he said he’d rather sit through a five hour tattoo session than have this again.”

“Oh, well, now that you’ve sold me on it, let’s hit it.  I’m looking damn well forward to it.  Bring it on.  Seriously, though, if this is the way to go, I guess let’s try it and we’ll see.”

Jessica put some eye protection (sort of sunglasses) on me and handed me a rubber glove full of ice and told me to ice up the area.  I did, held it on as long as I could stand it, and then she brought out the MeDioStar and started dragging it across my lower neck, from my adam’s apple to just under my ear.  “There are only a few hairs here,” she said, “so you’ll get a feel for what it’s like.”

Oh.

My.

God.

Seriously.  I’ve been hit in the nuts before and a good punch to the junk has nothing on MeDioStar hair removal.  It was about this time when I realized that ice really doesn’t do shit for pain.  The thing only zapped me three or four times and I was pretty much hurting.  “Can you handle it?” she asked.

“Um… uh… well, it does hurt, yeah.  I guess try another section,” I said, thinking that maybe it was just tender right there.  I mean, it’s your neck, right?  It’s gotta be pretty tender there.

She ran the thing along the next area just above the first.  This time it zapped maybe eight times.  The goggles she put on me started fogging up and my toes were curled in my shoes.  I crushed all the ice in that stupid rubber glove.  I was pretty much ready to die.  “There’s this cooling plate here, see, that cools the skin way down before it zaps you,” she said, like that helped.  “Oh, and if you want to curse at me or something, that’s okay.  I’m used to that.  By the way, it gets a little worse along the jaw line.”  She started in on the next area up… at my jawline.

This time it shot me maybe 12 times.  That was pretty much all I could stand.  “Jesus, are you sure you can’t just give me something for this? Like the dentist gas or something?  Seriously, I’ll pay for it.  A lot. Anything.  Just give me something because I swear I’m going to pass out in a minute.  This is the worst.  Ever.”

“Yeah,” she said, “a lot of a our patients would like the gas.  I’ve been working on the doctor to see if we can get some but he hasn’t yet.”

“Well, I don’t think I can do this thing anymore.  This is just too much.”

“Do you want to try the Dermo Flash?”

“Oh, hell yes.  I’ll be your experiment.  You can verify whether the machine does what the company claims or not.”

“That’s not a bad idea.  And if it doesn’t work, we’ll comp you this treatment.”

“Fair enough.”

The Dermo Flash is a walk in the park compared to the MeDioStar.  This nozzle-looking thing gets put on your skin and then bam! it shoots you with this hot beam.  It sort of feels like a rubber band snapping you and it leaves a warm sensation.

I could do Dermo Flash all day long.  I almost wondered if Jessica pulled the MeDioStar out on me specifically so my pain expectation would be heightened to the point that the Dermo Flash almost feels good in comparison.

When you’re done with Dermo Flash, your face feels like you’ve got a low-grade sunburn, but that goes away after a day.  You’re not supposed to go out in the sun for a few days afterword because your skin is light-sensitive.  On the other hand, the MeDioStar section of my neck is still red and irritated looking and sore.

I am praying - and you should pray for me, too - that Dermo Flash works.  I’m finishing this thing, but if it’s gotta be MeDioStar, they’re going to have to give me some serious drugs.

UPDATE 8/30/07: In case it isn’t clear - Jessica is cool and really easy-going and the place I’m going is also very cool with lots of cool people.  I’m happy with the service so far.  I just wasn’t really ready for the MeDioStar and I don’t think there’s anything that could have been done to make me ready.  We tried it, it hurt too bad, and I’m hoping against hope that Dermo Flash does the job.  We’ll see in a week or so!

General Ramblings comments edit

This weekend was pretty crazy with all the running around, but the major goings-on included…

My mom got me a copy of The Simpsons Handbook through her work, but she was also able to get it slightly personalized for me on the inside…

Matt Groening personalized drawing of Bart
Simpson

That’s right - she got Matt Groening himself to sketch Bart on the inside!  Far, far too cool.

While we were with them on Saturday, we went shopping for bicycles, too.  Mom and Dad bought them for us as belated wedding gifts - far better than a toaster!  Jenn and I have been wanting bikes for a while, so we were pretty stoked.  Jenn ended up getting a Giant Sedona and I got a Giant Cypress. Jenn was able to bring hers home on Saturday, but mine’s still getting put together and should be done today.  I’ll have to go in and pick it up tonight or maybe tomorrow, pending on my schedule, from the local Bike n’ Hike.

We’re all geared up with helmets and bells and everything, ready to take a ride.  The only things we really haven’t gotten yet are locks and racks (so, yes, we’ll have to put my bike in the back of the car for now).  We want the Yakima KingJoe 2 but we haven’t been able to find it anywhere around here.  Maybe we’ll have to order it online. Anyway, I’ll post pictures of the first ride when it happens.  I’m excited.

My dad’s brother and family were up here this weekend visiting from California, so we got together with them, too.  It was nice to see them again and demonstrate how thoroughly I trounce Dad at Xbox 360.