Syndicated to Medium

This commit is contained in:
Brandon Rozek 2023-01-25 13:20:29 -05:00
parent 17e7209a41
commit bfa4e52c0b
No known key found for this signature in database
GPG key ID: 26E457DA82C9F480
15 changed files with 95 additions and 75 deletions

View file

@ -1,10 +1,11 @@
--- ---
title: "Accidentally Reinforcing Model Predictions in iNaturalist with Seek" date: 2022-10-04 11:38:03-04:00
date: 2022-10-04T11:38:03-04:00 draft: false
draft: false
tags: []
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: 6ecb481df869
tags: []
title: Accidentally Reinforcing Model Predictions in iNaturalist with Seek
--- ---
I [previously wrote](/blog/identifying-plants-with-inaturalist/) about using Seek to identify organisms and then uploading them separately to iNaturalist. Though after some thought I believe that by only uploading photos that Seek has blessed as knowing, I may be reinforcing peculiar features of the dataset and hence the model. I [previously wrote](/blog/identifying-plants-with-inaturalist/) about using Seek to identify organisms and then uploading them separately to iNaturalist. Though after some thought I believe that by only uploading photos that Seek has blessed as knowing, I may be reinforcing peculiar features of the dataset and hence the model.
@ -21,6 +22,4 @@ Does this mean that uploading photos classified by Seek is redundant? No! Becaus
For the image itself, one recommendation I have is the following. Take the image that Seek recommends for the classification, and then take one or two different angles of the same organism. Within iNaturalist, you can upload multiple photos for a single organism. For the image itself, one recommendation I have is the following. Take the image that Seek recommends for the classification, and then take one or two different angles of the same organism. Within iNaturalist, you can upload multiple photos for a single organism.
Now go and take some pictures :) Now go and take some pictures :)

View file

@ -1,9 +1,11 @@
--- ---
title: "Bmaptool: A simpler way to copy ISOs" date: 2023-01-18 11:08:20-05:00
date: 2023-01-18T11:08:20-05:00
draft: false draft: false
tags: []
math: false math: false
medium_enabled: true
medium_post_id: b4f33babc3ac
tags: []
title: 'Bmaptool: A simpler way to copy ISOs'
--- ---
Bmaptool is a project created by Intel for creating and copying data using block maps. It's meant to be a simpler, faster, and more reliable tool than `dd`. Bmaptool is a project created by Intel for creating and copying data using block maps. It's meant to be a simpler, faster, and more reliable tool than `dd`.
@ -115,4 +117,4 @@ bmaptool: info: synchronizing '/dev/sdX'
bmaptool: info: copying time: 2m 49.2s, copying speed 21.6 MiB/sec bmaptool: info: copying time: 2m 49.2s, copying speed 21.6 MiB/sec
``` ```
Recall that the `bmap` generation isn't necessary, as you can pass in the `--nobmap` flag. Recall that the `bmap` generation isn't necessary, as you can pass in the `--nobmap` flag.

View file

@ -1,10 +1,13 @@
--- ---
title: "Corecursion, Unfold and Infinite Sequences" date: 2022-11-12 10:45:04-05:00
date: 2022-11-12T10:45:04-05:00
draft: false draft: false
tags: ["Scala", "Functional Programming"]
math: true math: true
medium_enabled: true medium_enabled: true
medium_post_id: edd1ef8ee314
tags:
- Scala
- Functional Programming
title: Corecursion, Unfold and Infinite Sequences
--- ---
Recursion takes a large problem and breaks it down until it reaches some base cases. One popular example, is the factorial function. Recursion takes a large problem and breaks it down until it reaches some base cases. One popular example, is the factorial function.
@ -188,4 +191,4 @@ If you want to learn more about unfold or see a different take, then the followi
https://blog.genuine.com/2020/07/scala-unfold/ https://blog.genuine.com/2020/07/scala-unfold/
https://john.cs.olemiss.edu/~hcc/csci555/notes/FPS05/Laziness.html https://john.cs.olemiss.edu/~hcc/csci555/notes/FPS05/Laziness.html

View file

@ -1,10 +1,13 @@
--- ---
title: "Deep Recursion in Functional Programming" date: 2022-11-11 14:45:17-05:00
date: 2022-11-11T14:45:17-05:00
draft: false draft: false
tags: ["Scala", "Functional Programming"]
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: 3515de0ab3a1
tags:
- Scala
- Functional Programming
title: Deep Recursion in Functional Programming
--- ---
In functional programming, we often look at a list in terms of its head (first-element) and tail (rest-of-list). This allows us to define operations on a list recursively. For example, how do we sum a list of integers such as `[1, 2, 3, 4]`? In functional programming, we often look at a list in terms of its head (first-element) and tail (rest-of-list). This allows us to define operations on a list recursively. For example, how do we sum a list of integers such as `[1, 2, 3, 4]`?
@ -115,5 +118,4 @@ deep_sum([[1], 2])
(0 + 1) + 2 (0 + 1) + 2
1 + 2 1 + 2
3 3
``` ```

View file

@ -1,10 +1,13 @@
--- ---
title: "Different Views of Fold and Their Combinations" date: 2022-11-09 17:45:26-05:00
date: 2022-11-09T17:45:26-05:00
draft: false draft: false
tags: ["Scala", "Functional Programming"]
math: true math: true
medium_enabled: true medium_enabled: true
medium_post_id: 13bdb8690a4c
tags:
- Scala
- Functional Programming
title: Different Views of Fold and Their Combinations
--- ---
Fold is a functional programming pattern that operates over some sequence with a binary operation and a starting value. There are two variants: Fold is a functional programming pattern that operates over some sequence with a binary operation and a starting value. There are two variants:
@ -150,4 +153,4 @@ l1.foldLeft(id_outer)((c1, n1) =>
[^1]: Thanks Clare for thinking of this example! [^1]: Thanks Clare for thinking of this example!

View file

@ -1,10 +1,14 @@
--- ---
title: "Fold Not Only Reduces" date: 2022-11-09 15:15:10-05:00
date: 2022-11-09T15:15:10-05:00
draft: false draft: false
tags: ["Functional Programming", "Scala", "Haskell"]
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: b419f7d25313
tags:
- Functional Programming
- Scala
- Haskell
title: Fold Not Only Reduces
--- ---
One misconception when first learning about fold is that it takes a list of elements of a certain type (`List[T]`) and "reduces" it to a single item of type `T`. One misconception when first learning about fold is that it takes a list of elements of a certain type (`List[T]`) and "reduces" it to a single item of type `T`.
@ -60,5 +64,4 @@ Haskell Example:
l5 c n if n > 5 then c ++ [n] else c l5 c n if n > 5 then c ++ [n] else c
foldl l5 [] [5, 7, 1, 8, 9, 3] foldl l5 [] [5, 7, 1, 8, 9, 3]
-- Returns [7,8,9] -- Returns [7,8,9]
``` ```

View file

@ -1,10 +1,11 @@
--- ---
title: "Identifying Plants With iNaturalist" date: 2022-09-29 20:08:30-04:00
date: 2022-09-29T20:08:30-04:00 draft: false
draft: false
tags: []
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: bc9fd04fff31
tags: []
title: Identifying Plants With iNaturalist
--- ---
Seek by iNaturalist ([android](https://play.google.com/store/apps/details?id=org.inaturalist.seek)) ([apple](https://apps.apple.com/us/app/seek-by-inaturalist/id1353224144)) is a great app for identifying plants and animals. It uses a computer vision model to provide the hierarchical classifications. In fact they run yearly challenges with their dataset on [Kaggle](https://www.kaggle.com/c/inaturalist-2021/overview) as well as publicly host their dataset on AWS ([instructions](https://github.com/inaturalist/inaturalist-open-data)). Seek by iNaturalist ([android](https://play.google.com/store/apps/details?id=org.inaturalist.seek)) ([apple](https://apps.apple.com/us/app/seek-by-inaturalist/id1353224144)) is a great app for identifying plants and animals. It uses a computer vision model to provide the hierarchical classifications. In fact they run yearly challenges with their dataset on [Kaggle](https://www.kaggle.com/c/inaturalist-2021/overview) as well as publicly host their dataset on AWS ([instructions](https://github.com/inaturalist/inaturalist-open-data)).
@ -37,4 +38,4 @@ When you click on "What did you see?", you'll see a new screen with the level of
Once you select the species you're ready to publish the observation! This will generate a unique URL for the observation. For example, my [white snakeroot observation](https://www.inaturalist.org/observations/135665018). If another community member agrees with your classification and the observation has enough supporting metadata, then it could become research grade! Once you select the species you're ready to publish the observation! This will generate a unique URL for the observation. For example, my [white snakeroot observation](https://www.inaturalist.org/observations/135665018). If another community member agrees with your classification and the observation has enough supporting metadata, then it could become research grade!
Research grade observations gets used by scientists for research which may also help improve the image classification algorithm for all. Happy identifying! Research grade observations gets used by scientists for research which may also help improve the image classification algorithm for all. Happy identifying!

View file

@ -1,9 +1,12 @@
--- ---
title: "Deploying a Lightweight Git Server with CGit using Docker-Compose" date: 2023-01-20 21:14:03-05:00
date: 2023-01-20T21:14:03-05:00
draft: false draft: false
tags: ["Git"]
math: false math: false
medium_enabled: true
medium_post_id: b86160f97df9
tags:
- Git
title: Deploying a Lightweight Git Server with CGit using Docker-Compose
--- ---
In this post, I'll talk about how we can setup CGit within a docker-compose setup. We'll be using the [ClearLinux CGit](https://hub.docker.com/r/clearlinux/cgit) container. In this post, I'll talk about how we can setup CGit within a docker-compose setup. We'll be using the [ClearLinux CGit](https://hub.docker.com/r/clearlinux/cgit) container.
@ -197,4 +200,4 @@ These references talked about setting up cgit outside of docker, but they helped
- https://www.yaroslavps.com/weblog/minimal-git-server/ - https://www.yaroslavps.com/weblog/minimal-git-server/
- https://blog.stefan-koch.name/2020/02/16/installing-cgit-nginx-on-debian - https://blog.stefan-koch.name/2020/02/16/installing-cgit-nginx-on-debian
- https://bryanbrattlof.com/cgit-nginx-gitolite-a-personal-git-server/ - https://bryanbrattlof.com/cgit-nginx-gitolite-a-personal-git-server/
- https://matejamaric.com/blog/git-server/ - https://matejamaric.com/blog/git-server/

View file

@ -1,10 +1,12 @@
--- ---
title: "Memoization in Scala" date: 2022-11-12 11:49:51-05:00
date: 2022-11-12T11:49:51-05:00
draft: false draft: false
tags: ["Scala"]
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: 2558d6abd9b8
tags:
- Scala
title: Memoization in Scala
--- ---
In a [recent post](/blog/corecursion-unfold-infinite-sequences/), I talked about how corecursion is a great solution for removing redundant calculations. However if we're sticking to a recursive approach, one way we can reduce redundancies is to use memoization. The idea here is that we save prior computations in some data structure and refer to them if requested. In a [recent post](/blog/corecursion-unfold-infinite-sequences/), I talked about how corecursion is a great solution for removing redundant calculations. However if we're sticking to a recursive approach, one way we can reduce redundancies is to use memoization. The idea here is that we save prior computations in some data structure and refer to them if requested.
@ -34,7 +36,4 @@ Calling `fib(5)` returns `5`. However, we can also see the saved computations by
``` ```
HashMap(0 -> 0, 1 -> 1, 2 -> 1, 3 -> 2, 4 -> 3, 5 -> 5) HashMap(0 -> 0, 1 -> 1, 2 -> 1, 3 -> 2, 4 -> 3, 5 -> 5)
``` ```

View file

@ -1,10 +1,12 @@
--- ---
title: "Speaker Notes in LaTex Beamer" date: 2022-10-25 21:43:38-04:00
date: 2022-10-25T21:43:38-04:00
draft: false draft: false
tags: ["LaTex"]
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: 9643b7743f0c
tags:
- LaTex
title: Speaker Notes in LaTex Beamer
--- ---
I often struggle with deciding how much content to put on my slides. Personally, I feel that my slides should be self-contained so that others can review them afterwards. This was especially true when I held [recitations](/ta/spring2022/csci2600/) as a TA. I often struggle with deciding how much content to put on my slides. Personally, I feel that my slides should be self-contained so that others can review them afterwards. This was especially true when I held [recitations](/ta/spring2022/csci2600/) as a TA.
@ -48,4 +50,4 @@ With this, I am thinking of distributing slides that I'm presenting more ahead o
- Keep answers away from the live audience, with an easy way to distribute aftewards - Keep answers away from the live audience, with an easy way to distribute aftewards
- Not forget any points you want to address - Not forget any points you want to address
If you want to learn more features within LaTex beamer, I suggest checking out their [package documentation](http://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf). It's surprisingly written accessibly, with many presentation tips within. If you want to learn more features within LaTex beamer, I suggest checking out their [package documentation](http://mirrors.ctan.org/macros/latex/contrib/beamer/doc/beameruserguide.pdf). It's surprisingly written accessibly, with many presentation tips within.

View file

@ -1,10 +1,10 @@
--- ---
title: "Optionality and Risk in Decision Making" date: 2022-10-12 01:10:42-04:00
date: 2022-10-12T01:10:42-04:00
draft: false draft: false
tags: []
math: true math: true
medium_enabled: true medium_enabled: false
tags: []
title: Optionality and Risk in Decision Making
--- ---
One technique for making decisions in uncertain situations is to look for *optionality*. This is one of the tips given in Russ Robert's book [Wild problems: a guide to the decisions that define us](https://www.worldcat.org/title/1321820629). Let's start off with the two definitions listed on [Wiktionary](https://en.wiktionary.org/wiki/optionality) at my time of writing. One technique for making decisions in uncertain situations is to look for *optionality*. This is one of the tips given in Russ Robert's book [Wild problems: a guide to the decisions that define us](https://www.worldcat.org/title/1321820629). Let's start off with the two definitions listed on [Wiktionary](https://en.wiktionary.org/wiki/optionality) at my time of writing.
@ -73,7 +73,4 @@ Acknowledgements: Thanks to Clare for helping me understand the definitions from
[^1]: There are other ways we can define obligation. In particular, we can take into account each individual effect as opposed to it collectively. Though we'll leave that for another time. [^1]: There are other ways we can define obligation. In particular, we can take into account each individual effect as opposed to it collectively. Though we'll leave that for another time.
[^2]: I do not discuss minimizing negative consequences in this post as it has little connection to the concept of optionality. [^2]: I do not discuss minimizing negative consequences in this post as it has little connection to the concept of optionality.

View file

@ -1,10 +1,13 @@
--- ---
title: "Getting Podman and Nginx TCPv6 and HTTP/2 Ready" date: 2022-09-28 22:43:28-04:00
date: 2022-09-28T22:43:28-04:00
draft: false draft: false
tags: ["Networking", "Containers"]
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: ac419c65c080
tags:
- Networking
- Containers
title: Getting Podman and Nginx TCPv6 and HTTP/2 Ready
--- ---
When checking the status of my website, I discovered that my website wasn't accessible over IPV6 and didn't have HTTP/2 enabled! This post will go over how I remedied that with my current setup of Nginx running within a podman container. Do note, TCPv6 will only work if you are provided a IPv6 address from your server provider. When checking the status of my website, I discovered that my website wasn't accessible over IPV6 and didn't have HTTP/2 enabled! This post will go over how I remedied that with my current setup of Nginx running within a podman container. Do note, TCPv6 will only work if you are provided a IPv6 address from your server provider.
@ -181,4 +184,4 @@ tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 172/nginx
tcp 0 0 :::443 :::* LISTEN 172/nginx tcp 0 0 :::443 :::* LISTEN 172/nginx
``` ```
There you have it! Now your website should be TCPv6 and HTTP/2 compatible. Feel free to get in touch if you have any questions. There you have it! Now your website should be TCPv6 and HTTP/2 compatible. Feel free to get in touch if you have any questions.

View file

@ -1,10 +1,12 @@
--- ---
title: "How to trim a video using FFMPEG" date: 2022-09-28 18:46:32-04:00
date: 2022-09-28T18:46:32-04:00
draft: false draft: false
tags: ["Audio-Video"]
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: dd83a32af440
tags:
- Audio-Video
title: How to trim a video using FFMPEG
--- ---
Recently I came across a video that I wanted to split up into multiple files. Given my love for `ffmpeg` the video/audio swiss army knife, I knew there had to be a solution for cutting a video on the terminal. Luckily on [AskUbuntu](https://askubuntu.com/a/56044), Luis Alvarado provides a command snippet. This post will go into slightly more detail on the flags used in the command Recently I came across a video that I wanted to split up into multiple files. Given my love for `ffmpeg` the video/audio swiss army knife, I knew there had to be a solution for cutting a video on the terminal. Luckily on [AskUbuntu](https://askubuntu.com/a/56044), Luis Alvarado provides a command snippet. This post will go into slightly more detail on the flags used in the command

View file

@ -1,10 +1,10 @@
--- ---
title: "Explaining the Shift in Values" date: 2022-10-11 20:19:01-04:00
date: 2022-10-11T20:19:01-04:00 draft: false
draft: false
tags: []
math: true math: true
medium_enabled: true medium_enabled: false
tags: []
title: Explaining the Shift in Values
--- ---
In the book [Wild problems : a guide to the decisions that define us](https://www.worldcat.org/title/1321820629), Russ Roberts analyzes decision making on difficult life problems. These types of problems don't have straightforward or measurable goals, and there's no set procedure for success. Examples of these problems are choosing whether to marry, have kids, or switch jobs. In the book [Wild problems : a guide to the decisions that define us](https://www.worldcat.org/title/1321820629), Russ Roberts analyzes decision making on difficult life problems. These types of problems don't have straightforward or measurable goals, and there's no set procedure for success. Examples of these problems are choosing whether to marry, have kids, or switch jobs.
@ -156,4 +156,4 @@ research directions that come from this:
- How can you approximate a reward from testimonial evidence? - How can you approximate a reward from testimonial evidence?
- Techniques for performing state reduction and modeling transitions via these reductions. - Techniques for performing state reduction and modeling transitions via these reductions.
Thank you to both Clare and James for helping me brainstorm the ideas in this post. Thank you to both Clare and James for helping me brainstorm the ideas in this post.

View file

@ -1,10 +1,11 @@
--- ---
title: "Website Status Checking" date: 2022-09-28 16:05:23-04:00
date: 2022-09-28T16:05:23-04:00 draft: false
draft: false
tags: []
math: false math: false
medium_enabled: true medium_enabled: true
medium_post_id: 4655285d688f
tags: []
title: Website Status Checking
--- ---
How do I know when my website goes up or down? Recently, I started using a service from [updown.io](https://updown.io) which gives me a status page and notifies me when it goes down. How do I know when my website goes up or down? Recently, I started using a service from [updown.io](https://updown.io) which gives me a status page and notifies me when it goes down.
@ -31,4 +32,4 @@ In addition to a simple UP/DOWN metric. The service checks for TCPv4, TCPv6, and
Also, the service is quite affordable. To check one website every 30 minutes amounts to 2 cents a month. If you want to check it every 15 seconds, then it goes up to a little over $2/month. Also, the service is quite affordable. To check one website every 30 minutes amounts to 2 cents a month. If you want to check it every 15 seconds, then it goes up to a little over $2/month.
Feel free to get in touch with how you monitor your personal website. I'm curious to see how other people are approaching it. Feel free to get in touch with how you monitor your personal website. I'm curious to see how other people are approaching it.