diff --git a/content/blog/accidentally-reinforcing-model-predictions-inaturalist-seek.md b/content/blog/accidentally-reinforcing-model-predictions-inaturalist-seek.md index 363f1d4..e5f25f0 100644 --- a/content/blog/accidentally-reinforcing-model-predictions-inaturalist-seek.md +++ b/content/blog/accidentally-reinforcing-model-predictions-inaturalist-seek.md @@ -1,10 +1,11 @@ --- -title: "Accidentally Reinforcing Model Predictions in iNaturalist with Seek" -date: 2022-10-04T11:38:03-04:00 -draft: false -tags: [] +date: 2022-10-04 11:38:03-04:00 +draft: false math: false 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. @@ -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. -Now go and take some pictures :) - - +Now go and take some pictures :) \ No newline at end of file diff --git a/content/blog/bmaptool-iso.md b/content/blog/bmaptool-iso.md index ba58211..cf87b3d 100644 --- a/content/blog/bmaptool-iso.md +++ b/content/blog/bmaptool-iso.md @@ -1,9 +1,11 @@ --- -title: "Bmaptool: A simpler way to copy ISOs" -date: 2023-01-18T11:08:20-05:00 +date: 2023-01-18 11:08:20-05:00 draft: false -tags: [] 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`. @@ -115,4 +117,4 @@ bmaptool: info: synchronizing '/dev/sdX' 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. \ No newline at end of file diff --git a/content/blog/corecursion-unfold-infinite-sequences.md b/content/blog/corecursion-unfold-infinite-sequences.md index 52cbd4f..1bc51ee 100644 --- a/content/blog/corecursion-unfold-infinite-sequences.md +++ b/content/blog/corecursion-unfold-infinite-sequences.md @@ -1,10 +1,13 @@ --- -title: "Corecursion, Unfold and Infinite Sequences" -date: 2022-11-12T10:45:04-05:00 +date: 2022-11-12 10:45:04-05:00 draft: false -tags: ["Scala", "Functional Programming"] math: 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. @@ -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://john.cs.olemiss.edu/~hcc/csci555/notes/FPS05/Laziness.html +https://john.cs.olemiss.edu/~hcc/csci555/notes/FPS05/Laziness.html \ No newline at end of file diff --git a/content/blog/deep-recursion.md b/content/blog/deep-recursion.md index b143452..3ac963f 100644 --- a/content/blog/deep-recursion.md +++ b/content/blog/deep-recursion.md @@ -1,10 +1,13 @@ --- -title: "Deep Recursion in Functional Programming" -date: 2022-11-11T14:45:17-05:00 +date: 2022-11-11 14:45:17-05:00 draft: false -tags: ["Scala", "Functional Programming"] math: false 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]`? @@ -115,5 +118,4 @@ deep_sum([[1], 2]) (0 + 1) + 2 1 + 2 3 -``` - +``` \ No newline at end of file diff --git a/content/blog/different-views-of-fold.md b/content/blog/different-views-of-fold.md index b7ff6cd..b44c58c 100644 --- a/content/blog/different-views-of-fold.md +++ b/content/blog/different-views-of-fold.md @@ -1,10 +1,13 @@ --- -title: "Different Views of Fold and Their Combinations" -date: 2022-11-09T17:45:26-05:00 +date: 2022-11-09 17:45:26-05:00 draft: false -tags: ["Scala", "Functional Programming"] math: 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: @@ -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! \ No newline at end of file diff --git a/content/blog/fold-not-only-reduces.md b/content/blog/fold-not-only-reduces.md index f5be044..a559e29 100644 --- a/content/blog/fold-not-only-reduces.md +++ b/content/blog/fold-not-only-reduces.md @@ -1,10 +1,14 @@ --- -title: "Fold Not Only Reduces" -date: 2022-11-09T15:15:10-05:00 +date: 2022-11-09 15:15:10-05:00 draft: false -tags: ["Functional Programming", "Scala", "Haskell"] math: false 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`. @@ -60,5 +64,4 @@ Haskell Example: l5 c n if n > 5 then c ++ [n] else c foldl l5 [] [5, 7, 1, 8, 9, 3] -- Returns [7,8,9] -``` - +``` \ No newline at end of file diff --git a/content/blog/identifying-plants-with-inaturalist.md b/content/blog/identifying-plants-with-inaturalist.md index 6a91f2f..7a949b1 100644 --- a/content/blog/identifying-plants-with-inaturalist.md +++ b/content/blog/identifying-plants-with-inaturalist.md @@ -1,10 +1,11 @@ --- -title: "Identifying Plants With iNaturalist" -date: 2022-09-29T20:08:30-04:00 -draft: false -tags: [] +date: 2022-09-29 20:08:30-04:00 +draft: false math: false 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)). @@ -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! -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! \ No newline at end of file diff --git a/content/blog/lightweight-gitc-docker-compose.md b/content/blog/lightweight-gitc-docker-compose.md index 4245185..91dbf0a 100644 --- a/content/blog/lightweight-gitc-docker-compose.md +++ b/content/blog/lightweight-gitc-docker-compose.md @@ -1,9 +1,12 @@ --- -title: "Deploying a Lightweight Git Server with CGit using Docker-Compose" -date: 2023-01-20T21:14:03-05:00 +date: 2023-01-20 21:14:03-05:00 draft: false -tags: ["Git"] 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. @@ -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://blog.stefan-koch.name/2020/02/16/installing-cgit-nginx-on-debian - https://bryanbrattlof.com/cgit-nginx-gitolite-a-personal-git-server/ -- https://matejamaric.com/blog/git-server/ +- https://matejamaric.com/blog/git-server/ \ No newline at end of file diff --git a/content/blog/memoization-scala.md b/content/blog/memoization-scala.md index 279a337..3788eec 100644 --- a/content/blog/memoization-scala.md +++ b/content/blog/memoization-scala.md @@ -1,10 +1,12 @@ --- -title: "Memoization in Scala" -date: 2022-11-12T11:49:51-05:00 +date: 2022-11-12 11:49:51-05:00 draft: false -tags: ["Scala"] math: false 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. @@ -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) -``` - - - +``` \ No newline at end of file diff --git a/content/blog/notes-beamer-latex.md b/content/blog/notes-beamer-latex.md index 111db3e..eb58b6d 100644 --- a/content/blog/notes-beamer-latex.md +++ b/content/blog/notes-beamer-latex.md @@ -1,10 +1,12 @@ --- -title: "Speaker Notes in LaTex Beamer" -date: 2022-10-25T21:43:38-04:00 +date: 2022-10-25 21:43:38-04:00 draft: false -tags: ["LaTex"] math: false 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. @@ -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 - 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. \ No newline at end of file diff --git a/content/blog/optionality-risk-aversion.md b/content/blog/optionality-risk-aversion.md index 7a0f0b8..414532f 100644 --- a/content/blog/optionality-risk-aversion.md +++ b/content/blog/optionality-risk-aversion.md @@ -1,10 +1,10 @@ --- -title: "Optionality and Risk in Decision Making" -date: 2022-10-12T01:10:42-04:00 +date: 2022-10-12 01:10:42-04:00 draft: false -tags: [] 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. @@ -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. -[^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. \ No newline at end of file diff --git a/content/blog/podman-nginx-tcpv6-http2-ready.md b/content/blog/podman-nginx-tcpv6-http2-ready.md index 291ecd1..02a9ea2 100644 --- a/content/blog/podman-nginx-tcpv6-http2-ready.md +++ b/content/blog/podman-nginx-tcpv6-http2-ready.md @@ -1,10 +1,13 @@ --- -title: "Getting Podman and Nginx TCPv6 and HTTP/2 Ready" -date: 2022-09-28T22:43:28-04:00 +date: 2022-09-28 22:43:28-04:00 draft: false -tags: ["Networking", "Containers"] math: false 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. @@ -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 ``` -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. \ No newline at end of file diff --git a/content/blog/trim-video-ffmpeg.md b/content/blog/trim-video-ffmpeg.md index d671108..e4d986a 100644 --- a/content/blog/trim-video-ffmpeg.md +++ b/content/blog/trim-video-ffmpeg.md @@ -1,10 +1,12 @@ --- -title: "How to trim a video using FFMPEG" -date: 2022-09-28T18:46:32-04:00 +date: 2022-09-28 18:46:32-04:00 draft: false -tags: ["Audio-Video"] math: false 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 diff --git a/content/blog/value-shift.md b/content/blog/value-shift.md index d97f503..64c0616 100644 --- a/content/blog/value-shift.md +++ b/content/blog/value-shift.md @@ -1,10 +1,10 @@ --- -title: "Explaining the Shift in Values" -date: 2022-10-11T20:19:01-04:00 -draft: false -tags: [] +date: 2022-10-11 20:19:01-04:00 +draft: false 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. @@ -156,4 +156,4 @@ research directions that come from this: - How can you approximate a reward from testimonial evidence? - 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. \ No newline at end of file diff --git a/content/blog/website-status-checking.md b/content/blog/website-status-checking.md index a6d824f..f934720 100644 --- a/content/blog/website-status-checking.md +++ b/content/blog/website-status-checking.md @@ -1,10 +1,11 @@ --- -title: "Website Status Checking" -date: 2022-09-28T16:05:23-04:00 -draft: false -tags: [] +date: 2022-09-28 16:05:23-04:00 +draft: false math: false 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. @@ -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. -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. \ No newline at end of file