The idea that a number changing from 2025 to 2026 will make any difference to your life is… weird. Sure, society is structured around days, weeks, months, years… However, these are simply a way to keep the passing of time more tangible. The truth is, the clock marking 11:59PM isn’t anything special. In fact, it might already be New Year in another place on the globe whenever you start hearing fireworks or see that last clock tick that marks the end of this cycle. Then, why are you waiting?
Especially as an engineer-type, planning everything seems natural, and using dates such as the 1st of January as a marker for something might even make sense from the point of view of organization, but don’t fall for the illusion that your plans would pan out any differently if you had started them mid-year. In fact, perhaps you’d be finished by now if you weren’t aiming for such perfection.
Life is short. Above all, life is unpredictable. Your next year might not be exactly what you’re planning. I bet you haven’t accomplished all of your last year’s New Year’s resolutions, have you? So stop with that. Get moving. Don’t flinch. Stop looking at the clock and waiting for the right time to do something, and make sure you use this short reading as the motivation you needed to go to the gym, learn a new programming language, or talk to that person you’ve been waiting for. (or whatever you’ve been delaying for so long as if there would be a magic moment, someday, where you would suddenly get started).
Happy New Year! Here’s hoping that you won’t wait for the next New Year to get going with your life plans and dreams.
And as always, have a good one!
]]>Doesn’t exist. There is no such thing as balancing your work and your life, and that’s because working, whether you chose that or not, is part of your life. Some lucky people get to pick what to work with, and even luckier people get to decide when to work, however, that does not change the fact that some form of work will probably be a constant throughout their lives.
Understanding that work is a part of your life is important, if you want to be effective at managing your time and your relationships. It’s common to see people prioritize studies and work over relationships with friends, family, and significant others, however, I believe it’s indispensable to question why that actually happens, and whether that’s actually a conscious choice that makes their lives better.
In a world of statistics, metrics, and comparison, facilitated and exacerbated by the advent of social media and other communication technologies, it’s been increasingly common for people to judge themselves through the lens of their work and their apparent success. One such common metric for instance is financial success, another one could be popularity. What’s common in all of such metrics we might use in our day-to-day life is that they are neither completely under our control, nor do they actually correlate directly with our happiness.
As a Brazilian, I’ve been born in one of the most socially unequal countries in the world, and so it’s a constant reality that I see people in bad social situations to no fault of their own. However, coming from a privileged position, being able to choose what to work with, and when to work, I notice that most of my emotional misery comes not from lack of work or success. Instead, my pain constantly comes from an incapacity to accept that I could live more, by sacrificing less important work.
From the moment you wake up to the moment you fall asleep, you make numerous choices, every single day: Should you get up or hit snooze? Which tone of voice do I say hello to that person? Should I brush my teeth for 20 more seconds? A lot of these choices are things that happen without we are even noticing, because we do them every day. These kinds of choice, that are done mindlessly, are called habits. Habits are decisions that have become effortless for us, we do them without even thinking about it, however they still compose a majority of what we do in a day, and thus have a huge impact in our lives.
Choosing my habits is one of the biggest challenges I face when trying to manage my own time. Healthy habits lead to a very healthy life, while nasty habits will lead to a very miserable life. For instance, one such habit a person might acquire or lose is the habit of social interaction. Another habit you might pick is the habit of studying in your free time. Those, I would say, are good habits. But what happens when one of those starts conflicting with another? What happens when you start having to make the choice to see someone you love or study, every single day?
In the end, you work because ultimately there’s a belief it will bring something good to you or to someone else. Even in an industrialized world, where the products from our work are completely alienated from our process of production, there’s still meaning in working in the sense that it has a direct relationship with making money. What’s important, though, is to remember that after a certain threshold having more money is merely a tool for achieving further goals, rather than a necessity.
This is something that might only become evident to most after they’ve been on the extreme “work” side of the spectrum. This can happen because they’ve compared themselves to peers, or even to people which have nothing to do with them, and though that meant they had to work more, to achieve that success. What might happen when you stay in that extreme for too long is a deterioration of your relationships, with the most significant people you know, and thus a deterioration of your life, all in the name of your work.
Finding work and life balance, then, is about understand that there is more to life than success in your career, money, status, or all of these other metrics we could use to measure theoretically objective success. Work and life balance, is all about understanding that in the end what really matters in our lives are the connections we make with people. Furthermore, it’s about understanding that what matters are the relationships we have with those people, the love we receive from them, the love we give them, and the happy moments that are shared together.
In the end, I truly believe the correct work and life balance would be a theoretical world where there is no work, where everything that’s done is considered “life” and is truly enjoyable, allowing you to deepen relationships and smile. However, this world does not currently exist, and so I believe the next big thing is to work as little as possible to achieve your goals, while of course planning for the long term.
I write this right now because I’ve been in both ends of the spectrum in my life, and it’s clear what either sides of the spectrum brings out from me.
I am my most productive, happy, true self when I live a lot, when I experience a lot, and I work what I need to, and nothing more. Meanwhile, I am my most miserable, irritable, isolated self when I work a lot, sacrificing the time I have in the name of something that, in the end, doesn’t really matter all that much to me anymore.
There is no such things as a work and life balance, because working, whether we like it or not, is a part of our lives. Thus, letting work negatively affect your life is the same thing and letting your life affect negatively your life, and that’s where that title comes from. It’s possible, by understanding what really matters for our happiness, to achieve a so-called work and life balance. I believe that for anyone, that’s always going to be as much “life” as one can possibly afford. Not everyone has that luxury, but then, that’s an even bigger incentive for anyone that has that privilege to make this choice.
Whether you agree with me or not: I hope this reading has at least made you think a little more about what actually matters to you, and to prevent you from having your life getting in the way of you enjoying living.
And as always, have a good one!
]]>As a kid, the consequences of procrastinating to me were basically null. Didn’t study for a test? Get a nice grade. Didn’t do your homework? It turns out the teacher postponed the date. Didn’t brush your teeth? They are milk teeth, they are falling anyway.
But as I’ve grown up while life was passing me by, I kept procrastinating. Like a rational being I knew that procrastination would only lead to good things, less work for more reward, it was a no-brainer. And I was right. Until I wasn’t.
That’s it, that’s my life, thanks for listening to my TED Talk.
It all worked out well until a real challenge appeared: getting into a good university. For the first time in my life, I had to actually sit my ass in the chair and fucking study for once. Only I didn’t. I couldn’t. I knew it was the right thing to do, but I still just stared at a screen all day and said to myself: “tomorrow I’ll start”. I procrastinated for a few hours, then a few days, then weeks, and months. Oh, the test is next week, you say? F**ck.
I didn’t pass. And now because I procrastinated, it has cost me a whole year. 31557600 seconds. 8766 hours I could’ve slept. 11688 competitive CS:GO matches I could’ve played. It’s a steep price to pay for procrastination.
Why would one procrastinate in the first place? If you go to Google trends and take a look at search trends with the keyword procrastination, you’ll probably find out it’s very common to search for “why do I procrastinate”, “how do I stop procrastination”, etc.
Those search queries, funnily enough, were what I was spending quite a lot of my procrastination time on. So why was I doing it? Well, I already answered it above: boredom.
bored
adjective
feeling unhappy because you have nothing to do
Source: Cambridge Dictionary
Boredom? How could one be bored if they have things to do? It must be laziness, then, right? Only it’s not, because it turns out in the above definition I conveniently removed the most important part
bored
adjective
feeling unhappy because something is not interesting or because you have nothing to do:
So that’s it, studying is “not interesting”. That’s it.
But wait - you say - why would getting into a university not be interesting?
Well, because studying doesn’t have a direct relationship with getting into a university, being successful, or being smart. There are just too many variables involved that can affect your success. Furthermore, getting into a university is not an actionable step, it’s something that happens to you, you’re a passive observer in whether your test score will actually be good enough or not. For all we know if you’re lucky enough you could score a 0 and still pass because all the other candidates died in an unprecedented targeted meteor strike.
What I’m trying to point out is that the goal of “getting into a university” is composed of hundreds of smaller tasks that lead to it, some of which you don’t even know of or control, so you can’t act, you’re immobilized, frozen in place waiting for something to happen, or in other words: procrastination.
“When it is obvious that the goals cannot be reached, don’t adjust the goals, adjust the action steps.” - Confucius
The above quote is truly timeless. It’s also not what we’re talking about: you and I can study, we could do it for hours if we wanted to. We could also get into a good university, the goal CAN BE ACHIEVED.
The question then becomes: how to make me want to do what I need to do. I propose then that for you to achieve that overarching goal you choose something smaller, actionable, and tangible that you can repeat until you’ve done what you wanted to do.
I procrastinated studying, but that didn’t mean I didn’t spend hours programming away on my computer, learning esoteric programming languages, or developing niche applications that will never see the light of day. But why was studying that more interesting than learning what I actually had to learn at that moment?
I was doing that not because I was learning to pass a test, just to learn, or just for the sake of it. I had a clear, engaging, and actionable goal in mind: to create a specific project.
So going back to the university example, the correct way for me (and possibly other procrastinators too) would be to instead of studying to get into a good university - a non-actionable, not concrete goal - I should have something much more tangible to do.
The recent suggestion I’ve got for this specific problem is: to study to teach.
It’s truly beautiful. I’m doing it right now, writing this blog post on the off chance that somewhere in the world will ever read this and learn something from it. What I get out of it is that I have to actually think for once and actually get something done. All of that just so I can teach someone else about it. It works. It’s obvious. Furthermore, it’s simple. And it has the extra advantage of helping others.
That’s why the exemplary students in school would give help to the other ones. It was not a causal association: the student knows more, so he teaches. It was more along the lines of: the student wants to know more, so he learns so he can teach.
So whenever you are bored and cannot get yourself to study, find someone else who also needs to learn what you need to learn, or maybe set up a website to share it with the whole world (but avoid spending much time thinking about it). Then, get up and teach it to someone else, because you will not be able to do that if you do not understand the subject, and you want to help that person, so you will put the effort in. You have now been turned from a procrastinator to an unstoppable work machine, simply because you have an actionable, concrete goal to do what you do. That’s it. Its that simple. However, now that you read this, it is time to:
Sit the fuck down and go study.
And as always, have a good one!
]]>Warning: This is a rant, and I have not proofread it. It probably has factual and historical errors (please point them out if you can), but the point I’m trying to make should still come across.
If you think how our democracies behave today is unique to our time because of the invention of the internet and social media. Or if you think that politicians today do or say stuff much differently than in the past, you should think twice. Democracy is something we’ve had for centuries and even then we, Americans, believe that it’s changing constantly. That’s one of the reasons I, Aaron Swartz, and others avoid the news.
You only need a little more time to think about it and a bit of reading history to see that in politics, cycles, and patterns emerge over time. The invention of the press for instance had a very similar effect to the creation of the internet and social media by facilitating the divulgation of news and making it much faster.
Of course, things like changes in the way we share information are not “truly” cyclical in a sense that if it’s a change then it’s “new”. However, the point is that the difficulties we find with every change and also the way we find solutions to these problems is sometimes frighteningly similar. To exemplify this, I’m going to talk about a field I know a bit more than politics.
Not the computers, we, the humans, have a very, very small memory. Why? Well, we keep reinventing technologies once every few years and share it like it’s something extremely amazing and rejuvenating. However, most of the time it’s just something we used to do in the past that we stopped to do because of some difficulties with the solution.
One of my favorite examples is the recent reinvention of server-side rendering when it comes to web development. Server-side rendering was the first way we found to make “dynamic” websites, even before we had JavaScript. CGI scripts and PHP were the big things a few decades ago, and even though they had awful problems, they did the job.
Why did we stop using PHP and CGI? Well, because at some moment we decided we needed to make our websites feel faster and more like applications because the scope of websites was growing. So eventually we started scripting our pages with JavaScript, and eventually jQuery came along and changed everything.
jQuery was not enough. We wanted to use a single language to develop both the frontend and backend, a silver bullet language, that programmers have looked for since the dawn of computing (and that is never going to exist) seemed obvious: JavaScript. If we are using so much JavaScript in our applications, why don’t we “prefetch” the pages and “render” them client-side with JavaScript? No reloads, very fast, very simple to develop.
Well, as it turns out, single-page applications are hard to develop and have awful SEO. So we take years to try to find ways to work with the awful libraries we have at our hands (if you’re not working for yourself): React and AngularJS. Vercel invents NextJS and most other libraries for SPAs follow along, a new amazing reinvigorating technology to fix the hardness of development, the SEO issues, and also the overreliance on the user having to run JavaScript on the browser: server-side rendering.
Yes, we just reinvented the past, but now it’s worse and harder to work on. So much for technology and the future. If you’re not convinced by this example, think about web assembly, which arguably existed for years with the names: Java Applets, and ActiveX, on Internet Explorer. Think about Electron as a way to develop to multiple platforms and the fact we already had Qt, JavaFX, wxWidgets, and GL-based applications.
By the way, these cross platforms applications had the same problems Electron applications face now. They are slower, and they don’t feel at home on the operating system, not respecting your customizations and often not following the interface guidelines of your desktop environment, which makes using them confusing more often than not. Even worse is that an Electron application needs to download a whole web browser (just the reinvention of a networked operating system at this point) to run.
I think Electron is completely crazy, but if downloading an entire web browser to run every application doesn’t sound insane: look at the fact we are using Docker to manage dependencies in development environments instead of using package managers or virtual machines, which with KVM or Hyper-V get very fast. I’m pretty sure someone is going to find a way to grab these images and distribute them, so I can deploy them. I wish we had something like that, it could be called Ansible because I like the name. Orr we could be using “containers” and a super complex borg-inspired monstrosity to manage small deployments, simply because Docker Swarm was never actually adopted by anyone. Maybe even having a common target (instead of all the different operating systems and architectures) would be enough: “If WASM+WASI existed in 2008, we wouldn’t have needed to created Docker. That’s how important it is. WebAssembly on the server is the future of computing. A standardized system interface was the missing link. Let’s hope WASI is up to the task!” — Solomon Hykes
“What are you talking about? All of these technologies you showed don’t have feature parity, and the newer ones do solve problems we had with the older options” — That’s true, you have a great point, and I see you are paying attention. What I mean is: we are inventing these problems ourselves; this is something we have done for a long time.
Even though we have done these kinds of pendulum swings in how we want to do things, I believe it’s especially worrying in the field of computing. “If we built bridges like we build computers, I wouldn’t need to jump to kill myself” or something along these lines, my memory is very small. Someone should write an article about these kinds of weird repetitions that happen because of our small memory, that would be fascinating to read about. They could publish the article in some kind of way, and I can have a copy of the document for myself, so I never forget about it.
I’m not sure whether I have a conclusion for this. (To be fair, I’m probably just being lazy and not proofreading anything, just so I get done with this already). I’m kind of mad at all the situation of modern technology (as are most developers), and I have no idea what we could do to fix it. Something I know I’ll be doing, however: HODL my computer until it explodes.
And as always, have a good one.
]]>A platform is when you use something like Twitter, YouTube, Tumblr, Medium, or whatever to share your stuff and consume products. A property is when you own what you use to share your stuff, like when you have your domain, when you have your computer to run programs, or you have your local storage for your files.
Why does owning property matter? That sounds like some very schizophrenic kind of stuff, right? Well, the point of owning property is that in the end, YOU are the one who sets the rule. For instance, in real life, you could live in a hotel, or maybe rent an apartment for the rest of your life, but chances are you want to buy your own house. Why would you want to own your own house if you could just rent it? Apart from the financial consequences of owning a house, consider the independence and freedom that owning a house gives you.
Just like owning a house, when you own your domain, and maybe even your infrastructure, it gives you the freedom to share, structure, style, and post everything you want, however you want, without having to consider “terms of service”, “privacy policies”, “censorship” (if you consider private companies removing stuff from their private websites censorship, which honestly, I don’t). It’s just a very liberating thing to have.
It is very liberating, but if you’re not aware of how to do it it may seem like you could lose some of the ease of sharing, or maybe the network effect that comes with sharing your stuff on a platform. But alas, decentralized alternatives to platforms exist:
If you need Twitter-like microblogging, consider Mastodon. It does have an awful name, but the software is cool. It’s a decentralized version of Twitter with all the cool interaction stuff that Twitter gives you. It can be self-hosted and you can reference stuff from other instances whenever you want. You may also just set up an instance for your whole community to share and discuss together in the comfort of your infrastructure, with all the niceties that using modern social media websites could bring. This way you don’t have to worry if your favorite super-villain bought the whole platform because he was bored or something, and is bringing toxic discourse back to you.
You’re using Discord to share stuff with groups of friends, a local community, or maybe with lots of people, you know only online. Well, apart from the fact that Discord doesn’t even have end-to-end encryption (which means they may read anything you send there), they may also choose who gets to use the platform, what kinds of communities are allowed and which aren’t, and even what bots are allowed, something you might know is frustrating if you’ve ever used something like the Groovy bot or maybe Rhythm. The most complete batteries-included alternative to Discord is Element. And honestly, it’s amazing, give it a try even if you don’t want to host your infrastructure.
Admittedly this is the one that in my opinion is the hardest to completely replace, simply because YouTube has ANY community and content you may ever wish, and all the tools creators need to share stuff. If you wish to self-host something like YouTube for sharing content, there is always Peertube, which is somewhat like Mastodon but for video sharing, it’s pretty cool but will require quite a lot of infrastructure compared to the other options. Another option to consider is something like LBRY, or as it became recently known Odysee, which is a blockchain-based video sharing platform, meaning it is decentralized by nature but happens on a decentralized network which you don’t have to worry about.
Just don’t. I’m kidding. Somewhat. But really, make your website. I’ll probably write quite a lot about making your website in the future, but for now, I’ll redirect you to the hillarious landchad.net website. Check out that website even if you don’t want to set up a website, it has many more alternatives to centralized platforms and guides for setting those up too, which is pretty cool to get started.
Also, check out alwaysownyourplatform.com, which got a trending discussion on Hacker News today. The website has some news stories and things like that that show more of why you should own your platform.
If you share any of your ideas on the internet or you have any of your communities reliant on platforms, then you have to constantly live with the fear that the platform may make changes you don’t want or be managed by someone you don’t like, and that means having to abide by THEIR rules. Ultimately the best way to bring back the way the internet was supposed to be, an agora, is to utilize decentralized alternatives to platforms, that you can host yourself, or maybe use the infrastructure of other people from your community. This way you get freedom, tranquillity, privacy, safety, and everything else that comes with owning your stuff.
And as always, have a good one,
Doodles
]]>The Harvard CS50x online course is essentially just the course available in their university for Computer Science majors, but for everyone, for free, and online. By far the best course on Software Development available on the internet, and it’s certainly worth it if you’re ok with doing some very challenging exercises to get through the tick of it. It’s very hard, but if you complete it, you’re certainly very well directed in the journey of becoming a Software Developer.
The CodeAcademy courses are amazing if you want to learn in shorter amounts of time, with a predefined path, easy-to-follow content, and good teaching. One of the most famous platforms of all time for learning programming, and I had lots of fun doing their courses a few years back. One of the only disadvantages of CodeAcademy is that I believe you should get one of their paid offerings to make the best of it. But if you want to get started fast and get an idea of what programming is, then the free offering on the website is very good.
The FreeCodeCamp organization not only has an amazing YouTube channel with great content, but they also have free courses on their website that get you from start to finish in tech stacks and will put you on your way to start developing your projects. Their courses are very long and have similar difficulty to the stuff you’ll find in the likes of CodeAcademy, but in contrast, they are available completely for free.
Lastly, but certainly not least is the Python for Everybody course. When you open their website you’ll find this course is available on a multitude of platforms and you’ll do the practice on their website. This course is completely free and very easy for beginners. If you want a good course that will get you started with programming with Python, a very popular beginner language that is very used for scripting, machine learning, and websites, then this course is amazing. If you’ve tested CS50 and didn’t like how hard it was, this is the one I recommend for you, I truly love it and recommend it for anyone just getting started.
The New Boston is one of the classics in the YouTube software development space. He is most suited if you want to learn just about the programming languages but not much about actually developing projects, albeit he does have courses that will get you started with web development they are a bit dated. Although he has stopped posting new content, the huge archive of videos he has produced over the years has helped millions of developers along the years with his funny, and very educative, video courses.
Fireship is a channel by the Google-certified software developer Jeff Delaney. He is very good at showing a lot of content in a very short amount of time. His pacing is very good for starters and experienced developers-alike because he knows what’s important to show and what’s not. If you want to get immersed fast in software development and get to know just a lot of stuff fast, watching this YouTube channel is a must.
The Traversy Media YouTube channel is one of my favorites and it has helped me get started with lots of technologies before I had the technical know-how to read the documentation and the high-level view of everything that’s happening to learn stuff by myself. If you’re just starting with a project or technology, or just want to see how some tech stacks work, then you should definitely watch some of the crash courses and tutorials by Brad, he’s amazing.
To get good with software development you have to become immersed in it as much as you can. This means to practice, to learn, to think about it as much as you can. Obviously, you should have a life, like don’t give up everything just for this, but the more time you spend with software development, even if it isn’t super focused time, maybe you’re just doing some stuff for fun, the faster you’ll learn. Join online communities such as those on Reddit and follow YouTube channels you find joy in watching that talk about software development, or maybe just software in general.
I’m in my personal opinion you should try to specialize as much as you can as early as you can in your journey in learning software development. If you don’t you’ll end up like someone like me, that after 6 years of software dev knows a lot about a lot of stuff, but not much about any specific thing, and that makes it hard to develop more intricate projects or even get a job if that’s what you’re looking for. So choose a niche and choose the technologies you want to work with as soon as you start to grasp the space and understand the advantages and disadvantages of every technology.
For most stuff, you can learn about programming you probably should NOT read a book to learn. The nature of programming is ever-changing, and books are static. This means that reading books almost guarantees that you are going to have outdated or at least not relevant content. Some books are (almost) timeless and those are worth it to read, such as books about coding style and organization, however, these are not books you should be reading as a starter to software development.
If you don’t develop your own projects in your free time, then learning to program is going to be extremely challenging. If you don’t really know what to develop then courses like CS50 and some of the CodeAcademy paths have projects that you can develop along the course which will help you. But it is very important past this first stage of learning to develop projects WITHOUT following tutorials or courses because programming isn’t about the languages or syntax, it’s thinking, learning, and adapting, and that’s something that no one but you can teach you.
I’ve gone over some of my favorite resources to get started learning how to code, which could help you get started with software development as a hobby or as a career, as I also gave you some tips to improve your productivity in this journey, based on my personal experience. This is not set in stone, and the resources I’ve listed aren’t going to be the best for everyone, so make sure to research for yourself and learn how to research to have a good time in software development.
And always, have a good one,
Doodles
]]>This section will help you choose an option to deploy React, Angular, Svelte, and Vue single-page applications, plain HTML, and websites generated by static site generators such as Jekyll and Hugo. A static website doesn’t mean the content doesn’t change, it just means that the files served are just HTML files and maybe JavaScript, which get recompiled on changes but every user receives the same content.
If you are going to develop a blog, or some kind of website where the content changes may be on a daily, at most hourly, then you don’t need a server for that, you can just use a static site generator. A static site generator allows you to use markdown to create content, or maybe a headless CMS without the overhead of having a server to render each request sent, instead they are all compiled to HTML files which can be hosted on GitHub Pages or GitLab Pages.
Otherwise, if you are developing a simple page application this is also a great option that will be very convenient to deploy and manage since SPAs will only have one HTML file to be served which is very easy to serve with any service.
One of the big advantages of this option if it’s available to you is that it’s very very easy to integrate your CI/CD process to your codebase since it can be all put in the same place. It’s also very convenient to have your workflow deployment status in the same place you manage your codebase. Also, you’ll get HTTPS set up by default. In the case of GitHub you’ll also get a free subdomain in this format
Firebase Hosting allows you to deploy the same kind of applications that GitHub pages and GitLab pages will allow, it also has HTTPS by default. However, Firebase Hosting has one big advantage over the other options which is a beautiful subdomain if you are developing a web app. Websites hosted under Firebase Hosting get a free
Netlify again allows for all the same kinds of deployments, provides HTTPS really easily if you decide to use Netlify DNS, and gives you a
Netlify also provides a free form service that can work completely with just changing your form action, without any JavaScript necessary. This option is also very nice because of the possibility of the future spending some money to get access to A/B testing, server-side analytics, and other features that Netlify gives you.
Another good thing about Netlify is the large media hosting option, which allows you to deploy a website and serve image contents from the repository even if you are Git LFS, which is not an option in the other free deployment services I listed above. For this specific reason I decided to use Netlify to host this website while I still haven’t gotten a VPS, and as you can see the performance and user experience is very nice.
If you need a server to handle logic, or maybe a database to store your data, this section will help you.
Heroku-like options will be the best option for all applications that need to be hosted for free, need a server, and a database. These platforms-as-a-service (PAAS) options allow you to deploy everything together, integrate CI/CD with your source code very easily, set up development deployments, and are also great for future-proofing your service since at any moment if needed you can migrate to one of the paid plans to keep scaling your application.
You should however seriously consider Render and fly.io after the very serious data breach that happened to Heroku and even after more than one month hasn’t been completely solved, and just now has the GitHub integration been reinstated. Websites deployed to Heroku are nice if you want to have a PostgreSQL database as these are very well integrated, don’t fret however if you need a NoSQL database, because:
So you need a NoSQL database, for free, without using credit cards. Then MongoDB Atlas is the perfect option, using it you will be able to deploy a NoSQL cluster and have it be automatically managed completely for free. It’s also very nice because later upgrading to one of the paid options will be seamless and allow you to scale without much effort.
You don’t like MongoDB but you want a flexible NoSQL database that gives you very easy real-time data synchronization. Then you should use either the Firebase Firestore or the Firebase Real-Time Database. The only problem with both of these options is you’re forced to use the Firebase SDKs to interact with the databases, which is not a great experience and will bloat your application a lot.
This used to be however one of my favorite options. Firebase gives you free user authentication, free hosting, free database, free analytics, ads integrations, and much more stuff, and all of this without ever putting a credit card to get access to Google Cloud. This option is again very good because of the option to later move to a paid plan, although Firebase can get very expensive very fast if you’re not careful.
You would like to have all of the advantages of using Firebase without actually using anything from Google. You also need a PostgreSQL database and you want everything to scale seamlessly using a service that won’t lock you in because it is open source. Supabase is my favorite alternative to Firebase, and although I haven’t used it as much as Firebase it is very promising and has very nice options to host your applications for free. The lack of lock is my favorite part of this and I believe you should consider this as an alternative to Firebase.
So I went over all of my favorite options to host your web application and servers for free. There are however some even cooler options if you are ok with putting a credit card to use the service, however, I will dedicate another post for these options. I hope this guide helps you, be it because you live in a third-world country, or because you just don’t want to spend money to start web development.
Have a good one,
Doodles.
]]>If you’ve never heard of anyone saying the internet is a mess then you just haven’t been here for long enough. It doesn’t matter if you think the problem is fake news, proprietary software, bloatware, spyware, the splinternet, or any other problem you might think exists, the internet is fundamentally broken and needs to be completely rethought.
Now, I, personally, think that the web is broken because of JavaScript. That’s what I most hate about it and all the websites available on the internet. I hold this opinion mostly because of the current over-reliance on running JavaScript to create websites. The React revolution and it’s consequences have been a disaster for the human race. No, but really, most of the websites you can go to nowadays will serve you an empty page and require you to run JavaScript to render, will run Google Analytics, will show you Google Ads, etc. It’s just ridiculous.
It’s not this bad only because people don’t care, but also because we have built a system that fundamentally rewards people for setting up websites like this. If your users have to use JavaScript to see the website this means you also get to have analytics data, customized ads that are worth much more money, and all other kinds of stuff you as a business might like. It’s also gotten progressively more popular to develop this way and it seems like people don’t even know there is another way to develop websites.
So in short what’s the solution? In my opinion, the solution is to completely stop using JavaScript-dependent websites. And, obviously, if you are a web developer you should put the focus on making your websites more lightweight, more compatible with a multitude of devices, and avoid using JavaScript were not needed. More on this later.
The biggest problem to stop using JavaScript as someone who is just browsing the web is that it’s just not feasible if you have to access a website like YouTube, or modern Twitter (curiosity: did you know Twitter used to have a version of their website that worked without JavaScript?). There are however ways to access the content on these websites without using their normal frontends:
I honestly believe if you are reading this you should give it a try. Disable JavaScript globally on your web browser and try to survive as much as you can without whitelisting any websites. You’ll get better performance, and avoid awful websites, advertising, and tracking. Save on bandwidth. And you’ll also get all of the security advantages of not having to run JavaScript from any website you run into.
I haven’t really put much into the above list, but honestly, once you start disabling JavaScript on your browser and worrying about it you’ll fast start to understand what websites you should bother going to and which websites you shouldn’t care about. It has been a very refreshing experience to browse without JavaScript and find out so many good websites that work without it, and also have a laugh at websites that break completely in the face of not being able to run it.
I could go on and on about why JavaScript is also bad for you as a developer, but I myself use it when needed, however, the current trend in development is to over-rely on bloated frameworks such as NextJS, NuxtJS, CRA, etc. While the browsers have become more and more friendly to websites without JavaScript. For instance, Chrome has added paint-holding when switching between pages and backlink caching which means the experience of browsing static websites has improved considerably.
Considering all of these improvements with the modern web, you as a developer should consider the following options to develop websites (although there are many more similar and maybe even better options):
Please, seriously consider just old static pages. If you are making a landing page, or just a portfolio that does not have a blog or constantly changing content, then you don’t need a framework or a library, or anything else. What you really need is to create a file named index.html and another called styles.css, and start writing your websites. You’ll get amazing performance, perfect SEO, and VERY easy deployment, and you (shouldn’t) have to learn anything.
Meanwhile, Remix on the list is a weird one I have tested and I give it a pass for newer developers who might not be used to the old way of developing websites. You write your code using JavaScript but the client never has to download any JavaScript to get all the interaction, your website works using all the standard web technologies like forms to send and receive back data from the backend, which is simply amazing.
Last, but not least, static site generators like Jekyll in my opinion are seriously underrated by some developers who haven’t really seen them in action. They are just amazing, customizable, fast, and easy. If you need a blog or any kind of content that constantly changes but isn’t very interactive then Jekyll and Hugo will be your best friends. And please refrain from using Gatsby, graphQL, headless CMS, and other kinds of stuff that are all overkill for most projects, please, seriously consider if you actually need those before even thinking about starting.
I will write guides on some of these technologies next. Focusing mostly on how you can get to host all of your content for free (without paying for a VPS or similar) because I love free stuff.
Doodles, signing out.
]]>If you want to know how to develop minimalistic web, desktop, and mobile software and learn about hosting stuff on the internet for free this blog will help you guide you through it. I expect to release my first guides this week, hopefully, they are accessible at the time that you’re reading this.
If you wonder why I write this if no one is reading this website yet: I want to test the RSS feed and my RSS reader configuration.
See ya later,
Doodles
]]>Cheers,
Doodles
]]>