Two memory issues from the last two weeks
Okay maybe they don't qualify as actual memory bugs, but they were annoying and had memory as a common theme. One of them by itself doesn't merit a blog post so I bundled them together.
Okay maybe they don't qualify as actual memory bugs, but they were annoying and had memory as a common theme. One of them by itself doesn't merit a blog post so I bundled them together.
I'm working on a side project that is written in Rust on the backend and the frontend. The frontend component is in Leptos. Our app is about 20kLOC in total, so it takes a little time.
I recently migrated a side project from DigitalOcean to some dedicated servers. I thought that I would offer some context and examples for why.
I have 4 children aged 4, 3, almost 2, and 19 weeks. Parents are increasingly isolated from each other socially so it's harder to compare tactics and strategies for caregiving. I want to share a run-down of how my wife and I care for our children and what has seemed to work and what has not.
I've been getting some questions from people about how to use Diesel and particularly diesel-async
for interacting with SQL databases in Rust. I thought I'd write up a quick post with some patterns and examples.
The example project on GitHub for this post is located at: https://github.com/bitemyapp/better-living-through-petroleum/tree/blog/diesel-async-in-anger
The blog/diesel-async-in-anger
Git tag is so you can see the version of the code that I'm using for this post.
I bought Luca Palmieri's book on the recommendation of a colleague and wanted to share my own thoughts on it as a production Rust user. I offer my thoughts as I go through the book linearly. I intentionally don't go out of my way to contextualize my commentary as this is not intended to be a substitute for Luca's excellent book. Also, it saves me time writing this blog post.
I was received into the Catholic Church on the Easter Vigil of 2019.
In the past, I talked about how to make your CI builds faster using Drone CI. I don't use DroneCI any more and haven't for a couple years now so I wanted to talk about what I use now.
I demonstrated how to make kilobyte/megabyte constants in Haskell and a Lobsters user asked how it worked. This is a bloggification of my reply to them explaining the trick.
I'd like to summarize some of the background to Haskell Programming from First Principles' development and finalization.
Alright so I've been uploading streamed videos of myself working on programming projects for awhile now. I occasionally get asked about my setup for this, so I thought I would explain the tools I use. This might be particularly valuable as I am primarily a Linux user where some of the kit for this can be kinda rough. Further, I am very picky about my tools and ergonomics so I didn't really want to make any sacrifices there in order to stream.
I think the first thing my mother taught me to cook was Kraft Mac-n-Cheese at age 9. Fortunately, I've been able to move past that since then. My repertoire is a bit limited but I like to think that by zeroing in on specific kinds of meals, I'm able to make them go a bit farther. A friend of mine asked how I do crockpot recipes and after stewing on it for awhile I thought I would write a post explaining my thought process.
Rejected title: You're not special
I saw this article comparing Ecto and ActiveRecord: https://www.dailydrip.com/blog/ecto-vs-activerecord.html
I thought I would track alongside that post and show what the equivalent code looks like if you're using the Persistent Haskell library.
Rejected title: Type Praxis
I frequently see people recommend that others use typed holes. I think people are more apt to recommend typed holes than the alternatives because it's a bespoke feature intended to enable discovering the type of a sub-expression more easily. Which is fair enough, except it doesn't really have a good use-case! I will demonstrate in this post why.
This article is by Steven Syrek. I'm reposting it here because I endorse what he's saying. I believe Steven brings a valuable perspective on the haskell book, reading groups, and education in general.
Steven posted this article on his Medium.
He has also written some extended notes on pedagogy tied to this post here.
As a break from usual, I thought I would review Zed Shaw's Learn Python the Hard Way. I've had several beginners to programming ask me what they should use to learn and Shaw's book frequently comes up. I've looked over his materials before when they were a free website but I wanted to see what the current published version was like.
I recently PR'd a Haskell entry to Hashrocket's websocket shootout. Haskell seemed to do a lot better than C++, Rust, Golang, Elixir, Erlang, NodeJS, Ruby MRI, and JRuby. Although the Haskell version has been since fixed, so I can no longer run the benchmark reliably on my machine, so any final results will have to come from Hashrocket running the unagi-chan variant.
Some people find it trickier to store UUID values in their database with Persistent or to use UUID values in a Yesod web application than is really necessary. Here I'll share some code from my work that demonstrates some patterns in applications that use Persistent or Yesod which should make it easier.
I'm a big fan of using build servers to continually build and test the code I'm working on. I'm also a bit of a latency nut, so I like our builds to be responsive. To that end, I migrating our company away from CircleCI and yielded a 10x improvement to build times for my trouble.
Someone wrote a blog post where they have trouble querying a web API in Haskell code. I walk through some examples for how to do so with increasing sophistication building up to some simple uses of lens
and lens-aeson
.