big change
This commit is contained in:
parent
f0b5d586d5
commit
84c4ee60c5
9 changed files with 71 additions and 43 deletions
|
@ -14,5 +14,5 @@ nav_links = [
|
|||
{ url = "/", text = "home" },
|
||||
{ url = "/pages/about", text = "about" },
|
||||
{ url = "/pages", text = "all pages" },
|
||||
{ url = "https://git.iptq.io/michael", text = "projects" },
|
||||
{ url = "https://git.iptq.io/michael", text = "projects »" },
|
||||
]
|
||||
|
|
|
@ -3,5 +3,6 @@ title = "home"
|
|||
template = "blog.html"
|
||||
page_template = "post.html"
|
||||
|
||||
insert_anchor_links = "right"
|
||||
sort_by = "date"
|
||||
+++
|
||||
|
|
|
@ -2,4 +2,5 @@
|
|||
title = "all pages"
|
||||
template = "listing.html"
|
||||
page_template = "post.html"
|
||||
insert_anchor_links = "right"
|
||||
+++
|
||||
|
|
|
@ -6,22 +6,6 @@ Hi there! I'm a Computer Science student at the University of Minnesota, and I'v
|
|||
|
||||
In an effort to rely on less services, I started doing a lot of self-hosting and rewriting of software. Check out some of the projects I'm doing over on my public [Gitea](https://git.iptq.io)!
|
||||
|
||||
### setup
|
||||
|
||||
My setup can be found [here](/pages/setup).
|
||||
|
||||
### languages
|
||||
|
||||
Here's some of the languages I like, in approximate order of my skill/confidence in using them:
|
||||
|
||||
- **Rust** I can't say I'm fluent in Rust, but writing code in Rust just feels right. Most of my recent projects have been done in Rust.
|
||||
- **Go** I like the way this language is opinionated, and makes for very clean code. Unfortunately, because of their design decisions it's relatively lacking in language features.
|
||||
- **Python** One of my favorite languages by far. Aside from its weakness in performance, I love how the language looks. I do have several bones to pick, especially towards its dependency ecosystem.
|
||||
- **JavaScript** Although I'm trying to step away from JavaScript, I find myself using it from time to time simply out of ease of use and plethora of libraries.
|
||||
- **C** Largely prefer this over C++ because of much finer control over what's happening.
|
||||
- **OCaml** Learned this from a functional programming class, and I still use it from time to time; I kinda see it as the "Python" of functional languages.
|
||||
- **C++** Good for when I did competitive programming because of its very comprehensive standard library.
|
||||
|
||||
If you want my resume, contact me through one of these means:
|
||||
|
||||
## contact
|
||||
|
@ -29,3 +13,7 @@ If you want my resume, contact me through one of these means:
|
|||
- Discord: **iptq#8440**
|
||||
- Email: (I sign all my Git commits with this email)
|
||||
- PGP Key: [hosted on Keybase](https://keybase.io/michaelz/pgp_keys.asc?fingerprint=2a323c176e16b8c25ade02d447033f6c0a02f24a)
|
||||
|
||||
## setup
|
||||
|
||||
My setup can be found [here](/pages/setup).
|
||||
|
|
|
@ -1,37 +1,43 @@
|
|||
+++
|
||||
title = "my setup"
|
||||
|
||||
[extra]
|
||||
toc = true
|
||||
+++
|
||||
|
||||
## desktop
|
||||
## laptop
|
||||
|
||||
I'm using Arch Linux on my personal machine. Here's a neofetch:
|
||||
|
||||
```
|
||||
# michael @ arch in ~ [16:42:51]
|
||||
# michael @ kawa in ~ [12:42:16]
|
||||
$ neofetch
|
||||
-` michael@arch
|
||||
-` michael@kawa
|
||||
.o+` ------------
|
||||
`ooo/ OS: Arch Linux x86_64
|
||||
`+oooo: Host: K501UX 1.0
|
||||
`+oooooo: Kernel: 4.18.5-arch1-1-ARCH
|
||||
-+oooooo+: Uptime: 1 hour, 47 mins
|
||||
`/:-:++oooo+: Packages: 1143 (pacman)
|
||||
`/++++/+++++++: Shell: zsh 5.5.1
|
||||
`+oooooo: Kernel: 5.1.8-arch1-1-ARCH
|
||||
-+oooooo+: Uptime: 10 hours, 32 mins
|
||||
`/:-:++oooo+: Packages: 960 (pacman), 242 (nix)
|
||||
`/++++/+++++++: Shell: zsh 5.7.1
|
||||
`/++++++++++++++: Resolution: 1920x1080
|
||||
`/+++ooooooooooooo/` WM: i3
|
||||
./ooosssso++osssssso+` Theme: Adwaita [GTK2/3]
|
||||
.oossssso-````/ossssss+` Icons: Adwaita [GTK2/3]
|
||||
-osssssso. :ssssssso. Terminal: alacritty
|
||||
:osssssss/ osssso+++. Terminal Font: Roboto Mono for Powerline
|
||||
/ossssssss/ +ssssooo/- CPU: Intel i7-6500U (4) @ 3.100GHz
|
||||
`/ossssso+/:- -:/+osssso+- GPU: NVIDIA GeForce GTX 950M
|
||||
`+sso+:-` `.-/+oso: GPU: Intel Skylake GT2 [HD Graphics 520]
|
||||
`++:. `-/+/ Memory: 6708MiB / 7871MiB
|
||||
`/+++ooooooooooooo/` Theme: Adwaita [GTK2/3]
|
||||
./ooosssso++osssssso+` Icons: Adwaita [GTK2/3]
|
||||
.oossssso-````/ossssss+` Terminal: alacritty
|
||||
-osssssso. :ssssssso. CPU: Intel i7-6500U (4) @ 3.100GHz
|
||||
:osssssss/ osssso+++. GPU: NVIDIA GeForce GTX 950M
|
||||
/ossssssss/ +ssssooo/- GPU: Intel Skylake GT2 [HD Graphics 520]
|
||||
`/ossssso+/:- -:/+osssso+- Memory: 3789MiB / 7867MiB
|
||||
`+sso+:-` `.-/+oso:
|
||||
`++:. `-/+/
|
||||
.` `/
|
||||
|
||||
```
|
||||
|
||||
For my desktop environment, I've got [i3](https://i3wm.org/), a tiling window manager. I like it because it's lightweight and doesn't use much battery. My config can be found [here](https://git.iptq.io/michael/dotfiles/src/branch/master/.config/i3/config). I tried i3gaps at one point but didn't feel like trying to fix the rendering artifacts so I switched back.
|
||||
My desktop environment is [i3](https://i3wm.org) on X11. I like it because it's lightweight and doesn't use much battery. Even after many years my laptop can still sustain 5-6 hours of prolonged usage.
|
||||
|
||||
### email
|
||||
|
||||
|
||||
|
||||
### coding
|
||||
|
||||
|
@ -43,19 +49,37 @@ For passwords, I'm using [pass](https://www.passwordstore.org/), which is a GPG-
|
|||
|
||||
### music
|
||||
|
||||
On my personal computer, I'm using [mpd](https://www.musicpd.org/), the music player daemon along with [sonata](https://www.nongnu.org/sonata/), which is a GTK frontend. I like using mpd because this also allows me to display my current playing song in my i3 bar.
|
||||
On my personal computer, I'm using [mpd](https://www.musicpd.org/), the music player daemon along with [Cantata](https://github.com/CDrummond/cantata), which is a Qt frontend. I like using mpd because this also allows me to display my current playing song in my i3 bar.
|
||||
|
||||
### screenshot
|
||||
|
||||
I'm using a [custom screenshot tool](https://git.iptq.io/michael/leanshot).
|
||||
I'm using a [custom screenshot tool](https://git.iptq.io/michael/leanshot), written by myself using Rust. The advantage of this over something like scrot or maim would be the ability to first freeze the screen before selecting a region.
|
||||
|
||||
## my phone
|
||||
|
||||
My phone is running the latest version of LineageOS without Google Apps, in a small effort to liberate myself from Google services. Most of the apps that I need notifications from on my phone can contact servers directly without going through Google's Firebase Cloud Messaging, which is where push notifications traditionally go.
|
||||
|
||||
First, here's a list of free software that I use, available from [F-Droid](https://f-droid.org/en/), a free-software app store:
|
||||
|
||||
- [DAVx5](https://f-droid.org/en/packages/at.bitfire.davdroid/). Great for syncing my calendar, contacts, and todo list between my computer and my phone. With a self-hosted CalDAV server, my data is in my hands.
|
||||
- [DNSFilter](https://f-droid.org/en/packages/dnsfilter.android). Creates a local VPN and selectively blocks requests based on existing blacklists. This actually filters a lot of advertising and tracking data on the regular.
|
||||
- [Termux](https://f-droid.org/en/packages/com.termux/). It's a terminal on your phone. Why not?
|
||||
- [Weechat Android](https://f-droid.org/en/packages/com.ubergeek42.WeechatAndroid/). Weechat is an IRC client that can act like a server. With this app, my phone connects to that server and retrieves messages, including sending me notifications for new highlights and such.
|
||||
|
||||
Other software I use include:
|
||||
|
||||
- [Authy](https://authy.com/). Unfortunately, until I figure out my 2-factor backup plan, I'm going to have to stick with Authy since it handles backups well. The long-term solution here is to use backup codes, but I haven't gotten around to sorting that out yet.
|
||||
- [Firefox](https://www.mozilla.org/en-US/firefox/mobile/). Yes, Firefox is on Android.
|
||||
- [Signal](https://signal.org/). Encrypted chat that uses phone numbers for identity so you can basically replace SMS with almost no user-interface changes.
|
||||
|
||||
And a slew of other non-free apps that have pretty specific uses, though I think I've crippled my phone to the point where many of those apps are unusable. One of these days I'll go in and purge them again.
|
||||
|
||||
## this website
|
||||
|
||||
The stack for this website looks like:
|
||||
|
||||
- The [source code](https://git.iptq.io/michael/blog) is written as a set of Gutenberg config files.
|
||||
- This is then transpiled into static HTML + resources using [Gutenberg](https://www.getgutenberg.io/), a static site generator.
|
||||
- This is then transpiled into static HTML + resources using [Zola](https://getzola.org/), a static site generator written with Rust.
|
||||
- Changes are deployed using Git hooks.
|
||||
- Static files are served from a web root using [nginx](https://nginx.org/en/) through a virtual host.
|
||||
- And here it is!
|
||||
|
||||
For deployment, I'm using [dip](https://github.com/acmumn/dip), a customizable webhook server that I wrote that rebuilds the source code on push.
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
@import "syntax.scss";
|
||||
|
||||
$monofont: "Roboto Mono", "Roboto Mono for Powerline", "Inconsolata", "Consolas", monospace;
|
||||
|
||||
html {
|
||||
background-color: lightskyblue;
|
||||
}
|
||||
|
@ -36,9 +38,19 @@ a {
|
|||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&.permalink {
|
||||
color: lighten(royalblue, 25%);
|
||||
font-size: 0.65em;
|
||||
}
|
||||
}
|
||||
|
||||
#content {
|
||||
line-height: 1.25em;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 5px;
|
||||
overflow-x: auto;
|
||||
font-family: $monofont;
|
||||
}
|
||||
|
|
2
templates/anchor-link.html
Normal file
2
templates/anchor-link.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
|
||||
<a href="#{{ id }}" class="permalink">(permalink)</a>
|
|
@ -5,7 +5,7 @@
|
|||
<div id="nav">
|
||||
{% for link in config.extra.nav_links %}
|
||||
{% if loop.index > 1 %}·{% endif %}
|
||||
<a href="{{ link.url | safe }}" class="link">{{ link.text | replace(from=" ", to=" ") }}</a>
|
||||
<a href="{{ link.url | safe }}" class="link">{{ link.text | replace(from=" ", to=" ") | safe }}</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
</small>
|
||||
{% endif %}
|
||||
|
||||
{% if page.extra.toc and page.toc | length %}
|
||||
{% if page.extra.toc and toc | length %}
|
||||
<div class="toc">
|
||||
table of contents
|
||||
{{ post::render_toc(toc=page.toc) }}
|
||||
{{ post::render_toc(toc=toc) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
|
Loading…
Reference in a new issue