These posts are always self-indulgent, but I think it's good to reflect on our accomplishments. 🏆

I've written next to nothing for 2 weeks now, because I was working on a couple other little projects.


Creating a C# wrapper for the Ghost API

Last week, I was deep-diving into the Ghost API. It took longer than I expected, but I managed to write a C# wrapper around it called GhostSharp. There are a few bugs (most notably that creating posts/pages doesn't work well), and a list of nice-to-haves, which are all documented in GitHub issues... but for the moment it's moving to the backburner.

I've always liked C# but don't have much opportunity to use it on a daily basis anymore, so this was a good excuse to bang out some code, try a few of the new goodies in C# 6 and 7, and learn about xUnit and RestSharp. I also encountered an odd issue that I may try lending a hand to fixing in the near future.

Generating links next to headers in Chrome

This week, I wrote a Chrome extension I've had on my mind for awhile. Not terribly often, but often enough, I find myself inspecting the header on a webpage in order to grab the ID (if there is one), so I can use it to link to a particular section of the page. It makes it easier to share exactly what I want to share.

I noticed that when I hover over a header on a GitHub *.md file, it'll display a small "chain" icon that provides a link to that section. So I wrote an extension to extend similar behavior to all pages that have headers with assigned ID values.

You can get Generate Links for Headers in the Chrome web store.


Installing a door

So this has nothing to do with programming, but something to do with engineering in general - and I'm damned proud of it. I replaced a door, including the entire frame, this week. It was an old door, all beat up, and bottom of the barrel when it was new. The previous owner tried patching a hole in it at some point, but it was so cheaply made it's pointless...


Tearing the down the trim and removing the old frame:



The new one took longer to install than I thought it would, but it looks good (needs paint):



I don't know if this is a critical look, surprise, or just mild amusement. I never would've thought when I bought my first home 13 years ago that I'd tackle this project. Don't ever talk yourself out of trying something if you want to have a go at it!


Some good articles from the week

I Peeked Into My Node_Modules Directory And You Won't Believe What Happened Next
Right after NPM failed thousands of sites after someone removed their 11-line package, Jordan started digging into the contents of his other NPM packages. The results were shocking - entire dictionaries embedded to look up one term, photographs embedded (which was removed a week after adding it), and more.

I'd go a step further to say you should probably give any package you don't recognize at least a cursory glance. I don't know if NPM has anything in place to make sure packages aren't malicious, but anyone who's used a store (Chrome, Apple, etc) knows there are plenty of extensions and apps you shouldn't trust.

Why .NET Technologies Are (And Will Keep) Powering our Application
Maxime shares his team's decision to go with what they knew instead of the latest and greatest... and lo and behold they actually get stuff done. Also, I can vouch for the .NET Framework from my 8 years of using it - it's the accumulation of tens thousands (maybe hundreds of thousands) of hours work that you don't need to reinvent yourself.

"Effectiveness, efficiency, and scalability: THESE should dictate your tech stack choice. Not the social pressure of 'new' and 'trendy'. And for us, .NET was and still is a no-brainer pick to get sh*t done."

This one reminded me of another (15 year old) article titled "Beating the Averages". It's about a pair of guys who knew Lisp really well, and used it to write an app that blew away the competition and got bought out by Yahoo, even though no one else would've suspected you could do what they did with Lisp.

"Ordinarily technology changes fast. But programming languages are different: programming languages are not just technology, but what programmers think in. They're half technology and half religion"

Sergey Brin, my Father, and our obsession with Silicon Valley entrepreneurs
Segah shares his experience of falling for the "(1) drop out of college, (2) work out of your garage, (3) ???, (4) profit!!" mentality that somewhat pervades our culture and Hollywood. It works for a low percentage of people, but their success (usually based on a fair amount of luck and timing too) enamors the masses. Segah ruminates how those who did great things in past centuries "weren't rewarded for moving fast and breaking things." Not all apps require perfection, but some things (like security) should be as close as possible.

"We need a fusing of technology and art that involves patience, the willingness to dive deep and slow down. As technical artisans, we can derive intrinsic meaning and satisfaction when we labor with the same depth, care, and creativity that sculptors and painters did during the Renaissance."

All Code Is Disposable, Just As It Should Be
A good reminder for us all. I love pragmatic articles that put things back in perspective. Matthew reminds us that very few of us are designing timeless works of art like the Sistine Chapel or Michaelangelo's David, and that all works fade eventually as the problems we're trying to solve change - and it's a good thing they do too.

If You Want to Matter in the Software Industry, Stop Being a Laborer
Once again Erik makes it so clear why consulting, or at least having a consultant mindset even if you're full time, is the way to go. It's easy to get complacent, and to fall into a position of being led instead of leading. Becoming a developer is not the end of the road, nor a place to stand still.

Tools I wish I had known about when I started coding
I use Chrome and Visual Studio Code (for OSX), so I found this article interesting. Mario provides a list of some really nice extensions in here, and now my VS Code has about half a dozen more extensions than it did before!

High School Computing: The Inside Story
This last one is an article from 26 years ago. In it, Natasha describes her experience learning how to program, which started in 1985 when she was 12! I started playing around with computers about 5 years later than her, but Basic was about as far as I got until I was in college, then some html and javascript. She had some great insight, and it's still applicable today.

It's like trying to interest small children in reading. You try to show how much there is to discover in books by reading with or to them. Maybe they will pick up some books on their own and then some more, and pretty soon they will have built up a library. But if you dump the library on top of them, ask them to memorize the Dewey Decimal System and then put the books back in order, by the time they finish --- assuming they do --- they won't care to look at another book, much less read one.