Outlook is the Best Productivity Tool Ever, Part 2

Following up on my previous post, where I described the framework for how I manage work using Outlook, this post focuses on the technology behind it. I use Outlook Tasks to record all actionable items. I built an Outlook C# VSTO add-in to capture the work. When I am processing my email and find something I need to do, I select that email and click the Add Tasks button in the Outlook ribbon. ...

November 9, 2024

Mysterious Langchain Azure OpenAI Problems

I was banging my head on this problem for hours. Using langchain and our Azure OpenAI model, I kept getting a Value error: As of openai>=1.0.0, Azure endpoints should be specified via the `azure_endpoint` param not `openai_api_base` (or alias `base_url`). I was not defining openai_api_base anywhere in my code. LLMs were no use but I did find the suggestion on Reddit to check if openai_api_base was an environment variable. Sure enough, I had defined that months ago, never used it, and forgot it. Deleted the variable and problem solved. ...

November 8, 2024

Outlook is the Best Productivity Tool Ever, Part 1

I wrote that headline to bother my brother, who despises Outlook. This post is not really about Outlook, although it is central to the topic. I really want to write about how I manage work and as a response to Ian Bogost’s article in the Atlantic about the terribleness of email. I adopted David Allen’s Getting Things Done (GTD) process and refined it for many years. I use Outlook as my inbox, with tasks as the central, actionable record. ...

September 30, 2024

.bat File on Windows Taskbar

When building my Active Directory search tool, I wanted to launch it from the Windows taskbar. I created a .bat file to activate the python virtual environment and run the program. However, you can’t directly add a .bat file to the taskbar. To get around this you can rename the .bat file extension to .exe, add it to the taskbar, rename the .exe back to .bat, finally edit the properties of the taskbar icon to point back to the renamed .bat file. Why Microsoft? ...

September 28, 2024

LLM-assisted Active Directory Search

I needed to check Active Directory (AD) to see who was part of a group. I use AD infrequently and keep a list of queries in a text file on my desktop, as I can’t ever remember the syntax. As I opened my list I thought…wait, I don’t ever have to do this again. Let’s write a program to take a natural language prompt and have our LLM figure out the PowerShell commands. Within 30 minutes I had a functional program. It took several small iterations and these are the prompts I used. Unfortunately, I can’t share the program. ...

September 27, 2024

I was going to write a post but ...

Simon Willison beat me to it. This sums up my experience coding with LLMs. I love it. For a brief amount of time I worried about it making me a lazy programmer but it isn’t. Asking the LLM about the code it writes is a far better way to learn than copying code out of a book and hoping the author could explain it.

September 24, 2024

Everything is Manipulatable

When working on the task scheduler issue I previously posted, I managed to lock myself out of my computer. It’s been a long time since I have done that. I had some research to do. These days that means querying an LLM but I actually didn’t find this answer through them. Good ol’ Reddit solved it. See, on the Windows login screen, there is a button for the Ease of Access settings. If you click it, it will run an .exe called utilman.exe. This password recovery process involves you booting from the USB, opening the command-line, backing up utilman.exe, creating a copy of cmd.exe, renamed as utilman.exe. Now when you boot back to Windows, you can access the command prompt from the login screen by clicking Ease of Access and resetting your password. ...

September 23, 2024

Windows Task Scheduler Woes

My favorite cartoonist has a website where he displays daily selections from his archive. I want this in my life but I can’t be bothered to go to a website everyday. So several years ago, I wrote a python script to take screenshots of the cartoons and email them to me (scraping didn’t work). The script was scheduled through Windows Task Scheduler. Then I changed computers, brought over the code, and have been struggling for days to get the task scheduler to work. The task wouldn’t run the python script directly. I wrote .bat and .ps1 files to try and activate the virtual environment, then run the scripts. I fixed that, then the images were downloaded as black images. Over and over, problem after problem, including changing my password and getting locked out of my computer (… cool hack to restore to come). ...

September 20, 2024