Appreciation Booth

Demo of my hackathon to create an Appreciation Photobooth at work to make it easier to appreciate co-workers. 2nd place overall winner.

Making More Time for Meaningful Work with GitHub Actions

Back in November 2018, GitHub announced GitHub Actions. Actions are a way to run scripts in your GitHub repos in reaction to events that happen in your repos – creating an issue, commenting on a pull request, deploying a branch, etc.

While I imagine many people in the GitHub community will be creating actions to run tests, automate deploys, etc, I decided to create some GitHub Actions to save time managing work and collaborating with others.

Most humans spend about 10-15% of their time staying organized – planning, making to-do lists, scheduling things, filing things, etc. Working on a project in GitHub is no different. I don’t know about you, but I’d rather have some of that time back to do more meaningful work. So I decided to create a few GitHub Actions to automate mundane and repetitive project management tasks – to eliminate toil.

✅ Issue Checklist Checker Action

A GitHub Action that makes sure checklists are complete an issue is closed. Source code.

🏷 Issue Bulk Labeler Action

A GitHub Action that adds labels to an issue based on a string in the issue description. Source code.

👩‍👧‍👦 Mirror Parent Issue Label(s) to Child Issue(s)

A GitHub action that mirrors a parent issue’s labels to a child issue. Source code.

💬 Comment on Issue from Commit

A GitHub Action to comment on an issue from commits. Source code.

🚊 Label Repo(s) on PR in Monorepo

A GitHub Action that labels PRs with the repo(s) impacted in a monorepo. Source code.

I’ve been using these actions along with Waffle.io and have been savings lots of time! They’ve been super useful to me and I hope you find them super useful as well.

Issues and pull requests are welcome to keep improving these Actions!

Also check out my previous blog post, My First Week With GitHub Actions.

Let’s Waffle! Bot

As a Developer Advocate at Waffle.io, my mission is to make sure everyone who could benefit from Waffle.io knows about Waffle.io and has a chance to try Waffle.io for themselves. One of the most loved features of Waffle.io is WaffleBot – which lets developers provide updates their team members and product status directly from GitHub issues, branches, and pull requests. WaffleBot takes care of updating status, assigning team members to issues, and showing the real-time status of branches, pull requests, automated tests, and deployments.

However, it’s hard for some users to find out about WaffleBot and give it a try. Since WaffleBot integrates into your development workflow, it can be hard to learn about using the specific keywords and patterns that activate WaffleBot. Many of our experiments provided some improvement, such as a Waffle Automation Cheatsheet, a Waffle Automation landing page to highlight the automation features and explain how they work, and a Getting Started with Waffle Automation onboarding document sent to all new users.

But then the best idea came along. One day, I received feedback from a user suggesting that WaffleBot should teach users about WaffleBot. What a great idea! WaffleBot could teach you about itself by walking you through performing the different actions that automate project status updates. And that’s how Let’s Waffle! Bot was born.

Let’s Waffle! Bot teaches users about Waffle.io and WaffleBot through a series of tasks that illustrate how to get the most value out of Waffle.io and WaffleBot! Brilliant! Check out the demo and source code below!

Source code available at https://github.com/adamzolyak/letswafflebot

Tagged

Making More Time for Focus and Doing Meaningful Work

Early in 2018, I started a new adventure at Waffle.io as a Developer Advocate. Waffle.io makes project management awesome for developers and developer teams by automating work tracking and providing a single view of both the work and the code – which is awesome if you’re on a development team!

As a Developer Advocate, my mission is basically to make sure everyone who could benefit from Waffle.io knows about Waffle.io and has a chance to try Waffle.io for themselves. In the startup world, this is otherwise known as acquisition and activation. But to me, it’s really about trying to help people have more time to focus and do meaningful work. If I can help someone to have a bit more time to build some awesome thing or solve a big hairy problem – that’s what’s in it for me!

One of the things I love about being a Developer Advocate for Waffle.io is that I can approach my mission in any way that achieves the outcomes. I can write a blog post, I can give a talk, I can make a video, I can write code, I can run a hackathon, I can pair with a user. It’s all about the outcome.

One of the things I did a lot of in 2018 was speaking. Speaking is a great way to share new ideas with people, giving them knowledge and options to take back to their jobs and life to make an impact.

So much speaking in 2018!

One of my main themes for 2018 was speaking about making more time for focus and doing meaningful work. If you’re a maker – a developer, writer, woodworker, etc – you probably need a lot of focused time for uninterrupted work. Especially for developers, there’s a high cost associated with interruptions and context switching. And interruptions are in no short supply, with many people only having 25-50% of their time for making at their jobs. What’s worse, about 50% of these interruptions come from ourselves.

It’s been very fulfilling to share what I’ve learned about the state-of-focus, why interruptions happen, how to prevent interruptions, and how to get good at being interrupted – knowledge and options that can be equally beneficial to makers and people who work with makers. But out of all the speaking this year, I think All Things Open 2018 was my favorite.

In addition to helping staff the Waffle.io booth at All Things Open 2018, I was scheduled to give a talk Making Time for Focus and Getting Shit Done for Makers! However, the day before my talk, I lost of voice. Joking about what to do as a whispered to my co-worker, I joked “I could write a bot to give my talk for me.” But then that night I thought about it and decided why not! And that’s why you can listen to my talk spoken by a robot voice while you follow along with the slides! Enjoy!

What’s even better, my talk is now version controlled in GitHub and accepts Pull Requests.

You can find links to my talks, including slides and videos, at https://github.com/adamzolyak/speaking.

Tagged ,

Where’s The (ele)Vator?

Demo of my hackathon to recommend which elevator to select at work.

Tinkur Park Assist

Why?

Val and I recently got a new car – a Subaru Outback.¬† The 12 year old Subaru Forester was still doing ok, but it was time to get a new car with better safety features.¬† However, the new Outback was a bit bigger – length and width.¬† And since we’d used up a significant¬†portion of our garage space for Tinkurlab’s workshop, I wanted to park the Outback as close to the garage door as possible to leave maximum room in front of the car to walk between the workshop and our house.¬† What to do?¬† Hang a tennis ball from the ceiling?¬† Not for a maker!¬† Time for a new project!

Introducing Tinkur Park Assist, a project to help you park your car irresponsibly close to the garage door, with only inches to spare.

“a project to help you park your car irresponsibly close to the garage door, with only inches to spare”

What?

Tinkur Park Assist is pretty simple, consisting of an ultrasonic range sensor to determine the distance between the wall and the car, a big LED for feedback about the distance of the car from the sensor, and an Arduino to make sense of it all.  I initially used an IR distance sensor, but I found that an ultrasonic sensor works much better for the car which is highly reflective and curved.  It seems accurate to within an inch.

I also had the opportunity to design my own housing for the project to hide all the messy wires and electronics.  I chose to 3D print the housing, which was much easier vs. previous housings that were constructed of acrylic milled with a CNC machine.  After a few iterations of the 3D model design, I was able to create a housing that has openings in all the right spots and has an easy to add / remove snap-on lid.

How it Works?

Tinkur¬†Park Assist continuously monitors the distance between the ultrasonic sensor and whatever is in front of it.¬† If the distance hasn’t changed in a while, the LED light turns off.¬† When the distance starts changing, the LED light turns yellow¬†as the object in front of it gets into close range (< 5.5 feet in this case) and turns green when the object is in the ideal range (30 to 38 inches from the sensor in this case).¬† If the object is too close (< 30 inches), the LED turns red.¬† Tinkur Park Assist also saves the 3x last distance values, using the median value for making decisions¬†to reduce false positives from random fluctuations in data (ex. a person walking in front of the sensor).

What’s Next?

I’ll give some time to test Tinkur¬†Park Assist.¬† I think likely iterations may include:

  • Tweaking trigger distances.
  • Increasing the sampling rate for faster LED changes.
  • Tweaking the “no motion detected” logic and thresholds to make sure the LED is off when a car isn’t approaching.

How to Learn More?

Check out the docs and source code at https://github.com/TinkurLab/TinkurParkingAssist.

Check out the 3D model at https://www.thingiverse.com/thing:2836728.

Tagged , , , ,

3D Print Pegboard Tool Holders

It’s helpful to have a well-organized workspace.¬† Knowing where to find a part or a tool saves time and frustration (not to mention saving money by not purchasing a tool only to realize you already had one).¬† And having a clear area to work helps me to focus on the task at hand and improves the quality of the result.¬† I’ve been working to create a better workshop space since we moved a few years ago.¬† It’s coming along nicely with a workbench, pegboard, lots of storage, and an increasing number of tools and parts.

Getting the workbench organized

A post shared by Adam Z (@tinkurlab) on

That said, I still need to find a home for a few things –¬†small screws and fasteners, a few hand tools, and especially microcontrollers and associated small electronics parts.¬† There was extra space pegboard and I decided I wanted to hang some frequently used hand tools – files, small screwdrivers, etc – for quick access.¬† What a perfect project for TinkurLab’s new 3D printer!

I started by trying some existing 3D models from Thingiverse, however, these didn’t fit into my pegboard which is¬†¬†3/16″ holes spaced every 1″.¬† So I decided to do what any maker would – design my own ūüėČ

A co-worker who also has a 3D printer recently told me about using Tinkercad for creating and editing 3D models.  Tinkercad is an entirely web-based CAD editor which works on the premise of using simple shapes Рboxes, spheres, etc Рcombined to make 3D models.  A shape in Tinkercad can either be sold (additive) or a hole (subtractive).  Combined with a few simple tools for aligning, joining, and measuring, Tinkercad seems like an easy to use tool for most basic 3D modeling needs.

Knowing I’d likely need to iterate on the design a few times (aka trial and error), I decided to¬†start by 3D printing the pegboard hooks on a small connective box.¬† This allowed me to test the riskiest assumption quickly – the design, size, and spacing of the pegboard hooks.¬† By only printing the hooks, I was able to print the part much more quickly without wasting 3D filament or time.¬† After testing, the hook size and spacing was correct but the hooks needed a bit more vertical material to ensure they’d stay attached to the pegboard.

After adjusting the model, I printed a full 3D model of my small tool holder which was intended to hold small screwdrivers and drill bits.  The full 3D print was a success with clean and sharp edges.  However, when trying to hang it on the pegboard, I realized the hooks were too low on the back of the part.  So as to not waste more time and material, I used a saw to remove a bit of the extra material and adjusted the 3D model for future prints.

I hope to make a few more pegboard holders over time as the need presents itself.  With the pegboard hook design validated, I can now quickly iterate on existing designs to meet additional needs.

You can find all my 3D models on Thingiverse, including the pegboard holders:

Small Tool Pegboard Holder

 

Large Tool Pegboard Holder

 

Box Pegboard Holder

 

 

TinkurLab Goes 3D!

TinkurLab finally has it’s first 3D printer – a Anycubic¬†Kossel Linear Plus.¬† It’s a $300 kit build-it-yourself¬† printer.¬† Learning to use a 3D printer is a journey.¬† It takes trial and error to learn about a printer and find the settings that work best for different types of 3D prints.¬† We’ll be keeping notes and 3D models on GitHub at https://github.com/TinkurLab/TinkurLab-Anycubic-3D-Printer.¬† Follow along!

3D Printing #LearningByDoing

A post shared by Adam Z (@tinkurlab) on

Every Idea Needs a ???

Demo of my hackathon to create an interactive LED display that allows people to add and remove words to a public wall art installation.  1st place overall winner.

Source code available at https://github.com/adamzolyak/Idea-Champion

Chatbot Pull Request Bumper

Demo of my hackathon to create a Pull Request bumper for Hubot that shows open GitHub Pull Requests that were mentioned in a team’s chat flow.