-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
772 changed files
with
37,345 additions
and
2,408 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
baseurl = "https://dmitrym.online" | ||
title = "Dmitry M - Veridis Quo" | ||
theme = "coder" | ||
languagecode = "en" | ||
defaultcontentlanguage = "en" | ||
|
||
paginate = 20 | ||
canonifyurls = true | ||
|
||
pygmentsstyle = "bw" | ||
pygmentscodefences = true | ||
pygmentscodefencesguesssyntax = true | ||
|
||
disqusShortname = "dmitry-m-viridis-quo" | ||
|
||
[params] | ||
author = "Dmitry M" | ||
info = "General Nerdery" | ||
description = "Dmitry's personal website" | ||
keywords = "blog,developer,personal" | ||
avatarurl = "images/me.png" | ||
|
||
favicon_32 = "/img/favicon-32x32.png" | ||
favicon_16 = "/img/favicon-16x16.png" | ||
|
||
footercontent = "General Nerdery." | ||
|
||
hidecredits = false | ||
hidecopyright = false | ||
|
||
rtl = false | ||
|
||
math = true | ||
custom_css = ["css/custom.css", "images/syntax.css"] | ||
|
||
# Social links | ||
[[params.social]] | ||
name = "Github" | ||
icon = "fab fa-github fa-2x" | ||
weight = 1 | ||
url = "https://github.com/dmitrym0/" | ||
[[params.social]] | ||
name = "Gitlab" | ||
icon = "fab fa-gitlab fa-2x" | ||
weight = 2 | ||
url = "https://gitlab.com/dmitrym0/" | ||
[[params.social]] | ||
name = "Twitter" | ||
icon = "fab fa-twitter fa-2x" | ||
weight = 3 | ||
url = "https://twitter.com/dmitrym/" | ||
|
||
# Menu links | ||
[[menu.main]] | ||
name = "Blog" | ||
weight = 1 | ||
url = "/posts/" | ||
|
||
[[menu.main]] | ||
name = "TIL" | ||
weight = 9 | ||
url = "https://til.dmitrym.online/" | ||
|
||
|
||
[[menu.main]] | ||
name = "Tags" | ||
weight = 10 | ||
url = "/tags/" | ||
|
||
|
||
|
||
[markup] | ||
[markup.goldmark] | ||
[markup.goldmark.renderer] | ||
unsafe = true | ||
|
||
[markup.highlight] | ||
codeFences = true | ||
guessSyntax = false | ||
lineNos = true | ||
lineNumbersInTable = true | ||
noClasses = false | ||
noHl = false | ||
style = 'emacs' | ||
tabWidth = 4 | ||
pygmentsUseClassic=true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
+++ | ||
title = "About" | ||
author = ["Dmitry Markushevich"] | ||
date = 2001-12-07 | ||
lastmod = 2023-05-22T12:33:08-07:00 | ||
tags = ["General"] | ||
draft = false | ||
weight = 2001 | ||
noauthor = true | ||
nocomment = true | ||
nodate = true | ||
nopaging = true | ||
noread = true | ||
[menu] | ||
[menu.main] | ||
weight = 2001 | ||
identifier = "about" | ||
+++ | ||
|
||
I like building stuff. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
+++ | ||
title = "Projects" | ||
author = ["Dmitry Markushevich"] | ||
date = 2001-12-07 | ||
lastmod = 2023-05-22T12:33:08-07:00 | ||
draft = false | ||
weight = 2002 | ||
noauthor = true | ||
nocomment = true | ||
nodate = true | ||
nopaging = true | ||
noread = true | ||
[menu] | ||
[menu.main] | ||
weight = 2002 | ||
identifier = "projects" | ||
+++ | ||
|
||
## org-hyperscheduler {#org-hyperscheduler} | ||
|
||
[org-hyperscheduler](https://github.com/dmitrym0/org-hyperscheduler) is an Emacs package that uses a calendar web component to visualize org-mode agenda. | ||
|
||
More information is available on [GitHub](https://github.com/dmitrym0/org-hyperscheduler). | ||
|
||
Also on [MELPA](https://melpa.org/#/org-hyperscheduler). | ||
|
||
|
||
## simple-lets-encrypt-docker-compose-sample {#simple-lets-encrypt-docker-compose-sample} | ||
|
||
[simple-lets-encrypt-docker-compose-sample](https://github.com/dmitrym0/simple-lets-encrypt-docker-compose-sample) is a sample `docker-compose.yml` that shows how to leverage [docker-letsencrypt-nginx-proxy-companion](https://github.com/jwilder/docker-letsencrypt-nginx-proxy-companion) to automatically terminate SSL connections. | ||
|
||
|
||
## org-reminders-importer {#org-reminders-importer} | ||
|
||
A SwiftUI iOS app to grab reminders and dump them into a text file on Dropbox. | ||
|
||
|
||
## paratroopers {#paratroopers} | ||
|
||
An [SDL](https://www.libsdl.org) based iOS game: | ||
|
||
<iframe width="560" height="315" src="https://www.youtube.com/embed/sNO1A80wxOg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> | ||
|
||
Here's what the original looked like: | ||
|
||
<iframe width="560" height="315" src="https://www.youtube.com/embed/SnPUsspS-LM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
+++ | ||
title = "Back to Personal Agile" | ||
author = ["Dmitry Markushevich"] | ||
date = 2023-11-06 | ||
lastmod = 2023-11-06T17:30:49-08:00 | ||
tags = ["Productivity", "OpenSource", "Life"] | ||
draft = false | ||
+++ | ||
|
||
Life's been kinda busy. Between family and work, hobbies take a back seat. The quote that applies is "A goal without a plan is just a wish". So I want to make a plan. | ||
|
||
> A goal without a plan is just a wish. | ||
In IT world, "Agile" is an invective. Rightfully so. I've never seen it properly implemented. Usually it's a way to mask the lack of any process. "Oh we are agile". Nope, no real plan, permanent firefighting mode. | ||
|
||
I'm not going to be any different. I'm going to steal a couple of things that I feel are beneficial and call it "agile". | ||
|
||
First, I'm going to do sprint planning. Sprint planning is the process of identifying the next set of steps that align with my goals (see "a goal without the plan" above). The important detail that I see frequently ignored or glosses over, is capacity. My goal for this Personal Agile Reboot is to commit 3 hours a week. That's the entirety of my capacity. | ||
|
||
Second, I'm going to commit to the work I set out to do. This is another gap I see frequently. We plan an iteration out, but the scope of work is not protected. Outside influences frequently distabilize the prioritized list of tasks and what is delivered at the end of the iteration does not match the goal set at the outset. Frequent course changes disrupt productivity and reduce velocity. Task thrashing also reduces trust in the original planning exercise. If the task list is about to change, there's no point in committing any effort to the planning exercise. | ||
|
||
Finally, I will perform retrospectives. The goal of a retrospective is to analyze the performance of the team and derive team velocity. How productive is the team on average? The goal is to be able to go back to step 1 and generate a task list for the next iteration that is doable. | ||
|
||
These 3 practices are self-reinforcing. | ||
|
||
If you don't properly plan your sprint, you can neither adequately judge your success (or failure) nor derive a proper velocity. | ||
|
||
If your sprint remains open to changes, this devalues the planning exercise and reduces it's perceived value in following iterations. Without a stable iteration it's also impossible to generate correct spring velocity. | ||
|
||
Finally, if no retrospectives are done it's impossible to course correct ("we took on more work last sprint that we could handle"). | ||
|
||
I'll let you know how it goes. |
Oops, something went wrong.