<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AndyRosenberg</title>
    <description>The latest articles on DEV Community by AndyRosenberg (@andyrosenberg).</description>
    <link>https://dev.to/andyrosenberg</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F98412%2Fd3d62baf-5b64-4398-a0c1-6ba6121ce1a1.jpg</url>
      <title>DEV Community: AndyRosenberg</title>
      <link>https://dev.to/andyrosenberg</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andyrosenberg"/>
    <language>en</language>
    <item>
      <title>Did dev fix their mobile app finally? I don't have to go through a layer of forems I'm uninterested in anymore!</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Tue, 17 Mar 2026 14:38:15 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/did-dev-fix-their-mobile-app-finally-i-dont-have-to-go-through-a-layer-of-forems-im-uninterested-4ppb</link>
      <guid>https://dev.to/andyrosenberg/did-dev-fix-their-mobile-app-finally-i-dont-have-to-go-through-a-layer-of-forems-im-uninterested-4ppb</guid>
      <description></description>
    </item>
    <item>
      <title>Embrace the guilt and shame, it's a reminder that you are human.</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Wed, 18 Jun 2025 14:47:24 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/embrace-the-guilt-and-shame-its-a-reminder-that-you-are-human-5cp2</link>
      <guid>https://dev.to/andyrosenberg/embrace-the-guilt-and-shame-its-a-reminder-that-you-are-human-5cp2</guid>
      <description></description>
      <category>mentalhealth</category>
    </item>
    <item>
      <title>Following along a tutorial I successfully built a text editor in C, patched up its readability a bit, and extended it to support Ruby. Huge leap forward as someone very used to higher-level languages, but still a long way to go. Cheers!</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Wed, 11 Jun 2025 00:39:03 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/following-along-a-tutorial-i-successfully-built-a-text-editor-in-c-patched-up-its-readability-a-ml</link>
      <guid>https://dev.to/andyrosenberg/following-along-a-tutorial-i-successfully-built-a-text-editor-in-c-patched-up-its-readability-a-ml</guid>
      <description></description>
      <category>c</category>
      <category>ruby</category>
      <category>showdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>On Being an Eternal Beginner</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Sun, 01 Jun 2025 16:30:28 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/on-being-an-eternal-beginner-1n7</link>
      <guid>https://dev.to/andyrosenberg/on-being-an-eternal-beginner-1n7</guid>
      <description>&lt;p&gt;Otherwise known as lifelong learning, I love to experience the sort of rebirth of starting from scratch. I've been programming for 8 years at this point and have built complex high-level systems in the context of web applications, mainly based on product requirements at a job.&lt;/p&gt;

&lt;p&gt;But most of the time, I still feel like I'm putting lego pieces together. I've had a yearning to start from scratch for a long time, even if that means being uncomfortable and banging my head against a wall until I become minimally competent.&lt;/p&gt;

&lt;p&gt;In addition, the rise of AI as a dual-use technology is making it so we can build faster, but also build "dumber," with a general disconnect toward the tools that we need to be self-sufficient. I think that we should be using AI, but I also think that this challenges us to make ourselves better so we are not churning out mediocre slop code.&lt;/p&gt;

&lt;p&gt;For years, I have been trying to learn systems programming. I've done previous dives into Go, Java, and now I'm on C. I can't say I've ever got the systems learning to "stick," but this time I feel closer than ever.&lt;/p&gt;

&lt;p&gt;Starting with &lt;a href="https://beej.us/guide/bgc/" rel="noopener noreferrer"&gt;Beej's Guide&lt;/a&gt; and now building alongside a tutorial for making &lt;a href="https://github.com/AndyRosenberg/text_editor" rel="noopener noreferrer"&gt;my own text editor&lt;/a&gt; (replacing variable names and some syntax choices for readability), I am really excited about where this journey will take me.&lt;/p&gt;

&lt;p&gt;So what is the goal of all of this? At the end of the day, it's going to make me a better programmer. Learning DSA from the ground up is also going to make me a better programmer (highly recommend &lt;a href="https://frontendmasters.com/courses/algorithms/" rel="noopener noreferrer"&gt;The Primagen's Course&lt;/a&gt; for this one). I don't have a computer science background, and I'm not going to pretend I know everything because I have been building things on a practical basis for so long.&lt;/p&gt;

&lt;p&gt;It's good to be a beginner. The world is open again.&lt;/p&gt;

</description>
      <category>c</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Passing fads of DON'T DO THIS clickbait, OOP, Monoliths, the viral nature of the internet pressures everyone to kill their idols for clicks. Meanwhile, I'm learning systems programming for the nth time with C and it's beautiful.</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Sun, 25 May 2025 15:28:29 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/passing-fads-of-dont-do-this-clickbait-oop-monoliths-the-viral-nature-of-the-internet-pressures-5c7a</link>
      <guid>https://dev.to/andyrosenberg/passing-fads-of-dont-do-this-clickbait-oop-monoliths-the-viral-nature-of-the-internet-pressures-5c7a</guid>
      <description></description>
      <category>discuss</category>
      <category>programming</category>
      <category>c</category>
    </item>
    <item>
      <title>The thing I've been thinking about is the relationship between technology and power. Since technology is a raw expression of power, those in the room able to wield that power have a responsibility to do good in this world, given there will be bad actors.</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Sat, 17 May 2025 01:44:15 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/the-thing-ive-been-thinking-about-is-the-relationship-between-technology-and-power-since-22b8</link>
      <guid>https://dev.to/andyrosenberg/the-thing-ive-been-thinking-about-is-the-relationship-between-technology-and-power-since-22b8</guid>
      <description></description>
      <category>discuss</category>
      <category>career</category>
      <category>leadership</category>
    </item>
    <item>
      <title>Been a while since I've been here. I'm likely going to start taking college courses to combat my impostor's syndrome. I've been in this game for the better part of a decade now and moved up some ladders, but I never want to be that "expert beginner."</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Thu, 15 May 2025 18:16:13 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/been-a-while-since-ive-been-here-im-likely-going-to-start-taking-college-courses-to-combat-my-m62</link>
      <guid>https://dev.to/andyrosenberg/been-a-while-since-ive-been-here-im-likely-going-to-start-taking-college-courses-to-combat-my-m62</guid>
      <description></description>
      <category>career</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Implementing cursor pagination with ActiveRecord</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Sat, 12 Sep 2020 22:00:09 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/implementing-cursor-pagination-with-activerecord-346h</link>
      <guid>https://dev.to/andyrosenberg/implementing-cursor-pagination-with-activerecord-346h</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/AndyRosenberg/ReviewAnythingOnce/blob/master/services/pagination_service.rb" rel="noopener noreferrer"&gt;The PaginationService&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had some fun with this one. Implementing pagination almost always gives me a touch of anxiety, especially your typical &lt;code&gt;LIMIT/OFFSET&lt;/code&gt; pagination. I had recently discovered the more performant cursor pagination &lt;a href="https://dev.to/ivoecpereira/why-you-shouldn-t-use-offset-and-limit-for-your-pagination-610"&gt;from this post&lt;/a&gt; and wanted to give it a go. I created a service in my latest Roda app to be able to take some arguments, chain a query and run the high-performance pagination from there.&lt;/p&gt;

&lt;p&gt;I started with implementing a couple different gems, then was able to gather what I needed to create my own version with more control. &lt;a href="https://dev.to/bambangsinaga/ruby-cursor-pagination-531m"&gt;Parulian's post and repo&lt;/a&gt; was a huge inspiration for my service (big thanks!). I needed the returned formatting to be a little more specific and the query chaining capabilities to be a bit more explicit, so I was able to create a base structure around his library and convert the service based on my needs.&lt;/p&gt;

&lt;p&gt;Here's a little explanation of the code. We basically have a parent service class (not shown) that converts args passed into an instance into accessors. We use a class method to define defaults, and another to pass in keyword arguments (limited to the accessors listed) to define the boundaries of the query.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PaginationService.paginate&lt;/code&gt; defaults to a descending-order page showing the last 25 reviews that were created. The previous and next cursor are returned in the &lt;code&gt;"navigation"&lt;/code&gt; pair in the final JSON. What I like about the implementation is that we can pass in an array to the &lt;code&gt;where:&lt;/code&gt; option that represents a parameterized query to be chained to the final pagination (i.e. limiting reviews that have a rating higher than 5).&lt;/p&gt;

&lt;p&gt;I'm totally nerding out over my own code, but maybe it can help someone that wants to set up their own cursor pagination. Happy trails, devs!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>activerecord</category>
    </item>
    <item>
      <title>Check Out My Roda Starter Pack</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Fri, 28 Aug 2020 06:01:25 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/check-out-my-roda-starter-pack-4kjn</link>
      <guid>https://dev.to/andyrosenberg/check-out-my-roda-starter-pack-4kjn</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/AndyRosenberg/Roda_Stack" rel="noopener noreferrer"&gt;May the source be with you... Fork Me.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll keep this post relatively brief.&lt;/p&gt;

&lt;p&gt;A few months ago I discussed how Rails alternatives need to be emphasized in the Ruby community. While COVID lockdown hasn't been my wellspring of inspiration, I have worked on this stack that I believe can push the needle on more DIY Ruby stacks.&lt;/p&gt;

&lt;p&gt;Please note that the stack is inspired by Rails and even includes ActiveRecord, ActiveSupport, and Turbolinks. But it is a take-as-you-need approach that won't likely end up with a 250+ line &lt;code&gt;Gemfile.lock&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In my stack, Vue and Bulma quarterback the frontend, and a Vue component corresponds with each action and erb template. The backend sports full MVC architecture, Sidekiq jobs, and better extensions of Roda with a few extra convenience methods (i.e. to render json and display validation errors).&lt;/p&gt;

&lt;p&gt;So with the above repo, user CRUD and forgot password flows come for free. I'll be using it for my next side project, and once that's in a good state I'll post that on here as well. Let's get some more DIY stacks out there!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>roda</category>
      <category>vue</category>
      <category>showdev</category>
    </item>
    <item>
      <title>2019 in review</title>
      <dc:creator>AndyRosenberg</dc:creator>
      <pubDate>Wed, 01 Jan 2020 05:08:45 +0000</pubDate>
      <link>https://dev.to/andyrosenberg/2019-in-review-1657</link>
      <guid>https://dev.to/andyrosenberg/2019-in-review-1657</guid>
      <description>&lt;p&gt;2019 is the year I started working as a professional developer. After almost two years of drudging my way through learning to program from home while working a full-time job, I began my first official SE job back in January. This left some room to be more experimental with side projects.&lt;/p&gt;

&lt;p&gt;I shipped two production apps in Crystal, &lt;a href="//www.captionaire.com"&gt;Captionaire&lt;/a&gt; and &lt;a href="https://wyyrds.herokuapp.com/" rel="noopener noreferrer"&gt;Wyyrds&lt;/a&gt;. Crystal is an amazing language to work with because it’s extremely fast and the community is so small that you basically have to do everything without relying on dependencies. Plus, writing against a compiler makes you so much more aware of execution choices, which helps when you go back to interpreted languages.&lt;/p&gt;

&lt;p&gt;2020 will be a year of working with practicality. What ideas have the capability for monetization? What will scale? I’ve been dabbling in Go to try to achieve speed with enough of an ecosystem to abstract upon common patterns. Technology aside, I hope to build something that truly matters, and maybe some consumers will agree with that sentiment.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>crystal</category>
      <category>yearinreview</category>
    </item>
  </channel>
</rss>
