CodeTurtle 0.3 Released
March 31st, 2009
After four graded projects for the semester, I figured it was about time to get the changes I’ve made in that time out into a new release. There are a few new things coming (hopefully) soon and am getting some outside help, so making a clean break now felt like the right time. Ok, and to be honest, I was starting to lose track of what I had added to the release notes and what I had just committed on the fly in an effort to get done grading projects, so I wanted a fresh start.
Like I said, I’ve now graded four projects this semester using CodeTurtle, so a number of the changes were made directly as a result of something that was actively annoying me. For instance, while writing the project grader, I found myself restarting and reloading the project a number of times. To facilitate that, I added some minimal command line support to automatically create the grade book with the proper grader and submissions values (I’d also like to add a “Reload grader” option in the near future).
The biggest change was gutting and rewriting the project grader APIs. I’ve written about some of the changes before and I want to write up a much better tutorial on writing a project grader in the near future (I know, I know, everything I want to do is in the “near future”), so I won’t talk about too many details right now. I will say that the new APIs feel a lot cleaner and have added quite a bit of flexibility in the way I do the testing of the student submissions.
The sample project is a bit lame and doesn’t really showcase all of what CodeTurtle can do, I realize that. I need to find me an intern or a monkey or a student in dire need of extra credit to flush that out for me.
Oddly, as I look back 0.2 was released right near Spacewalk 0.4, and now this one happens to line up with 0.5. I guess all that talk in work about releasing things inspires me.
CodeTurtle 0.3 can be downloaded at the project’s site on SourceForge.
Spacewalk 0.5 Released
March 31st, 2009
I’m feeling really lazy and don’t feel like formatting the announcement, so you can read the one posted to the mailing list instead.
There are two important things to note in this release:
- Spacewalk now runs on Fedora 10. That’s great news, but now I have to finally stop putting off deciding on a cleaner solution for my home lab machines.
- Since I’ve been on the team for a while, this release has even more of my code in it. Anything I write is guaranteed to be 100% totally awesome and gives happy feelings and good karma to those who use it, making this the best Spacewalk release yet.
Disappointment
March 30th, 2009
On Monday nights, I take care of my daughter after work so my wife can go to the gym and just have some general non-mommy time. Since the weather is getting nice lately, we usually walk around the neighborhood and go to the park down the street. Tonight it’s a bit cold and windy, but since I couldn’t bring myself to suffer another night of Elmo and trying to keep her from eating crayons, I decided we’d head to Game Stop and Barnes & Noble.
Yes, I know that sounds lame, but she likes running around taking the games/books off the shelves and unlike in the house, I don’t have to bother cleaning up after her.
I drove approximately 6 seconds from the house when Leanne starts asking for her Elmo CD. Shit, it’s in my wife’s car. I entertained her as best I could until we got to B&N and decided it was worth the trip to the music section to have some sort of backup CD in my car.
After wading through a sea of complete and utter shit (the inventor of Yo Gabba Gabba should be pushed off a cliff) I found a Disney CD of nursery rhymes. With the onset of Hannah Montana and the Jonas Brothers plagues, buying Disney these days is a bit of a risky venture. However, the large hackergotchis of Mickey and Minnie on the front of the CD offered a sense of reassurance.
After twenty minutes of chasing my daughter around B&N to try to wrangle her into the car, we found ourselves ready to listen to our newly bought Mickey CD. But instead of Mickey, it’s some dude singing. At least he wasn’t the creepy child molester type singer you normally find on these CDs, but the fact still remained that 5 songs into it, he was still singing. Not a single peep from Mickey or Minnie. I had at least hoped for an intro and maybe a few tracks here and there of him spouting off mind-numbing messages to children. Nope, not a single word from the iconic mouse.
I am so disappointed. Mickey, the symbol of the happiest place on earth, has whored himself out to sell 7 dollar CDs to toddlers.
Shell Tricks – Volume 2
March 29th, 2009
There is always new cool stuff to learn, especially when it comes to using a command line. It’s always been interesting to me to see scripts and random commands my coworkers use since there is inevitably some arcane yet handy command I never knew existed.
A few months ago I posted Shell Tricks, a pretty random set of short cuts and tricks I use on a regular basis from a shell. Pretty much immediately after finishing it I started this post as a way to keep a running track of things I picked up after the original post. I figured once the list got to a reasonable size I’d clean it up and post it.
- Change to the last directory – I forget where I picked this up, but I’ve been using it for as long as I can remember. To switch back to the previous directory you were in, run
cd -. For example: - Insert the last argument – While I use the up and down arrows regularly to scroll through previously executed commands, sometimes I need to execute a new command on the same argument I previously used. Typing the escape key and then period will fill in the last argument from the previously executed statement.
- This is less a shell trick and more of a “if you never knew this existed, it rocks and you want to install it.” My coworker Partha introduced me to rlwrap a few months ago. It came out of a frustration that sqlplus didn’t offer a way to use the up and down arrows to look through a history of SQL I’ve typed. That made it really annoying if I typed out a long ass statement only to find I made a typo early on. Now, if I run
rlwrap sqlplusI get all of those nice user input features.I’m not sure how clear that is to the reader, so I’ve included a snippet from the rlwrap man page:
rlwrap runs the specified command, intercepting user input in order to provide readline’s line editing, persistent history and completion.
- Cowsay – Cowsay is an example of why geeks are pure awesome. When you run cowsay, you give it a string of text and it outputs ASCII art of a cow saying it. I’m not kidding. I know it’s available to both Fedora and Ubuntu distributions, and I’m sure many others offer it. For example:
-> cowsay Geeks are awesome ___________________ < Geeks are awesome > ------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
In case you were thinking it couldn’t get any more full of win than that, believe it or not it actually supports a pretty detailed series of arguments. For instance,
-drenders the cow dead (look at the eyes):-> cowsay -d Dead cow __________ < Dead cow > ---------- \ ^__^ \ (xx)\_______ (__)\ )\/\ U ||----w | || ||
There are also options for tired cow, greedy cow, stoned cow (my favorite), and others.
It gets even better. There are other templates besides cows. For the Canadians:
-> cowsay -f moose Moose _______ < Moose > ------- \ \ \_\_ _/_/ \ \__/ (oo)\_______ (__)\ )\/\ ||----w | || ||
A rather detailed dragon v. cow fight:
-> cowsay -f dragon-and-cow Dragon and Cow ________________ < Dragon and Cow > ---------------- \ ^ /^ \ / \ // \ \ |\___/| / \// .\ \ /O O \__ / // | \ \ *----* / / \/_/ // | \ \ \ | @___@` \/_ // | \ \ \/\ \ 0/0/| \/_ // | \ \ \ \ 0/0/0/0/| \/// | \ \ | | 0/0/0/0/0/_|_ / ( // | \ _\ | / 0/0/0/0/0/0/`/,_ _ _/ ) ; -. | _ _\.-~ / / ,-} _ *-.|.-~-. .~ ~ \ \__/ `/\ / ~-. _ .-~ / \____(oo) *. } { / ( (--) .----~-.\ \-` .~ //__\\ \__ Ack! ///.----..< \ _ -~ // \\ ///-._ _ _ _ _ _ _{^ - - - - ~
And of course a sheep.
-> cowsay -f sheep Sheep _______ < Sheep > ------- \ \ __ UooU\.'@@@@@@`. \__/(@@@@@@@@@@) (@@@@@@@@) `YY~~~~YY' || ||
I’ll stop there. Trust me, there are more. This is what happens when you let geeks have free time.
- The
slcommand is arguably even cooler than cowsay. I can’t even fully do it justice in a blog entry, so I’ll leave it to the reader to install and see for yourself. My understanding is that it was meant as a way to mess with noobs who typed “sl” instead of “ls”. Not sure how legit that is, but I like the explanation.
-> cd code/rhn/spacewalk/ -> cd ../satellite/ -> pwd /home/jdob/code/rhn/satellite -> cd - /home/jdob/code/rhn/spacewalk
Twouble with Twitters
March 26th, 2009
Too. Freaking. Accurate.
This is why I can’t really stand twitter these days. I don’t care what you’re reading. I don’t care what you ate for dinner. Make your tweet funny or provide real information or please, stop talking.
Comment of the Day: Me
March 26th, 2009
The Spacewalk team doesn’t seem fond of the @author tag on its Java classes. I’ve heard the mentality before… “No one owns the code”… “Everyone should feel able to change it”… “You can find it out who wrote it from the source control system”… and so on.
The last rationale is especially funny to me, since on both projects where this argument was made, the code was moved to a new repository at one point and all history before that date was lost, including the original author.
I personally find the @author tag useful in finding out who to ask about a particular class. Thankfully, the Spacwalk team is pretty good about remembering who is an expert on what and I’ve never had an issue. So despite my objections, I’m fine with not using @author tags.
Then I come across this nugget in our codebase…
1 | // /me wonders if this shouldn't be part of the query. |
The /me is actually the way to emote in IRC. It is basically used to indicate you’re “doing” something rather than saying something as in a normal chat. So syntactically, I’m not confused by why the comment is phrased that way.
What I did find myself asking, out loud no less, was who the hell “me” is in this particular case.
I’m a huge fan of these sorts of inline comments as I’ve alluded to before. But one thing I forgot to mention was that I often throw my name or ID after the comment for comments that are expressing a concern or a personal belief. That way, if the code comes under review, you can ask the commenter their mentality or if the issue still applies.
Perhaps even more important is the date the comment was made. With as rapidly as things change in most projects, it’s not a surprise that a thought or comment that used to apply no longer applies. Scoping the comment to a particular time frame helps whoever stumbles upon it realize it may not still apply. It can save the next dev a lot of time wondering why a comment is saying to add something that may no longer exist.
Or, perhaps using /me is just meant as a brainwashing technique. I’m going to add a comment /me buys Professor Jay a beer to my next commit to see if it really works. And if it does, I’m enrolling my wife in my class next semester and teaching her to be a programmer.
V for Villanova…
March 26th, 2009
I hate basketball. I’m actually not a fan of team sports in general, but I hate basketball as a game too. That said, I have a lot of Villanova pride. I’m surprised to find myself sucked into the NCAA tournament this year — well, Villanova’s progress at least. So today, the whole family is giving good karma to Villanova, including our little wildcat:


