Sign in

David

@dcyoung.dev
95 followers 374 following 53 posts

🚀 Web/Software/Ruby on Rails Developer | 🥃 Turning whisky into code in the scenic North East of Scotland 🏴󠁧󠁢󠁳󠁣󠁴󠁿 | Collector of domain names dcyoung.dev braw.software

PostsRepliesMedia
David @dcyoung.dev · 18/06/2026
has_secure_password isn't just for passwords. Pass it a custom attribute and it'll hash a pin code just fine. Built a passwordless auth system using that and generates_token_for. Magic links and pin codes from one model. dcyoung.dev/shorts/authe...
dcyoung.dev
💡 Authentication Tokens in Rails Without Devise
Magic links are great. You click a link, you're signed in. No password to remember, no password to leak. For most sign-in flows they're probably the ideal solution. ...
000
David @dcyoung.dev · 18/12/2025
Just wrote up how I set up SQLite backups for a Rails app using Litestream and Cloudflare R2 Litestream streams your database changes to S3-compatible storage in near real-time, and the litestream-ruby gem handles the Puma integration nicely dcyoung.dev/shorts/setti... #rubyonrails #webdevelopment
040
David @dcyoung.dev · 12/12/2025
Reading Roundup is live. Prototyping in code, Rails view performance, custom elements, vanilla CSS, and building elegant Ruby API clients. Quick reads worth your time. Full issue here: dcyoungdev.substack.com/p/reading-ro... #RubyOnRails #WebDevelopment #SoftwareDesign
dcyoungdev.substack.com
Reading Roundup: Prototyping, Rails Views, Custom Elements, and Elegant APIs
Here’s a short roundup of articles I read this week. Quick takeaways below so you can scan fast and dive deeper where it helps.
020
David @dcyoung.dev · 12/12/2025
I've been trying out Claude (desktop app) with an Obsidian MCP plugin - using all these words sounds more technical than it was 🙈 It's been pretty good so far, it pulled together pretty decent weekly summarise based off daily entries. I followed this without the optional steps dev.to/sroy8091/con...
110
David @dcyoung.dev · 08/12/2025
API token code got you spooked? All that SHA256 hashing and secret key management scattered everywhere? I found a cleaner way using `has_secure_password`, `authenticate_by` and `authenticate_or_request_with_http_token` in Rails. Full writeup: dcyoung.dev/shorts/api-t...
010
David @dcyoung.dev · 16/05/2025
dcyoung.dev/feed.xml
dcyoung.dev
010
David @dcyoung.dev · 16/05/2025
You might get less performance from using `.excluding` than `.where.not` and here's why. dcyoung.dev/shorts/how-e... #RubyOnRails #WebDevelopment
dcyoung.dev
🎓 How .excluding works in Rails
Rails provides a convenient .excluding method for identifying a group of items while omitting another set.
081
David @dcyoung.dev · 07/03/2025
Yeah it's really nice. Will see how the print holds up after a few washes but didn't crack when gently stretched 👌 Looking forward to more designs 🤩
010
David @dcyoung.dev · 07/03/2025
Upped my geek level thanks to @andycroll.bsky.social and rubytshirts.com 🎉🎉
Me wearing a Ruby t-shirt
191
David @dcyoung.dev · 17/02/2025
Example: You add a new column to your database and you want to fill it with some computed value. You calculate a score for each post based on interactions. You have a service `PostScorer.score_post(post)` that returns a number that you want to store in your new `posts.score` column.
000
David @dcyoung.dev · 17/02/2025
What's your preference when it comes to data migrations in a Rails app? I've used the data_migrate gem in the past with mixed success - I think it stopped working for me after an upgrade (gem or Rails) Let's discuss the pros and cons. #RubyOnRails github.com/ilyakatz/dat...
github.com
100
David @dcyoung.dev · 11/02/2025
I feel your pain, an asdf upgrade tried to take me down today!
020
David @dcyoung.dev · 11/02/2025
I've had some good success with CUBE methodology. piccalil.li/blog/cube-css/
000
David @dcyoung.dev · 23/01/2025
Haven't quite got to what I update in Kamal but this is my WIP dcyoung.dev/shorts/new-r...
dcyoung.dev
🎓 New Rails application with asdf
I use asdf to manage my runtime versions (Ruby and Node). This makes life a lot easier when switching between multiple codebases and allows me to easily to switch machines due to the presence of a .to...
010
David @dcyoung.dev · 21/01/2025
Enjoyed this talk about the Shape of Service Objects. I like the separation of work explained and the visual representation of a Service Object is great 😍 - off to find some code to analyse + refactor 🧐 www.rubyvideo.dev/talks/the-cu... #RubyOnRails
rubyvideo.dev
The Curse of Service Objects
Service Objects were a mistake. It has nothing to do with OOP. It has little to do with ideas of Fowler, Evans and Martin. I analyzed a plenty of open repositories, videos and articles, and in this ta...
000
David @dcyoung.dev · 20/01/2025
Rubocop gem update adds a check to ensure Strong Params expect is being used. @gorails.com have a great video explaining why this an important change gorails.com/episodes/how... #RubyOnRails #webdevelopment
gorails.com
How to use params.expect in Rails 8+ (Example) - GoRails
Rails 8 introduces a new expect method for permitting parameters that fixes a few of the issues with require and permit. Let's take a look!
010
David @dcyoung.dev · 15/01/2025
This a web app, viewed on my phone through the browser 👌 I haven't consider any sort of mobile app, would probably go PWA to start with.
110
David @dcyoung.dev · 14/01/2025
Rails `class_names` aka `token_list` helper is great for define #CSS classes in view components or partials. Docs: edgeapi.rubyonrails.org/classes/Acti... #RubyOnRails #CodeExample
050
David @dcyoung.dev · 14/01/2025
Not a new #AppIdea for me but, an Instagram like clone for specific events like weddings. Guests share photos and videos to an event's timeline. Could also handle RSVPs. #RubyOnRails #webdevelopment #buildinpublic
040
David @dcyoung.dev · 13/01/2025
We've been using the recipe and shopping list feature for a few months now 👌only introduced the planner over the weekend so we'll see how it goes 🚀
010
David @dcyoung.dev · 13/01/2025
Meal Planner app finally got it's meal planning functionality Allows us to add recipes to a day of the week. Already using this to plan this week's meals 😋 #RubyOnRails #webdevelopment #buildinpublic bsky.app/profile/dcyo...
250
David @dcyoung.dev · 09/01/2025
I'm sure there's a "better" way, but if we've gotten this far with Homebrew I'm sure we can keep going 😂
010
David @dcyoung.dev · 09/01/2025
All my projects run on the same postgres version so Homebrew does the trick. If I have a project on an older version, I'll upgrade - even if that's just making it run locally. That being said none of my projects do anything "fancy" at the database level.
100
David @dcyoung.dev · 08/01/2025
You could get a jumpstart by using some AI tools like www.usegalileo.ai Has worked well enough to kick off some of my projects - doesn't replace a real human designer though.
usegalileo.ai
Galileo AIGalileo Icon
100
David @dcyoung.dev · 08/01/2025
Now I want to collate my thoughts, check my commits and write up what worked for me. I'm running a few apps on a single Hetzner box, recently using SQLite, but I do have a couple of postgres apps too.
120
David @dcyoung.dev · 07/01/2025
I've been doing this a lot recently, mainly to get better at Kamal and Docker things. Got my latest app deployed very quickly with only a handful of hiccups 👌
120
David @dcyoung.dev · 26/12/2024
Who is the genius behind the Songs on Rails YT Channel? 😂🤣 #RubyOnRails youtube.com/@songsonrail...
youtube.com
Songs on Rails
020
David @dcyoung.dev · 10/12/2024
Hey, I ended up backing out of Richer Text, the embeds were a bit too much for my use-case. I did come across a couple of minor issues, would be happy to chat or raise them on GitHub, whichever you prefer. I did find your blog post afomera.dev/posts/2022-1... this is what I needed thank you 👌
afomera.dev
Combined Mentions with ActionText (Part 2)
We're back for part two of the Combined Mentions series. If you missed it, in Part One we setup our application and installed a basic implementation of Trib...
010
David @dcyoung.dev · 09/12/2024
I've predicted that it'll also snow in May next year 🤦
010
David @dcyoung.dev · 06/12/2024
Most of these places use Facebook to keep their customers up to date, however the feedback is rubbish and it tends to show up days later than needed.
000
David @dcyoung.dev · 06/12/2024
Cafes, restaurants and takeaways in my area often have inconsistent opening times, and sometimes different locations (food vans)
000
David @dcyoung.dev · 06/12/2024
Another app idea Food book. A list of food outlets, their opening times and menus. 🧵
210
David @dcyoung.dev · 04/12/2024
Quite a wild year of music for me this year! Top 0.5% of Less Than Jake listeners 🤘🎺 I listened for 27,638 minutes in 2024. What about you? #SpotifyWrapped open.spotify.com/wrapped/shar...
open.spotify.com
My 2024 Wrapped – get yours
2024 Wrapped
010
David @dcyoung.dev · 02/12/2024
That's the dream 😁 baby steps 👌
010
David @dcyoung.dev · 02/12/2024
Meal Planning app coming along nicely 👌 #RubyOnRails #webdevelopment #buildinpublic
260
David @dcyoung.dev · 01/12/2024
Implemented a <dialog> powered by HOTWire - not quite as smooth as I want it to be but pretty good start 👌 #rubyonrails #hotwire #webdevelopment
040
David @dcyoung.dev · 28/11/2024
I'm going to give this a try at the weekend! The custom embeds are exactly what I've been looking for 🤩
110
David @dcyoung.dev · 28/11/2024
Really enjoyed learning about @goodenough.us on the Startup Different podcast this week. The idea of having a "bad ideas" Slack channel is right up my street! 🤩
010
Reposted by David
Jan Dudulski @jan.dudulski.pl · 25/11/2024
Recent @shortruby.com includes a reminder from RubyCademy that you can run bundler in onefile scripts. Let me also remind that you can run tests such way too
1103
David @dcyoung.dev · 24/11/2024
All the time. If I'm writing out the longhand, I feel like I've not named something correctly
030
David @dcyoung.dev · 24/11/2024
plant_db - a plant database app built for my wife to help manage our garden planting. Allowing us to create collections of plants for different areas of the garden, also includes a gardener's diary
000
David @dcyoung.dev · 24/11/2024
mfc_podcast--web - a static version of mfcpodcast.co.uk as we move this off of WordPress
mfcpodcast.co.uk
MFC Podcast
The home of the MFC Podcast
000
David @dcyoung.dev · 24/11/2024
meal_planner - Meal planning app being used by my wife and I to gather recipes and create shopping lists based on recipe ingredients 🍝
010
David @dcyoung.dev · 24/11/2024
mains_of_glassaugh - codebase for mainsofglassaugh.farm. Farm shop website for our nearby friends
mainsofglassaugh.farm
Mains of Glassaugh Vegetables
000
David @dcyoung.dev · 24/11/2024
lodger - the startings of a Hotel booking management app
000
David @dcyoung.dev · 24/11/2024
braw_software - codebase for braw.software
000
David @dcyoung.dev · 24/11/2024
dcyoung_dev - codebase for dcyoung.dev
000
David @dcyoung.dev · 24/11/2024
bookmarker - Bookmarking app with AI generated summaries, used to power dcyoung.dev/bookmarks
000
David @dcyoung.dev · 24/11/2024
If you're a software builder what projects do you have sitting in your laptop? 🧵
800
David @dcyoung.dev · 24/11/2024
Thanks Jason, this is some good insights. Is this something that WP Engine built themselves or a service that was bought in? I'd imagine some companies have built in-house solutions, the plan here is to reduce that burden. Would you mind if we reach out in future to ask some more questions?
110