One Year Later…
Tuesday was the anniversary of my first real post on this blog. For the most part, I’ve tried to keep my content here on the technical side of things, but, what the hell, this is a good time to reflect on a year of blogging – what went well, what went poorly, and where I’m going from here.
What I Meant to Accomplish (And What I actually Accomplished…)
Content
I restarted this blog about a year ago to document my attempt at learning DirectX 11, using Frank Luna’s Introduction to 3D Game Programming with Direct3D 11.0 . In my day job, I mostly code ASP.NET and Winforms applications using C#, so I decided to convert the C++ examples from Mr.Luna’s book into C#, using SlimDX as my managed DirectX wrapper. SlimDX appeared to me to be slightly more mature than its main competitor, SharpDX, as its documentation was a little more complete, and it had been out in the wild a little bit longer, so there was a bit more third-party information (StackOverflow, other blogs, GameDev.net forum postings, etc.) on it. I suppose I could have also gone with XNA, although Microsoft appears to have abandoned any new development on it (Last release 9/16/2010…), and I felt like SlimDX’s simple wrapper around the DirectX library would be easier to translate than shoehorning into the XNA model, not to mention wrassling with the XNA Content Pipeline.
My initial goal was to work through the book, converting each of the examples presented and then blogging about the process. Except for the chapters on Compute Shaders and Quaternions (which I have yet to tackle, mostly because the examples are not terribly interesting), I completed that goal by the middle of November of last year. From there, I started incorporating elements from Carl Granberg’s Programming an RTS Game with Direct3D into the terrain rendering code that Luna’s book presented, as well as dabbling in integrating Direct2D and SpriteTextRenderer to handle 2D drawing.
After that, my intention was to start working my way through Ian Millington’s book, Game Physics Engine Development. This is about where I ran out of steam. Between the hassle of trying to reconcile the code examples from this book, which were based on OpenGL and somewhat less self-contained than what I had been working on previously, various issues in my personal and work life, and the general malaise of an especially cold, dark winter here in New England, my impetus to work on my side projects faded away spectacularly. If any of you followed this regularly, I’m sure you’ve noticed that it’s been almost four months since I’ve posted anything new, and before that there was another dry spell of more than a month.
With the arrival of summer and a move that reduces both the strain on my finances and the number of hours per day I spend driving back and forth to work considerably, I’ve found that my mood has improved by leaps and bounds, and I have the extra energy to expend on coding outside of work again, finally. Right now, I’ve got a number of new things I’m working through, and a number of ideas in the pipeline that should be making their way up here in the near future.
Sharing
In addition to learning things myself, another of my goals was to share what I learned with anyone else out there interested in graphics and game programming. Putting this content up here was the first step, but the internet is littered with interesting information buried and inaccessible because the GoogleBots either can’t find it or deem it unimportant. I don’t pretend to know anything about SEO, and I’m not sure its something I really want to get involved in – everything I’ve read seems to indicate that you either need to get lucky and go viral, or else spend a bunch of time or money doing vaguely unethical things, like spamming links or hiring a shady outfit in the Ukraine or China to do it for you.
So, my limited efforts at promotion concentrated on GameDev.net, Facebook, Twitter, and HackerNews.
- GameDev.net was probably the most effective. The main source of views came from cross-posting each post I made here on my developer journal there (http://www.gamedev.net/blog/1703-richards-software-ramblings/). A couple of these posts got picked up by the admins and made the front page, under the Featured Developer Journals section, which resulted in a pretty big boost in views. I also added links to here on my forum signature, which I don’t believe amounted to much. To some extent, I also trolled the Beginner and DirectX forums, suggesting that anybody that was having a problem I had covered check out the relevant post. I hope that this was somewhat helpful, and not just spammy…
- Facebook was probably not worth bothering with… Generally my friends on Facebook are split between people I knew in high school, family members, my fraternity brothers from college, and other Dartmouth people who trend towards being law students, med students, teachers, or I-bankers. It’s not exactly a fertile demographic for tutorials on 3D graphics programming. Now, if I was writing Top-X lists of Marvel characters, I might do better there, but that’s the nature of Facebook…
- Twitter is also kind of a non-starter. Given that I have a grand total of 11 followers, and I don’t really believe in the whole idea of Twitter, that’s probably not surprising.
- HackerNews was very hit or miss. Most of the time I would post a link, and it would languish on the back pages forever. Once in a while, however, something would get some bizarre traction with one of the Hacker News aggregators (usually Feedly), and I’d see a big spike in views for a post. I have no idea what the rhyme or reason for this is; my best guess is that I happened to post at a particularly dead time, and my link stayed near the top of the newest links page for longer than normal.
However, the vast majority of people who made it to my site came from Google searches. I’m not sure how, but my site has come to rank pretty highly for certain Google searches. Some examples, as of today:
- DirectX 11 Tutorials – #10, on the first page of results, is my DirectX Tutorials landing page.
- SlimDX Assimp – #1 is my post on loading models using Assimp.Net, and #2 is my GameDev.net journal that links to my post on Skinned Models with Assimp.
- slimdx frustum culling – #3, linking to my post on frustum culling.
- SlimDX A* Pathfinding – #1, #2 and #4
- SlimDX Terrain – #1 and #2
Some Charts…
Oddly enough, the biggest growth in traffic came after I ran out of steam and stopped posting. I wonder if this was a missed opportunity to continue growing.
Kind of an interesting split in the most popular pages on the site. Mostly, this is my more interesting and more advanced content, although the two most basic examples on the site are also represented. Also, my tutorial index page is doing pretty well.
Finances
Making money isn’t really my goal with this site, which is a good thing, since it certainly has not been a mint. Fortunately, maintaining the site really doesn’t cost me anything: I use Blogger for hosting, which is free, and my GoDaddy registration only costs $10 for the year.
Hopefully, the banner ads I’ve got on the site are not that obnoxious. Probably most of you who would see this use AdBlock anyway. They have more than doubled my monetary investment in the site over the past year – as of today, I’ve earned just over $25 from AdSense. At this rate, I’ll hit the minimum payout threshold in another three years, haha.
If I were to take a wild guess at the number of hours I’ve spent coding and writing up these posts over the last year, and then calculating an hourly rate based on my AdSense revenue, I’m probably earning about a nickel an hour… Even mowing grass or stacking firewood would be orders of magnitude more lucrative, but whatever – I’ve arguably learned more about programming and computer science in a year of porting C++ to C# and fighting with shaders than I did during my courses for my Comp Sci minor. Even better, kicking around the dusty corners of the .NET library to match up with C++ constructs has broadened my knowledge of what is available, and spending so much time in Visual Studio coding and debugging has taught me all sorts of tricks that I can use in the day job too.
What’s Next?
In a perfect world, I’d continue to churn out high-quality, interesting content on a regular basis, and this site would become a go-to resource for SlimDX and general C# game programming, similar to the LazyFoo or RasterTek tutorial series. I’ll settle for just getting back to a more consistent posting schedule, though. There are so many interesting topics to consider, and both coding and then explaining what I’ve done is the best way I have found so far to cement my understanding of algorithms.
As I mentioned, I have a bunch of stuff in the pipeline that I’m hoping to finish and write up in the near future, so hopefully there will be some new content here shortly.
I’ve been toying with the idea of writing a book, since SlimDX does not appear to be very well covered in print (At present, Amazon only lists one title).
Anyway, thanks for reading over the past year, and I hope that this site has been useful. Here’s to an even better second year of http://www.richardssoftware.net/!