Keep a social journal of your work progress as you make and learn things.

February 2017


Spent the whole night playing with different comment system widgets because I’m getting tired of Disqus (guests can never figure out how to leave a comment, and I don’t blame them; Disqus makes it so hard to find the submit button for a guest). I couldn’t find anything to suit the needs of #MidnightMurderParty any better, though, since I need the AJAX thread loading Disqus has. While Widget Pack has that too, its admin interface seems weaker than Disqus’s, and it bundles a star-rating system in with the comment stream, which I don’t want. Couldn’t find a way to disable it, but maybe I’m missing something.

On the bright side, my #hakyll_portfolio_blog does not need AJAX thread loading, so tonight I installed IntenseDebate on there. For the functionality it does have, it’s behaving faster and more reliably than Disqus, which is nice.


Tonight I added tags and categories to my #hakyll_portfolio_blog with some custom behavior outside of what #Hakyll already offers. That was the easy part.

I spent the last four hours trying to get the Contexts for posts and projects to contain one another such that a post page can display any projects mentioned in the post and a project page can show a list of posts that discuss that project. The actual Contexts weren’t too hard to code (despite having to delve into the docs and fit types together), but the recursive dependencies were a nightmare. I spent at least two hours fixing just that.

In the end, I did get it all working, but I’ll save just how I did that for a full-length blog post. For now, I think the hardest parts of the wiring are done. There are more Contexts and config files to rig up, as well as an RSS feed, but I don’t think anything I have left to do will be as complicated and confusing as tonight’s features. All in all, it’s coming along.


Did some more work on my #hakyll_portfolio_blog tonight. I made some progress on the design/css, made some custom routes (they convert default routes like /content/posts/a-blog-post.html to /posts/a-blog-post/index.html to get rid of parent directories and hide ugly .html extensions), added some functionality to direct all links to the “clean” routes instead of the index.html ones, and got started on a #yaml config file which I’m successfully reading in and parsing (turns out this is pretty easy in #Haskell with the right libraries). All in all, a pretty good start after the initial setup yesterday.


I’ll make this a quick post since it’s late. Since the #MidnightMurderParty beta is now in progress, I’ve shifted gears a bit and started working on my #hakyll_portfolio_blog again. Really, I restarted it from scratch since the first version was a mess. Maybe I’ll be able to launch a minimal version before the MMP beta ends–that’s my hope, anyway. Other than that, I started reading my third book of the year and got some #writing done on a #shortstory.

January 2017


Fixed both of the remaining #MidnightMurderParty front-end bugs with one tiny commit!

My suspicions were correct: when I had to mess around with the renderer after Chromium broke itself, I accidentally regressed some code. The bugs didn’t become apparent until I zoomed the page to 175% in Chrome (or did anything in the mess that is Firefox), so it took a while to notice, but the fix was simple once I guessed the problem.

The column-width property doesn’t support percentage values, so to make it dynamic, I manually alter a stylesheet with #regex. Prior to the Chromium fix, the width and height were set this way as well, but then I changed them to 100% since that seemed less sketchy than live-editing more of a stylesheet. Apparently, that was even sketchier and caused the bug. Changing it back to the way it was fixed the offset pages bug (which I was trying to fix) and somehow magically fixed a different bug in Firefox (not complaining).

I also added some stuff to the testing doc.


Yesterday was a mess. What was supposed to be two quick commits for #MidnightMurderParty and the rest of the day off became a 5-6 hour dev session where I discovered some pretty nasty bugs, at least 3 of them fairly serious front-end issues. @larouxn had to create a new endpoint on the back-end for one of the features I was working on, and while I was testing that, I found out that our release scheduling wasn’t working properly either (it was releasing content that wasn’t yet scheduled to be released; I’ll leave that log to Nick).

Long story short, I did close the last two #GitHub issues, but now I have to spend tonight fixing bugs in the most volatile part of the application and hopefully not introducing new ones in the process. So much for not fiddling with it until after the beta test!


Tonight, I continued working on the documentation for the #MidnightMurderParty beta test. I filled in a lot of the functionality details from an earlier version of the testing documentation, but a lot has changed since that version. I’ll probably finish the draft of the new doc tomorrow.

Also, between @wearing2raincoats and me, we’ve picked up 3 or 4 more beta testers. Still looking for a couple more before the beta rolls around next week.


I’ve gotten back to #MidnightMurderParty over the past two days.

  • Yesterday I did most of the research needed to write Episode 4.
  • Tonight I started working on the documentation for beta testers. I wrote up a broad checklist of the functionality testers will need to verify and reviewed it with @larouxn. Tomorrow, I plan to add a larger section detailing each item on the list.
  • Also tonight, I:
    • Set up the domain for the beta test.
    • Compiled a list of pre-beta todos (all small things that I can do this week)
    • Integrated some stuff into the MMP Slack for fun.

#MidnightMurderParty development is finished!

Okay, maybe not entirely, but @larouxn and I just closed and merged in the last remaining development issues tonight. There’s still the beta test, which I’m sure will reveal some bugs, but until then, I have no reason to open up Sublime Text or fiddle with code. It feels like finishing that first draft of a story: yes, there is editing ahead, but right now I’m just really excited to have completed a first draft!

There’s still non-development stuff to be done for MMP (#writing, editing, configuring services like #Mailchimp, etc.), so I’ll still be logging about that, but for now, I think I’ll take the rest of the night off… maybe read a book, or just try to sleep off this cold.


Between being up early for a work class and the sudden cold weather over here, I’ve managed to get sick. Trying to rest up, but I’m bad at resting, so instead I worked some more on #MidnightMurderParty. Finally seem to have gotten the Safari bug fix right, and I’ve cleaned up a lot of the URL hash navigation code. After regressing some of it, I even added some comments so I wouldn’t repeat that mistake.

Earlier in the week, I joined a 24-hour #shortstory contest, so I wrote the first draft of that tonight as well. I might do a little more editing tomorrow before I submit, but for now I need to think of a title and get some sleep.


Added a pretty big feature (code-wise) to #MidnightMurderParty tonight: URL navigation. Now, when the user gets to a new segment, the URL hash will change to reflect the selected segment. Readers can share these URLs to send someone to that part of the book (much like the share links inside the book). When the the user changes the URL hash (think forward and back navigation), it will navigate the user to the relevant segment as if they selected that segment in the table of contents. There was briefly a recursive navigation issue, but I think I fixed it. Still needs more testing and cleanup, though.

Still got that Safari flexbox bug, it seems. The CSS autoprefixer did something pretty janky and converted flex: 1 1 0 to -webkit-box-flex: 1. The fix for Safari was supposed to be using -webkit-flex: 1 1 0 instead of -webkit-flex: 1, so tossing in -webkit-box-flex: 1 did nothing to solve the problem. I might just have to add -webkit-flex manually.


Tonight I:

  • (hopefully) fixed a Safari flexbox bug in the #MidnightMurderParty Reader. Since I don’t have any Apple devices handy, I’m waiting on @larouxn to confirm.
  • Moved over to Google Domains
  • Edited the #shortstory I wrote the other day
  • Printed out a QR code which I now need to scan to turn of my alarm. I put it in the kitchen next to the coffee maker.
  • Started reading another book (2/25 for my 2017 #GoodreadsChallenge)

I also wanted to set up my new phone tonight, but I’m waiting on a case for it before I switch over. Amazon Prime 2-day shipping was due to show up today, but neither item I ordered came. One said in the shipping tracker that it would arrive today before 8pm all the way until nearly midnight. Now both items have an estimated arrival time of 2-3 days from now. Apparently 2-day shipping became 4-5 day shipping somehow.


A lot’s happened over the past couple days. My graphics card died, rendering my computer unusable, so I had to learn how to install a new one on the fly, which was simple but nerve-racking since I’d never installed hardware before.

I wrote a #shortstory this morning—really a flash fiction piece—starting at 12am when I should have been asleep. I think it came out well.

@larouxn and I closed a couple more #MidnightMurderParty issues tonight. We finished up the load time optimization, so now the site shows low resolution images first while the high resolution images load in the background and are swapped in when ready.

We also began planning out the beta test, which is now slated for the end of January through the beginning of February. We’re looking for more beta testers, so if you’d like to help beta test the Midnight Murder Party Reader, let us know!


I’ve got bad news and good news tonight. I’ll start with the bad. My graphics card died, and I can’t even get into Windows now. Guess I’m going to Best Buy tomorrow to pick up a new one.

The good news is that I’m #writing my current #shortstory on a manual typewriter which, as it happens, doesn’t require a graphics card to work. I got a good amount written tonight.


Closed three #MidnightMurderParty issues tonight, one of them being the app-breaking bug introduced in the last few Chromium versions!

I actually hadn’t planned to delve into that nasty Chromium bug until next week, but I was too curious to hold off. I ended up debugging on and off for a few days until I narrowed the bug down to this: if you use CSS columns and an overflow value other than visible (i.e. overflow: hidden|auto|etc) on the same element, all columns after the first few will render but become invisible as if visibility: hidden is applied. The point at which columns become invisible seems arbitrary based on seemingly random things like the height of the container or even the size of the viewport (which should have no effect on the fixed size container).

Tracking that down was a nightmare.

In the end, I fixed it by moving the overflow: hidden to a parent element of the div with columns and then changing all the dependent logic.


Let’s see if I can get back to daily (or at least near daily) logging again. Today, I:

  • Closed two #GitHub issues for #MidnightMurderParty. Both were small aesthetic things related to the user resizing the book, but because of some race conditions that could occur between #Elm and #JavaScript (and did occur last time I tried this), I’d been putting the issues off for a while.
  • Got some #writing done on my current #shortstory—about 700 words on the manual typewriter, which I’m enjoying quite a bit so far.

Now, I’ll probably read for a little bit and maybe play some Osu! or Overwatch. Something that starts with an ‘O’ anyway.


Hi. It’s been a while.

While I was gone, Chromium went and entirely broke—and I mean broke, as in unusable broke—the #MidnightMurderParty reader. Yeah, one version of Chromium, it works. The next, it doesn’t. Since this breaks every Chromium-based browser (Google Chrome, Opera, Yandex, you name it), Midnight Murder Party is suddenly unreadable in all of them. The elements render, but after page two, they are all invisible as if visibility: hidden is set (which it isn’t). The only thing I’ve managed to figure out is that it’s somehow caused by CSS columns (each page is a column). @larouxn and I were planning to have a beta test next week, but that’s shot until we figure out how to get around all these broken browsers. In the meantime, I’ve added Google Analytics and better error handling/reporting.

Unrelated to MMP, I spent the holidays with my family, set a 2017 #GoodreadsChallenge of 25 books, picked up my manual typewriter from the shop, and have begun #writing a story on it!

December 2016


Since my last log, I’ve

  • upgraded the #midnightmurderparty front-end to #Elm 0.18
  • finished the first draft of the MMP Episode 1 rewrite
  • finished rereading Stephen King’s It
  • written the first draft of a flash fiction piece
  • started reading another book
  • dropped off my manual typewriter at the shop for repairs (which turned out to be pretty expensive!)

Tonight I’m going to

  • have an MMP dev planning meeting with @larouxn so we can get everything needed for the 1.0 release done by the end of January
  • edit the flash fiction piece I wrote last night

I keep forgetting to log here, but I’ve been pretty productive since #NaNoWriMo ended. Over the past five days, I:

  • Have continued nearly daily #writing (though not as much as during NaNo)
  • Edited and submitted a short story manuscript to a magazine (will hear back within ~2 weeks)
  • Began rewriting #midnightmurderparty Episode 1 with a hopefully better hook (if anyone wants to give me some feedback on this, let me know!)
  • Started researching for MMP Episode 4
  • Had an MMP dev meeting with @larouxn and threw together a Github Project board, which we will be reviewing tomorrow. The plan is to finish development by the end of January!
  • Started using #LifeRPG again (and programmed another tool to calculate Exp and RP in a consistent way)
  • Got OCR working for my typewritten text (new ink ribbon = darker text = good OCR)
  • Decorated my apartment for the holidays with my parents (and went to a diner; what’s more productive than diners?)

November 2016


I won #NaNoWriMo!

Final word count: 50,423 words. NaNo Winner

Side note: The backspace key on my electric typewriter randomly decided to start working again for the last stretch of 2667 words written tonight.


Over the weekend I acquired two typewriters–one electric (which works pretty well, other than the backspace key) and one manual (which needs some serious maintenance before it can be considered usable). I’ve written over 6,000 words of my #NaNoWriMo story on the electric since Friday, and I’m quickly finding that #writing on a typewriter is the way to go for that sloppy first draft. Nice tactile and auditory feedback + the lack of computer-based distractions/notifications make sitting down and writing a lot at a time not only easier, but a lot more fun. I’m excited to get the manual cleaned up so I can try that one out.

I’m still looking for a good OCR program so I don’t have to transcribe 2,000 words every time I write on the typewriter, though. Most programs I’ve tried have struggled to read typewritten text to the point of being nearly useless, unfortunately.

NaNoWriMo word count: 46,526 words.


A quick update from me. I haven’t been posting since I’ve been in a pretty intense work-training class for the last couple weeks. It’s basically a coding boot camp.

As @JorfimusPrime mentioned, #NaNoWriMo has started! I’ve written a little more than I needed to for the first two days, but not quite enough to provide any padding or leeway. Still, I’m on track so far, so it’s a good start. #writing

September 2016


I was right. There was a pretty nasty bug hiding in that #midnightmurderparty refactor, but I fixed it now. Plus, I removed all the dead code paths and cleaned up the #Elm model.

I wrote a short story tonight as well, but it ended up being pretty awful. I think it has some promise, but I’m basically going to have to rewrite it from scratch tomorrow. Oh well, it’s all part of #writing.


I’m terrified right now. I finally wrote the major part of the #midnightmurderparty enhancement, which involved refactoring huge portions of navigation logic. It was the kind of refactor where you really can’t compile and test until it’s basically done.

When I finally compiled it, the compiler found two mistaken type signatures, and then it worked. But surely it couldn’t be that easy, I thought. There will definitely be errors in the runtime since I didn’t change the #JavaScript to work with it yet.

Except there weren’t. As far as I can tell, everything still works fine immediately after this massive refactor. I know this is #Elm, but this is too smooth even still. There must be a sneaky logic error somewhere, but I haven’t found it yet.

It works, and that’s terrifying.


I spent most of today apple picking with the fam and doing chores around my apartment. #LifeRPG has really been helping me stick to my new goals, and it’s very cool to see different aspects of my life all moving forward at a good pace, while also giving me some time to relax and slow down.

I got some more work done on the #midnightmurderparty enhancement I mentioned in a previous post. I anticipate being done with it by the end of the week or sooner.


Tonight I made more progress on #midnightmurderparty. I’m working on a pretty big enhancement at the moment. In the #reader, there is a lot of collision detection regarding which headings are currently within the viewport of the book. The enhancement, instead of checking all headings against the viewport every page turn, just does so once–when it renders–and stores that data in a map from page number to list of elements.

The idea is to cut the slow DOM querying out of the process and to search through less elements each page turn, but there’s another benefit I just realized yesterday. If I pass this map of page num -> element list to #Elm after the render, the Elm side of the program can perform a lot more logic without having to continuously ask the #JavaScript side to check things for it. This will cut out a ton of complexity!

Aside from that, I spent most of the day with a friend. We went to a diner, made cookies, and watched a Twitch stream of Super Mario RPG.


I’m back! This has been a longer break than I meant to take, but it was probably a good idea. I started working on forming some good habits and life balance. You know, eating, sleeping, and taking breaks instead of dev’ing 15 hours/day–just little things that help in the process of staying alive and keeping my apartment intact.

To that end, I’ve spent a couple days configuring #LifeRPG to make the process a little more fun. Progress bars are always good encouragement. Some goals I’ve set include daily reading (just joined Goodreads), regular writing, daily/weekly/monthly house chores, getting some exercise (even if that just means a mile walk), socializing more, and being more effective at my job.

So far this week I:

  • Wrote a #Haskell tool to figure out the RP value of LifeRPG rewards
  • Played Smash Bros. Melee w/ some office mates
  • Finished two books I’d been slacking on
  • Started another book
  • Finally got back to working on #midnightmurderparty!

Funny story. On Thursday, I got an email saying I got accepted into the For Honor alpha, which runs from Thursday through Sunday. I cleared all plans for productivity in favor of playing the alpha while it was open. Today, while I was busy playing For Honor, I received an email with a writing prompt in it.

I had totally forgotten I’d signed up for a 24-hour writing contest this weekend.

Ended up taking a break from gaming, and just spent the last hour and a half writing a short story for this contest. This is the first time I’ve done any real #writing since pretty early in my dev streak, so it’s a nice change of pace–unexpected or not!


Still a bit under the weather, but I sucked it up and got a good start on the #CSS refactor for my #hakyll_portfolio_blog.

  • Replaced the fixed sidebar with a static sidebar.
  • Changed the overall layout of the site to use #flexbox.
  • Made the site responsive for different screen sizes / mobile devices.
  • Tinkered with some other design ideas.

Aside from that, I’ve been trying to get a consistent 8 hours of sleep per night this week. So far, I’ve just woken up more tired and have had less time to get stuff done. When can I get a robotic replacement body?


Somehow I got a full night of sleep last night and woke up more tired than ever this morning. Took half the day and a good amount of tea to shake that off. I do feel better than yesterday, but still not great, so I decided to take it easy again tonight. However, since I’d be remiss to take a complete night off, I added a CSS autoprefixer to the build system. Pretty neat that #hakyll has command line access through the unixFilter function. So the #hakyll_portfolio_blog should now have all the vendor prefixes it needs!


I haven’t been feeling well all day, so I didn’t do too much tonight. I finished styling the post page for my #hakyll_portfolio_blog and added social media share buttons.

It’s pretty early for me right now, but I think I’ll try to sleep anyway. Hopefully this headache will go away and I’ll be more productive tomorrow.


I didn’t get to post all weekend, but I haven’t been slacking. Promise! I actually got a lot done with my #hakyll_portfolio_blog.

  • Friday. Added logic to conditionally show fields based on metadata. Turns out it was tricky, but not impossible, @josh. I had to go on a type safari through #hakyll docs and source to figure it out. Since I couldn’t find any resources on doing this, I’ll write up an explanation in a blog post once my blog is done.
  • Saturday. I got the résumé JSON into a #hakyll Context and displayed in the template. I also figured out how to get #pandoc to inject values from the JSON into a #LaTeX template and render that template to PDF. All from #Haskell! Also, went to a diner for dinner.
  • Sunday. Tried to learn #LaTeX and ended up breaking my entire installation. Spent the first half of the day fixing it. Spent the rest of the day hanging out with @JorfimusPrime. Went to the diner again. I might like diners too much.

I’m writing up my log now to encourage myself to actually stop working for tonight.

Today I was told that the failed #OpenCart upgrade I attempted actually did leave behind some errors. Not too surprising. I don’t know OpenCart; I’m just that “hey, you’re good with computers, right?” guy. So, it’s kind of broken now. It looks like OpenCart has somehow managed to render a smaller version of itself inside one of its own templates. I dug through the templates and saw no trace of what was causing this, and I’m not about to blindly debug thousands of lines of #php. For now, it still works. It just looks stupid. I’ll look at it again over the weekend.

On a brighter note, I spent a good amount of time reading up on #aeson today and managed to get it to parse a JSON version of my résumé for my #hakyll_portfolio_blog. Tomorrow, I’ll try to get that data into my #hakyll template.

For now, I’m gonna make some popcorn, finish Twin Peaks, maybe read for a while, and get some much-needed sleep.


Got #Disqus working on my #hakyll_portfolio_blog tonight. Had to append the window.location.protocol to the beginning of the variable, which I’ve never had to do before (and I’ve set up Disqus two or three times before this). Weird.

I moved some stuff around the home page as well. I’m thinking of making it a résumé page instead of just blog posts. Still getting the balance between portfolio and blog right.

The biggest thing left, aside from continued design, is generating a résumé from JSON as a PDF and as HTML on the home page. Going to try to use #pandoc for that, I think, but I’m still very hazy on how to transition from JSON -> LaTeX -> PDF. All I know is that #Haskell’s aeson library will probably come in handy.


Today was strangely busy even for me. Things I did:

  • Walked 3-4 miles.
  • Collected feedback on a significantly revised opening hook for #midnightmurderparty.
  • Went food shopping / cleaned kitchen / did dishes.
  • Attempted to upgrade #OpenCart as a favor to my old Boy Scout troop. As it happens, OpenCart’s upgrade process is completely broken, and I had to roll the whole thing back. No progress was made there, unfortunately, after 3 hours of working on it.
  • Nearly completed the design of the posts for my #hakyll_portfolio_blog. Also added #Disqus, but it’s giving me odd iframe issues I’ve never seen from #Disqus before.
  • Somehow managed to squeeze in a couple episodes of Twin Peaks (I take breaks… sometimes…).

All in all, I did a bunch of unrelated but nonetheless productive things today. Well, yesterday. It’s now 2am. Goodnight.

Newer Older