Got myself a Moergo Go60 (and can’t type anymore)
I never really pay much, I think, for the tech I use: no fancy screens, expensive headphones, unnecessary specs. Basically, I don’t think I need it for what I do, which usually is a lot of reading and writing, browsing, light programming. But for some time now, my keyboard setup was bothering me. The r-go split keyboard I have been using were bugging out and didn’t fit with my work routine, which involves a lot of switching desks, I went online and watched a lot of videos (shoutout to the Characorder and the Svalboard users out there!). Finally, I settled on the Moergo Go60, which is what I’m typing this blog post with. And man is it hard to use: which says nothing about the board and everything about my typing habits. I am loving the board’s feel though: the build quality, switches, tenting, everything feels high quality, well-thought out (the carry case, the symbol layer). Just have to accept that relearning typing is my reality now.
Some Org clock optimizations
Something else that I worked on has been my Org mode workflow. I’m already working with a somewhat Getting Things Done-note taking approach, where I org-capture notes as Org (sub)headings which I then org-refile into their own Category headings based on work topic and team in a ‘main’ file. Done and cancelled tasks I regularly refile into a Done/Cancelled file, and so on. For the sake of our team management, I need to instead put all current and upcoming tasks into an org-jira file, but the basic idea is the same: capture tasks on the fly, actively maintain state, reorganize when done/cancelled. I also organize my notes as references this way, and it’s kept me sane in my note taking switching from security analist to information security officer. What really helps me focus on any of these tasks, has been org-clock. The task I’m currently clocked in, I can put all my attention to. The same for managing my GTD workflow and Jira tickets. Combined with some xbar-scripts, my menu bar and my Emacs frame constantly show me what I’m working on, my current or upcoming meetings and my personal and Jira todos. Some script snippets:
Current and upcoming meetings (using exported meetings extracted with ical2awk)
#!/bin/bash
# <xbar.title>Org Agenda next scheduled item and calendar>
emacsclient --eval "(org-store-agenda-views)" &> /dev/null
l
filename_sanitized=".../org-agenda-xbar-export.txt"
until [[ $upcoming_hour -eq 23 ]]
do
emacs_scheduled_current_hour=$current_hour":"
current_meeting=$(grep -h -E "$emacs_scheduled_current_hour[0-9]{2}-" $filename_sanitized)
emacs_scheduled_upcoming_hour=$upcoming_hour":"
upcoming_meeting=$(grep -h -E "$emacs_scheduled_upcoming_hour[0-9]{2}-" $filename_sanitized)
if [ -n "$current_meeting" ]; then
if [[ $current_meeting == *$'\n'* ]]; then
readarray -t current_multiple_meetings <<<"$current_meeting"
printf "%s," "Current meetings are: ${current_multiple_meetings[@]}"
else
echo "⬇️: $current_meeting"
fi
break
fi
if [ -n "$upcoming_meeting" ]; then
if [[ $upcoming_meeting == *$'\n'* ]]; then
readarray -t upcoming_multiple_meetings <<<"$upcoming_meeting"
printf "%s," "${upcoming_multiple_meetings[@]}"
else
echo "️⬆️ $upcoming_meeting"
fi
break
fi
((upcoming_hour++))
done
if [ -z "$current_meeting" ] && [ -z "$upcoming_meeting" ]; then
echo "No (upcoming) meetings"
fiCurrently clocked in task
#!/usr/bin/env zsh
function client {
/usr/local/bin/emacsclient --eval "$1"
}
if [ "$(client "(org-clock-is-active)")" = "nil" ]; then
echo "No Task"
else
echo -n '⏰ '
client "(org-clock-get-clock-string)" | head -n 1 | cut -d'"' -f2 | awk '{print substr($0,0,40)" ..."}' | sed 's/|//g'
fiLoop through org-jira extracted headings
awk 'NR>1 { print $0 }' '.../org-agenda-bar-export-Jira-meetings.txt' | awk '{print "🗂️" substr($0,0,50)"..."}' And some Maldev Academy progress
For a while now I’ve tried to make more spare time available to make some progress with the awesome malware development course by Maldev Academy. The chapter objectives really help me to put the content into practice. Currently I’m working on code for chapter 8 (I previously made progress up to chapter 11) and by running into all sorts of errors, I’ve recently learned:
- Getting and displaying a user error in a readable, usable format with
GetLastError()andFormatMessage - Handling linker errors using cl.exe by explicitly linking to the library where the compiled implementation of the function in question is
- Reading and understanding better the Windows documentation on WinAPI functions
Find my adhoc notes on this website and the actual C code on my Gitlab-instance.