···55tags = ["gleam", "college"]
66---
7788-## *[]{.nf .nf-md-file_code}* Picking a language
88+## [ ]{.nf aria-hidden=true} Picking a language
991010Every semester my college assigns us a major project. This usually meant coming up
1111with a startup concept or designing a website in Figma, but we never got to
···2020all that work while carefully checking for every `exception` or `null` value.
2121*I wanted to try something different*
22222323-## *[]{.nf .nf-fa-star}* Enter Gleam
2323+## [ ]{.nf aria-hidden=true} Enter Gleam
24242525```gleam
2626pub fn main() -> Nil {
···3232ecosystem, I wanted to give this new language a try. It's syntax is simple,
3333the community is friendly and the language is incredibly small.
34343535-### *[]{.nf .nf-oct-goal}* Errors as values
3535+### [ ]{.nf aria-hidden=true} Errors as values
36363737One of the main reasons why I went with Gleam was their approach to *error handling*.
3838Errors in Gleam are treated as _values_ you can return from any function.
···5757}
5858```
59596060-### *[]{.nf .nf-fa-code_branch}* Pattern matching
6060+### [ ]{.nf aria-hidden=true} Pattern matching
61616262Being able to build custom error types pairs really well with
6363Gleam's *pattern matching*. You can define it at the top level scope and easily `switch`
···7474{.tip}
7575> The compiler even _warns_ you when you're missing one or more branches!
76767777-## *[]{.nf .nf-oct-server}* Handling HTTP Requests
7777+## [ ]{.nf aria-hidden=true} Handling HTTP Requests
78787979For the http server, I used [mist](https://hexdocs.pm/mist) paired
8080with [wisp](https://hexdocs.pm/wisp) for the web framework. Setting up the
···123123}
124124```
125125126126-## *[]{.nf .nf-fa-database}* Working with SQL
126126+## [ ]{.nf aria-hidden=true} Working with SQL
127127128128I'm really not a fan of using regular strings to store SQL queries,
129129there's no *autocomplete*, no *syntax highlighting*, no *linting* from my editor.
···190190}
191191```
192192193193-## *[]{.nf .nf-md-file_check}* Conclusion
193193+## [ ]{.nf aria-hidden=true} Conclusion
194194195195This was my first time building a backend project, and if it didn't work as expected,
196196the whole group would be affected. Thankfully we ran into zero runtime errors so far,
+17-17
priv/posts/uses.md
···55tags = []
66---
7788-## *[]{.nf .nf-fa-laptop}* FastFetch
88+## [ ]{.nf aria-hidden=true} FastFetch
991010-- *[]{.nf .nf-md-arch}* *OS*: Arch Linux x86_64
1111-- *[]{.nf .nf-linux-kde_plasma}* *DE*: KDE Plasma
1212-- *[]{.nf .nf-fa-ghost}* *Terminal*: Ghostty
1313-- *[]{.nf .nf-md-cat}* *Theme*: Catppuccin Mocha
1414-- *[]{.nf .nf-md-format_font}* *Terminal Font*: Maple Mono NF
1515-- *[]{.nf .nf-fa-fish}* *Shell*: Fish
1010+- [ ]{.nf aria-hidden=true} OS: Arch Linux x86_64
1111+- [ ]{.nf aria-hidden=true} DE: KDE Plasma
1212+- [ ]{.nf aria-hidden=true} Terminal: Ghostty
1313+- [ ]{.nf aria-hidden=true} Theme: Catppuccin Mocha
1414+- [ ]{.nf aria-hidden=true} Terminal Font: Maple Mono NF
1515+- [ ]{.nf aria-hidden=true} Shell: Fish
16161717-## *[]{.nf .nf-md-cube_outline}* Software
1717+## [ ]{.nf aria-hidden=true} Software
18181919-- *[]{.nf .nf-custom-neovim}* [Lazyvim](https://www.lazyvim.org/): Modal terminal
1919+- [ ]{.nf aria-hidden=true} [Lazyvim](https://www.lazyvim.org/): Modal terminal
2020 code editor.
2121-- *[]{.nf .nf-md-wrench}* [Just](https://just.systems/): A command runner similar
2121+- [ ]{.nf aria-hidden=true} [Just](https://just.systems/): A command runner similar
2222 to Taskfile.
2323-- *[]{.nf .nf-seti-notebook}* [Djot](https://djot.net/): Markup Language
2323+- [ ]{.nf aria-hidden=true} [Djot](https://djot.net/): Markup Language
2424 similar to markdown.
2525-- *[]{.nf .nf-fa-fly}* [Fly.io](https://fly.io/): For deploying containers.
2626-- *[]{.nf .nf-md-duck}* [Yazi](https://yazi-rs.github.io/): Terminal file manager,
2525+- [ ]{.nf aria-hidden=true} [Fly.io](https://fly.io/): For deploying containers.
2626+- [ ]{.nf aria-hidden=true} [Yazi](https://yazi-rs.github.io/): Terminal file manager,
2727 makes it easier to move around my project files.
2828-- *[]{.nf .nf-seti-shell}* [Direnv](https://direnv.net/): Load enviroment
2828+- [ ]{.nf aria-hidden=true} [Direnv](https://direnv.net/): Load enviroment
2929 variables when switching directories.
30303131### Programming Languages
32323333-- *[]{.nf .nf-fa-star}* [Gleam](https://gleam.run/): It's still my favorite
3333+- [ ]{.nf aria-hidden=true} [Gleam](https://gleam.run/): It's still my favorite
3434 programming language.
35353636### Version Control
37373838-- *[]{.nf .nf-md-sheep}* [Tangled](https://tangled.org/): I recently moved away
3838+- [ ]{.nf aria-hidden=true} [Tangled](https://tangled.org/): I recently moved away
3939 from Github, tangled feels like breath of fresh air.
4040-- *[]{.nf .nf-fa-square_twitter}* [Jujutsu](https://www.jj-vcs.dev): Feels more
4040+- [ ]{.nf aria-hidden=true} [Jujutsu](https://www.jj-vcs.dev): Feels more
4141 flexible and intuitive than Git, also tangled has support for it!