Success metrics

Arguably the single most important part of any project that everyone skips is defining what makes a project successful.

The Traps to Avoid

Doing so focuses the project and, more importantly, will help you ignore three big traps:

  • Taking on other people’s definitions of success.
  • Never finishing.
  • Grabbing onto tantalizing data that don’t actually support your goals.

Other People’s Ideas of Success

Often–always, actually-–when working on a project people will offer opinions and ideas on what you should do with it. This is human nature and is a lovely thing. If you’re not sure in what you want though, well, it’s easy to take on their thoughts as your own. Feedback is good, taking it all in means that you’re not secure in why you’re doing what you’re doing.

A lot of what people will suggest means success is going to have to do with capitalism. Always remember that you are not required to monetize your joy.

Never Finishing

Finishing anything is hard. It’s so hard.

The last 10% of even the best scoped projects is always 1000% of the work. Nothing will kill your momentum during that difficult phase more than not knowing what you’re actually shooting for.

You get lost, flail about for a bit, and put it down forever. It’ll make you feel guilty for a long time too whenever you think about it.

Tantalizing Data

Social Media figured out years ago that people like having numbers attached to their posts. Engagement metrics are, frankly, super fun because it’s a nice dopamine hit to see strangers interact with your posts! My guess is that with any interrogation though you’ll find that your reasons for posting are not to see analytics numbers tick up.

You’re probably, at a minimum, more interested in a specific audience liking and retweeting your work. Or, the actual reason you’re posting on social media might be to sell your project, generate commissions, share it with a group, keep a diary for yourself, OR any number of totally valid reasons to use social media.

A large number of favs, shares, and/or retweets is rarely going to be your project’s actual goal. If it is, you can go and buy those likes and retweets from many numerous shady websites with a minimum amount of fuss.

A Personal Example

To personalize this: the primary goal of the posts on this blog are to help me organize my thoughts and to reference them later on. A secondary goal is to share posts with my social circles. A tertiary goal is for random folks on the internet to find the posts when they’re looking for specific information.

This post was written as a reminder to myself to avoid mistakes I’ve made in the past. I’ve walked directly into all of the three traps above and will likely continue to do so. If anyone else reads this post hopefully they’ll be able to use it as ammunition against me the next time I dive in headfirst into a project without a goal.

If my primary goal was to achieve some sort of Elite Blogger Status I’d have to do things a lot differently. Probably there would be no cryptic posts about goal setting! Not going after that particular goal frees me up do what I actually want with this little corner of the internet and not obsess too much over analytics numbers.

From Hugo to WordPress

There are a million and one blog posts for “move from WordPress to Hugo!” out there. This is the opposite of that.

Hugo is good

I like Hugo a lot. If you need a static site generator I’d recommend it without reservation! Once I had it going it worked very well. I loved how fast Hugo could build the entire site and it required almost no server resources. Turns out, you don’t need that much raw computing power to serving static files to a handful of folks every day.

Posting though

But…posting was far more complex than I wanted it to be. In the end I was syncing a folder via dropbox, committing my code to a repo, pushing it to a repo on the server. From there a git hook would run to build the site and then move the files to a folder. Extremely cool and extremely obtuse. If I had just one computer it wouldn’t have been that big of a deal to continue on; however, because I’m a glutton for complication, I bounce between 5 different devices (3 macs, 2 iOS devices) within the course of a week.

Having a web interface to log into matches my mental model of “I am writing and publishing” much better. I also dearly appreciate having drag and drop image support as well as WYSIWYG formatting options. Hugo’s support for non-text media is lacking. That’s totally okay! But, I was finding that I was avoiding publishing certain kinds of posts because I was lacking easy tools to do so.

WordPress and Gutenberg

What finally pushed me to make this change was a recent experience building a new website for Workantile. During that redesign we relied on the Gutenberg editor for formatting our pages. I was impressed! You can create fairly complex pages quickly with blocks in a way that just wasn’t easily doable a few years ago without diving deep into theme files. We’re in a bit of a rough transition point going from the classic editor to Gutenberg (and more importantly the concept of Blocks). It’s getting better all the time though!

Problems

The move went pretty well for the most part. Some technical issues I ran into:

RSS Importer

The RSS importer that is built into wordpress needs some serious attention. The biggest issue is that it fails because it’s calling a deprecated PHP function. The fix for this for me was to comment out the offending line. This StackOverflow post was helpful:

php – Call to undefined function set_magic_quotes_runtime() – Stack Overflow

I just found line 72 in the importer and commented it out. I wouldn’t rely on this edit for an import where you didn’t control all of the content, or as an importer you run more than once. It’s a brittle fix to say the least. Here’s the error and stack trace:

An error of type E_ERROR was caused in line 72 of the file /var/www/beta.chrissalzman.com/wp-content/plugins/rss-importer/rss-importer.php. Error message: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /var/www/beta.chrissalzman.com/wp-content/plugins/rss-importer/rss-importer.php:72
Stack trace:
#0 /var/www/beta.chrissalzman.com/wp-content/plugins/rss-importer/rss-importer.php(178): RSS_Import->get_posts()
#1 /var/www/beta.chrissalzman.com/wp-content/plugins/rss-importer/rss-importer.php(204): RSS_Import->import()
#2 /var/www/beta.chrissalzman.com/wp-admin/admin.php(344): RSS_Import->dispatch()
#3 {main}
  thrown

Hugo’s RSS Implementation

And on the Hugo end of things: Hugo’s built-in RSS generator doesn’t include the full text of the posts. It also doesn’t include categories. I happen to be the sort of person who likes adding categories, so this was a problem! Here’s a gist of my RSS theme file that has the full text and categories:

Hugo RSS Implementation with Categories · GitHub

This looks for the categories set in the frontmatter of your markdown files. If there are none it skips it and nothing is added to the feed for that post.

RSS Redirect

I wanted to make sure anyone who subscribed to my old RSS feed continues to get the new one. To do so I set up a 301 redirect using this plugin:

Simple 301 Redirect

Keeping it around since it’s always nice to have this in a readily accessible place.

Images

Moving images over to the new site involved making sure they were uploaded appropriately to WordPress’ Media library. I toyed with the idea of doing one big import and going through and fixing individual images. Then I found this plugin that just did it for me. Installed it and then Edited all of my posts and resaved them. It ran through and copied everything over and updated the src tags for me:

Auto Upload Images – WordPress plugin | WordPress.org

Inserting images in Hugo was one of the reasons I wanted to get away from it so this was nice to have it just work. After I ran this I turned it off.

Conclusion

So far, so good. I’m happy with this and this post was fully written and edited in the WordPress editor. It’s nice to have “my website” compartmentalized to something I go to on the internet to edit, although I will miss how much posting a blog post made me look like I was attempting to hack the planet.

Miter Saws and Circular Saws

A friend asked me whether he needed both a miter saw and a circular saw for a project he’s working on. As we were chatting he told me “this should be a blog post” so here we are.

Important Note: when we think of tools I think we should focus on access rather than ownership. Borrowing and lending tools is vitally important to a healthy society. Tools are meant to be used not acquired to sit on shelves.

Everyone should have access to a circular saw. It will empower you to do lots of projects you might otherwise think are beyond you.

Not as many people need access to a miter saw, but goodness, is it the right tool when you need it.

Regardless of which tool you’re using it’s worth using the right blade for the material you’re cutting. Not all blades are good at all things!

Miter Saw

The motorized version of this is a very useful tool for making quick repeatable crosscuts on widths less than about 8 inches (more if it’s a sliding miter saw) and miter (angled) cuts. You can get non-motorized versions which use your arm as the device to move the saw across the work piece instead. This is tiring for more than a few cuts, but is cheaper.

Where miter saws really shine is with angled cuts. Most of them these days are compound miter saws, which let’s you set the angle of the fence as well as the angle of the blade. This is very useful for trim work.

Primary Advantages vs. a Circular Saw

  • Repeatable cuts: put a stop block on the fence and you can quickly make a bunch of the same length cut by aligning the piece to the stop block.
  • Taller cuts: due to a larger diameter blade they can cut through thicker stock in one clean pass.
  • Accurate: since you have a fixed metal fence and a fixed fulcrum for the saw they’re unlikely to wander
  • Angles: the “miter” part of the name means that the saw can handle complex angles easily.

Primary Disadvantages vs. a Circular Saw

  • Footprint: the size of the tool is a lot larger. You will also likely need a stand of some sort of the tool and to support your work piece.
  • Weight: you’re not going to love moving your miter saw around.
  • Long cuts: even with a sliding miter saw you’re going to max out around 16”
  • Price: they’re more expensive. Sometimes a lot more expensive.

Circular Saw

A circular saw is a portable saw that is designed to be operated with one hand and excels at making cuts that are perpendicular to the surface of the work piece. You can freehand your cut (usually while following a penciled line), or run the edge of the saw plate alongside a straight edge.

Advantages vs. a Miter Saw

  • Portable: if you get a cordless one you can take it with you pretty much wherever. Even a corded one can travel easily.
  • Virtually limitless capacity: since you’re moving the saw across the piece you’re not limited by the size of your fence or blade size.
  • Price: you can get the last circular saw you’ll ever need for less than $100. Less than $50 if you don’t care about it being cordless or it being new.

Disadvantages vs. a Miter saw

  • Accuracy: unless you have a very steady hand or are using a rock solid fence the accuracy of your cut will be lower. Plenty fine for framing. I wouldn’t want to use it for detailed work.
  • Depth of cut: since the blade is physically smaller in diameter it won’t be able to handle as thick of stock as a miter saw
  • Angles: angled cuts are going to be difficult and/or impossible. Straight 90 degree cuts are all you should expect to get out of a circular saw.