mirror of
https://github.com/Brandon-Rozek/website.git
synced 2024-11-22 00:06:29 -05:00
Re-tagged blog posts
This commit is contained in:
parent
209995c77b
commit
2a9c127365
186 changed files with 186 additions and 146 deletions
|
@ -23,6 +23,7 @@ tumblr_post_id:
|
|||
- "135656876494"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
I saw [Mike Riethmuller’s](http://madebymike.com.au/) precision typography [pen](http://codepen.io/MadeByMike/pen/YPJJYv){.broken_link}, and was highly impressed. I think the equation used has other purposes as well
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ mf2_cite:
|
|||
- 'a:1:{s:6:"author";a:0:{}}'
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
This is part 1 of an animation series I’m doing. It is inspired by Lea Verou’s talk called “[The Humble Border-Radius.](https://www.youtube.com/watch?v=JSaMl2OKjfQ)” I looked at her site and she has a good demo of a bunch of different animations [here](http://lea.verou.me/2011/10/animatable-a-css-transitions-gallery/). My goal here is to create a more comprehensive guide to these different animatable properties–mainly for future reference. Animations play a big part in adding interactivity to the web, so why not explore some possible options?
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ tumblr_post_id:
|
|||
- "135657238924"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
This post is part 2 of an animation series I am doing; you can read part 1 [here](https://brandonrozek.com/2015/05/animatable-border/). In this post, we’ll look at the different parts of the box model (margin, padding, height, and width) and see how they can be animated.
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ tumblr_post_id:
|
|||
- "135657326384"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
Animating the location of objects is one of the most common types of animation. It’s interesting to animate this way because you need to keep in mind how each of the element’s interact with each other to constitute a page.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ tumblr_post_id:
|
|||
- "135657083469"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
This post is part 3 of my series on animation. In this post, I’ll show you different animations you can add onto text. If you haven’t already, you should check out [part 1](https://brandonrozek.com/2015/09/animatable-box-model/) and [part 2](https://brandonrozek.com/2015/05/animatable-border/) of this series. Animations on text can be used to bring attention, to add importance, or to convey a point. As with all animations, however, keep your user in mind and your text readable.
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ tumblr_post_id:
|
|||
- "135657370214"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web"]
|
||||
---
|
||||
I’ve been teaching a small class on web development recently, and after my first lecture, I’ve gained a newfound respect for teachers. Teaching didn’t come as naturally to me as I would have imagined. I tried going in prepared: with a few outlines and a few code demos. Instead of letting my preparation go to waste, I decided to share them here with you on my site. It’s a nice break from the Animatable posts, so I hope you enjoy!
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ tumblr_post_id:
|
|||
- "135657462089"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "JS"]
|
||||
---
|
||||
Javascript has multiple ways you can store your data. Each of these different ways is called a data type, and they each carry different “methods” which are helpful commands. Today, I’ll show you the different data types and methods that I use and how they’re useful.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ mf2_cite:
|
|||
- 'a:1:{s:6:"author";a:0:{}}'
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
Hello everyone! This is part 5 of my series on animation. Today’s post will be short, since we’re only going to talk about color and opacity.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ tumblr_post_id:
|
|||
- "135657540174"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
This is the last post of the animatable series. The grand finale. Here, we will talk about the transform property. It’s only one property but it comes with a lot of goodies in the form of transform-functions.
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ tumblr_post_id:
|
|||
- "135657634939"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "JS"]
|
||||
---
|
||||
Javascript, like most other programming languages, include ways to run blocks of code when something meets a condition. Here, I will describe the most common ways to do so.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ tumblr_post_id:
|
|||
- "135657661534"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "JS"]
|
||||
---
|
||||
Ever had a snippet of code that appears multiple times in different places in your program? Whenever you had to change that snippet, you end up playing this game of search and replace. Functions can help. They exist to abstract your code, making it not only easier to change that little snippet, but to read and debug your code as well.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ tumblr_post_id:
|
|||
- "135657690564"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "JS"]
|
||||
---
|
||||
I’m excited to say that I’ve written my first service worker for brandonrozek.com. What is a service worker? A service worker provides an extra layer between the client and the server. The exciting part about this is that you can use service workers to deliver an offline experience. (Cached versions of your site, offline pages, etc.)
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ tumblr_post_id:
|
|||
- "135657739439"
|
||||
kind:
|
||||
- article
|
||||
tags: ["JS"]
|
||||
---
|
||||
Last week I published my first library over on Github called [Fractions.js](https://github.com/brandonrozek/Fractions.js). Fractions.js is a library to help avoid the [mathmatetical errors](http://floating-point-gui.de/) in floating point arithmetic. What do you mean by floating point artihmetic errors? Here is an example: <code class="language-javascript">.1 * .2</code> outputs <code class="language-javascript">0.020000000000000004</code> even though the correct answer is <code class="language-javascript">.02</code>
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ tumblr_crosspostr_crosspost:
|
|||
- 'N'
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web", "JS"]
|
||||
---
|
||||
Summary: I rewrote how cache limiting works to address a few problems listed later in this post. Check out the [gist](https://gist.github.com/brandonrozek/0cf038df40a913fda655) for the updated code.
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ tumblr_post_id:
|
|||
- "136059699334"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Web"]
|
||||
---
|
||||
Microformats is semantic HTML used to convey metadata. Using an userscript, I can generate a vCard from the representative h-card of the page. The code for this is on this gist [here.](https://gist.github.com/brandonrozek/e0153b2733e947fa9c87)
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@ mf2_syndicate-to:
|
|||
- 'a:1:{i:0;s:4:"none";}'
|
||||
kind:
|
||||
- note
|
||||
tags: ["Security"]
|
||||
---
|
||||
Looking over the list of programs installed on my computer, one of my all time favorites is a program called [Pass](https://www.passwordstore.org/). It’s a program available under most Linux distributions, Mac OS X (through [Brew](http://brew.sh/)), [Windows](https://github.com/mbos/Pass4Win), [Android](https://play.google.com/store/apps/details?id=com.zeapo.pwdstore), and [iOS](https://github.com/davidjb/pass-ios#readme). It stores all of the passwords using gpg encryption and stores them as actual files on the hard disk. Meaning if you wanted, you can sync them to all your devices!
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ tumblr_post_id:
|
|||
format: aside
|
||||
kind:
|
||||
- note
|
||||
tags: ["R"]
|
||||
---
|
||||
In case you were wondering how I got all the R code and output for the [“Do females live longer than males?”](https://brandonrozek.com/portfolio/male-vs-female-life-expectancy/) page. There is actually a function in RStudio that allows one to compile a report based on code and it’s output.
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ tumblr_post_id:
|
|||
format: aside
|
||||
kind:
|
||||
- note
|
||||
tags: ["Statistics"]
|
||||
---
|
||||
There are many cases where websites use random number generators to influence some sort of page behavior. One test to ensure the quality of a random number generator is to see if after many cases, the numbers produced follow a uniform distribution.
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@ mf2_syndication:
|
|||
format: aside
|
||||
kind:
|
||||
- note
|
||||
tags: ["Math", "Java"]
|
||||
math: true
|
||||
---
|
||||
Using Monte Carlo methods, we can create a simulation that approximates pi. In this post, we will go over the math behind the approximation and the code.
|
||||
|
|
|
@ -20,6 +20,7 @@ mf2_syndication:
|
|||
- 'a:1:{i:0;s:60:"https://twitter.com/B_RozekJournal/status/867409810932760576";}'
|
||||
kind:
|
||||
- article
|
||||
tags: ["Java"]
|
||||
---
|
||||
When you use an IDE there are many things you can take for granted. A section of an intro level computer science course at my university uses [JGrasp](http://www.jgrasp.org/) to build Java Applets.
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ tumblr_post_id:
|
|||
- "161484582559"
|
||||
kind:
|
||||
- article
|
||||
tags: ["Java"]
|
||||
---
|
||||
This post, over time, will serve as a reference to myself and others of the different UI components available in the Swing library. This post assumes a general familiarity with setting up a basic Swing application and focuses only on the individual components.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ mf2_syndication:
|
|||
- 'a:1:{i:0;s:60:"https://twitter.com/B_RozekJournal/status/871828083459936257";}'
|
||||
kind:
|
||||
- article
|
||||
tags: ["Java"]
|
||||
---
|
||||
The default theme for Java Swing components is a cross-platform theme called “Metal”. I use the Adapta theme for GTK on Linux and this theme does not match at all what my other GUI applications look like. So here, I will describe a simple way to utlize already existent system themes in Java Swing applications.
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ tumblr_crosspostr_crosspost:
|
|||
- 'N'
|
||||
kind:
|
||||
- note
|
||||
tags: ["Java"]
|
||||
---
|
||||
Sometimes you want to format your outputs. This is a quick cheatsheet containing the differerent escape sequences
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ mf2_mp-syndicate-to:
|
|||
- 'a:1:{i:0;s:4:"none";}'
|
||||
kind:
|
||||
- note
|
||||
tags: ["Java"]
|
||||
---
|
||||
To obtain console input for your program you can use the `Scanner` class
|
||||
|
||||
|
|
|
@ -18,6 +18,7 @@ mf2_syndication:
|
|||
- 'a:1:{i:0;s:60:"https://twitter.com/B_RozekJournal/status/955308388384235521";}'
|
||||
kind:
|
||||
- article
|
||||
tags: ["Java"]
|
||||
---
|
||||
This article is based on one written by [Markus Konrad](https://datascience.blog.wzb.eu/author/markus_konrad/) at this link <a href='https://datascience.blog.wzb.eu/2016/07/13/autocorrecting-misspelled-words-in-python-using-hunspell/' target='_blank' >https://datascience.blog.wzb.eu/2016/07/13/autocorrecting-misspelled-words-in-python-using-hunspell/</a>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Debugging and Performance"
|
||||
date: 2019-06-15T10:59:30-04:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Testing" ]
|
||||
---
|
||||
|
||||
I've come to like the GNU Debugger (GDB) and the `perf` tool recently. This post will be a short summary of the various interesting commands you can use.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Useful Abstract Definitions"
|
||||
date: 2019-10-27T23:49:57-04:00
|
||||
draft: false
|
||||
tags: [ "abstract algebra" ]
|
||||
tags: [ "Math" ]
|
||||
math: true
|
||||
---
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ author: Brandon Rozek
|
|||
layout: revision
|
||||
guid: https://brandonrozek.com/2017/07/2227-revision-v1/
|
||||
permalink: /2017/07/2227-revision-v1/
|
||||
tags: ["Statistics"]
|
||||
---
|
||||
### Introduction
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Algorithms in LaTex"
|
||||
date: 2020-05-14T21:31:28-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["LaTex"]
|
||||
---
|
||||
|
||||
There's a great package in LaTex called [`algorithm`](https://ctan.org/pkg/algorithms?lang=en) to help format psuedo-code algorithms for scientific papers. Here's a simple example of its usage:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Antenna Basics"
|
||||
date: 2021-07-25T10:43:11-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Amateur Radio"]
|
||||
math: false
|
||||
---
|
||||
When a radio wave hits an antenna, the electrical component of the wave induces a difference of potential in the conductor which gives rise to an electric current. This is called electromotive force. The current induced is normally small, therefore, we usually design antennas to be as efficient as possible.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Deploying Binaries to other Linux Distros using Appimage"
|
||||
date: 2020-10-19T21:53:52-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Packaging"]
|
||||
---
|
||||
|
||||
One way to distribute to different Linux distributions is to compile the source under each of them and distribute it separately. This can be a pain to manage if you target multiple distributions and multiple versions of those distributions. Instead, let's take a look at AppImage. This allows us to package up our binaries and shared libraries under one file which we can distribute.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Show Applications using the Internet"
|
||||
date: 2020-05-09T11:30:36-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Linux"]
|
||||
---
|
||||
|
||||
There's a great thread on [ask ubuntu](https://askubuntu.com/questions/104739/which-applications-are-using-internet) on seeing which applications are using the Internet. I'm going to add my own spin on the answers for future reference.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Archiving Sites"
|
||||
date: 2019-08-02T22:42:16-04:00
|
||||
draft: false
|
||||
tags: [ "archive" ]
|
||||
tags: [ "Archive" ]
|
||||
---
|
||||
|
||||
I have several old Wordpress sites lying around that I would like to archive but not maintain anymore. Since I don't intend to create any more content on these sites, we can use tools like `wget` to scrape an existing site and provide a somewhat *read-only* copy of it. I say read-only not because we can't edit it, but because it's not in the original source format of the website.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "aspell"
|
||||
date: 2019-12-10T22:20:48-05:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Linux" ]
|
||||
---
|
||||
|
||||
When I was working on my honors thesis, I realized that I needed a way to spell check the file. After a quick search, I stumbled upon `aspell` which is a `curses` based tool to provide an interactive way for dealing with misspellings. Try it out when you have the chance!
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Quick Python: Async Callbacks"
|
||||
date: 2020-07-11T20:23:29-04:00
|
||||
draft: false
|
||||
tags: ["python"]
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
I've written a post on using [callbacks in Python](https://brandonrozek.com/blog/pysubscribepattern/). Though to add callbacks to `asyncio` functions, you'll have to interact with the loop object directly. Replace the emit function in the previous post with the following:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Replace Audio in Video"
|
||||
date: 2020-04-20T20:32:26-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Audio-Video"]
|
||||
---
|
||||
|
||||
I recorded a video and wanted to touch up my audio in audacity. Here's how I used `ffmpeg` to extract the audio, and then replace it with a modified version.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Auto-Deploy Docker Applications"
|
||||
date: 2020-05-09T10:20:34-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Containers"]
|
||||
---
|
||||
|
||||
This post will combine that last three posts on [Packer](https://brandonrozek.com/blog/snapshotswithpacker/), [Terraform](https://brandonrozek.com/blog/autodeployterraform/), and their [configuration](https://brandonrozek.com/blog/sharedpackerterraformconfig/) to show an entire example of how to deploy a docker-compose application. We will specifically look at deploying a game called [`minetest`](https://www.minetest.net/) on DigitalOcean, but these principles can be adjusted to deploy your application as well. The entire setup is [documented on Github](https://github.com/Brandon-Rozek/minetest-deploy).
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Auto Purge Old Docker Images"
|
||||
date: 2020-09-28T23:30:22-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Containers"]
|
||||
---
|
||||
|
||||
I use [Watchtower](https://github.com/containrrr/watchtower) to automatically update the docker images I use. After leaving it for several months, I've realized that I have been storing over 100GB of old docker images. I needed a way to automatically purge old images and [Systemd Timers](https://opensource.com/article/20/7/systemd-timers) is the solution.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Autostart Desktop Applications"
|
||||
date: 2020-11-29T13:45:28-05:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Linux"]
|
||||
---
|
||||
|
||||
The [freedesktop specification](https://specifications.freedesktop.org/autostart-spec/0.5/ar01s02.html) describes how to identify file types, launch applications, and other useful desktop functions. A useful spec I've found recently is for launching desktop applications when you log into your machine.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Bandwidth Limiting Applications"
|
||||
date: 2020-10-22T21:51:27-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Linux"]
|
||||
---
|
||||
|
||||
Whether it's web scraping or testing low latency connections, we want to be able to bandwidth limit certain applications. I've written about [rate limiting network interfaces](/blog/limitbandwidth/) before. This post focuses on the application level instead.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Bash Flags"
|
||||
date: 2019-08-06T16:55:47-04:00
|
||||
draft: false
|
||||
tags: [ "linux", "bash" ]
|
||||
tags: [ "Bash" ]
|
||||
---
|
||||
|
||||
I was creating a bash script and was looking around for a solution for parsing command line arguments. [This StackOverflow post](https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash) has a variety of different solutions available. I want to describe my favorite of these posts.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Partial Argument Parse and Passing in Bash"
|
||||
date: 2020-09-07T21:33:26-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Bash"]
|
||||
---
|
||||
|
||||
Let's say we want to augment an existing terminal command (like for example `wget`). We then want to be able to add or edit command line options. The rest of this post provides an example that hopefully you can use in your bash script.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Handling Background Processes in Bash"
|
||||
date: 2019-06-17T19:50:30-04:00
|
||||
draft: false
|
||||
tags: [ "linux", "bash" ]
|
||||
tags: [ "Bash" ]
|
||||
---
|
||||
|
||||
For multi-process applications, I want to be able to start it up using the `bash` command processor and be able to stop all the processes just by hitting `CTRL-C`.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "TCP/UDP with Bash"
|
||||
date: 2020-05-25T23:10:15-04:00
|
||||
draft: false
|
||||
tags: ["bash"]
|
||||
tags: ["Bash", "Networking"]
|
||||
---
|
||||
|
||||
The bash shell contains pseudo-devices to send packets with TCP/UDP. The pseudo files are formatted like the following:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Quick Bash: Validate IP Address"
|
||||
date: 2020-12-19T20:15:24-05:00
|
||||
draft: false
|
||||
tags: ["bash"]
|
||||
tags: ["Bash", "Networking"]
|
||||
---
|
||||
|
||||
`ipcalc` is a terminal tool that lets you validate an IP address. This proves useful to me as I have scripts that automate certain remote tasks given an IP address. Instead of trusting that an argument passed is a valid IP, why not check it?
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Bat: The user friendly cat"
|
||||
date: 2020-02-01T06:26:18-05:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Linux" ]
|
||||
---
|
||||
|
||||
`bat` is a more human pleasing replacement of `cat` with the following features:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Birthday Music"
|
||||
date: 2020-03-29T13:23:01-04:00
|
||||
draft: false
|
||||
tags: ["music"]
|
||||
tags: ["Music"]
|
||||
---
|
||||
|
||||
I was scrolling around in the [Free Music Archive](https://freemusicarchive.org/) and I stumbled upon the entries of their [The New Birthday Song Contest](https://www.freemusicarchive.org/music/Happy_Birthday_Song_Contest/The_New_Birthday_Song_Contest) back in 2012. One of my favorites is an entry by [Kevin Lax](http://www.kevinlax.com/) titled [Happy Birthday](https://files.freemusicarchive.org/storage-freemusicarchive-org/music/WFMU/Kevin_Lax/The_New_Birthday_Song_Contest/Kevin_Lax_-_Happy_Birthday.mp3) licensed under [Creative Commons Attributioni v3](https://creativecommons.org/licenses/by/3.0/).
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Checkinstall"
|
||||
date: 2020-04-26T12:11:30-04:00
|
||||
draft: false
|
||||
tags: ["packaging", "linux"]
|
||||
tags: ["Packaging", "Linux"]
|
||||
---
|
||||
|
||||
To create a quick and dirty Debian or RPM package, check out `checkinstall`! Be forewarned though that this isn't the recommended way of creating packages. This post on [AskUbuntu](https://askubuntu.com/questions/1138384/why-is-checkinstall-no-longer-being-maintained) gives good reasons for why. Though if it is between running a `make install` or running this utility, I would consider running `checkinstall` instead.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Chirp"
|
||||
date: 2019-09-27T22:46:52-04:00
|
||||
draft: false
|
||||
tags: [ "linux", "amateur radio" ]
|
||||
tags: [ "Linux", "Amateur Radio" ]
|
||||
---
|
||||
|
||||
In the land of Ham Radio, you can program your radio with a very popular open source software called `chirp`. For Ubuntu users to install it, it is recommended you use the PPA to keep up to date with radio software...
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Chroot and Virtual Filesystems"
|
||||
date: 2020-11-29T10:52:07-05:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Linux"]
|
||||
---
|
||||
|
||||
When running applications under a [`chroot`](https://en.wikipedia.org/wiki/Chroot) environment, it can be annoying when certain [virtual filesystems](https://opensource.com/article/19/3/virtual-filesystems-linux) are unavailable. Here are the commands to mount the most common ones:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Clearing Systemd Logs"
|
||||
date: 2021-02-21T16:08:51-05:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Linux"]
|
||||
---
|
||||
|
||||
Short post today. I wanted to clear out some disk space usage on one of my servers and noticed that the systemd logs were taking up a decent bit. Here are two options to clear out old logs.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
title: "Color Manipulation with Sass"
|
||||
date: 2019-05-21T23:10:06-04:00
|
||||
draft: false
|
||||
tags: ["Web", "CSS"]
|
||||
---
|
||||
|
||||
There are many times that I need to slightly mess with a color. The easiest way I found to do it is to use one of the many color functions in the program `Sass`. [Sass](https://sass-lang.com/) is a CSS preprocessor, meaning that it has it's own syntax and it compiles down to CSS. I remember using this before CSS variables became a thing and that was one of the main driving points of Sass.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Ensuring Docker Compose Startup with Systemd"
|
||||
date: 2019-12-16T20:57:36-05:00
|
||||
draft: false
|
||||
tags: [ "linux", "containers" ]
|
||||
tags: [ "Linux", "Containers" ]
|
||||
---
|
||||
|
||||
I've been having trouble getting some docker containers such as `nginx` to start automatically on bootup, even with the `restart: always` flag.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Quick Python: Copy Decorator"
|
||||
date: 2020-04-08T18:49:54-04:00
|
||||
draft: false
|
||||
tags: ["python"]
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
If you want to guarantee that your function doesn't modify any of the references and don't mind paying a price in memory consumption, here is a decorator you can easily add to your functions.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Copy to RAM Please"
|
||||
date: 2019-08-02T22:37:12-04:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Linux" ]
|
||||
---
|
||||
|
||||
I bought a 1U server recently, and I forgot to purchase a SSD to actually hold data. Since I couldn't hold my excitement to play with the server, I decided to load an operating system entirely into RAM and never turn it off for the meantime.
|
||||
|
|
|
@ -2,5 +2,6 @@
|
|||
title: "Group Theory in Coq"
|
||||
date: 2019-05-21T22:17:00-04:00
|
||||
draft: true
|
||||
tags: ["Math", "Formal Methods"]
|
||||
---
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "coredns"
|
||||
date: 2019-12-13T02:00:29-05:00
|
||||
draft: false
|
||||
tags: [ "linux", "network", "containers" ]
|
||||
tags: [ "Linux", "Networking", "Containers" ]
|
||||
---
|
||||
|
||||
Domain names are the easiest way for a reverse proxy to split up services in a homelab. Since I'm going full docker-compose in my homelab, I decided to use `coredns`.
|
||||
|
|
|
@ -3,6 +3,7 @@ title: "Cryptographic Games"
|
|||
date: 2020-01-13T21:35:09-05:00
|
||||
draft: false
|
||||
math: true
|
||||
tags: ["Security"]
|
||||
---
|
||||
|
||||
When analyzing cryptographic algorithms, we characterize the strength of the crypto-system by analyzing what happens in various crypto games. Below are a couple examples of crypto games used in literature.
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
title: "Capture The Flag"
|
||||
date: 2019-05-22T21:25:22-04:00
|
||||
draft: false
|
||||
tags: ["Security"]
|
||||
---
|
||||
|
||||
There is an event in Computer Security called "Capture The Flag". The purpose is to test the skills of security engineers and students through a variety of tasks in order to get a pass phrase which is called a flag. I noticed that Dr. Andrew Marshall wanted to set up this event at the University of Mary Washington for a while, so I and a few others decided to help make this a reality for him.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Custom Python REPL"
|
||||
date: 2019-10-27T23:43:12-04:00
|
||||
draft: false
|
||||
tags: [ "python" ]
|
||||
tags: [ "Python" ]
|
||||
---
|
||||
|
||||
Are you tired of importing the same libraries and setting up the same variables? Why not just create your own custom REPL? Now of course, we're not going to do it from scratch, but instead utilize what Python already gives us.
|
||||
|
|
|
@ -4,6 +4,7 @@ date: 2019-05-27T12:15:25-04:00
|
|||
draft: false
|
||||
aliases:
|
||||
- /blog/adding-fonts
|
||||
tags: ['Ubuntu', 'Linux']
|
||||
---
|
||||
|
||||
**Warning: This blog post partially applies to Ubuntu-based operating systems**
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Custom Executables"
|
||||
date: 2020-02-03T20:10:34-05:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Linux" ]
|
||||
---
|
||||
|
||||
As time goes on more and more scripts start to accumulate in my scripts folder. It turns out though, that there is a standard way of having local user scripts that get automatically added to your path. I started noticing this in Ubuntu when more and more projects started utilizing the `~/.local/bin` directory.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Custom Device Paths with UDEV rules"
|
||||
date: 2020-11-10T20:58:37-05:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Linux"]
|
||||
---
|
||||
|
||||
I wanted to create a rule so that when I plug in my rtlsdr, a symlink to the device will appear in `/dev/rtlsdr`.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Dbcli"
|
||||
date: 2020-02-29T18:45:51-05:00
|
||||
draft: false
|
||||
tags: ["python", "database"]
|
||||
tags: ["Python", "DB"]
|
||||
---
|
||||
|
||||
The [DBLCI](https://www.dbcli.com/) project creates command line database clients with auto-completion and syntax highlighting. These clients are often nicer to work with than the one a database comes with. In this post we're going to demo the [LiteCLI](https://litecli.com/) client.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Burning ISOs with dd/pv"
|
||||
date: 2020-01-20T10:23:20-05:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Linux" ]
|
||||
---
|
||||
|
||||
While there are nice graphical tools like [Etcher](https://www.balena.io/etcher/), what is almost always a constant is the tool `dd`. Therefore, for future reference I'll just paste the `dd` command I use to make ISO images.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Detect Python Version"
|
||||
date: 2021-03-15T18:09:38-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
I was working on a distribution recently where `python` was mapped to `python2`. It mixed me up for a bit since I was writing a script for `python3` but it ran partially under `python2`. To lower confusion in the future, I think it's a great idea to check the python version and exit if it isn't the version you expect.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Diceware"
|
||||
date: 2020-05-01T00:22:31-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Security"]
|
||||
---
|
||||
|
||||
Diceware is a passphrase generator proposed by [Arnold G. Reinhold](http://diceware.com/). Passphrases contain multiple words which are chosen according to a sequence of dice rolls. Let's look at a simplified example where we have binary dice (0 or 1) and we have a wordlist of two dice rolls.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Getting started with Digital Modes in Linux"
|
||||
date: 2019-09-04T09:52:21-04:00
|
||||
draft: false
|
||||
tags: [ "amateur radio" ]
|
||||
tags: [ "Amateur Radio" ]
|
||||
---
|
||||
|
||||
This blog post is going to describe what steps I took to be able to decode signals using digital modes. Hardware wise, you will either need a RTL-SDR receiver or a transceiver radio with a cable plugging into the computer's soundcard.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Disc Golf and PyMC3"
|
||||
date: 2020-03-28T22:08:19-04:00
|
||||
draft: false
|
||||
tags: ["python", "stats"]
|
||||
tags: ["Python", "Statistics"]
|
||||
math: true
|
||||
---
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Discovering Ham Radio"
|
||||
date: 2019-07-01T22:06:23-04:00
|
||||
draft: false
|
||||
tags: [ "amateur radio" ]
|
||||
tags: [ "Amateur Radio" ]
|
||||
---
|
||||
|
||||
I feel like Ham Radio has been hiding in the background as I move through life. I knew someone that kept a Ham radio in his car, Noah talks about it frequently on his [podcast](http://www.asknoahshow.com/), and it seemed like the next step after [playing with](https://github.com/brandon-rozek/radiotuner) [software defined radio](https://www.amazon.com/RTL-SDR-Blog-RTL2832U-Software-Telescopic/dp/B011HVUEME/ref=sr_1_3).
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Advanced Docker Image Construction with Bash"
|
||||
date: 2019-12-26T21:01:37-05:00
|
||||
draft: false
|
||||
tags: [ "linux", "containers", "bash" ]
|
||||
tags: [ "Linux", "Containers" ]
|
||||
---
|
||||
|
||||
On current versions of Docker, you can't mount volumes during image construction. This poses an issue for me as I don't want to replicate gigabytes of data already existing on my disk when it won't appear on the final build. Therefore, instead of building an image with a traditional Dockerfile, we're going to use a bash script on a running base image container and export the filesystem to create the image from.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Docker Macvlan Networks"
|
||||
date: 2020-05-26T01:01:43-04:00
|
||||
draft: false
|
||||
tags: ["containers"]
|
||||
tags: ["Containers"]
|
||||
---
|
||||
|
||||
It is useful to have some docker containers live in the same network as your host machine. We can accomplish this by creating a new MAC address for the container and using the `macvlan` driver. Here is example Docker Compose configuration
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Espeak"
|
||||
date: 2020-03-01T10:33:33-05:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Linux" ]
|
||||
---
|
||||
|
||||
`espeak` is a command line tool that lets you type in messages and have it said back to you.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Quick Python: Export Decorator"
|
||||
date: 2020-06-14T22:15:38-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
A great [StackOverflow post](https://stackoverflow.com/a/35710527) by [Aaron Hall](https://stackoverflow.com/users/541136/aaron-hall) that shows how you can create an `export` decorator in order to not have to specify all the names you want to expose via [`__all__`](https://brandonrozek.com/blog/pythonall/).
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "External Media Formats"
|
||||
date: 2019-05-22T22:03:38-04:00
|
||||
draft: false
|
||||
tags: [ "storage" ]
|
||||
tags: [ "Storage" ]
|
||||
---
|
||||
|
||||
I received an external SSD recently and I decided that it would be a great place to offload some of my backups. Before I got started, I became curious as to what filesystem to put on the SSD. After some research, it seems that if I want to be able to access it using Windows I am actually quite limited. In fact only three make sense:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Extract All the Things"
|
||||
date: 2020-06-14T22:23:37-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Linux"]
|
||||
---
|
||||
|
||||
[Sandra Henry-Stocker](https://www.networkworld.com/author/Sandra-Henry_Stocker/) from Network World wrote a [great post](https://www.networkworld.com/article/3244007/extracting-from-compressed-files-on-linux.html) on how to standardize extracting files on Linux. It's a shell script that works so well, that I placed it in my [`~/.local/bin` directory](https://brandonrozek.com/blog/customexec/) in order to call upon it at any time. Here's part of it, check out the post for more.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "V4l2 Webcam"
|
||||
date: 2020-05-25T23:49:08-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Audio-Video"]
|
||||
---
|
||||
|
||||
In Linux you can create a fake webcam by making use of the `v4l2loopback` kernel module.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Getting Started with FM Digital Modes"
|
||||
date: 2020-11-07T21:31:52-05:00
|
||||
draft: false
|
||||
tags: ["amateur radio"]
|
||||
tags: ["Amateur Radio"]
|
||||
---
|
||||
|
||||
In this post, I will describe a low cost way to get started with digital modes using FM. We will extend off my [previous post](/blog/digitalmodes). Even though some of these instructions are hardware specific, I hope that the general principles will apply to whatever hardware you're working with.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "FM Radio Tuner"
|
||||
date: 2019-05-21T22:08:54-04:00
|
||||
draft: true
|
||||
tags: [ "software defined radio" ]
|
||||
tags: [ "Amateur Radio" ]
|
||||
---
|
||||
|
||||
I recently bought a [RTL-SDR Receiver](https://www.amazon.com/RTL-SDR-Blog-RTL2832U-Software-Telescopic/dp/B011HVUEME/ref=sr_1_3) off of Amazon to get started with [Software Defined Radio](https://en.wikipedia.org/wiki/Software-defined_radio). To start off, I thought that it would be great if I can write a fm receiver.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Gevent"
|
||||
date: 2020-04-09T17:22:52-04:00
|
||||
draft: false
|
||||
tags: ["python", "concurrency"]
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
In my last post I spoke about [concurrency with asyncio](https://brandonrozek.com/blog/pyasyncio/). Now what if you don't want to concern yourself with async/await practices and just want to write synchronous code that executes I/O asynchronously? That's where the library [gevent](http://www.gevent.org/) comes in. It does this by modifying Python's standard library during runtime to call it's own asynchronous versions.
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
title: "Git Lens"
|
||||
date: 2019-10-27T23:38:45-04:00
|
||||
draft: false
|
||||
tags: ["Git"]
|
||||
---
|
||||
|
||||
Git Lens is a great Visual Studio code extension. It annotates the line your cursor is on with the commit it came from. Extreemely useful for determining the reason that line of code is written or even who wrote it.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Git Line Endings"
|
||||
date: 2020-05-09T11:01:21-04:00
|
||||
draft: false
|
||||
tags: ["git"]
|
||||
tags: ["Git"]
|
||||
---
|
||||
|
||||
if you have worked with a team that has a mix of Windows and Linux developers, you might have noticed pull requests where Git reports changes in a file that is not visible. One explanation is that the line endings might have changed.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "GPG Agent as SSH Agent"
|
||||
date: 2020-06-14T22:33:01-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["SSH", "GPG"]
|
||||
---
|
||||
|
||||
GPG Agent has the ability to act as a SSH Agent. This allows the use of Authentication keys on Smartcards to be used with SSH as well.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "GPG Card"
|
||||
date: 2020-06-05T17:39:51-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["GPG"]
|
||||
---
|
||||
|
||||
I have a Yubikey hardware token and one of my favorite use cases is the GPG support. This gives you the use cases of signing, encrypting, and authenticating all in one module. This post will describe quickly setting it up.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Groups Simplified"
|
||||
date: 2019-12-10T21:40:00-05:00
|
||||
draft: false
|
||||
tags: [ "abstract algebra" ]
|
||||
tags: [ "Math" ]
|
||||
math: true
|
||||
---
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "GStreamer"
|
||||
date: 2020-02-08T20:46:36-05:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Audio-Video" ]
|
||||
---
|
||||
|
||||
GStreamer is a pipeline based multimedia framework that goes from capture, processing, to a sink such as a X window or UDP sink.
|
||||
|
|
|
@ -3,6 +3,7 @@ title: "Real Analysis Sequences in Haskell"
|
|||
date: 2019-05-21T22:18:21-04:00
|
||||
draft: false
|
||||
math: true
|
||||
tags: ["Math", "Haskell"]
|
||||
---
|
||||
|
||||
In Real Analysis it is useful to look at terms of a sequence. One of the best ways I've found to do this is in believe it or not Haskell. This is mainly for these two reasons
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Quick CA for internal LAN"
|
||||
date: 2020-04-18T16:26:53-04:00
|
||||
draft: false
|
||||
tags: ["network"]
|
||||
tags: ["Networking"]
|
||||
---
|
||||
|
||||
Setting up trusted HTTPs inside a network without exposure to the Internet requires creating a Certificate Authority. The audience for this post is oriented for people setting up services in a small low threat model environment. Additional cautions should be applied when setting this up for a business, for example working off an intermediate CA.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Introduction to RF Power Amplifiers"
|
||||
date: 2021-04-10T13:01:00-04:00
|
||||
draft: false
|
||||
tags: ["amateur-radio"]
|
||||
tags: ["Amateur Radio"]
|
||||
math: true
|
||||
---
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "How to get list of IP Addresses in Python"
|
||||
date: 2020-09-07T20:03:24-04:00
|
||||
draft: false
|
||||
tags: ["python", "networking"]
|
||||
tags: ["Python", "Networking"]
|
||||
---
|
||||
|
||||
[Elemag](https://stackoverflow.com/users/2436840/elemag) on gave a quick solution on StackOverflow on [how to determine IP addresses with multiple NICS](https://stackoverflow.com/questions/270745/how-do-i-determine-all-of-my-ip-addresses-when-i-have-multiple-nics).
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Iteratively Read CSV"
|
||||
date: 2020-04-11T21:34:33-04:00
|
||||
draft: false
|
||||
tags: ["python"]
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
If you want to analyze a CSV dataset that is larger than the space available in RAM, then you can iteratively process each observation and store/calculate only what you need. There is a way to do this in standard Python as well as the popular library Pandas.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Jupyter with Pyenv"
|
||||
date: 2020-07-21T02:44:06-04:00
|
||||
draft: false
|
||||
tags: ["python"]
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
I enjoy both managing my Python versions with [pyenv](https://brandonrozek.com/blog/pyenv/) and the literate programming environment [Jupyter lab](https://jupyter.org/). Luckily we can easily manage Python virtual environments via iPython kernels.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Code in LaTex"
|
||||
date: 2020-04-30T23:46:05-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["LaTex"]
|
||||
---
|
||||
|
||||
I am currently working on a paper in LaTex and wanted to include some source code in it. I didn't want to use the default `verbatim` environment since I wanted to include syntax highlighting as well. Luckily, the `listings` package is an easy and extensible way to include source code inside LaTex documents. To speak first of its extensibility, here is a subset of the arguments that it can possibly take:
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Lean Theorem Prover Tactics"
|
||||
date: 2021-10-10T23:52:41-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Formal Methods"]
|
||||
math: false
|
||||
---
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Limit Bandwidth through Terminal"
|
||||
date: 2020-01-15T19:51:45-05:00
|
||||
draft: false
|
||||
tags: [ "linux", "network" ]
|
||||
tags: [ "Linux", "Networking" ]
|
||||
---
|
||||
|
||||
Have you ever wondered how an application or a system would operate under low bandwidth environments? Luckily `wondershaper` is a tool to help with just that!
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Linux Desktop Icons"
|
||||
date: 2019-06-03T21:05:37-04:00
|
||||
draft: false
|
||||
tags: [ "linux" ]
|
||||
tags: [ "Linux" ]
|
||||
---
|
||||
|
||||
I get asked a decent number of times how to add desktop icons on Linux. Luckily it's incredibly easy. [It's a `freedesktop` standard](http://standards.freedesktop.org/desktop-entry-spec/latest/).
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
title: "Live Documentation"
|
||||
date: 2019-09-27T23:07:19-04:00
|
||||
draft: false
|
||||
tags: ["Documentation"]
|
||||
---
|
||||
|
||||
This blog post is mostly for one of my teams in which I use Jupyter Notebooks for documentation. Perhaps after reading this post, you the reader can understand why it might be beneficial to use Jupyter Notebooks as a form of documentation.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "LXD on tmpfs"
|
||||
date: 2019-12-31T22:35:21-05:00
|
||||
draft: false
|
||||
tags: [ "linux", "storage", "containers" ]
|
||||
tags: [ "Linux", "Storage", "Containers" ]
|
||||
---
|
||||
|
||||
Container images are designed to be as small as possible. Wouldn't it be cool if we can hold entire containers in RAM? This post outlines how to accomplish this using LXD. It turns out that it is a lot easier to setup custom storage pools on LXD than with Docker.
|
||||
|
|
|
@ -6,6 +6,7 @@ author: rozek_admin
|
|||
layout: revision
|
||||
guid: https://brandonrozek.com/2017/03/2052-revision-v1/
|
||||
permalink: /2017/03/2052-revision-v1/
|
||||
tags: ["Statistics"]
|
||||
---
|
||||
![](https://brandonrozek.com/wp-content/uploads/2017/03/LifeExpectancyBoxplot.png)
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
title: "Manage Python Applications"
|
||||
date: 2020-10-11T19:21:10-04:00
|
||||
draft: false
|
||||
tags: []
|
||||
tags: ["Python"]
|
||||
---
|
||||
|
||||
I've recently discovered an application called [`pipx`](https://pipxproject.github.io/pipx/) which allows one to install and run Python applications in isolated environments. I think of it as a package similar to `apt`, but keeps the packages nice and isolated from one another.
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue