-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.xml
331 lines (271 loc) · 24 KB
/
index.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Dmitry M - Veridis Quo</title>
<link>https://dmitrym.online/</link>
<description>Recent content on Dmitry M - Veridis Quo</description>
<generator>Hugo -- gohugo.io</generator>
<language>en</language>
<lastBuildDate>Thu, 31 Oct 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://dmitrym.online/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>About</title>
<link>https://dmitrym.online/pages/about/</link>
<pubDate>Fri, 07 Dec 2001 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/pages/about/</guid>
<description>I like building stuff.</description>
</item>
<item>
<title>Projects</title>
<link>https://dmitrym.online/pages/projects/</link>
<pubDate>Fri, 07 Dec 2001 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/pages/projects/</guid>
<description>org-hyperscheduler org-hyperscheduler is an Emacs package that uses a calendar web component to visualize org-mode agenda.
More information is available on GitHub.
Also on MELPA.
simple-lets-encrypt-docker-compose-sample simple-lets-encrypt-docker-compose-sample is a sample docker-compose.yml that shows how to leverage docker-letsencrypt-nginx-proxy-companion to automatically terminate SSL connections.
org-reminders-importer A SwiftUI iOS app to grab reminders and dump them into a text file on Dropbox.
paratroopers An SDL based iOS game:
Here&rsquo;s what the original looked like:</description>
</item>
<item>
<title>Perfectionism: just do it again</title>
<link>https://dmitrym.online/posts/do-it-again/</link>
<pubDate>Thu, 31 Oct 2024 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/do-it-again/</guid>
<description>There are two dimensions of perfectionism that I identify with. One is going above and beyond to make sure that folks dont think you&rsquo;re not good enough. The other aspect is attempting to avoid rework. I want to address &ldquo;rework&rdquo;&hellip;
For many years, I thought that if I plan or analyse a problem long enough I&rsquo;ll come up with one true solution that would apply, always. In fact, this is a lament I frequently hear at work.</description>
</item>
<item>
<title>XTerra Axle Swap Redux</title>
<link>https://dmitrym.online/posts/xterra-axle-swap-redux/</link>
<pubDate>Wed, 24 Apr 2024 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/xterra-axle-swap-redux/</guid>
<description>In March of 2023, I had an opportunity to buy an M226 axle out of a destroyed 2011 Pro4x Xterra. My Xterra trim does not come with an electric locking differential; whereas the pro4x does. Getting a full axle assembly from a pro4x trim and swapping it in is an economical way of getting a locking rear differential on xterra models that didn&rsquo;t come with it.
I made a whole video about the process and posted it on Youtube:</description>
</item>
<item>
<title>Org-noter download counts</title>
<link>https://dmitrym.online/posts/org-noter-download-counts-2024/</link>
<pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/org-noter-download-counts-2024/</guid>
<description>Unfortunately melpa does not provide download counts for org-noter. This is an attempt to keep a manual record.
It&rsquo;s also hard to differentiate between new installs and upgrades. In any case it&rsquo;s some indication of usage.
Date Count Feb 27, 2022 32000 Aug 11, 2023 50000 Feb 21, 2024 61000 It&rsquo;s interesting to note that the version in 2022 was marked 2019 so the doubling of downloads in 2 years is likely due to updates.</description>
</item>
<item>
<title>Back to Personal Agile</title>
<link>https://dmitrym.online/posts/back-to-personal-agile/</link>
<pubDate>Mon, 06 Nov 2023 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/back-to-personal-agile/</guid>
<description>Life&rsquo;s been kinda busy. Between family and work, hobbies take a back seat. The quote that applies is &ldquo;A goal without a plan is just a wish&rdquo;. So I want to make a plan.
A goal without a plan is just a wish.
In IT world, &ldquo;Agile&rdquo; is an invective. Rightfully so. I&rsquo;ve never seen it properly implemented. Usually it&rsquo;s a way to mask the lack of any process. &ldquo;Oh we are agile&rdquo;.</description>
</item>
<item>
<title>org-noter: I'm an official maintainer!</title>
<link>https://dmitrym.online/posts/org-noter-official-maintainer/</link>
<pubDate>Mon, 22 May 2023 00:00:00 -0700</pubDate>
<guid>https://dmitrym.online/posts/org-noter-official-maintainer/</guid>
<description>I haven&rsquo;t contributed to open source software much until last year. It&rsquo;s been an interesting and rewarding process.
My first large contribution was last year when I released my scheduling package for Emacs, org-hyperscheduler. Later in 2022 I found a fantastic package for taking notes, org-noter.
When I dicovered org-noter in the summer of 2022, it was not actively maintained. The last update was at the end of 2019. I asked if anyone wanted to collaborate on a fork on github and made a post on reddit.</description>
</item>
<item>
<title>3 ways to context switch with Git</title>
<link>https://dmitrym.online/posts/three-ways-to-context-switch-with-git/</link>
<pubDate>Fri, 02 Sep 2022 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/three-ways-to-context-switch-with-git/</guid>
<description></description>
</item>
<item>
<title>Achievement Unlocked: Open Source Contribution</title>
<link>https://dmitrym.online/posts/open-source-contribution/</link>
<pubDate>Sun, 24 Jul 2022 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/open-source-contribution/</guid>
<description>I did it. My Emacs package, org-hyperscheduler, is now live on MELPA, here.
I&rsquo;m overjoyed. It&rsquo;s a big deal for me, because I&rsquo;ve been a long time beneficiary of open source software and I&rsquo;m glad to finally be able to give back. It&rsquo;s the first piece of software that I started out writing for myself and got to a state where it&rsquo;s useable for other folks.
Once version 1 was stable, I submitted a pull request to MELPA.</description>
</item>
<item>
<title>Journaling prompts in Emacs</title>
<link>https://dmitrym.online/posts/journaling-prompts-with-emacs/</link>
<pubDate>Sun, 17 Jul 2022 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/journaling-prompts-with-emacs/</guid>
<description>One of my daily rituals is journaling. It&rsquo;s been shown to have positive impact on quality of life (citation needed). I find it helps me decompress but it&rsquo;s also a permanent record of my thoughts and my life&rsquo;s minutiae.
I usually set a timer for 5 minutes and go to town. One particular challenge I have, is that some times I don&rsquo;t really know what to write about. Recently I came upon the idea of journaling prompts.</description>
</item>
<item>
<title>What is hyper-scheduling?</title>
<link>https://dmitrym.online/posts/what-is-hyperscheduling/</link>
<pubDate>Thu, 17 Mar 2022 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/what-is-hyperscheduling/</guid>
<description>Hyperscheduling?; TLDR Hyperscheduling is the idea of fully planning your day using a calendar. Every minute of the day is assigned to some task using a calendar.
Hyperscheduling in more detail Hyperscheduling is only part of a productivity system. It helps me plan my day:
Select a set of tasks for today (this is done outside of hyperscheduling, using GTD or another system). Prioritize your tasks in order of importance. Lay your tasks out on the calendar.</description>
</item>
<item>
<title>Caddy 2 and TCP Proxying</title>
<link>https://dmitrym.online/posts/caddy2-and-tcp-proxying/</link>
<pubDate>Mon, 14 Mar 2022 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/caddy2-and-tcp-proxying/</guid>
<description>How to configure Caddy2 to proxy TCP streams.
To illustrate the architecture, I have the following entities running in Docker.
I&rsquo;m using Caddy 2 as a reverse proxy, but it looks like it supports many more scenarios. Previously I used nginx, or traeffic. The appeal of Caddy is that it supports TLS (with LetsEncrypt) out of the box and integrates with Consul for an eventual clustering solution with Nomad.
Startup with Caddy was very simple.</description>
</item>
<item>
<title>Note taking and discovery</title>
<link>https://dmitrym.online/posts/note-taking-and-discovery/</link>
<pubDate>Wed, 09 Mar 2022 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/note-taking-and-discovery/</guid>
<description>I&rsquo;ve been taking notes consistently, probably starting in university. The challenge for me was never capture but retrieval. I suspect that&rsquo;s true for most people.
The interesting thing about zettelcasten is how Luhramn optimized his sytem for retrieval. Related subjects were proximate, he used a linking system of sorts that allowed his cards to be filed under number of different topics.
In digital note taking, proximity is difficult to simulate. Hyperlinking is the first step of course.</description>
</item>
<item>
<title>Still Around</title>
<link>https://dmitrym.online/posts/still-around/</link>
<pubDate>Mon, 22 Mar 2021 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/still-around/</guid>
<description>Nearly a year after my previous entry, I&rsquo;m trying to get into blogging yet again. I&rsquo;ve got a huge backlog of posts I&rsquo;m interested in sharing but it&rsquo;s been a challenge to get through it for various reasons. It&rsquo;s not New Year&rsquo;s, but here&rsquo;s a commitment, write one post every two weeks. Should be doable?</description>
</item>
<item>
<title> Book review: "First 90 days"
</title>
<link>https://dmitrym.online/posts/book-review-first-90-days/</link>
<pubDate>Tue, 28 Apr 2020 00:00:00 -0700</pubDate>
<guid>https://dmitrym.online/posts/book-review-first-90-days/</guid>
<description>The &ldquo;First 90 days&rdquo; lays out a comprehensive plan on how to become productive in a new role, whether it&rsquo;s a promotion or a position in a new company.
It’s a mistake to believe that you will be successful in your new job by continuing to do what you did in your previous job, only more so
The advice is wide ranging. What&rsquo;s useful about this book is that there&rsquo;s nearly a step by step process for every category of advice.</description>
</item>
<item>
<title>Personal Agile: Iteration 5 (COVID-19 edition)</title>
<link>https://dmitrym.online/posts/personal-agile-iteration-5/</link>
<pubDate>Tue, 24 Mar 2020 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/personal-agile-iteration-5/</guid>
<description>It&rsquo;s been pretty hard to focus on anything other than what&rsquo;s going on in the world the last two weeks. I didn&rsquo;t really successfully complete the iteration. We&rsquo;ve been sent home from work about a week ago which freed up a lot of time that&rsquo;s been allocated to the commute. Theoretically. Unfortunately focus has been hard to come by.
The only take away I have from this iteration is that I&rsquo;ve significantly reversed my position on UI/UX.</description>
</item>
<item>
<title>Personal Agile: Iteration 4</title>
<link>https://dmitrym.online/posts/personal-agile-iteration-4/</link>
<pubDate>Mon, 09 Mar 2020 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/personal-agile-iteration-4/</guid>
<description>Interesting iteration. Overall agile approach has been a net positive. I likely would&rsquo;ve have been approximately as successful, but deliberate approach to planning and reviews yields interesting artifacts (of which this blog post is one) and provides for an interesting trajectory overview.
I made good progress on my tasks this iteration:
adding two additional chapters reviewed to &ldquo;First 90 days&rdquo;. It&rsquo;s becoming a bit tedious, but I feel it&rsquo;s critical to finish this book.</description>
</item>
<item>
<title>Personal Agile: Iteration 2</title>
<link>https://dmitrym.online/posts/personal-agile-iteration-2/</link>
<pubDate>Sun, 09 Feb 2020 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/personal-agile-iteration-2/</guid>
<description>The goal for this iteration was to:
work on my little SwiftUI app finish reading a book (&ldquo;The first 90 days&rdquo;) maintain my fitness habits Conclusions Overall the iteration went well. In the screenshot above, you can tell that I wildly underestimated how much time summarizing the current book would take: I estimated an hour, but it ended up being 3 times as much (3 hours).
Then, I spent way too much on my app, 10 pomodoros (roughly 5 hours) vs 3 hours initially estimated.</description>
</item>
<item>
<title>Personal Agile: Iteration 1</title>
<link>https://dmitrym.online/posts/personal-agile-iteration-1/</link>
<pubDate>Sat, 25 Jan 2020 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/personal-agile-iteration-1/</guid>
<description>There&rsquo;s lots to love about agile, but my personal faves are two things:
timeboxed iterations retrospectives The ultimate goal of agile is to shorten feedback loops. If something is not working it&rsquo;s easier to identify and correct the issue at the point of occurence rather than months down the line. This of it as a REPL loop for productivity.
I&rsquo;ve been quite successful doing this at work, so I figured why not try it for personal productivity as well?</description>
</item>
<item>
<title>Managing secrets in open source iOS apps</title>
<link>https://dmitrym.online/posts/managing-secrets-in-ios-apps/</link>
<pubDate>Thu, 23 Jan 2020 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/managing-secrets-in-ios-apps/</guid>
<description>One of the issues that open source authors have to deal with is secrets management. The small utility app I&rsquo;m working on relies on Dropbox API. Before you can work with Dropbox API though, you have to generate an API key. The API key identifies the application to Dropbox and needs to remain mostly secret. A bad actor could impersonate the application author by stealing the API key.
This is a long winded way of saying that API keys must be kept out of public repositories.</description>
</item>
<item>
<title>Omnifocus style reviews with org-mode</title>
<link>https://dmitrym.online/posts/omnifocus-review-with-org-mode/</link>
<pubDate>Tue, 07 Jan 2020 00:00:00 -0800</pubDate>
<guid>https://dmitrym.online/posts/omnifocus-review-with-org-mode/</guid>
<description>I started using Emacs and org-mode in earnest in the middle of 2019. At that point in time I was using Omnifocus to track my tasks and Bearapp for notes. I was missing plaintext functionality. Since then I&rsquo;ve reproduced most of the functionality that Omnifocus offerred except one particular feature: reviews.
In GTD, reviews occupy a pretty important niche. Without regular task and project reviews task lists tend to grow out of control and become polutted.</description>
</item>
<item>
<title>Building a lithium ion battery, part 1: “Why”</title>
<link>https://dmitrym.online/posts/diy-lithium-battery-part-1/</link>
<pubDate>Tue, 12 Mar 2019 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/diy-lithium-battery-part-1/</guid>
<description>Why build a battery? Why build a battery from scratch? I’ll tell you.
Why build a battery from scratch? Battery technology is becoming very important. Cell phones, laptops and now cars rely on batteries for power. More importantly, I needed a battery unit for reasons (more on this later).
I could’ve purchased a battery off the shelf, but consumer units are quite expensive. For example [Goal Zero Yeti 400 Lithium is $800.</description>
</item>
<item>
<title>Safari App Extensions; migrating from .safariextz</title>
<link>https://dmitrym.online/posts/safari-app-extensions-migrating-from-safariextz/</link>
<pubDate>Mon, 08 Oct 2018 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/safari-app-extensions-migrating-from-safariextz/</guid>
<description>I’ve dabbled with a Safari extension for a project on and off for a while. For Safari 12, I read that .safariextz-style extensions are no longer supported. I went forth to investigate what changed and how I could port my old extension to Safari 12.
The short story is that the packaging has changed, but the bulk of the existing extension should just work once new conventions are adopted. I imagine the new changes are spurred by Apple’s desire to unify distribution — new extensions are wrapped as a mac application, require a signature and are distributed through the Mac App Store.</description>
</item>
<item>
<title>How to check for X-Send-File (or X-Accel-Redirect)</title>
<link>https://dmitrym.online/posts/how-to-check-for-x-sendfile/</link>
<pubDate>Tue, 11 Sep 2018 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/how-to-check-for-x-sendfile/</guid>
<description>Some web requests should not be handled by the application framework. Requests hitting a dynamic API endpoint should be processed by application (in my case typically Ruby on Rails). Static assets (such as files) should be served by the webserver, bypassing Ruby on Rails completely.
Why?
There are a couple of reasons.
The biggest one is performance. NGINX and Apache are significantly better and faster at serving files than a Ruby process.</description>
</item>
<item>
<title>Efficient commit workflow with tig</title>
<link>https://dmitrym.online/posts/tig-cheat-sheet/</link>
<pubDate>Thu, 30 Aug 2018 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/tig-cheat-sheet/</guid>
<description>One of the recommended source control practices is to commit frequently, and often. I prefer to keep my commits terse and focused, however in practice I’m working on a couple related but independent things in parallel. At commit time, I prefer to tease loosely related things apart and commit them separately.
One way to do that is with the interactive git-add facility that can be invoked with git add -p:</description>
</item>
<item>
<title>ncdu - ncurses disk usage</title>
<link>https://dmitrym.online/posts/ncdu-ncurses-disk-usage/</link>
<pubDate>Wed, 07 Dec 2016 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/ncdu-ncurses-disk-usage/</guid>
<description>At some point harddrive space was cheap, but with the advent of SSDs and cheap “Cloud VMs” that is no longer the case. For example, the cheapest VM on VULTR is $5/month and has a 15 gig SSD drive. It&rsquo;s suddenly very important to maximize drive usage again. This is where ncdu comes in. It displays a nice ncurses interface that visualizes the usage breakdown.
So useful key bindings:</description>
</item>
<item>
<title>RAID5: Recovering from 2-drive failure during rebuild</title>
<link>https://dmitrym.online/posts/raid5-multiple-disk-recovery/</link>
<pubDate>Mon, 13 Jul 2015 00:00:00 -0700</pubDate>
<guid>https://dmitrym.online/posts/raid5-multiple-disk-recovery/</guid>
<description>RAID is amazing technology. It lets us take a bunch of cheap disks an arrange them in various configurations that present these disks as one large disk. A particularly popular type of RAID for home users is RAID5. A RAID5 array is typically comprised of 3 disks, however only 2/3 of the disk space is available since 1/3 of the space is used for recovery purposes if one of the disks fail.</description>
</item>
<item>
<title>tircd, irc twitter gateway</title>
<link>https://dmitrym.online/posts/tircd-twitter-gateway/</link>
<pubDate>Sun, 17 Mar 2013 00:00:00 -0700</pubDate>
<guid>https://dmitrym.online/posts/tircd-twitter-gateway/</guid>
<description>I published my tircd branch. If you&rsquo;re unfamiliar with tircd it&rsquo;s a daemon that presents Twitter as an IRC channel. I merged this really old branch that implements Twitter lists as channels with the semi official google code mirror branch. I created a pull request but it hasn&rsquo;t been acted on yet.
I consume my instant messaging via IRC (with the help of minbif) and now Twitter too. Quite convenient.</description>
</item>
<item>
<title>Working with shared memory on OS X</title>
<link>https://dmitrym.online/posts/shared-memory-on-os-x/</link>
<pubDate>Mon, 05 Apr 2010 00:00:00 +0000</pubDate>
<guid>https://dmitrym.online/posts/shared-memory-on-os-x/</guid>
<description>If you&rsquo;re working with Qt&rsquo;s QSharedMemory, on Mac OS X you&rsquo;re working with System V shared memory subsystem. If your data is sizable, the first limit you&rsquo;ll hit in the maximum segment size, which is for some reason around 4 megs. To increase it invoke this magic incantation:
1 sudo sysctl -w kern.sysv.shmmax=33554432 and to see other shared mem related kernel variables:
1 sysctl -A|grep shm If you&rsquo;d like these settings to remain after you reboot your machine follow the instruction here.</description>
</item>
<item>
<title>Reading a font from file an making it available to Cocoa</title>
<link>https://dmitrym.online/posts/reading-font-from-file-and-making-it-available-to-cocoa/</link>
<pubDate>Fri, 06 Feb 2009 00:00:00 -0800</pubDate>
<guid>https://dmitrym.online/posts/reading-font-from-file-and-making-it-available-to-cocoa/</guid>
<description>This is another programming related post.
Say you have a true type font that&rsquo;s not part of the OS font set in a file. You&rsquo;ve read the contents of the file into memory and now want to make it available to Cocoa. How?
Turns out that ATSUI comes to the rescue:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ATSFontContainerRef container; OSStatus status = ATSFontActivateFromMemory((LogicalAddress)[fontData bytes], // buffer with font data [fontData length], // size of font data kATSFontContextLocal, // for use only in this application kATSFontFormatUnspecified, // reserved NULL, // reserved kATSOptionFlagsDefault, // reserved &amp;container); // on output, will contain the activated font // find the number of font references in the container (goes to numItems) ItemCount numItems; status = ATSFontFindFromContainer(container, kATSOptionFlagsDefault, 0, NULL, &amp;numItems); NSLog(@&#34;There are %d references in the container\n&#34;, numItems); // load the individual fonts ATSFontRef *ioArray = malloc(numItems * sizeof(ATSFontRef)); status = ATSFontFindFromContainer(container, kATSOptionFlagsDefault, numItems, ioArray, &amp;numItems); CFStringRef fontName = nil; ATSFontGetName (ioArray[fontIndex], kATSOptionFlagsDefault, &amp;fontName); NSFont* myFont = [NSFont fontWithName:(NSString*)fontName size:24]; myFont now contains the NSFont reference to your font.</description>
</item>
</channel>
</rss>