It's become very easy to get distracted from my hobbies. A 2 weeks ago I had my wisdom-teeth pulled and really didn't feel like doing much. A week or so before that, I finished installing hardwood floors in my "office bedroom", so I could move furniture back in and recover near all my favorite electronics in peace. After I started feeling better, I decided I didn't like the old design for the website. So I created something I liked a lot better (what you're seeing now). And, now, I'm putting in extra hours at work, thinking about the rapidly approaching holidays, the family coming to visit, and how my house feels like it's still in shambles, and have now purchased yet-another-domain for personal use and am thinking through how to improve/add the overall presentation and content than the one I currently have up on my slightly older personal domain. Additionally, I decided that I didn't want to keep going with this highly static blog if I didn't separate out the content from the structure and add some scripting magic to automate more of the process. So, I spent about a day playing with Ruby and Markdown and there are still some tweaks to be made (which don't yet impact me because I don't have that much content yet). Additionally, my schedule is entirely out of whack.
Where Does This Put the Project?
It's still part of my daily thought process, working through some architectural issues very slowly. Really, the same kinds of distractions for the project live here. My boss would probably say that I'm "in the weeds" and not focused on things that will bring success. And he's probably right. I'm concerned about high-concurrency communcation channels and have learned that some of my assumptions about threads were fairly false. Writing the program in C lets me control some of that incredibly well, but it means learning how to do a number of those things so that I can avoid pitfalls. I've made a decent amount of headway, but it's something I'm still working through.
I could just use a library to perform a number of those tasks. libuv seems a fairly popular choice these days and would probably perform well. But, a big part of what I'm looking for on this project is personal growth. While I don't mind using a library like mintomic for supremely low-level things like atomics, I want to control more of the framework-level things like how I process sockets and I'm fine with this being slow going. I want to learn how to effectively use, say, kqueue, epoll, and I/O completion ports.
So, suffice it to say, things are going to move in bits and spurts. But, hopefully, continued progress can be made.