Episode 6: DBA Stack Exchange Challenge

Database Administrators Stack Exchange
DBA.SE

Here’s a short episode in the Stack Exchange Challenge, for Database Administrators. It’s a weird one in the eco-system in my opinion. When you first hear about it this would seem like a great and vast topic to ask and answer questions about, but in reality it turns out this one’s not all that active. But lest I start with a conclusion, let’s first dig up the facts!

Current Statistics

Here are the usual stats for this particular sub-domain:

Fact DBA.SE
Questions 8,660
Questions with no upvoted answers 767 (8.86%)
FAQ (questions with most links) 1,619
Top 3 questions 130 votes, 74 votes, 64 votes
Questions active last hour 9
All-time rep for top 3 users 38.0k, 28.9k, 21.7k
Meta questions 245

My Questions

So far I’ve asked three questions on DBA.SE, and I’m moderately pleased with all of them:

That last one didn’t draw much response at first, so I took my chance to explore the bounty system some more. This worked perfectly, because someone was triggered by this to give me the answer I was looking for.

Related to my own questions there’s one more important thing to mention. This is the thing that triggered me to do an episode on the DBA site: the @StackDBAs Twitter engine tweeted a great question by a good friend of mine, on using the “sp_” prefix for stored procedures. It’s great to see something from a friend pop up in your Twitter feed via an unexpected angle!

My Answers

Yeah, well, ermm… still working on that. No answers so far. Weird thing is: most of my Stack Overflow reputation comes from answering DBA-related questions. But the questions on DBA are not very voluminous, and often also out of my league. Oh well.

Interesting Questions

Here are a small few gems with a lot of votes:

Community Wiki

Hmm, there aren’t any real great questions in this category that stand out from the bulk.

Conclusion

The main problem with this site is that people will probably prefer to ask their DBA questions on the subdomains that are more likely to generate a lot of views and answers: Stack Overflow and ServerFault. So let me summarize the pro’s and cons of this particular Stack Exchange:

Great, friendly community
Usually fast answers
Not very active
Askers seem to opt for asking on Stack Overflow or ServerFault instead

Bottom line: great community, not so great content (relative to other Stack Exchanges). Alas.

World of Guild Wars

Asura in Guild Wars 2
Asura in Guild Wars 2

Recently I mentioned there’s just so much to do (in a good way). One of the items on that list I didn’t even pick up, even though I was expecting to be sucked into the thing: Mists of Pandaria, the new World of Warcraft expansion. Instead, the alotted time for WoW went into Guild Wars 2, just because it’s more fun than I expect the new WoW expansion to be.

The game’s even diverted my attention from Stack Exchange (and my corresponding challenge) to Reddit. After helping out my wife converting a Reddit post into a browser bookmarklet, I decided to post it on Reddit as a reply. A few days later I had an encouraging 50+ Reddit Karma. As you can imagine it was with lifted spirits that I decided to start another undoubtedly great post, bound to draw hundreds of Karma points. So I asked about Missing Guild Wars 2 Features, and harvested … a wopping zero points!

Lesson learned? Not so much, I guess. That is, the post wasn’t really meant for Karma-grinding, but more to start a uservoice kind of thing: let ArenaNet know what things they should steal from WoW. Maybe the I didn’t even so much wanted to ask the question, as I wanted to answer it. So for your reading pleasure, here are some things I’d love for them to steal from WoW:

  • Dueling. Not for the top of a prioritized list, but still one of the first things that comes to mind.
  • Proper teamwork, especially in dungeons. Asked about it on Gaming Stack Exchange, and apparently instancing is mostly “soloing together”.
  • Would be nice to be able to mail your own alts, but apparently this isn’t possible (yet?).
  • Addons, plugins, and macros.
  • If the above isn’t possible I would love to see an official DPS Meter or something similar. Just for personal use, I just love optimizing my own playstyle.
  • More emotes! I find myself typing “/palm” and “/violin” just way too often.
  • A way to easily see map progress when you’re not on that map.
  • More different spells available. I loved having 40 different buttons to press when playing WoW.
  • Be more clear on the different roles players can fill. Currently this is too meager, and even though I don’t want or need the classic tank-healer-dps setup I still think GW2 can be clearer about its intentions here, in skills, the UI, etc.
  • End game raiding.
  • Monthly subscription fee and the horrific addiction level. No wait, the other way around of course.

“Wow”… glad I got that off my chest. Now back to enjoy the damn game!

Episode 5: User Experience Stack Exchange Challenge

User Experience Stack Exchange
User Experience Stack Exchange

One of the first Stack Exchange sites I found out about was User Experience. My interest in this topic was sparked long before, while I was in college. I found human-computer-interaction one of the more fascinating aspects of the particular “brand” of AI program that was taught at Utrecht University. So today it’s finally time to do a new episode of the Stack Exchange Challenge, on UX Stack Exchange.

Current Statistics

Let’s first roll up the stats for this particular sub-domain:

Fact UX.SE
Questions 5,278
Questions with no upvoted answers 42 (0.80%)
FAQ (questions with most links) 1,441
Top 3 questions 200 votes, 128 votes, 118 votes
Questions active last hour 2
All-time rep for top 3 users 26.7k, 18.8k, 15.4k
Meta questions 345

My Questions

This is where I struggled, the same way I had problems in the Programmers episode: it’s really hard to ask a question on this topic that’s not subjective. Here are the only two questions I mustered:

Even though I found it hard to formulate Stack Exchange worthy questions, I’m still pretty content with these two questions.

My Answers

It wasn’t until writing this post that I saw I already had written ten answers, and counting! Most of them don’t have more than one or two upvotes, except this one:

Honorable mention goes to my answer about the “Official JavaScript icon”. I gave that answer to prep myself for this blog post, but the question was closed as “off topic” before I even finished writing this post.

Interesting Questions

Here are a few entertaining questions from User Experience:

Community Wiki

The top question in this category is probably what you’d expect:

Conclusion

This site’s topic is great! Some of the questions are great! There are some really fundamental questions on there.

This site’s not very active. Only some of the questions are great. There are a lot of very “localized” quesions on there.

I’ll probably just keep lurking, hopping by every once in a while.

So much to do

So much to do, yet so little time.  Three weeks of vacation have come and gone. Two weeks of work have come and gone. One of those work weeks was even a week #OffsiteCoding, where we went to a great (I’d dare even say luxuruous) location with the whole IT team, to work (dedicated) on a new part of our product.

New computer desk at homeAfter those five summer weeks I’m still full of inspiration, and deep into several projects and new hobbies. If I fail to post on my blog, rest easy knowing I’ll be enjoying myself with:

  • Guild Wars 2, also known as World of Warcraft 2.0;
  • The Mists of Pandaria expansion for World of Warcraft;
  • Our brand new Open Source project Bieb (on CodePlex), which is now public (yay!), but still needs a release (boo!);
  • Studying for my 70-513 exam on WCF;
  • Cranking up my skills with WPF, which I’ll be using at work a bit more the coming months.

Much of my inspiration for new projects comes from finishing other projects. Have a look at the picture for the most recently finished project: a custom (home) made desk for two workplaces at home.

Problem with this approach for getting inspired: every finished project gives me inspiration for two more! Like I said: so much to do, yet so little time. A luxury problem, I suppose.

CodePlex Hg Hosting

This is a follow-up to my previous post on Hg Hosting Providers. I found that on the surface all four of them were very similar. From the four providers I investigated, CodePlex overall felt most intriguing, so I decided to start by trying out that one.

Note: I participate in another project, which I will be uploading to Bitbucket (because that’s the only one that supports small private projects at no charge), so I may be doing a follow-up on that provider too.

Sign Up and Project Creation

The CodePlex home page lures you into creating a project with a big, purple, Metro-style button:

CodePlex Step 1 - Create Project Button
Step 1 – Create Project Button

When you hit the button you’ll be asked to either sign in or register:

CodePlex Step 2 - Sign in
Step 2 – Sign in

If you don’t have an account yet (like I did) you can register for one on the spot. I decided to create an account linked to my Windows Live ID:

CodePlex Step 3 - Register
Step 3 – Register

The hardest part is the Captcha: damn those things can be a challenge! After finally completing this mini-game, it turned out CodePlex had forgotton all about my intention to “Create a Project”, and instead presented me with my personal (and very empty) project home page:

CodePlex Step 4 - Account page
Step 4 – Account page

Luckily, there’s another (though less obvious) “Create a Project” link on the page. There’s only a small number of fields you have to complete:

CodePlex Step 5 - Create Project
Step 5 – Create Project

The whole point for me was to choose Mercurial hosting, but it’s noteworthy that both TFS (which also supports SVN clients) and Git are an option too. Hit “Create” and if all goes well you’ll be directed to the brand new project’s home page:

CodePlex Step 6 - New Project Overview
Step 6 – New Project Overview

The project has now entered the “Setup Period”. This gives you 30 days to set up the project, i.e. before you have to go live. This was in fact a welcome surprise to me, because since this was my first time coordinating a hosted project the setup period allows me to calmly check out all the features.

Importing the Existing Repository

Keeping in mind that eventually I would be hosting the code online, I had already started with a Hg repository, committing my changes locally. There are several advantages to using version control while still flying solo, amongst others having backups and traceability.

I already suspected it wouldn’t be too hard to merge an existing repository into a new hosted project, and I even got some response to my question on Twitter, indicating it should be possible. The only thing I was worried about is that the username for commits would be “wrong”, because my computer user name “Jeroen” is different from my new CodePlex user name “jeroenheijmans”. To get everything to work I took the following steps:

  1. A simple copy/paste back-up of the existing repository, just to be safe.
  2. With some effort I got this Hg convert trick to work, changing the user name in commits for the existing repository to my CodePlex username.
  3. Make a clone (a.k.a. check out) of the project repository from CodePlex to a new local folder.
  4. Copy the existing repository over the clone from CodePlex.
  5. Some of the hidden files in the .hg folder have to be overwritten. I double checked all files with Notepad++, and in all (my!) cases the clone’s file could be safely overwritten.
  6. Using TortoiseHg I now pushed all the changes. In the previous step the CodePlex URL was probably lost, but that was easily remedied by entering it once more.

To be honest, in hindsight I don’t know if step 4 and 5 are really necessary. I guess you could safely try just pushing your existing repo to CodePlex: if it doesn’t work surely you’ll get an explanatory error message?

Either way, after completing the above steps my CodePlex project contained a complete history of 40+ commits, only minutes after setting up the project!

CodePlex Features Overview

After importing the source code it was time to investigate the various CodePlex features. Given the 30 day setup period I was able to check out all the features without having to worry others may see my silly mistakes. Here’s my first impression of the available features:

  • Home is the first thing you see if you go to the project URL (which is a nice subdomain of CodePlex: http://yourproject.codeplex.com). It mainly contains some text to explain what the project is all about, and you’re invited to edit it (with Wiki-style markup). Worked nice and easy for my simplistic purposes.
  • Downloads is the section where you can offer releases, which can have various properties as well as attachments such as binaries or installers. So far I’ve only created two “Planned Releases”, which worked pretty straightforward.
  • Documentation is Wiki-based. So far I’m headed straight for the quintessential documentation pitfall: I’ll create it once the product’s finished.
  • Discussions looks like a forum-based commenting area. Given that the project is one we do together with friends we may not get to use this option much.
  • Issue Tracker is a very basic work-item system. It contains the bare essentials, but not much more. This was a bit disappointing to be honest, I would at least have liked to have some basic formatting, but apparently that’s still a work item on CodePlex itself.
  • Source Code is the section where… well… you can find the source code! It shows all commits in descending order, and even though I haven’t tried it yet it also shows forks and pull requests. If you click on a commit you get to see the diffs for changed files.
  • People shows all the coordinators, developers and editors on the project. It’s also the place to invite your team mates to the party!
  • License is where you can view and change the license for your project. CodePlex allows you to choose from ten different OSI licenses. I’m leaning towards picking the BSD license, but this license stuff feels like a snake pit (with it’s own acronym: IANAL).

So far this list of features seems pretty sufficient. At least: I haven’t “missed” a feature so far.

Conclusions

All together I’m pleasantly surprised by how easy it was to set all this up. I’m not sure (yet) how it actually compares to the other hosting providers I considered, but so far I’m happy I chose CodePlex.

I’m fairly certain our project will be published some time soon, and when it does you can find it at bieb.codeplex.com: join the party!

Comparing Hg Code Hosting Providers

Mercury ElementMost usually, I’m a very organized person. Even before I was programming (when I was making Hero Quest maps in Q&A and WordPerfect) I would still want periodic backups of my data. Given all that, I’ve remained remarkably oblivious of Version Control for quite a long time. Here’s an overview of my VCS history:

  • 1990 – 1992 Derp derp, playing Commander Keen and friends.
  • 1992 – 2003 Copy-paste-style backups, periodically.
  • 2003 – 2005 Visual Sourcesafe. The horror…
  • 2005 – current SVN and TortoiseSVN. Much better!
  • 2011 – current Mercurial (with TortoiseHg), and a dash of Git.

On a coding project with friends, one of them suggested we’d use one of the DCVS systems: either Hg or Git. After a short debate (and after reading endless flamewars between the two) we decided on trying Hg. My “re-education” started with reading the HgInit tutorial by Joel Spolsky. Here’s a quote that stuck with me:

It turns out that if you’ve been using Subversion, your brain is a little bit, um, how can I say this politely? You’re brain damaged. No, that’s not polite. You need a little re-education.

True as it is.

To be honest though: I still don’t mind using SVN. At work we have an existing repository from which we’ll probably not be switching, and it even has some advantages over Hg. However, for any new project I would choose a DCVS, either Git or Hg, depending on the circumstances.

So for my latest pet project I’ve started a Hg repository as well. So far I’ve just been committing locally, using it as a backup and history mechanism. However, with friends and family joining on the project I will probably be moving the repository to an Open Source Hosting Provider. There’s a few that came to mind, and I’m currently considering four of them. Even though there’s a decent Wikipedia comparison article, I still decided to make my own comparison table with features I find interesting:

Google Code Bitbucket CodePlex SourceForge
Source Control Hg, Git, SVN Hg, Git Hg, Git, SVN, TFS Hg, Git, SVN
Issue tracker Custom JIRA Custom Custom
Wiki MoinMoin-based markdown Creole-based markdown Yes Daring Fireball-based markdown
Forum No No Yes Yes
Private projects No Yes No No
Licenses Any, single-licensed ? 10 OS licenses available Any OS license
Authentication Google Account Bitbucket account Codeplex + optional Win. Live SourceForge account
Projects 250,000+ 93,000+ 28,000+ 350,000+

Currently I’m leaning somewhat towards CodePlex, for no particular reason or rationale. Or perhaps I’ll end up trying them all before deciding. Either way, I’ll sleep another night on it, for now.

Book List

Okay, I’ll admit it: I love making lists. The Pragmatic ProgrammerI’m one of those people that can make a list of things to do, and add one or two things I’ve already done, just so I can enjoy that feeling you get when you check something off the to-do-list. Do you recognize that feeling?

For books I know there’s wildly popular sites like Goodreads, to keep a list of things to read, get suggestions, and so on. I wanted something simpler, and something I have control over. So I decided to put it up on my blog as a page, just like all the (other?) hipsters with blogs. Not so much a reading list to tell others what they should read, but more a track record where I can quickly look up things I’ve read before.

The book that inspired me for this reading list (shown in the image) is The Pragmatic Programmer, amongst others. Who knows; perhaps this post will inspire others to (re)start a reading list as well?

Want to know what I have been reading? Check out my book list.

Episode 4: Android Stack Exchange Challenge

Android Enthusiasts Stack Exchange

Here’s a short new post in the Stack Exchange Challenge, this time on the relatively new Android Stack Exchange site.

Recently I’ve been mostly lurking on the main Stack Overflow site, incidentally asking or answering a question or two. However, I’m not ready yet to do a post on the main site…yet.

The reason I was triggered to write a new post on the Android sub-domain will become clear in the section with My Questions, below. Let’s have a look at how the site will hold up (compare?) against, say, XDA-Developers.

Current Statistics

Here’s the stats for this relatively new sub-domain:

Fact Android.SE
Questions 7,948
Questions with no upvoted answers 1,309 (16.47%)
FAQ (questions with most links) 2,344
Top 3 questions 134 votes, 115 votes, 98 votes
Questions active last hour 6
All-time rep for top 3 users 30.1k, 15.8k, 15.6k
Meta questions 322

My Questions

At the moment of writing, there’s only one item in my questions on Android Enthusiasts. I wasn’t a regular, in fact I had not visited the site before I figured it was the best place to go with my question:

And there’s the reason I love browsing through the Stack Exchange sites (usually): the percentage of nice and helpful people on those sites is very high! Within the hour someone popped up and wrote a detailed, practical answer. Awesome! And a great incentive to write this post.

My Answers

To be honest: I didn’t spend very much time on the site after asking my question. Before writing this I decided to sit down, do some research, and even help out and answer a question or two if I could. I’m almost too ashamed to post it, but here are the results:

Interesting questions

Here’s a few questions that caught my eye:

After skimming through the first four pages of questions (by votes) I gave up. This site is not for me. The questions aren’t “bad”, but they’re just mainly… boring or trivial.

Community Wiki

The top wiki-style question is (not very unexpected) about changing your phone: how to root it.

Conclusion

This site is not for me. However: it did remind me of how nice the communities on most (if not: all) Stack Exchange sites are!

Can haz layout

Contains IE Hack This weekend I decided to deep dive in a StackOverflow question on the combination of pseudo-elements and the IE8 (and lower) filters. Even though it seemed to me the question couldn’t be answered with 100% certainty, I still gave it a shot. A similar but better answer got accepted (damn you, “ScottS”!!), but that’s besides the point. The most important thing I learned from answering this question, is understanding the magic in IE (especially version 8 and below). So, for reference, here are the important links of articles that made me understand IE a bit better:

The kicker from all this research is that I now finally understand this remotely related line of CSS I’ve seen (and even used) a lot:

This is a CSS hack to get some versions of IE to behave nicely. So far, nothing new. However, after reading the above articles, I finally understand what it does: it  forces the hidden IE property hasLayout to true. And that’s useful for quite a few cases where you’d expect things to have layout, but when they don’t by default.

Hack or not, I’m glad I understand things a wee bit more now.

Episode 3: Gaming Stack Exchange Challenge

Space invaders wall painting
Space invaders wall painting

It’s been a while since my previous post: Episode 2 in my Stack Exchange Challenge, on Programming. Work, a new table-top RPG experiment, a Twitter vs Voice Recognition experiment, some playing around with MVC 3, and a big-ass painting on our living room wall (see pica) were all keeping me from writing on my blog.

In addition, even though I’ve been mildly active on various SE sites, I didn’t have a real drive to dive deeply into one of them. However, I did experience one peculiar effect of the SE engine last month: you can earn badges while not being very active on a site anymore.

One of the sites stood out the most, awarding me a gold badge for asking a (now apparently) famous question. And that’s as good a trigger as any to grab some more writing experience, et voila: a blog post on Gaming.StackExchange!

Current Statistics

Again, like last two reviews, some of the current facts for the site:

Fact Gaming.SE
Questions 18,629
Questions with no upvoted answers 845 (4.54%)
FAQ (questions with most links) 4,573
Top 3 questions 156 votes, 130 votes, 112 votes
Questions active last hour 8
All-time rep for top 3 users 75.6k, 34.6k, 31.6k
Meta questions 1,240

With 18k questions about as big as Programming, examined in my previous blog post.

Gaming.StackExchange logo
Gaming Stack Exchange

My Questions

At the time I write this I’ve asked a measly three questions. In my previous blogpost on Programming what held me back in asking questions was that I found it hard to ask “good subjective questions”. On Gaming there’s no such barrier, and as you can see in the FAQ they go for a totally different kind of questions here. What held me back in this case is just that on most games (the ones I play, at least) there’s already a ton of information to be found through Google search engines, rendering it useless to ask it again on SE. Of the three questions, these two were most interesting:

My Answers

Wups! Bad, bad community member. I haven’t written any answer yet. I came close once though.

Interesting Questions

Although I guess what gaming-questions are interesting depend heavily on what games you like, there are some questions that stand out if you have a look at the top questions:

Community Wiki

Not too many fun questions in this category at first sight, besides perhaps the Starcraft 2 skill improvement question.

Conclusion

The site is great for browsing through occasionally. It’s probably more fun if you go with the hype and by AAA titles the moment they come out. Surely the site will be flooded with Diablo 3 questions soon. Not intending to play D3 that will probably chase me away though, but perhaps that will push me to another SE site for my next SE challenge?