chore: Updated info and image links d99a4686
stevedylandev · 2025-06-24 20:49 11 file(s) · +73 −92
src/content/post/3d-nft-resume.mdx +1 −1
35 35
As said in Justin’s tutorial, you can use a free Pinata account to do all of this, but to truly harness the full user experience of this app, using a paid account with a Dedicated Gateway will make this app much faster than if you used a public gateway or depended on external sources. Here is an example of the application through Steve’s Dedicated Gateway:
36 36
37 37
<iframe
38 -
	src="https://stevedsimkins.mypinata.cloud/ipfs/QmdKYQpczE7giv15Yx2tkk1pkbRe862eaLhTR5e7FjhJ8F/index.html"
38 +
	src="https://files.stevedylan.dev/QmdKYQpczE7giv15Yx2tkk1pkbRe862eaLhTR5e7FjhJ8F.html"
39 39
	frameborder="0"
40 40
	height="500px"
41 41
	width="100%"
src/content/post/a-terminal-based-workflow.mdx +11 −11
8 8
import { Image } from "astro:assets";
9 9
10 10
<Image
11 -
	src="https://dweb.mypinata.cloud/ipfs/Qma8MhvupyHTDmBGiH3yz37acPdqu966YF7rrSk9QDXx6B"
11 +
	src="https://files.stevedylan.dev/Qma8MhvupyHTDmBGiH3yz37acPdqu966YF7rrSk9QDXx6B.png"
12 12
	alt="header image"
13 13
	height={600}
14 14
	width={800}
31 31
	loop
32 32
	playsinline
33 33
	className="aspect-video w-full"
34 -
	src="https://dweb.mypinata.cloud/ipfs/Qmeb4797YyF2FhwTdoPuuQi4LXgdXaGoGcTRqU85JAEv9M?filename=video.mp4"
34 +
	src="https://files.stevedylan.dev/Qmeb4797YyF2FhwTdoPuuQi4LXgdXaGoGcTRqU85JAEv9M.mp4"
35 35
></video>
36 36
37 37
Additionally I can create multiple panes and windows inside a session. I generally create a session per project, and each session might have two windows (e.g. one for a client side repo, the other for a server side repo). This both helps keep projects unified yet organized.
42 42
	loop
43 43
	playsinline
44 44
	className="aspect-video w-full"
45 -
	src="https://dweb.mypinata.cloud/ipfs/QmWHHCV9YVecdDVcbKXLdfcudW5XBiTt4EfLagP9cowJjC"
45 +
	src="https://files.stevedylan.dev/QmWHHCV9YVecdDVcbKXLdfcudW5XBiTt4EfLagP9cowJjC.mp4"
46 46
></video>
47 47
48 48
Where it gets really good is having a solid session manager, and that’s where [Josh Medeski’s Sesh](https://github.com/joshmedeski/sesh) comes into play. With this I can easily change between different sessions, and thus easily switch between different projects. This has become essential to my workflow as I often might be working on 2-3 different projects at a time, all with multiple windows and panes each. Each one can be unique to what I’m working on as well.
53 53
	loop
54 54
	playsinline
55 55
	className="aspect-video w-full"
56 -
	src="https://dweb.mypinata.cloud/ipfs/Qmd3SNkNTms4JQCtv4wmFUKS679A2zsrG7e58szLWS3pmM"
56 +
	src="https://files.stevedylan.dev/Qmd3SNkNTms4JQCtv4wmFUKS679A2zsrG7e58szLWS3pmM.mp4"
57 57
></video>
58 58
59 59
## Neovim Plugins
68 68
	loop
69 69
	playsinline
70 70
	className="aspect-video w-full"
71 -
	src="https://dweb.mypinata.cloud/ipfs/QmTRit4eCktJ87NjxdErZ3csXimNq43G8SueQP77mvtvkE"
71 +
	src="https://files.stevedylan.dev/QmTRit4eCktJ87NjxdErZ3csXimNq43G8SueQP77mvtvkE.mp4"
72 72
></video>
73 73
74 74
Another one I use fairly often is [Neo-tree](https://github.com/nvim-neo-tree/neo-tree.nvim). I know some people are anti-file-tree but I personally really enjoy it. It is setup to appear in the middle of my screen, and I use it to help navigate where a file might be, edit a file name, add new files, etc. Since the majority of my work is in JavaScript / Next.js, it’s helpful to distinguish which `page.tsx` or `route.ts` file I’m currently working on.
79 79
	loop
80 80
	playsinline
81 81
	className="aspect-video w-full"
82 -
	src="https://dweb.mypinata.cloud/ipfs/QmVSc4amHjygkTcd4Rrx62DaYWMXSYpJD8fBhSinGyChyp"
82 +
	src="https://files.stevedylan.dev/QmVSc4amHjygkTcd4Rrx62DaYWMXSYpJD8fBhSinGyChyp.mp4"
83 83
></video>
84 84
85 85
Having an LSP (Language Server Protocol) and completions setup is also essential for a good workflow in Neovim. This is what provides hints, completions, diagnostics, or even docs for the language you’re working in. Cannot state how helpful these are when working in a typed language like Typescript or Go. I would also say it’s beneficial to learn how to set it up manually, and [Typecraft's video](https://youtu.be/S-xzYgTLVJE?si=xG7c-Yx0fkxRHwx0) does a great job showing how it’s done.
90 90
	loop
91 91
	playsinline
92 92
	className="aspect-video w-full"
93 -
	src="https://dweb.mypinata.cloud/ipfs/QmdQSzMuPiDEcFhWLMLsabLLsHD4qG74Qh1WtvQ8SnSa1B"
93 +
	src="https://files.stevedylan.dev/QmdQSzMuPiDEcFhWLMLsabLLsHD4qG74Qh1WtvQ8SnSa1B.mp4"
94 94
></video>
95 95
96 96
These two are on the smaller side but are still really great to use. The first is [Tmux Navigator.](https://github.com/christoomey/vim-tmux-navigator) This allows you to navigate between an open Neovim pane and a Tmux pane without using a Tmux prefix. For example, instead of navigating with `Ctrl + b - l` I can just use `Ctrl - l`. It’s the same mapping for switching between Neovim panes and Tmux panes, which is a huge quality of life improvement. The other small mention is [blame.nvim.](https://github.com/FabijanZulj/blame.nvim) With this tool I can hit `Space-b` to see line by line who changed what when. This is great when working with other people on a project and you’re trying to find out what changed when. There’s also the LazyGit plugin for Neovim, but it deserves its own section.
105 105
	loop
106 106
	playsinline
107 107
	className="aspect-video w-full"
108 -
	src="https://dweb.mypinata.cloud/ipfs/QmZou8CVipfiFxYkYYm3H6BAzKk1ks6mkosTULxk7GgFUb"
108 +
	src="https://files.stevedylan.dev/QmZou8CVipfiFxYkYYm3H6BAzKk1ks6mkosTULxk7GgFUb.mp4"
109 109
></video>
110 110
111 111
## Bringing it All Together
118 118
	loop
119 119
	playsinline
120 120
	className="aspect-video w-full"
121 -
	src="https://dweb.mypinata.cloud/ipfs/QmUW8QWY1ug3uHzLWtc6F9pFHAurgbjG3qmnc9o6whZDoZ"
121 +
	src="https://files.stevedylan.dev/QmUW8QWY1ug3uHzLWtc6F9pFHAurgbjG3qmnc9o6whZDoZ.mp4"
122 122
></video>
123 123
124 124
If the project has multiple repos like a server/client combo or I’m referencing another repo, I’ll create a new window with the same pane setup. As I work and make changes, I’ll open LazyGit in one of my Tmux panes and run `ctrl-b + z` to make it full screen. From there I’ll add my commits and push them up, or make a branch that I can merge main into if I’m already working on a shared project.
129 129
	loop
130 130
	playsinline
131 131
	className="aspect-video w-full"
132 -
	src="https://dweb.mypinata.cloud/ipfs/QmdrPRHBkMNCvcbCEaQp9PeUKQsuCHKHgEecBMG6tRnLyB"
132 +
	src="https://files.stevedylan.dev/QmdrPRHBkMNCvcbCEaQp9PeUKQsuCHKHgEecBMG6tRnLyB.mp4"
133 133
></video>
134 134
135 135
Back in my main Next.js window I might open another split pane below the right one so while the dev server is running I can make test API calls from the terminal with httpie, maybe pipe the results into jq then into a file.
140 140
	loop
141 141
	playsinline
142 142
	className="aspect-video w-full"
143 -
	src="https://dweb.mypinata.cloud/ipfs/Qmc1Lfd6KmrWSU1kTtrnT59nyPx1QpTvhEzPY9taagWCuv"
143 +
	src="https://files.stevedylan.dev/Qmc1Lfd6KmrWSU1kTtrnT59nyPx1QpTvhEzPY9taagWCuv.mp4"
144 144
></video>
145 145
146 146
This is the flexibility of a terminal based workflow that is hard to replicate on something like VSCode or Zed. It’s not even an editor issue in my opinion: it’s a development environment issue. Do code editors like VSCode take out out of that environment? Sorta, not totally, but it’s definitely not the same.
src/content/post/base-may-not-be-for-me.mdx +4 −4
3 3
publishDate: "24 Apr 2025"
4 4
description: "My history, experience, concerns, and hope for Base as a viable L2 solution"
5 5
tags: ["base", "blockchain", "ethereum"]
6 -
ogImage: "https://cdn.stevedylan.dev/ipfs/bafkreigz4xll63ejcmn7746hyhruik6uxneglaohbxzpcqorhmm5tvn6qu"
6 +
ogImage: "https://files.stevedylan.dev/bafkreigz4xll63ejcmn7746hyhruik6uxneglaohbxzpcqorhmm5tvn6qu.jpg"
7 7
---
8 8
9 -
![cover](https://cdn.stevedylan.dev/ipfs/bafkreigz4xll63ejcmn7746hyhruik6uxneglaohbxzpcqorhmm5tvn6qu)
9 +
![cover](https://files.stevedylan.dev/bafkreigz4xll63ejcmn7746hyhruik6uxneglaohbxzpcqorhmm5tvn6qu.jpg)
10 10
11 11
A couple of weeks ago I watched [Vitalik: An Ethereum Story](https://ethereumfilm.xyz) with my wife, and if you haven't watched it yet I would highly recommend it. The creators did such a good job documenting the life of Ethereum, its creator Vitalik, and the core principles and values surrounding it. A wave of nostalgia took over me as I recalled the feelings I experienced when I watched my first smart contract go live on Rinkeby; a simple and very inefficient store of "posts" like a guestbook. When I saw messages recorded onchain show up on my humble website, I suddenly realized why blockchain and more specifically Ethereum could change everything. It's why I decided to dive into this field of work and why I'm still passionate about it today.
12 12
24 24
25 25
The push of coins is an attempt to rebrand tokens to be just ordinary content. The idea is that instead of posting a photo on socials, turn it into a coin. Every coin can have a photo associated with it, so why not? Instead of "liking" a post you can buy a certain amount. Zora was the first platform making this push as they pivoted from standard NFT posts to coins. I'm not here to convince you whether coins are good for the space or not. Experimentation is part of building onchain and it's how we move forward. The true controversy in my opinion is how Base has been pushing this narrative.
26 26
27 -
![base coins](https://cdn.stevedylan.dev/ipfs/bafkreia2vm74vv4pzdtxjxgwvztt2eug4ukelhr3lrs6jzywk7jtnudena?filename=image.png)
27 +
![base coins](https://files.stevedylan.dev/image.png)
28 28
29 29
Protocols and tools are built to solve problems. In the case of Ethereum it created a sandbox where the possibilities are endless. Of course Vitalik and the creators had motives for building it, primarily to help democratize internet infrastructure and promote individual autonomy. Outside of some general principles that they believed in, the team was pretty hands off. It was up to the people to decide what they would build. They built things like decentralized governance, tokens, loans, etc. People saw the ways our internet society was broken and came up with solutions only possible because of blockchain and Ethereum. The Ethereum foundation or it's founders don't push people to use it in a certain way, they just provide the tools and let the builders build.
30 30
31 -
![base image](https://cdn.stevedylan.dev/ipfs/bafkreifip5jfzeaha4xpankxyhllsixijxz3vvvxjxaahxeuz4lrrpyqpq)
31 +
![base image](https://files.stevedylan.dev/bafkreifip5jfzeaha4xpankxyhllsixijxz3vvvxjxaahxeuz4lrrpyqpq.jpg)
32 32
33 33
My issue with Base and the coin narrative is that it's pushing a particular agenda and use-case of blockchain. In their opinion it’s how they'll solve the issues they see in the web2 creator economy. That's a big opinion to carry and push upon your followers, and I would argue that it violates the relationship between a blockchain organization and its users. Coins are an interesting experiment, but they're also being pushed by a few individual companies, some that so happen to be financially invested by Coinbase. I want to assume the best of all parties involved, but when it comes to money, capital, and how some people can get absolutely wiped by tokens, the hair on my neck stands up. Vitalik once wrote about what he sees as the values of Ethereum but also the blockchain community at large, and he included the following:
34 34
src/content/post/building-a-guestbook-with-pglite-clerk-and-pinata.mdx +2 −2
3 3
publishDate: "24 Sep 2024"
4 4
description: "A quick walkthough of how I built a guestbook for my website"
5 5
tags: ["programming", "developer tools", "pinata"]
6 -
ogImage: "https://dweb.mypinata.cloud/ipfs/QmU4XNzvRej9soBFdShhSb3KiTpN45hziDCbzdc5hBW1Nk?img-format=webp"
6 +
ogImage: "https://files.stevedylan.dev/QmU4XNzvRej9soBFdShhSb3KiTpN45hziDCbzdc5hBW1Nk.webp"
7 7
---
8 8
9 9
import { Image } from "astro:assets";
10 10
11 11
<Image
12 -
	src="https://dweb.mypinata.cloud/ipfs/QmU4XNzvRej9soBFdShhSb3KiTpN45hziDCbzdc5hBW1Nk?img-format=webp"
12 +
	src="https://files.stevedylan.dev/QmU4XNzvRej9soBFdShhSb3KiTpN45hziDCbzdc5hBW1Nk.webp"
13 13
	alt="header image"
14 14
	height={1080}
15 15
	width={1920}
src/content/post/how-sp1-precompiles-revolutionized-zkvm-performance.mdx +2 −2
3 3
publishDate: "27 Oct 2024"
4 4
description: "Learn about Succinct, SP1, and how the innovation of Precompiles changed the zkVM space"
5 5
tags: ["zk", "succinct", "precompiles", "zkVM"]
6 -
ogImage: "https://dweb.mypinata.cloud/files/bafybeicrnbi7yt5wcnaiielxhvb5fb7mocl7k2ub43e3nqwlnfev4zekkm?img-format=webp"
6 +
ogImage: "https://files.stevedylan.dev/bafybeicrnbi7yt5wcnaiielxhvb5fb7mocl7k2ub43e3nqwlnfev4zekkm.webp"
7 7
hidden: true
8 8
---
9 9
10 10
import { Image } from "astro:assets";
11 11
12 12
<Image
13 -
	src="https://dweb.mypinata.cloud/files/bafybeicrnbi7yt5wcnaiielxhvb5fb7mocl7k2ub43e3nqwlnfev4zekkm?img-format=webp"
13 +
	src="https://files.stevedylan.dev/bafybeicrnbi7yt5wcnaiielxhvb5fb7mocl7k2ub43e3nqwlnfev4zekkm.webp"
14 14
	alt="header image"
15 15
	height={1080}
16 16
	width={1920}
src/content/post/leaving-neovim-for-zed.mdx +12 −12
3 3
publishDate: "16 Aug 2024"
4 4
description: "A journey through text editors and how I landed on Zed after years of Neovim"
5 5
tags: ["programming", "developer tools", "neovim", "zed"]
6 -
ogImage: "https://cdn.stevedylan.dev/files/bafybeibwxwp4irtylo7g5r2y6xd7r7hgqgfxlvzr52a7qcj7amp36p477i"
6 +
ogImage: "https://files.stevedylan.dev/leaving-neovim-for-zed.png"
7 7
---
8 8
9 9
import { Image } from "astro:assets";
10 10
11 11
<Image
12 -
	src="https://cdn.stevedylan.dev/files/bafybeibwxwp4irtylo7g5r2y6xd7r7hgqgfxlvzr52a7qcj7amp36p477i"
12 +
	src="https://files.stevedylan.dev/leaving-neovim-for-zed.png"
13 13
	alt="header image"
14 14
	height={1080}
15 15
	width={1920}
41 41
One of the biggest things that has stood out to me using Zed so far is how “everything just works.” There are so many features of an IDE or text editor that people take for granted until they have to set it up themselves in something lower level like Neovim. LSP (language server protocol) is certainly one of them. If you’re not familiar it’s the hints or errors that show up while you’re writing up your code, giving you deep insights to your repo on a language level. When you setup LSP in Neovim it’s a lot of work, and sometimes it can be a bit harder to figure out why it might be bugging out. However it does give you way more control and the option to do a lot of customization. With Zed LSP just works. There are configurations you can make to edit some things, but as a whole it just zips out of the box. There are already keybindings for things like “show definition”, “go to definition”, or even code actions. The only downside is outside of an extension you can’t use your own LSP that’s installed on your machine, but there’s always a pretty large language support that I haven’t had this issue yet.
42 42
43 43
<Image
44 -
	src="https://dweb.mypinata.cloud/ipfs/QmNkysZ5Roy723sphUST8abmHakKR86K2YHXeeVTU22ASH"
44 +
	src="https://files.stevedylan.dev/QmNkysZ5Roy723sphUST8abmHakKR86K2YHXeeVTU22ASH.png"
45 45
	alt="header image"
46 46
	height={1080}
47 47
	width={1920}
56 56
	loop
57 57
	playsinline
58 58
	className="aspect-video w-full"
59 -
	src="https://dweb.mypinata.cloud/ipfs/QmVEqwPxAoWgDwCLM3PrVxseLtLjCDK8LMxxz6DyD5fjxz"
59 +
	src="https://files.stevedylan.dev/QmVEqwPxAoWgDwCLM3PrVxseLtLjCDK8LMxxz6DyD5fjxz.mp4"
60 60
></video>
61 61
62 62
Finally there’s Git integrations. What normally required multiple plugins in Neovim is again ready out of the box with Zed, including feature like toggling Git Blame, viewing diffs, and gutter symbols showing the status of edited lines.
67 67
	loop
68 68
	playsinline
69 69
	className="aspect-video w-full"
70 -
	src="https://dweb.mypinata.cloud/ipfs/Qmcqv6kXnHHVbX8RxWpK6coPZHyNcPU7bxPfZ2Zwbsm6bz"
70 +
	src="https://files.stevedylan.dev/Qmcqv6kXnHHVbX8RxWpK6coPZHyNcPU7bxPfZ2Zwbsm6bz.mp4"
71 71
></video>
72 72
73 73
If I had to make a crude comparison, it’s similar to Linux and Apple. Linux will give you far more control over every piece of your software and hardware at the cost of spending time to configure it. Apple will give you less control but it will likely run smoother.
100 100
	loop
101 101
	playsinline
102 102
	className="aspect-video w-full"
103 -
	src="https://dweb.mypinata.cloud/ipfs/QmPo8nXP8w9hJfxnhCpggrGKP89VbtiV1Rf3mFRHj9fUqA"
103 +
	src="https://files.stevedylan.dev/QmPo8nXP8w9hJfxnhCpggrGKP89VbtiV1Rf3mFRHj9fUqA.mp4"
104 104
></video>
105 105
106 106
One feature that I think is particularly nice is the inline assistant, where you can select some lines of code and use `ctrl-enter` to trigger a request to be made to your code via the AI assistance configuration mentioned previously. If you like the results then you can confirm and keep coding.
111 111
	loop
112 112
	playsinline
113 113
	className="aspect-video w-full"
114 -
	src="https://dweb.mypinata.cloud/ipfs/QmTTGznMRr64oqJG7hXFiCrqrTqXiY3kaPuQnhWbCCSAaL"
114 +
	src="https://files.stevedylan.dev/QmTTGznMRr64oqJG7hXFiCrqrTqXiY3kaPuQnhWbCCSAaL.mp4"
115 115
></video>
116 116
117 117
### Zed ≠ Neovim
198 198
```
199 199
200 200
<Image
201 -
	src="https://dweb.mypinata.cloud/ipfs/QmVtqSNc6Ff9Zy8vBxr92AcVdh9eAGYkU8zWGLoyTnoeDL?img-quality=60"
201 +
	src="https://files.stevedylan.dev/QmVtqSNc6Ff9Zy8vBxr92AcVdh9eAGYkU8zWGLoyTnoeDL.png"
202 202
	alt="header image"
203 203
	height={1080}
204 204
	width={1920}
224 224
	loop
225 225
	playsinline
226 226
	className="aspect-video w-full"
227 -
	src="https://dweb.mypinata.cloud/ipfs/QmQntcJQkJKoh2bmreRYun4BfDuLb8rXry6ZFmiVYPaeRx"
227 +
	src="https://files.stevedylan.dev/QmQntcJQkJKoh2bmreRYun4BfDuLb8rXry6ZFmiVYPaeRx.mp4"
228 228
></video>
229 229
230 230
Speaking of Telescope, one big replacement is project wide search. While Zed doesn't have a fuzzy find feature, the project wide search is excellent. It will show all results in a multibuffer view which is pretty slick, and allows you to jump between that view and the buffer itself pretty easily.
235 235
	loop
236 236
	playsinline
237 237
	className="aspect-video w-full"
238 -
	src="https://dweb.mypinata.cloud/ipfs/QmY2Cs7zBk7bEa7skNLBcA5dFnSmTS7CotFjftcMA2r3m1"
238 +
	src="https://files.stevedylan.dev/QmY2Cs7zBk7bEa7skNLBcA5dFnSmTS7CotFjftcMA2r3m1.mp4"
239 239
></video>
240 240
241 241
The terminal toggle is pretty similar to something like VSCode but there are some other hidden ways to get a better terminal experience. One of them is a shortcut to toggle the bottom terminal to be full screen, but even better is opening a terminal as a buffer in the main editing view.
255 255
	loop
256 256
	playsinline
257 257
	className="aspect-video w-full"
258 -
	src="https://dweb.mypinata.cloud/ipfs/QmYGcEqane6cpVPJj9H7qjgYmV75GPhmy7hkKob6YPVscY"
258 +
	src="https://files.stevedylan.dev/QmYGcEqane6cpVPJj9H7qjgYmV75GPhmy7hkKob6YPVscY.mp4"
259 259
></video>
260 260
261 261
One of the big things I had to leave behind was Tmux and switching projects. While it isn't a perfect replacement, Zed has a "switch projects" feature which works really well and makes it pretty easy to switch contexts. You just won't get the exact same control and layout setup that you can get with Tmux
280 280
	loop
281 281
	playsinline
282 282
	className="aspect-video w-full"
283 -
	src="https://dweb.mypinata.cloud/ipfs/QmXh5mDRJyQRSCfmHNeZ5DDwnzPr3uo5mqCMQN1mLzGh6T"
283 +
	src="https://files.stevedylan.dev/QmXh5mDRJyQRSCfmHNeZ5DDwnzPr3uo5mqCMQN1mLzGh6T.mp4"
284 284
></video>
285 285
286 286
## Should You Use Zed?
src/content/post/vibe-coding-and-kodak-cameras.mdx +6 −6
3 3
publishDate: "30 Mar 2025"
4 4
description: "A perspective on the rise of AI coding and how it relates to technological shifts throughout history"
5 5
tags: ["programming", "ai", "photography"]
6 -
ogImage: "https://cdn.stevedylan.dev/ipfs/bafkreibzmkrvumddklcixiwq64qru7cv24na4uy2mvruk235lyrbkqjnbi"
6 +
ogImage: "https://files.stevedylan.dev/bafkreibzmkrvumddklcixiwq64qru7cv24na4uy2mvruk235lyrbkqjnbi.jpg"
7 7
---
8 8
9 -
![cover](https://cdn.stevedylan.dev/ipfs/bafkreidwjks56b7ifrnltsepgknkygxukctjdywujcbh5c3uqu44lkefrq)
9 +
![cover](https://files.stevedylan.dev/bafkreidwjks56b7ifrnltsepgknkygxukctjdywujcbh5c3uqu44lkefrq.jpg)
10 10
11 11
I'm sure many who read this are familiar by now with the term "vibe coding," a euphoric style of programming where you prompt AI models or IDEs to write software and just "vibe." One of the more popular instances that made the practice takeoff was the indie hacker Levelsio building a flight simulator entirely in JavaScript and selling ad space within the game. Others have followed suit and even started businesses by vibe coding them into existence. It's hard to deny the reality that AI has been changing much of the software ecosystem, and with any major shift in technology there are lots of opinions. I certainly have my own, but I thought it would be more productive to look at history repeat itself.
12 12
14 14
15 15
Most people don't know it, but there was a major controversy in the world of photography in the year 1900. Before that time photography was an art form protected by its sages, who poured their money, time, and practice into it. Not anyone could just take a picture, only those who had worked in the craft and mastered it. All of that changed in February of 1900 when Kodak released the Brownie camera. It wasn't much to look at, a little cardboard box that could take a picture no bigger than 2.25 inches using 117mm film. What made it special was the service behind it. The Brownie only cost $1 (which would be $38 at the time of this post), and it included the cost to develop the film. All someone had to do was take a picture, send it off to Kodak, and they would return the picture. "You press the button—we do the rest."
16 16
17 -
![bronwie ad](https://cdn.stevedylan.dev/ipfs/bafybeidg6ljbwwlfs3cvrekxwfyhw73pm577irs2h4zzkj4srm7q5x6dne)
17 +
![bronwie ad](https://files.stevedylan.dev/bafybeidg6ljbwwlfs3cvrekxwfyhw73pm577irs2h4zzkj4srm7q5x6dne.jpg)
18 18
19 19
Suddenly anyone could take photos: parents, grandparents, kids, truly anyone. It sold like crazy, and it upset the old photographer guild. There was great concern that there would now be a huge amount of "slop" photography and the art of photography would be washed away. Surely no one who took photos in such a way could be an artist... right? These artists were also concerned for their profession. If everyone had a camera, why would families pay for a photography session?
20 20
32 32
33 33
The evolution of photography technology enabled plenty of bad photos and photographers, but it also created a whole new series of artists we would not have otherwise. One of my favorite examples of this is Vivian Maier. If you're not familiar, Vivian Maier was an unknown nanny in the 1940's and 50's. It wasn't until after her death that her life's work as a photographer was discovered by a man who won it at an auction. To his surprise it was a stunning collection, hundreds of thousands of them, all taken by a nanny no one had ever heard of. She was passionate about photography, and her perspectives of the world at that time were unique.
34 34
35 -
![vivian maier](https://cdn.stevedylan.dev/ipfs/bafybeicc62frhqspkismnm7ocuhvzutlffnxkgjuxirs46faig47btgwjm)
35 +
![vivian maier](https://files.stevedylan.dev/bafybeicc62frhqspkismnm7ocuhvzutlffnxkgjuxirs46faig47btgwjm.jpg)
36 36
37 37
They're made possible thanks to the much later successor of a Brownie style camera that she could take everywhere and shoot roll after roll of film. If photography was still stuck in the dark ages of carrying around big pieces of equipment that only certain people could afford, we wouldn't have the stunning work of Vivian Maier.
38 38
39 -
![photo by vivian maier](https://cdn.stevedylan.dev/ipfs/bafkreicb3fn44kn2lfitq7bmoionmmw5maho3fvk2i7zr5x4xfafieafmu)
39 +
![photo by vivian maier](https://files.stevedylan.dev/bafkreicb3fn44kn2lfitq7bmoionmmw5maho3fvk2i7zr5x4xfafieafmu.jpg)
40 40
41 41
Another unrecognized photographer is one of my favorites, Joe Greer. Greer started his career on an app: Instagram. He didn't take photography lessons, he didn't have a nice camera, he just had his phone. The more and more he shot with his phone and posted his photos on Instagram, the more people liked them and the bigger it got. Eventually he did switch to professional cameras and continued his craft, but the key was his access to an art form that otherwise wouldn't be available apart from cell phone cameras.
42 42
43 -
![joe greer photo](https://cdn.stevedylan.dev/ipfs/bafybeieyixzansv22m6kzhuqbi4vxqb5zlgdcwvpm7ikkzz5j3dugtdhtu)
43 +
![joe greer photo](https://files.stevedylan.dev/bafybeieyixzansv22m6kzhuqbi4vxqb5zlgdcwvpm7ikkzz5j3dugtdhtu.jpg)
44 44
45 45
In the realm of programming, even in the evolution of languages, we see a similar pattern where mediocrity increases but so does the number of discovered programmers. Sure there's a lot of Javascript slop out there, but thanks to Javascript there have been more and more people discovering programming and starting a wonderful journey. You don't have to start in a lower language to find the joy of programming, and most people who do find it will experiment in many different languages.
46 46
src/content/post/why-you-should-learn-jq-in-2024.mdx +2 −2
3 3
publishDate: "12 Oct 2024"
4 4
description: "Discover why learning jq isn't just about boosting your productivity, it's about becoming a more curious developer"
5 5
tags: ["programming", "developer tools", "jq"]
6 -
ogImage: "https://cdn.stevedylan.dev/files/bafybeihqtn452ngov4drvwahfqimf6oy5tgisfhapozf33ty6by4t3h35a?img-quality=80&filename=og.png"
6 +
ogImage: "https://files.stevedylan.dev/bafybeihderpsuxl43msvzletfuhuqw75ygo3jhbh2psiboate4xc7gzhde.webp"
7 7
---
8 8
9 9
import { Image } from "astro:assets";
10 10
11 11
<Image
12 -
	src="https://dweb.mypinata.cloud/files/bafybeihderpsuxl43msvzletfuhuqw75ygo3jhbh2psiboate4xc7gzhde?img-format=webp"
12 +
	src="https://files.stevedylan.dev/bafybeihderpsuxl43msvzletfuhuqw75ygo3jhbh2psiboate4xc7gzhde.webp"
13 13
	alt="header image"
14 14
	height={1080}
15 15
	width={1920}
src/data/projects.ts +5 −5
24 24
  {
25 25
    title: "IPCM",
26 26
    description: "IPCM (InterPlanetary CID Mapping) is a blockchain approach to solving the problem of dynamic IPFS data. Instead of using a slower solution like IPNS to point to new content, IPCM is a smart contract that is used as the source of truth for a piece of dynamic content. It features a simple state that can only be updated by the owner of the contract but read by anyone, as well as a public version history through Solidity events.",
27 -
    image: "https://dweb.mypinata.cloud/ipfs/bafkreigsap637s5qtmp2cqomi3tkjlz62pet35x3cfbjqzh7mmbioiooei",
27 +
    image: "https://files.stevedylan.dev/bafkreigsap637s5qtmp2cqomi3tkjlz62pet35x3cfbjqzh7mmbioiooei.jpg",
28 28
    link: "https://ipcm.dev",
29 29
    tags: ["blockchain", "ipfs", "developer tools"]
30 30
  },
65 65
    description:
66 66
      "A CLI written in Go that can help migrate existing local or remote git repos to Radicle.xyz",
67 67
    image:
68 -
      "https://dweb.mypinata.cloud/ipfs/QmUFwBiweWHtGBxftQ7xNpiS5xSBHJyZJgsHXXGRy2qyLH?img-format=webp",
68 +
      "https://files.stevedylan.dev/QmUFwBiweWHtGBxftQ7xNpiS5xSBHJyZJgsHXXGRy2qyLH.webp",
69 69
    link: "https://github.com/stevedylandev/radicalize",
70 70
    tags: ["developer tools", "radicle", "git"],
71 71
  },
82 82
    description:
83 83
      "The original Pinata SDK was written for Node.js years ago, and as the developer ecosystem evolved a more flexible SDK was necessary. This project was a full typescript rewrite from scratch that includes a whole new developer experience that intuitive, with far more methods and capabilities than before.",
84 84
    image:
85 -
      "https://docs.mypinata.cloud/ipfs/bafkreidv5iptnieh6eijei7enqc4mdhxpte3ries23heqf7s2hu3gdu6ru",
85 +
      "https://files.stevedylan.dev/bafkreidv5iptnieh6eijei7enqc4mdhxpte3ries23heqf7s2hu3gdu6ru.jpg",
86 86
    link: "https://docs.pinata.cloud/pinata",
87 87
    tags: ["developer tools", "ipfs"],
88 88
  },
99 99
    description:
100 100
      "The fastest way to send a cast on Farcaster. A Raycast extension that allows you to sign into your Farcaster account and send casts with optional images via IPFS. ",
101 101
    image:
102 -
      "https://dweb.mypinata.cloud/ipfs/QmSsY6QnhdwbWunrgzTDkpvRd7oWx5nUp8v7UiMeGRFeZ1",
102 +
      "https://files.stevedylan.dev/QmSsY6QnhdwbWunrgzTDkpvRd7oWx5nUp8v7UiMeGRFeZ1.png",
103 103
    link: "https://www.raycast.com/stevedylandev/raycaster",
104 104
    tags: ["raycast", "developer tools", "productivity"],
105 105
  },
125 125
    description:
126 126
      "A Go rewrite of the Node.js CLI for Pinata, allows fast and extensive uploads to Pinata. Also includes helpful features for listing files and other API functionalities. ",
127 127
    image:
128 -
      "https://dweb.mypinata.cloud/ipfs/QmNcdx9t48z7RQUXUZZHmuc4zBfyBxKLjDfEgmfhiop7j7?img-format=webp",
128 +
      "https://files.stevedylan.dev/QmNcdx9t48z7RQUXUZZHmuc4zBfyBxKLjDfEgmfhiop7j7.webp",
129 129
    link: "https://github.com/PinataCloud/ipfs-cli",
130 130
    tags: ["developer tools", "ipfs"],
131 131
  },
src/pages/about.astro +11 −40
20 20
				class="style-link inline-block"
21 21
				target="_blank"
22 22
				rel="noopener noreferrer"
23 -
				aria-label="Link to Pinata website"
24 -
				href="https://pinata.cloud"
23 +
				aria-label="openzeppelin"
24 +
				href="https://openzeppelin.com"
25 25
			>
26 -
				Pinata</a
27 -
			>
28 -
			as Head of Developers Relations, where I work on anything from <a
29 -
				class="style-link inline-block"
30 -
				target="_blank"
31 -
				rel="noopener noreferrer"
32 -
				aria-label="Link to Pinata docs"
33 -
				href="https://docs.pinata.cloud"
26 +
				OpenZeppelin</a
34 27
			>
35 -
				writing documentation
36 -
			</a>, building <a
37 -
				class="style-link inline-block"
38 -
				target="_blank"
39 -
				rel="noopener noreferrer"
40 -
				aria-label="Link to repos"
41 -
				href="/projects">developer tools</a
42 -
			>, to writing
43 -
			<a
44 -
				class="style-link inline-block"
45 -
				rel="preferch"
46 -
				aria-label="Link to blog posts"
47 -
				href="/posts"
48 -
			>
49 -
				blog posts
50 -
			</a>, filming
51 -
			<a class="style-link inline-block" rel="preferch" aria-label="Link to videos" href="/videos">
52 -
				videos
53 -
			</a>, and
54 -
55 -
			<a
56 -
				class="style-link inline-block"
57 -
				target="_blank"
58 -
				rel="noopener noreferrer"
59 -
				aria-label="Link to Warpcast post"
60 -
				href="https://warpcast.com/stevedylandev.eth/0xace44e08"
61 -
			>
62 -
				making memes
63 -
			</a>. I'm also working on <a
28 +
			as a DevRel, where I work on anything from writing documentation, building developer tools, to writing blog posts, and filming videos. I'm also working on <a
64 29
				class="style-link inline-block"
65 30
				target="_blank"
66 31
				rel="noopener noreferrer"
67 32
				aria-label="Orbiter"
68 33
				href="https://orbiter.host">Orbiter</a
69 -
			>, a new approach to static site hosting using IPFS and Blockchain.
34 +
			>, a new approach and open approach to app hosting. Along side Orbiter I'm also building a new stack called <a
35 +
			class="style-link inline-block"
36 +
					target="_blank"
37 +
					rel="noopener noreferrer"
38 +
					aria-label="bhvr"
39 +
					href="https://bhvr.dev">bhvr</a> (Bun Hono Vite React) which is designed to be portable and deployable anywhere to avoid walled garden providers.
70 40
		</p>
41 +
		<p>My greatest desire is to help build technologies that empower people who would otherwise be powerless, whether it's financial systems, information privacy, or democratizing software.</p>
71 42
		<div class="flex justify-center">
72 43
			<Image src={aboutImg} alt="Steve pfp" loading="eager" class="animate-fade-in" />
73 44
		</div>
src/pages/index.astro +17 −7
18 18
		<DecryptingHeader text="Hey there!" className="title pb-6" />
19 19
		<p class="mb-4">
20 20
			My name is Steve. I'm a DX Engineer and creator with a desire to help build the future of the
21 -
			web. My latest project is <a
21 +
			web. I'm currently doing Developer Relations at <a
22 +
				href="https://openzeppelin.com"
23 +
				target="_blank"
24 +
				rel="noopener noreferrer"
25 +
				class="style-link">OpenZeppelin</a>
26 +
			 and I'm also building <a
22 27
				href="https://orbiter.host"
23 28
				target="_blank"
24 29
				rel="noopener noreferrer"
25 30
				class="style-link">Orbiter</a
26 -
			>, a simple yet open take on static site hosting.</p>
31 +
			> and <a
32 +
				href="https://bhvr.dev"
33 +
				target="_blank"
34 +
				rel="noopener noreferrer"
35 +
				class="style-link">bhvr</a>
36 +
			in my spare time.</p>
27 37
		<SocialList />
28 38
		<p>Or anywhere with my handle <span class="text-accent">@stevedylandev</span></p>
29 39
	</section>
125 135
			</li>
126 136
			<li>
127 137
				<a
128 -
					href="https://pinata.cloud"
138 +
					href="https://openzeppelin.com"
129 139
					target="_blank"
130 140
					rel="noopener noreferrer"
131 141
					class="style-link inline-block"
132 142
					><Image
133 143
						height="100"
134 144
						width="100"
135 -
						src="https://dweb.mypinata.cloud/ipfs/QmXexbA6Raw4sq79NfXNrLesXNwXYpHUVNRSccF59ArGfo"
145 +
						src="https://files.stevedylan.dev/openzeppelin-logo.png"
136 146
						class="inline-block h-4 w-4"
137 -
						alt="pinata logo"
138 -
					/> Pinata
147 +
						alt="OpenZeppelin Logo"
148 +
					/> OpenZeppelin
139 149
				</a>:
140 150
				<p class="inline-block sm:mt-2">
141 -
					Where I'm currently working as Head of Developer Relations
151 +
					Where I'm currently working as a DevRel
142 152
				</p>
143 153
			</li>
144 154
		</ul>