Greg Siekman

Greg Siekman

Technical Systems Analyst

Understanding complex systems and finding better ways to make them work.

Open to opportunities in audio/music, clean energy, EVs, and beyond.

Back to all posts

Posts tagged #tooling

Showing 2 posts filed under #tooling.

Posts

Making an Ops Tool with Electron

2026-07-28

A screenshot of an Electron application titled "Greg's Ops Tool" consisting of four columns of buttons.

In a recent post, I mentioned an ops tool I built. The intention behind this tool was to create a dashboard of buttons to run repeatable processes in my day-to-day work. It was a new kind of project for me, as I'd never worked on something designed to be a standalone app; most of the stuff I create with a GUI runs in a browser. Because of that experience, I knew I wanted something that would turn web technologies into a desktop application. I originally started working on the project in Tauri, the shiniest of these tools, but once I recognized the need to move some of my system command logic into Rust, I decided it was a little too heavy a lift for an ops tool. I made the transition to building this in Electron, taking on the increased package size as a trade-off for the ability to work in a language I already knew and could ship quicker. The tool is broken down into four columns: LXD Tools(the web extension I do most of my work on at my job), Repo Control, Task Tracking, and Course Navigation. There's overlap between LXD Tools and Repo Control, like opening in my IDE of choice(currently Zed) and running git status on the repo. Most of these buttons are relying on system commands to do what they are doing. In Task Tracking, I have buttons to open my team's Trello board and my personal Todoist, then I have Daily Sync and Log FAQ. In Course Navigation, I have buttons to open a few of my commonly used test courses, and a button to open a Test Course reset utility(which was the inspiration for the test course reset tool I talked about here.) My three favorite features of this are the Daily Sync, Log FAQ, and Reset Test Course buttons. Since I have already talked about the standalone version of test course reset, I'm going to focus on the other two buttons here. The Daily Sync button is designed to make it easier for me to compile a message to our team's group chat in Teams every morning, outlining what got done yesterday and what I plan to do today. This button calls Todoist's API for tasks from my Work project, one time for things that were completed on the last workday (so Monday it looks at Friday) and what is scheduled for today. It then combines the titles of those todo items into two comma-separated lists and pops up a text editor where I have the option to adjust the phrasing in a way that makes sense to people who don't have the same context of the task that I do. Once I've done that, I can hit the "Copy to Clipboard" button and then paste it into a Teams message. This works really well because it saves me the time of having to go to Todoist manually every day and jog my memory on what milestones I hit. The Log FAQ button was built out of dual desires: to correlate questions others come to me for, and to decrease instances of context switching for me. Being at my current job for 3 years in roles as Learning Technology Support and now in a Solution Developer context has given me a spot on our team as someone with a lot of institutional knowledge regarding the technology we use in our courses. As such, people will often reach out with questions regarding Canvas, an LTI integration, or something our extension does. While I never mind answering these questions, since taking on a coding role, those questions can cause some context switching that slows me down. In an effort to address that and increase the bus factor among our team, I've begun logging when I get those questions in a JSON file. I hope, in due time, patterns will emerge about what questions are getting asked, and that can be used to make some form of internal FAQ sheet that will allow people to bypass me and go to that page to answer questions, also serving me in reducing my context-switching time. Logistically, I'm most proud of how this tool saves the information. Once you fill out the form and submit, it adds an entry to a JSON file that lives in Google Drive on the computer. That enables the JSON file to stay synced across multiple computers, without any effort. Working with Electron did pose a few new concepts that I had to learn. I had no experience routing things through preload files or using context bridges; the way Electron needed my buttons bound was not something I had experienced. Those roadblocks aside, it was the right choice to go with Electron for this project, as sticking with Tauri would've meant spending a lot more time learning, which would've been antithetical to this particular project's aims of saving me a little bit of time in my everyday work. If you've looked at the image for this post, you'll notice that it's pretty basic in its styling. That's something I keep in the back of my head as something I would like to address down the line. However, as it stands, this is just a tool for me, and I've really been fine with function over form.

Automating Sprint Summary Reports

2026-07-23

For a few months, I was tasked with leading the sprint process on our team. This including running our debrief and planning meetings, and developing a summary write-up of what happened in the previous sprint for leadership on other teams. Despite leading the meetings, I wasn't always as sharply abreast on the specific details of what people were working on, which made it a bit tough to write the sprint summary from memory. Every two weeks, I could've opened up our Trello board and scrolled through cards and lists to write up this summary. That felt slow and tedious to me. So, I opened up me IDE and built a Python script that automated a little bit of this work. Using the Trello API, I pulled cards from the relevant lists in our board. The script dumped the cards into a csv, generated a data file, and created a template markdown file to draft into. The data file is my favorite part of the project. It attempts to establish keywords from the sprint by counting words from the titles and descriptions of cards. For example, one of the data files has a keyword "Field." It was in five cards, and then below the keyword, it lists the titles of each card. This section used a rudimentary filter list to filter out common words that weren't useful descriptions of the work being done(people's names.) It also attempts to use a frequency filter to determine relevancy. A word that is in 9 cards, for example, is assumed to be a common word and not a descriptive word of the work being done. The data sheet does this for completed items, and then in a separate list for active and planned items. At the bottom of the data file is then a 'Quick Scan Index' of the cards, which is just the card titles in a text list corresponding with the lists in Trello. With those files on hand, I was able to write the sprint summaries faster. I could use keywords to prompt what we got done and what we planned to get done. I could scan the cards to catch anything I missed. Once I was done drafting, I could run a formatter script that converted the markdown file into HTML; as that was a friendlier format for Outlook, and copied it to my clipboard. If I were going to pick this project up again, I would put more work into that formatter script. Outlook was a little fidgety with it's formatting preferences, and I always had to spend some time formatting it manually. I could also do more work on how it determines what a keyword is and surfacing relevant information from the cards.