<?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: Rodrigo De Lascio</title>
    <description>The latest articles on DEV Community by Rodrigo De Lascio (@rodrigodelascio).</description>
    <link>https://dev.to/rodrigodelascio</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%2F1338401%2Fed81721d-0f1a-4d0b-a95a-205976204ebd.webp</url>
      <title>DEV Community: Rodrigo De Lascio</title>
      <link>https://dev.to/rodrigodelascio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rodrigodelascio"/>
    <language>en</language>
    <item>
      <title>From Diagram to Cloud: Designing a Real Cloud Architecture Without Melting My Brain</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Fri, 30 Jan 2026 19:46:17 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/from-diagram-to-cloud-designing-a-real-cloud-architecture-without-melting-my-brain-3n12</link>
      <guid>https://dev.to/rodrigodelascio/from-diagram-to-cloud-designing-a-real-cloud-architecture-without-melting-my-brain-3n12</guid>
      <description>&lt;p&gt;After building a full PHP web application for my Web Application Development module, my Distributed and Cloud Computing module decided it was time to zoom out.&lt;/p&gt;

&lt;p&gt;Instead of writing code, I had to design the entire infrastructure that would host a real-world system. Servers, networks, security, storage, monitoring, backups. The whole thing.&lt;/p&gt;

&lt;p&gt;The system in question was an online discussion forum for a fictional organisation called Nutriworld.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem to Solve
&lt;/h2&gt;

&lt;p&gt;The forum needed to be publicly accessible, secure, scalable, and cost-aware. This was not about building a global platform on day one. It was about designing a proof of concept that could grow safely over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  High-Level Architecture
&lt;/h2&gt;

&lt;p&gt;The system follows a layered cloud architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public entry point via an Application Gateway&lt;/li&gt;
&lt;li&gt;Private application tier&lt;/li&gt;
&lt;li&gt;Managed database&lt;/li&gt;
&lt;li&gt;Object storage for user content&lt;/li&gt;
&lt;li&gt;Monitoring and backup services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traffic flows through a single controlled ingress point before reaching any application resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Platform and Deployment Choices
&lt;/h2&gt;

&lt;p&gt;Microsoft Azure was used as the cloud platform.&lt;/p&gt;

&lt;p&gt;The design combines Infrastructure as a Service for the application server with managed services for data storage. This balances control and operational simplicity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Networking and Security
&lt;/h2&gt;

&lt;p&gt;All resources live inside a Virtual Network with dedicated subnets for the gateway, application server, and database.&lt;/p&gt;

&lt;p&gt;The application server has no public IP address. Access is restricted through the gateway and reinforced using Network Security Groups with a default deny approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application Gateway and WAF
&lt;/h2&gt;

&lt;p&gt;The Application Gateway provides HTTPS termination, routing, and Web Application Firewall capabilities.&lt;/p&gt;

&lt;p&gt;For the prototype, the WAF operates in detection mode, logging suspicious traffic without blocking it. This allows observation without disrupting legitimate users.&lt;/p&gt;

&lt;h2&gt;
  
  
  Application Tier
&lt;/h2&gt;

&lt;p&gt;The forum application runs on a Linux virtual machine using Ubuntu Server LTS.&lt;/p&gt;

&lt;p&gt;The VM size is intentionally modest, sufficient for a prototype and easy to scale later if required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Layer
&lt;/h2&gt;

&lt;p&gt;Forum data is stored in Azure Database for MySQL Flexible Server.&lt;/p&gt;

&lt;p&gt;Using a managed database reduces operational overhead while providing built-in patching, backups, and resilience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Storage for User Content
&lt;/h2&gt;

&lt;p&gt;User uploads are stored in Azure Blob Storage, keeping large files separate from the application server and allowing independent scaling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring and Backups
&lt;/h2&gt;

&lt;p&gt;Azure Monitor is used for metrics and alerting.&lt;/p&gt;

&lt;p&gt;Database backups are enabled by default, and virtual machine backups are identified as a future enhancement once provisioning constraints are removed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Constraints and Reality
&lt;/h2&gt;

&lt;p&gt;Some resources could not be fully provisioned due to subscription limitations. These constraints are documented clearly, with intended configurations explained.&lt;/p&gt;

&lt;p&gt;Architecture is about intent as much as implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Assignment Taught Me
&lt;/h2&gt;

&lt;p&gt;This project reinforced the importance of system thinking, trade-offs, and documentation.&lt;/p&gt;

&lt;p&gt;It pushed me to think beyond code and focus on reliability, security, and evolution over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This architecture is not flashy, but it is sensible, secure, and realistic.&lt;/p&gt;

&lt;p&gt;And that feels like the right direction to be heading in.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>azure</category>
      <category>architecture</category>
      <category>careerchange</category>
    </item>
    <item>
      <title>RodFlix Deep Dive: The PHP App That Taught Me Patience</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Sun, 18 Jan 2026 20:06:26 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/rodflix-deep-dive-the-php-app-that-taught-me-patience-59fp</link>
      <guid>https://dev.to/rodrigodelascio/rodflix-deep-dive-the-php-app-that-taught-me-patience-59fp</guid>
      <description>&lt;p&gt;This week’s blog is a technical deep dive into my Web Application Development assignment, where I built &lt;strong&gt;RodFlix&lt;/strong&gt;, a TV series catalogue web app in PHP, backed by MySQL, with an admin panel and an import flow using the TVmaze API.&lt;/p&gt;

&lt;p&gt;It is basically IMDb’s smaller cousin, the one who does not go to the gym but has great database design and tries really hard.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RodFlix Does
&lt;/h2&gt;

&lt;p&gt;RodFlix is a database-driven TV series catalogue where users can browse series, explore seasons and episodes, and view people involved in each show. Pagination and filtering help manage larger datasets.&lt;/p&gt;

&lt;p&gt;There is also a protected admin area that supports full CRUD over series and allows importing data directly from the TVmaze API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture and Structure
&lt;/h2&gt;

&lt;p&gt;The app uses a lightweight, layered structure with server-rendered PHP, MySQL for data storage, and clean separation between public pages, admin pages, and API endpoints.&lt;/p&gt;

&lt;p&gt;Key directories include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/includes&lt;/code&gt; for configuration, authentication, database connection, and helpers
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/admin&lt;/code&gt; for dashboard and CRUD interfaces
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/api&lt;/code&gt; for JSON endpoints used by the admin UI
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/assets&lt;/code&gt; for CSS, JavaScript, and images
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No frameworks, no magic, just disciplined PHP.&lt;/p&gt;

&lt;h2&gt;
  
  
  Database Design
&lt;/h2&gt;

&lt;p&gt;RodFlix uses a relational schema with tables for series, seasons, episodes, genres, people, and junction tables to model many-to-many relationships. Foreign keys and cascading deletes help maintain data integrity.&lt;/p&gt;

&lt;p&gt;This approach avoids duplication and keeps queries readable and scalable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Access and Security
&lt;/h2&gt;

&lt;p&gt;Database access is handled via PDO with prepared statements. This protects against SQL injection and keeps queries consistent across the application.&lt;/p&gt;

&lt;p&gt;A shared database helper returns a single PDO instance, avoiding unnecessary reconnections.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication and Sessions
&lt;/h2&gt;

&lt;p&gt;The admin area is protected using session-based authentication. Session IDs are regenerated on login, admin routes are protected server-side, and navigation adapts based on authentication state.&lt;/p&gt;

&lt;p&gt;Simple, predictable, and secure.&lt;/p&gt;

&lt;h2&gt;
  
  
  The TVmaze Import Flow
&lt;/h2&gt;

&lt;p&gt;One of the strongest features is the ability to search for series via the TVmaze API, preview results, and import them into the local database.&lt;/p&gt;

&lt;p&gt;This is handled through dedicated API endpoints and JavaScript fetch calls, keeping the UI responsive while maintaining server-side control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Helpers and Reusability
&lt;/h2&gt;

&lt;p&gt;Helper functions centralise common tasks like escaping output, redirects, query parameter validation, and formatting.&lt;/p&gt;

&lt;p&gt;These small utilities reduce repetition and improve long-term maintainability.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Project Taught Me
&lt;/h2&gt;

&lt;p&gt;This project went beyond learning PHP. It reinforced real-world skills like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designing relational databases
&lt;/li&gt;
&lt;li&gt;Writing safe SQL queries
&lt;/li&gt;
&lt;li&gt;Structuring maintainable projects
&lt;/li&gt;
&lt;li&gt;Managing authentication and access control
&lt;/li&gt;
&lt;li&gt;Integrating external APIs responsibly
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also taught me that server-side debugging is a special kind of endurance sport.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;RodFlix started as an assignment but became a solid foundation project. It is not flashy, but it is structured, secure, and realistic.&lt;/p&gt;

&lt;p&gt;And honestly, that feels like a good metaphor for my journey into software development.&lt;/p&gt;

</description>
      <category>php</category>
      <category>webdev</category>
      <category>mysql</category>
      <category>careerchange</category>
    </item>
    <item>
      <title>Back From the Deadlines: What I’ve Been Up To</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Sat, 10 Jan 2026 20:36:33 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/back-from-the-deadlines-what-ive-been-up-to-3304</link>
      <guid>https://dev.to/rodrigodelascio/back-from-the-deadlines-what-ive-been-up-to-3304</guid>
      <description>&lt;p&gt;So. It has been a while.&lt;/p&gt;

&lt;p&gt;If this blog had a heartbeat monitor, it probably flatlined for a bit. Not because I disappeared or lost motivation, but because life decided to turn every dial up at once.&lt;/p&gt;

&lt;p&gt;Short version: I have been very busy.&lt;br&gt;&lt;br&gt;
Long version: keep reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  University: The Final-Year Olympics
&lt;/h2&gt;

&lt;p&gt;I am now officially in my last year at university, which sounds exciting and terrifying in equal measure.&lt;/p&gt;

&lt;p&gt;Since my last post, I have completed two modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Mining
&lt;/li&gt;
&lt;li&gt;Managing Innovation and Change
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On top of that, I am in the final week of two more modules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web Application Development
&lt;/li&gt;
&lt;li&gt;Distributed and Cloud Computing
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Web Application Development, I built a TV series database application using PHP for the first time. PHP and I are now on speaking terms. Not best friends yet, but we no longer avoid eye contact. That project also came with a long report.&lt;/p&gt;

&lt;p&gt;For Distributed and Cloud Computing, I designed a cloud architecture for a forum system in Azure. Virtual machines, storage, networking, security considerations, scalability, and many diagrams. The design was challenging, but the report writing is where the real endurance sport lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Final Project: Football Meets Code
&lt;/h2&gt;

&lt;p&gt;I have also released my Final Project module, been assigned a supervisor, submitted a proposal, revised it, and finally got it approved.&lt;/p&gt;

&lt;p&gt;The project is a football attendance tracker app aimed at helping community football organisers manage attendance and allocate spaces automatically using an algorithm. It is still in its infancy, but it is exciting to build something that improves something I genuinely love.&lt;/p&gt;

&lt;h2&gt;
  
  
  Work and Late Nights
&lt;/h2&gt;

&lt;p&gt;Work has also levelled up. Since mid last year, I have taken on more responsibility, which means study time now lives almost entirely at night.&lt;/p&gt;

&lt;p&gt;Work during the day. Family in the evening. University at night.&lt;/p&gt;

&lt;p&gt;Coffee has become less of a beverage and more of a strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Family and Two Labs
&lt;/h2&gt;

&lt;p&gt;Family life is great. My wife and kids are doing well, and we added two labrador puppies, Beca and Lola. They are five months old, full of energy, and completely uninterested in study schedules.&lt;/p&gt;

&lt;p&gt;They are adorable chaos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Blog Went Quiet
&lt;/h2&gt;

&lt;p&gt;The blog went quiet not because I stopped caring, but because sometimes progress looks like meeting deadlines, finishing assignments, and keeping everything running without breaking.&lt;/p&gt;

&lt;p&gt;This blog has always been about honesty, humour, and the long game. That has not changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Back at It
&lt;/h2&gt;

&lt;p&gt;I am back now. Still tired. Still learning. Still motivated.&lt;/p&gt;

&lt;p&gt;There is more to come. More reflections, more tutorials, and more stories from the intersection of career change, study, and building meaningful things with code.&lt;/p&gt;

&lt;p&gt;Glad to be back.&lt;/p&gt;

</description>
      <category>careerchange</category>
      <category>university</category>
      <category>webdev</category>
      <category>cloud</category>
    </item>
    <item>
      <title>The Developer’s Dictionary: Workplace Edition</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Fri, 12 Sep 2025 13:44:20 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/the-developers-dictionary-workplace-edition-dje</link>
      <guid>https://dev.to/rodrigodelascio/the-developers-dictionary-workplace-edition-dje</guid>
      <description>&lt;p&gt;Last blog I shared my “Developer’s Dictionary” and it hit a nerve. Translating dev jargon into real-life metaphors makes a lot of sense, even outside of code. Someone even told me they were going to start adding one-line translations to tickets and onboarding docs. Honestly, that’s brilliant.  &lt;/p&gt;

&lt;p&gt;So this week I thought, why stop at code? The workplace has its own dictionary too. It is full of phrases that everyone nods at while secretly translating in their heads. Here’s my attempt at decoding some of them.  &lt;/p&gt;




&lt;h3&gt;
  
  
  It’s a quick fix
&lt;/h3&gt;

&lt;p&gt;Prepare your snacks. This will take all afternoon.  &lt;/p&gt;

&lt;h3&gt;
  
  
  We’ll circle back
&lt;/h3&gt;

&lt;p&gt;Also known as: goodbye forever.  &lt;/p&gt;

&lt;h3&gt;
  
  
  In progress
&lt;/h3&gt;

&lt;p&gt;Currently stuck in Stack Overflow tabs and caffeine dependency.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Low priority
&lt;/h3&gt;

&lt;p&gt;We will rediscover this ticket only when the system is on fire.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Let’s refactor later
&lt;/h3&gt;

&lt;p&gt;We both know this means “never.”  &lt;/p&gt;

&lt;h3&gt;
  
  
  Blocked
&lt;/h3&gt;

&lt;p&gt;Waiting for someone else to do their thing while practising the fine art of pretending to look busy.  &lt;/p&gt;

&lt;h3&gt;
  
  
  End of day
&lt;/h3&gt;

&lt;p&gt;Technically midnight, if you really think about it.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Knowledge transfer
&lt;/h3&gt;

&lt;p&gt;One person explains everything at double speed while the other nods and quietly panics.  &lt;/p&gt;

&lt;h3&gt;
  
  
  As discussed
&lt;/h3&gt;

&lt;p&gt;The polite way of saying “we already argued about this and I won.”  &lt;/p&gt;

&lt;h3&gt;
  
  
  Best practices
&lt;/h3&gt;

&lt;p&gt;What we would do if we had unlimited time, unlimited people, and unlimited coffee.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Action item
&lt;/h3&gt;

&lt;p&gt;A task born in a meeting and destined to die there too.  &lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;u&gt;Dev Team Translations&lt;/u&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Works on my machine
&lt;/h3&gt;

&lt;p&gt;Translation: this code is haunted.  &lt;/p&gt;

&lt;h3&gt;
  
  
  We just need to add a small feature
&lt;/h3&gt;

&lt;p&gt;Welcome to scope creep. Please enjoy your stay.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Technical debt
&lt;/h3&gt;

&lt;p&gt;The loan sharks of the coding world. They always collect, with interest.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Hotfix
&lt;/h3&gt;

&lt;p&gt;Code written at the speed of light, usually in production, often regretted immediately.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Code review
&lt;/h3&gt;

&lt;p&gt;Where colleagues politely tell you your baby is ugly.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Production
&lt;/h3&gt;

&lt;p&gt;The sacred environment where everything works perfectly, until you touch it.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;The workplace dictionary is just as full of hidden meanings as the code one. The words might sound harmless, but once you have lived through a few sprints, you start to hear the truth behind them.  &lt;/p&gt;

&lt;p&gt;Maybe we should start adding the real-life translations directly into Jira tickets and PR comments. At least then everyone would finally be on the same page.  &lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
      <category>workplace</category>
    </item>
    <item>
      <title>The Developer’s Dictionary (Rodrigo Edition)</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Fri, 29 Aug 2025 12:27:51 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/the-developers-dictionary-rodrigo-edition-1h9d</link>
      <guid>https://dev.to/rodrigodelascio/the-developers-dictionary-rodrigo-edition-1h9d</guid>
      <description>&lt;p&gt;Every profession has its own jargon. Football has “nutmegs,” marketing has “KPIs,” and developers… well, we have enough strange terms to make a newcomer think we’re summoning code spirits.  &lt;/p&gt;

&lt;p&gt;Here’s my attempt at translating some of the words we use into real life.  &lt;/p&gt;




&lt;h3&gt;
  
  
  Bug
&lt;/h3&gt;

&lt;p&gt;A feature’s evil twin. Shows up uninvited, often just before a deadline, and somehow multiplies when you try to squash it.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Debugging
&lt;/h3&gt;

&lt;p&gt;Staring at your screen for three hours until you finally notice the missing semicolon that has been mocking you the whole time.  &lt;/p&gt;

&lt;h3&gt;
  
  
  NullPointerException
&lt;/h3&gt;

&lt;p&gt;The universe’s way of saying: “You thought something was there. Surprise, it’s nothing.”  &lt;/p&gt;

&lt;h3&gt;
  
  
  IDE
&lt;/h3&gt;

&lt;p&gt;Your noisy but helpful friend who won’t stop pointing out your mistakes while you’re typing. Annoying, but usually right.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Garbage Collection
&lt;/h3&gt;

&lt;p&gt;Java cleaning up after your messy variables, like a silent roommate who tidies when you’re not looking.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Dependency Hell
&lt;/h3&gt;

&lt;p&gt;When adding one library drags ten others into your project, like inviting one friend to a party and suddenly the whole neighbourhood shows up.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Compile Time vs Run Time
&lt;/h3&gt;

&lt;p&gt;Like rehearsing your lines at home versus performing on stage. Everything seemed fine, until panic sets in.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Encapsulation
&lt;/h3&gt;

&lt;p&gt;Putting your code in little boxes so it behaves. Like packing your kids’ toys away so they don’t take over the living room.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Polymorphism
&lt;/h3&gt;

&lt;p&gt;Objects that can take many forms. Imagine one person being a footballer, a developer, and a coffee drinker all in the same morning.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Stack Overflow
&lt;/h3&gt;

&lt;p&gt;Yes, it’s a real error. But also the site where 90% of developers copy-paste their answers. The other 10% just Google it differently.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Refactoring
&lt;/h3&gt;

&lt;p&gt;Cleaning up code without changing what it does. Basically tidying your room so you can finally find the socks… even though it was technically functional before.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Documentation
&lt;/h3&gt;

&lt;p&gt;The noble art of explaining your code. Sometimes thorough, sometimes cryptic, and often written as if the author was in a hurry to catch a bus.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Developers might speak in jargon, but once you translate it into real-life metaphors, it all makes sense. Sort of. At least until you hit your next bug.  &lt;/p&gt;

&lt;p&gt;If nothing else, this dictionary proves one thing: coding is a language of its own. And like any language, the best way to learn it is to laugh at the strange words until they finally start to click.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>java</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Scanner Class in Java: Making Your Program Listen to You</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Fri, 08 Aug 2025 14:40:08 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/scanner-class-in-java-making-your-program-listen-to-you-mda</link>
      <guid>https://dev.to/rodrigodelascio/scanner-class-in-java-making-your-program-listen-to-you-mda</guid>
      <description>&lt;p&gt;One of the coolest moments when learning Java is making your program interact with you. Until now, your code has been shouting into the void with &lt;code&gt;System.out.println()&lt;/code&gt; statements, and the void (a.k.a. your console) has been silently nodding.&lt;/p&gt;

&lt;p&gt;But what if you could make your program listen? Enter the &lt;code&gt;Scanner&lt;/code&gt; class, Java’s way of turning your static program into a two way conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Import the Scanner Class
&lt;/h2&gt;

&lt;p&gt;Before you can use &lt;code&gt;Scanner&lt;/code&gt;, you have to invite it into your code. Think of this as adding someone to the group chat before you start sending them memes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import java.util.Scanner;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without this line, your program will stare at you blankly when you try to use &lt;code&gt;Scanner&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create a Scanner Object
&lt;/h2&gt;

&lt;p&gt;To make your program listen, you create a &lt;code&gt;Scanner&lt;/code&gt; object. This is like giving your code a pair of ears.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scanner input = new Scanner(System.in);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Scanner&lt;/code&gt; = the type of object you are creating&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;input&lt;/code&gt; = the name you choose (you can call it &lt;code&gt;keyboard&lt;/code&gt;, &lt;code&gt;scanner&lt;/code&gt;, or even &lt;code&gt;earholes&lt;/code&gt;, but maybe keep it professional)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;System.in&lt;/code&gt; = tells Java you want to take input from your keyboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Ask the User Something
&lt;/h2&gt;

&lt;p&gt;Now your program is ready to listen, but it is polite to ask first. Use &lt;code&gt;System.out.println()&lt;/code&gt; to prompt the user.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;System.out.println("What is your name?");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 4: Capture the Input
&lt;/h2&gt;

&lt;p&gt;When the user types something and presses Enter, you can store it in a variable. For a full line of text, use &lt;code&gt;nextLine()&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String name = input.nextLine();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now whatever the user typed is saved in the variable name. You can use it anywhere in your program.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Respond Like a Chatty Friend
&lt;/h2&gt;

&lt;p&gt;Finally, use that input to make your program respond.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;System.out.println("Hello, " + name + "! Nice to meet you.");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Full Example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import java.util.Scanner;

public class Greeting {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("What is your name?");
        String name = input.nextLine();

        System.out.println("Hello, " + name + "! Nice to meet you.");

        input.close();
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pro Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Always close your &lt;code&gt;Scanner&lt;/code&gt; with input.close() when you are done. It is like hanging up the phone politely.&lt;/li&gt;
&lt;li&gt;For numbers, use &lt;code&gt;nextInt()&lt;/code&gt; or &lt;code&gt;nextDouble()&lt;/code&gt; instead of &lt;code&gt;nextLine()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If things get weird (like &lt;code&gt;nextLine()&lt;/code&gt; skipping inputs), it is probably because &lt;code&gt;Scanner&lt;/code&gt; is still holding on to leftover input from before. It can be clingy, so you might need to add an extra &lt;code&gt;nextLine()&lt;/code&gt; to clear the buffer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Scanner is one of the first tools that makes your Java programs feel alive. It lets you collect information, personalise output, and generally be less of a monologue.&lt;/p&gt;

&lt;p&gt;Next step? Combine it with conditionals and loops, and suddenly you have a program that not only listens but also makes decisions. Just do not let it get too smart, because that is how sci-fi movies start.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>java</category>
      <category>learning</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Coding Is Easy (If You Ignore Reality)</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Fri, 01 Aug 2025 09:34:00 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/coding-is-easy-if-you-ignore-reality-50hj</link>
      <guid>https://dev.to/rodrigodelascio/coding-is-easy-if-you-ignore-reality-50hj</guid>
      <description>&lt;p&gt;There’s this beautiful moment every beginner goes through: the tutorial high. You follow along with someone on YouTube who writes perfect code, everything compiles, and by the end of the video, you’ve built a to-do list app that works flawlessly. You look at your screen and think, “Coding is easy. I’ve got this.”&lt;/p&gt;

&lt;p&gt;I did too. For about five minutes.&lt;/p&gt;

&lt;p&gt;Then I started coding on my own.&lt;/p&gt;




&lt;h3&gt;
  
  
  When Tutorials Lie by Omission
&lt;/h3&gt;

&lt;p&gt;No one tells you that tutorials are basically the IKEA manuals of the coding world. They show you what to do but skip the part where you’re on the floor surrounded by errors, wondering if semicolons have feelings and whether your IDE is gaslighting you.&lt;/p&gt;

&lt;p&gt;Everything works in tutorial land. The instructor’s code is bug-free, and they never seem to hit the wall of “Why is this not compiling when it’s the same code?!”&lt;/p&gt;

&lt;p&gt;The real world, even when you’re not yet working in a dev team, is messier. It’s one thing to copy and paste your way to a working project. It’s another to write something from scratch, debug it, understand what you’re doing, and try not to spiral when nothing makes sense.&lt;/p&gt;




&lt;h3&gt;
  
  
  Welcome to the Solo Dev Zone
&lt;/h3&gt;

&lt;p&gt;As someone learning to code outside a traditional dev team or tech job, the learning curve is steep and oddly personal. It’s just you, your code, and the occasional existential crisis.&lt;/p&gt;

&lt;p&gt;There’s no one to nudge and say, “Hey, does this look right?” You end up talking to your action figure (or in my case, a stressed-out coffee mug) and hope your question makes sense when you read it out loud.&lt;/p&gt;

&lt;p&gt;The smallest bugs feel like boss battles. You forget a bracket and Java punishes you like you’ve personally offended it. You fix one thing and suddenly ten other errors show up like they’ve been waiting backstage.&lt;/p&gt;

&lt;p&gt;But eventually, something clicks. You understand encapsulation a little better. Your UML diagram starts to resemble less of an abstract painting. You stop avoiding the terminal. Well, mostly.&lt;/p&gt;




&lt;h3&gt;
  
  
  Not Just Code, But Feelings
&lt;/h3&gt;

&lt;p&gt;Let’s talk about the emotional weight of it all. You scroll through job posts and see “Junior Developer... 3 years experience required” and laugh, but also cry (internally, of course). You open LinkedIn and see someone announcing they’ve built a mobile app, landed a job, took part in a triathlon and somehow also climbed Everest last weekend.&lt;/p&gt;

&lt;p&gt;Meanwhile, you’re over here just proud you got your switch statement to behave.&lt;/p&gt;

&lt;p&gt;And then there’s the silence. The solo learning journey is full of it. No peers to share victories with. No one to say “yeah, this part is confusing” in real time. Just you and your thoughts, and maybe an overloaded bookmarks folder filled with Stack Overflow threads or distant learning uni lessons to read and lean on.&lt;/p&gt;




&lt;h3&gt;
  
  
  But Still… Worth It
&lt;/h3&gt;

&lt;p&gt;For all the confusion, the late nights, and the tabs that multiply like gremlins, there’s this undeniable spark when something finally works.&lt;/p&gt;

&lt;p&gt;That program that wouldn’t compile for hours? It runs.&lt;br&gt;
That concept that felt like reading ancient Greek? You understand it now.&lt;br&gt;
That feature you thought was too advanced? It’s part of your project.&lt;/p&gt;

&lt;p&gt;You realise you’re not stuck. You’re learning. Progress isn’t linear, but it’s happening.&lt;/p&gt;

&lt;p&gt;And no, coding isn’t easy. But it gets easier the more you embrace the reality instead of the illusion.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Coding might be presented like a walk in the park, but in reality it’s a trek through a jungle with a half-charged phone, a map that updates inconsistently, and a compass that only works if you know trigonometry.&lt;/p&gt;

&lt;p&gt;Still, I wouldn’t trade it. Because with each line of code, each bug fixed, and each meltdown survived, I’m getting closer to where I want to be.&lt;/p&gt;

&lt;p&gt;Even if the IDE still occasionally tries to ruin the day.&lt;/p&gt;

&lt;p&gt;Next week: who knows. Maybe I’ll get back to Java. Or maybe I’ll compare version control to parenting. Either way, bring snacks.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>learning</category>
      <category>coding</category>
      <category>careerdevelopment</category>
    </item>
    <item>
      <title>Lessons From Building My Blog (and Finding My Voice)</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Wed, 23 Jul 2025 09:50:23 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/lessons-from-building-my-blog-and-finding-my-voice-3ahb</link>
      <guid>https://dev.to/rodrigodelascio/lessons-from-building-my-blog-and-finding-my-voice-3ahb</guid>
      <description>&lt;p&gt;I have been writing for a long time, not as a journalist despite earning a BA in Journalism back in 2006, but as a content writer. For years, I wrote marketing copy and professional blogs about sports and casinos, the kind of content that had to sound smart, persuasive, and just serious enough to make you click. It paid the bills, but it wasn’t me.&lt;/p&gt;

&lt;p&gt;When I started this blog, I realised I wasn’t just documenting my journey as a career-changing developer. I was also rediscovering my own voice, which had been buried under a mountain of corporate jargon and “Top 10 Casino Tips” posts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing for Myself vs. Writing for the Algorithm
&lt;/h2&gt;

&lt;p&gt;For most of my career, I wrote to please someone else: clients, bosses, and the SEO overlords at Google. Every sentence was carefully tuned to hit keywords or a specific tone that wasn’t mine.&lt;/p&gt;

&lt;p&gt;This blog has been my way of saying: &lt;em&gt;forget that.&lt;/em&gt; I wanted to share my journey in my own words, with my humour, my personality, and sometimes my rants about curly braces. The feedback I’ve had so far? People connect with authenticity, even in tech blogs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Coding Made My Writing Better (Wait, What?)
&lt;/h2&gt;

&lt;p&gt;Writing a blog about coding has taught me to think like a developer when I write:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structure first, details second.&lt;/li&gt;
&lt;li&gt;Debug your sentences. Cut out the unnecessary fluff.&lt;/li&gt;
&lt;li&gt;Iterate. Draft, edit, rewrite, and then rewrite again because the first draft is always messy.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The parallels between writing and coding surprised me. Both are about solving problems and making sure your work is clear enough that someone else can “run it” without asking too many questions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Humour Is My Secret Weapon
&lt;/h2&gt;

&lt;p&gt;When I was writing sports or casino content, I couldn’t throw in jokes about goalkeepers or slot machines. Everything had to feel polished and professional.&lt;/p&gt;

&lt;p&gt;Here, I get to be me. I can write about Java as if it’s a dysfunctional family, or compare debugging to football training drills. And it works. It keeps me engaged, which makes it more fun for anyone reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Think Every Dev Should Blog
&lt;/h2&gt;

&lt;p&gt;Not because it will make you famous (spoiler: it won’t), but because writing about your journey forces you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reflect on what you’ve learned.&lt;/li&gt;
&lt;li&gt;Explain complex ideas in simple terms, which is a superpower in interviews.&lt;/li&gt;
&lt;li&gt;Showcase your personality beyond your GitHub repos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus, when you write in your own voice, you stand out. There are enough soulless coding blogs out there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Biggest Lesson: Your Voice Evolves
&lt;/h2&gt;

&lt;p&gt;I didn’t find my tone overnight. The first posts on this blog were stiff and cautious, a ghost of corporate Rodrigo. Over time, I started relaxing, letting my humour and personality seep into my writing. It’s become not just a blog, but a personal development diary and a portfolio of sorts.&lt;/p&gt;

&lt;p&gt;I’m not saying I’m the Shakespeare of Java tutorials, but I’ve definitely built something that feels like me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;Building this blog taught me two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Writing can be as much about self-discovery as it is about sharing knowledge.&lt;/li&gt;
&lt;li&gt;When in doubt, add a joke about coffee. It works every time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Next week? Maybe I’ll get back to Java. Or maybe I’ll just keep writing about this wild journey of coding, content, and career change. We’ll see.&lt;/p&gt;

</description>
      <category>writing</category>
      <category>developerjourney</category>
      <category>careerchange</category>
      <category>learning</category>
    </item>
    <item>
      <title>The Entry-Level Boss Fight: Breaking Into Tech When the Queue's Already Full</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Thu, 17 Jul 2025 10:59:17 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/the-entry-level-boss-fight-breaking-into-tech-when-the-queues-already-full-4kac</link>
      <guid>https://dev.to/rodrigodelascio/the-entry-level-boss-fight-breaking-into-tech-when-the-queues-already-full-4kac</guid>
      <description>&lt;p&gt;There’s something oddly humbling about clicking &lt;strong&gt;“Apply”&lt;/strong&gt; on a junior developer role and seeing that delightful little note:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;“100+ applicants.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Oh good, I love a challenge. Said no one ever while competing with an army of hopefuls all battling for the same entry-level badge.&lt;/p&gt;

&lt;p&gt;This week, I’m stepping off our usual blog schedule to reflect on something that’s been on my mind lately: the uphill battle of breaking into the tech industry when everyone and their algorithms seem to be ahead of you.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Queue at the Door
&lt;/h3&gt;

&lt;p&gt;Every junior, graduate or entry-level tech job I find seems to be hosting a small applicant festival. Whether it’s web development, front-end, back-end, or full-stack, it’s always the same: lots of enthusiasm, not enough chairs.&lt;/p&gt;

&lt;p&gt;Post-pandemic, the job market shifted. People with experience found themselves laid off, and naturally, they started applying for roles one rung lower than before. At the same time, a tidal wave of new talent (yes, including myself) emerged from bootcamps, self-study, and university courses, eager to make their mark.&lt;/p&gt;

&lt;p&gt;Suddenly, that “entry-level” tag became a bit of a myth, like Bigfoot, or a coffee machine that doesn’t leak.&lt;/p&gt;




&lt;h3&gt;
  
  
  Enter the Machines
&lt;/h3&gt;

&lt;p&gt;Let’s not forget the growing presence of AI tools. While they can be helpful, they’ve also shifted the landscape. Companies are questioning how many devs they really need, and what tasks can be “prompt engineered” into existence instead.&lt;/p&gt;

&lt;p&gt;It adds another flavour to the already spicy stew of competition. But those of us willing to understand, adapt, and use these tools smartly will have an edge over those who don’t. The game may have changed, but there’s still room to win it.&lt;/p&gt;




&lt;h3&gt;
  
  
  Nearing a Turning Point
&lt;/h3&gt;

&lt;p&gt;Personally, I’m approaching a big milestone: the final year of my university degree. That magical time when those elusive “graduate” jobs start to open their gates. It’s a decisive chapter in my career change journey, one I’ve worked incredibly hard for, balancing family life, a day job, studies, and a healthy amount of coffee.&lt;/p&gt;

&lt;p&gt;I’m still applying for roles. Still putting myself out there. Still getting ghosted by job ads that claimed they were “excited to hear from passionate life-long learners.”&lt;/p&gt;




&lt;h3&gt;
  
  
  But Hope Isn’t a Strategy (So I’m Also Working Hard)
&lt;/h3&gt;

&lt;p&gt;I’m not here to just moan. I knew this wasn’t going to be easy. I chose this path knowing I’d have to prove myself more than once. So I keep learning, building, writing this blog, refining my portfolio, and being active in the community. Hope is the spark, but hard work is the fuel.&lt;/p&gt;

&lt;p&gt;And honestly, I’m proud of that. I might not be through the door yet, but I’ve knocked. Loudly. Repeatedly. With increasingly better-looking CVs.&lt;/p&gt;




&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;If you’re also trying to get in, feeling discouraged or burnt out, I get it. It’s tough out there. But keep going. Keep learning. Keep improving.&lt;/p&gt;

&lt;p&gt;Our time will come, and when it does, we’ll be more than ready.&lt;/p&gt;

&lt;p&gt;Next time, we’ll jump back into the Java OOP saga with abstraction: that mystical art of telling your code, “Don’t worry about how, just know that it works.”&lt;/p&gt;

</description>
      <category>career</category>
      <category>beginners</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Interfaces: Job Interviews for Your Classes</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Fri, 11 Jul 2025 13:47:03 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/interfaces-job-interviews-for-your-classes-1f9e</link>
      <guid>https://dev.to/rodrigodelascio/interfaces-job-interviews-for-your-classes-1f9e</guid>
      <description>&lt;p&gt;This week, we're diving into the elegant, expectation heavy world of interfaces in Java. If you thought classes were demanding, wait until you meet interfaces. They're like job interviewers: they don’t care what you’ve done before, they just want to know if you implement the right methods.&lt;/p&gt;

&lt;p&gt;And yes, I know I teased abstraction last week, but let’s be honest, this blog got intercepted by an interface halfway through and demanded I implement this one first. So, here we are.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Even Is an Interface?
&lt;/h2&gt;

&lt;p&gt;An interface in Java is basically a contract. It says: “If you're going to be this kind of thing, then you &lt;em&gt;must&lt;/em&gt; do these things.” It's like your class saying, "Sure, I can be printable," and then Java going, "Prove it. Write the &lt;code&gt;print()&lt;/code&gt; method."&lt;/p&gt;

&lt;p&gt;Interfaces don't care &lt;em&gt;how&lt;/em&gt; you do something, they just demand that you &lt;em&gt;do&lt;/em&gt; it. No explanations. No excuses. Just methods.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real World Analogy: The Interview Panel
&lt;/h2&gt;

&lt;p&gt;Think of an interface like a job description. When your class 'applies' for the job (implements the interface), it has to promise that it can do every task listed in that job spec.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java
public interface Employable {
    void submitCV();
    void attendInterview();
    void drinkNervousWater();
}

public class JuniorDev implements Employable {
    public void submitCV() {
        System.out.println("CV submitted in Comic Sans");
    }
    public void attendInterview() {
        System.out.println("Nailed it. Sweated slightly");
    }
    public void drinkNervousWater() {
        System.out.println("Accidentally spilled it on the interviewer");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How I Used It in My Assignment
&lt;/h2&gt;

&lt;p&gt;In my Media Diary project, I created a &lt;code&gt;Comparer&lt;/code&gt; interface to define how different comparison strategies could be plugged in. One implementation (&lt;code&gt;CompareByPurpose&lt;/code&gt;) looked at how much time users spent on educational media. That interface basically said, “Hey class, can you compare stuff?” and the class replied, “Absolutely. Hold my curly braces.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Interfaces Are Useful
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flexible design&lt;/strong&gt;: Classes can implement multiple interfaces. It’s Java’s way of letting you have more than one personality, officially.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decoupling&lt;/strong&gt;: You can write code that relies on the interface without knowing the exact class. It’s like trusting someone to cook without knowing whether they use gas or induction.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Interfaces can't have method bodies (unless you're using default methods, but let’s save that rabbit hole for another post).&lt;/li&gt;
&lt;li&gt;A class can implement &lt;em&gt;many&lt;/em&gt; interfaces.&lt;/li&gt;
&lt;li&gt;Think of them as the opposite of clingy: interfaces tell you what they want, but never how to do it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Interfaces are that polite yet persistent part of Java that remind you to keep your promises. You say you can compare? You’d better write that method. You say you can fly? Better implement &lt;code&gt;takeOff()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Next time: abstraction, the mysterious concept that only shows you the surface, like a duck gliding calmly while paddling like mad underneath.&lt;/p&gt;

&lt;p&gt;Until then, keep your methods public, your classes clean, and your nervous water far from the keyboard. &lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Objectively Speaking: What Building a Media Diary in Java Taught Me (Besides Patience)</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Sat, 05 Jul 2025 16:21:30 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/objectively-speaking-what-building-a-media-diary-in-java-taught-me-besides-patience-3i92</link>
      <guid>https://dev.to/rodrigodelascio/objectively-speaking-what-building-a-media-diary-in-java-taught-me-besides-patience-3i92</guid>
      <description>&lt;p&gt;This week’s blog is dedicated to the unsung hero of my university life right now: my Object-Oriented Programming (OOP) assignment. I’ve spent a good chunk of the past week inside VS Code (although NetBeans or IntelliJ would the top choice for this one, requirements told me otherwise), slowly sculpting a Media Diary application in Java while also trying not to melt into a puddle of Boolean confusion.&lt;/p&gt;

&lt;p&gt;Let’s just say... the caffeine intake was high, the bugs were stubborn, and the victory dances after a successful build were plentiful (if not entirely graceful).&lt;/p&gt;




&lt;h2&gt;
  
  
  The Assignment
&lt;/h2&gt;

&lt;p&gt;The brief? Design and build a Java application that allows users to track their media consumption across a week. Think TV shows, books, video games, podcasts... basically, all the ways we avoid doing our chores.&lt;/p&gt;

&lt;p&gt;The app had to include good class design, proper encapsulation, and thoughtful use of inheritance, interfaces, and abstraction. So, I did what every determined developer does when faced with such a challenge: opened a fresh Java file and whispered “let’s do this” to the void.&lt;/p&gt;




&lt;h2&gt;
  
  
  Building Blocks
&lt;/h2&gt;

&lt;p&gt;The application is built around several core classes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;User&lt;/code&gt;: the person doing the watching/reading/gaming
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MediaDiary&lt;/code&gt;: a container for that week’s entries
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MediaEntry&lt;/code&gt;: the abstract parent of various specific entries like &lt;code&gt;BookEntry&lt;/code&gt;, &lt;code&gt;TVShowEntry&lt;/code&gt;, and &lt;code&gt;GameEntry&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;TimeTracker&lt;/code&gt;: because someone had to do the maths
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Comparer&lt;/code&gt;: an interface that allows for different comparison strategies (e.g. time spent, purpose of media)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After many UML diagram drafts (some with more arrows than a medieval battle), I finally landed on a structure that made sense and didn’t make my IDE weep.&lt;/p&gt;




&lt;h2&gt;
  
  
  Features I’m Proud Of
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Comparison Logic&lt;/strong&gt;: I implemented a comparer interface with a concrete class &lt;code&gt;CompareByPurpose&lt;/code&gt; that tells you who watched more “Educational” content. Spoiler: it wasn’t me.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Encapsulation Done Right&lt;/strong&gt;: All the juicy details are private, accessed neatly via getters and setters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Design&lt;/strong&gt;: Thanks to interfaces and abstract classes, adding new media types or comparison strategies won’t break the whole app. Probably. I think. I am confident. Fairly.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Planning Matters&lt;/strong&gt;: The UML diagram wasn’t just for decoration. It helped shape my thinking and structure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Java is Strict&lt;/strong&gt;: Forget a semicolon? Java will let you know. Repeatedly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OOP Principles Work&lt;/strong&gt;: Encapsulation, inheritance, and polymorphism are more than buzzwords. They’re sanity-saving patterns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Refactoring is Life&lt;/strong&gt;: Just when I thought I was done, I wasn’t. But that’s okay. The evolution of the code is part of the process.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  In Closing
&lt;/h2&gt;

&lt;p&gt;While I’m still working on the final polish (and, yes, the report), I’ve learned a ton. This project challenged me but also gave me the satisfaction of seeing concepts I’d studied come to life in an actual application.&lt;/p&gt;

&lt;p&gt;And don’t worry, I’ll write a proper post-mortem once the grades are in. For now, I’ll leave you with this thought: Java may be verbose, but when it works, it &lt;em&gt;really&lt;/em&gt; works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next up&lt;/strong&gt;: abstraction, the mysterious stranger in the OOP party who only tells you what you need to know.&lt;/p&gt;

</description>
      <category>java</category>
      <category>oop</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>Polymorphism in Java Explained (Or: One Type, Many Behaviours)</title>
      <dc:creator>Rodrigo De Lascio</dc:creator>
      <pubDate>Fri, 27 Jun 2025 13:57:50 +0000</pubDate>
      <link>https://dev.to/rodrigodelascio/polymorphism-in-java-explained-or-one-type-many-behaviours-17ae</link>
      <guid>https://dev.to/rodrigodelascio/polymorphism-in-java-explained-or-one-type-many-behaviours-17ae</guid>
      <description>&lt;p&gt;Ever felt like your objects needed to express themselves more? Enter: polymorphism in Java.&lt;/p&gt;

&lt;p&gt;This week I finally got comfy with one of OOP’s most flexible (and misunderstood) concepts. Also, I’m building a Media Diary app for my uni assignment... 70% done and holding on to hope.&lt;/p&gt;

&lt;p&gt;Let’s walk through the “why” and “how” of polymorphism with examples, real code, and the usual dose of developer humour.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Polymorphism, Really?
&lt;/h2&gt;

&lt;p&gt;In the world of object-oriented programming, polymorphism allows you to use a single interface to represent different underlying forms. In plain English? It’s the reason your code can treat different classes in the same way, as long as they share a common parent.&lt;/p&gt;

&lt;p&gt;Let’s say you’ve got a few media types:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public class MediaEntry {
    public void displayInfo() {
        System.out.println("Generic media entry");
    }
}

public class BookEntry extends MediaEntry {
    public void displayInfo() {
        System.out.println("This is a book");
    }
}

public class GameEntry extends MediaEntry {
    public void displayInfo() {
        System.out.println("This is a game");
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, if you do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MediaEntry entry1 = new BookEntry();
MediaEntry entry2 = new GameEntry();

entry1.displayInfo(); // prints: This is a book
entry2.displayInfo(); // prints: This is a game
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boom. Polymorphism in action. One type, many behaviours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Uni Update: Media Diary in the Works
&lt;/h2&gt;

&lt;p&gt;My OOP assignment at uni is now about 70% complete. Belief is what we have to hold on to, right? I’ve been building a full-featured Media Diary app using classes, objects, interfaces, and just the right amount of late-night debugging.&lt;/p&gt;

&lt;p&gt;You might remember I mentioned the UML diagram a few blogs ago. Since then, I’ve been adding functionality like time tracking, media categorisation, and comparing user habits. It’s still a work in progress. The final post-mortem (I mean, blog post) will come when it’s finished. But for now: progress is being made.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Polymorphism?
&lt;/h2&gt;

&lt;p&gt;Here’s why polymorphism is worth adding to your toolkit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can write flexible and reusable code&lt;/li&gt;
&lt;li&gt;You reduce complexity by programming to interfaces&lt;/li&gt;
&lt;li&gt;You make your code easier to extend without rewriting the old stuff&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also keeps your methods neat. For example, if you’re looping through a bunch of MediaEntry objects, you don’t need to know if one’s a book or a game. Java will call the right method for each one. Magic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Polymorphism isn’t just a technical term, it’s a vibe. It lets your objects be who they need to be, when they need to be. It’s like method acting, but with less drama and more curly braces.&lt;/p&gt;

&lt;p&gt;I’m starting to really appreciate how these OOP principles click together. It’s like assembling IKEA furniture: confusing at first, then suddenly, everything fits.&lt;/p&gt;

&lt;p&gt;Next up: abstraction, where Java starts revealing just enough to keep things interesting, like a magician who never shows all their cards.&lt;/p&gt;

</description>
      <category>java</category>
      <category>programming</category>
      <category>beginners</category>
      <category>oop</category>
    </item>
  </channel>
</rss>
