How to write a job ad

October 20, 2021

I’m chatting with a friend right now who is trying to hire a junior developer. He sent me the Upwork post he is using and it’s terrible. I won’t post his ad copy here, but you can just browse Upwork and find plenty of ads that follow the same lines:

We’re building a web-based SaaS and our lead developer is looking for some extra support.

The back-end of our service is built with BUZZWORD, BUZZWORD and BUZZWORD. The UI is built entirely with OMG WHY?. We need someone comfortable with WORD SALAD I CAN’T EVEN READ IT who can be assigned tasks such as BORING, BARF, UNINTELLIGIBLE TECHNO SPEAK, JERKING OFF THE SENIOR DEV to be more BUZZWORD and thoroughly documenting your work.

We use SOME TOOL YOUR SUPPOSED TO KNOW BUT DON’T REALLY UNDERSTAND for something developers are supposed to do and SOME CORPORATE APP YOU’VE NEVER HEARD for BOSSING YOU AROUND. Currently we have such and such to do with so many hours of work, but if you’re a good boy we will consider giving you full-time hours, leading up to our launch date a few months from now, at which point you’ll be wondering what to do when you have one full-time client and now they don’t need you anymore.

If I’m a programmer browsing job ads, I immediately “next” this ad. Even if it were 15 years ago when I was a junior developer and anxious to take any jobs I could get to gain experience. Here is the job ad I sent back to my friend:

We’re looking for a junior LANGUAGE developer who can learn from and support our senior engineer.

If you are comfortable with LANGUAGE and familiar with BUZZWORD, then this job is an opportunity to level-up your skills under the guidance of an experienced lead developer.

Your job will be to support our lead dev by handling tasks like BORING. You will also have the opportunity to refactor existing code, working with our lead dev to better understand how to produce clean code and solid documentation.

Our app is built with BUZZWORD, BUZZWORD AND BUZZWORD and deployed with BUZZWORD. We use SOME TOOL YOUR SUPPOSED TO KNOW BUT DON’T REALLY UNDERSTAND for for something developers are supposed to do and SOME CORPORATE APP YOU’VE NEVER HEARD for BOSSING YOU AROUND. You don’t need to be an expert with these tools, but show up ready to learn!

The original post tells me what they want, but as a developer I don’t really care what they want, everyone wants the same thing, they want to hire a developer. What I care about is what’s in it for me — interesting new technologies, learning from more experienced programmers… that’s enough to apply, later I’ll find out about the team culture, the availability of work and the rate

You have to attract programmers who aren’t just looking for any job that will pay them, if all they care about is how many hours you have and how much you pay, they probably aren’t good and they probably won’t give you their best work even if they are.


Fungible Human Resources For Fun And Profit

October 18, 2021

Email me for more details :)


Post to Hugo via email - demo video

September 30, 2021

I’ve got a lot to improve, but here’s my “first” YouTube video (I actually made a whole bunch of demo/progress videos several years ago when I was the original UI developer for PangeaPoker, but I don’t any of those videos are on the Internet anymore).

Anyway, this is my first new video, I figure I’ll just keep at it until I don’t suck as much.

https://www.youtube.com/watch?v=mTSE_UY-7_k

Bart: [trying to think of something comforting to say] “Uh…Dad? Whenever, I would hang out with Grandma, she would always ask me about you. And I say you’d suck. And she would say that you don’t suck that bad. Homer: She said I didn’t suck? Bart: That bad.


Test post for refactoring

September 30, 2021

I am a post to use for testing and refactoring.


First Programming Live Stream

September 25, 2021

Did my first programming live stream today. A couple people joined me in Google Meet, and a few people followed along on Twitch.

Unfortunately I didn’t capture audio correctly in OBS, so the people in Twitch could only hear me talking… I did have this setup working before, I’ll make sure to get it working better for next time. Also, I didn’t realized that you need to enable saving streams BEFORE you start streaming, so this stream is lost forever, but that’s okay, it’s a nice memory for those of us that were there.

We looked at the Hugo “post by email” code, with the intention of giving a quick overview of Python package development, so we looked at some Python code, unit-testing code, package setup and how to do deployment. We refactored the email header extraction code into it’s own unit-testable function.

One of the guys watching in Twitch already starting cloning the repo and running the project while watching the stream, so I will probably work with him in the next few days to make more improvements to the code and make it useful for more people. One of the guys that was in the Google Meet runs a couple sites on Hugo, so maybe we can get the code to a point where it would work for his sites.

I had fun streaming. It was suggested to me that maybe YouTube Live is a better option. I have no real preference, whatever works. What I do care about is doing streams for this longer form of video where we figure stuff out live, interact with the chat, etc. And then use the experience of the streams as prep to make tighter standalone videos. For example, after the stream today I could make several shorter (10-20 min) videos showing various things that we looked at on the stream: demoing the post by email software, using unit-testing to refactor code, looking at the IMAP RFC, specifying some Python dependencies with setup.py and others with Tox, etc.

This stream has also already lead to ideas for other streams, like having someone new to Python screen share while setting up the package, or having someone new to Emacs get started with Emacs from scratch and start learning basic commands and setting up their environment. During these kinds of videos I will hangout and guide them while we watch their screen.


Private post about success and motivation

September 25, 2021

I thought I’d succeed as an entrepreneur by hiring people smarter than me and managing people well.

That notion was horribly misguided, and I explain why in-depth in a lengthy post on a private forum where I have a progress thread.

It’s a pretty personal and candid post, which is why it’s on a private forum and not visible to the public, but if you’re interested let me know and I can share it as an email.


Vanilla

September 24, 2021

It’s fucked up that “vanilla” is so often a contemptuous term.

Vanilla is a standard flavor for a reason.

Commonplace is bad when standards are low, but when the standards are high, then the standards deserve respect. This reminds me of the UX designers out there dreaming up their own special, unique designs instead of using standard UX patterns that are proven to work… but I don’t want to think about that now, I was thinking about ice cream which is a much happier subject.

Just saying, vanilla tastes incredible, it’s a quality product.


Post By Email

September 22, 2021

Yesterday I created a “post by email” system to make it super easy to publish blog posts. Posterous already did this back in the day and I guess Wordpress does it too. Well, now my Hugo site also supports posting by email.

Here’s the code: post-by-email

It’s a pretty basic Python package, but for the right person it’s a good reference on using IMAP with Python, reading the IMAP RFC, and as an example of how I do Python packaging, test-driven development and simple devops using Make and Python scripts.

At the moment the package is specific to my needs for my site, but I’m willing to generalize bit by bit if anyone else wants to use it. Otherwise, if you want your own “post by email”, just use mine as a guide and change the code where you need to for you purposes.

The nice thing about post-by-email is that now I’m writing blog posts in my email client while sitting through a meeting. Now I can post from my phone without worrying about Hugo, or environment variables or anything like that. Just send an email and then post-by-email adds the content, builds the new site and deploys.

I’ve done similar stuff in the past with Netlify and Github Actions, but for my purposes right now, posting by email is better.


Category theory notifications

September 21, 2021

A long time ago I subscribed to email notifications from Bartosz Milewski’s blog. The last notification I received kicked off some potential energy that’s been building up for years, waiting for the right time.

So now I’m watching lectures on category theory and working through a book on Haskell.

I’ve learned a little Haskell on and off over the years. The result so far is that when I’m writing Python or JavaScript I use first-class functions and closures as easily as I use print statements.

I’m always messing around with different languages that I find interesting. APL is one of my favorites for when I just having fun learning something new. But I think there is a future with Haskell and at the moment I’m committed to gaining actual competence with the language.


Off-label praxeology

September 21, 2021

I will write an email soon about some controversial off-label uses for praxeology, and probably some related ideas that will come up as I’m writing. I won’t publish this email on the web, but I can send it to you if you’re interested, just contact me and let me know.


A couple rants of my own

September 20, 2021

I wrote a 5000 word email today, first responding to a few technology/programming rants a friend shared with me, and then going off on two rants of my own:

  1. Reveling in my arrogance and over-confidence as an engineer

  2. Contemplating my future as a programmer

I’m not going to publish these rants openly, but I can share the email if you’re interested.


Blog v2 Intro

September 20, 2021

This is blog v2, although it’s at least my 4th blog that I can remember…

  1. On my first homepage
  2. Programming blog, “The Well-shorn Yak” on Blog Spot or whatever it was
  3. My first blog on MDashX
  4. This blog

The contents of 1 and 2 are unfortunately lost. The best thing I got out of those was when I wrote an article on how to modify the Flask source code to make it work with JSONP. If I were smarter I would’ve actually contributed the code to Flask, but anyway people were looking for the solution and my blog was the top search result on the topic back in the day (this was around 2011-2012). It was a small thing, but it was really nice when people thanked me for writing the article.

The contents of number 3 are mixed into the “notes” section of this site.

There is no point to this blog other than to be as bloggy as possible, with unchecked drivel, personal trivia and over-sharing, repetition of tired cliches, and most likely going dark for long-periods with no explanation.