2024-07-03From Belgium
Today I'm visiting Belgium with Vinicius. During the Bus ride I started reading Designing Data-Intensive Applications by Marting Klepman.
I've been thinking about making a summary of each chapter and posting it here. I think it would be a good way to keep track of what I'm learning and also to help me remember the concepts.
Would make some good videos for YouTube.
I've been playing around with Docusaurus and Hono. Both look promising.
2024-05-25What's going on
I've been traveling and not keeping this site up to date. But I've been consistently programming, learning, writing, documenting and logging.
I've been working on a few things:
- I've been playing around with Bun.
- I've been playing around with Encore.
- Architectural Flow: A diagraming tool inspired on Encore diagrams.
- Basquade: A library to upload PDFs, train a model and answer questions.
- A private project that interacts with Inmmutable X.
- A Reddit Moderation Tool using bun workspaces.
- A competition on Gemini AI.
- I've been making useful contributions at my current job.
On the personal side, I've socializing, doing improv, reading and learning about math, physics, and programming.
A lot is going on in the frontend world:
- React compiler.
- CSS units, CSS color-mix, front control, margin box.
- Caching, AI tools, new environments.
2024-04-26King's Night
Today is a celebration night in The Netherlands. I was not aware this was a thing until yesterday, when I checked Ticketswap to get tickets for a comedy show and I saw promotions for King's Night tickets.
But keeping those goals of getting better at this thing I took as my profession, I'm staying home tonight.
A lot is happening in the dev world:
- React 19 was announced.
- LLVM's are becoming open source (Meta and Apple released one recently).
- Seems like setting your own server is back.
- Typescript V5.
- Ruby on Rails is updating their docs.
- Bun for Windows (I'm testing that in a little bit).
- Zod for everything.
And I've also started working on a few things on my own:
- Migrated the Reddit API Client to Bun (just because).
- Started working on a library to upload PDFs, train a model and answer questions.
- I'm learning about optimization and performance improvement.
- I'm writing what I've learned in a repo called "Learning Center".
- I've been playing a bit with ImmutableJs.
- And trying to make useful contributions at my current job.
I need to make the lists in this blog look better.
...
Now the nonnumeric lists look better.
Before I forget, my domain was migrated automatically. So, thanks Google.
Now let's go to play with Bun.
2024-04-11Back to business
And... we are back. It's been a few weeks since we stopped writing I want to keep this as a weekly hobby at least. I have not been writing in my notes either so it's time to get back.
Today I read a post on https://www.cmrg.me and it reminded me the of importance of writing. It shows how curiosity and creativity can be combined to create a compelling story.
I started working at a new job on the 2nd of April. I can notice how that slowed me down on some of my projects and I'm okay with that, at least for a few months.
I'm learning about Immutable, NextJS, created a repository with a friend to learn and practice dev ops skills I continue learning with frontend masters I'm going through my company's documentation and seeing how things are connected. I'm getting books about software engineering, I'm getting better at my craft and that makes me happy.
In the book Siddharta, the main character finds a man whose job is to drive a boat to cross a river. Almost ten years later, he needs to cross the river again and he finds the same guy, doing the same thing. I always looked with admiration to Siddharta for his quests for enlightenment but now I think I find the other guy more appealing. He found what he wanted to do in life. He helps people to cross the river. That's his job. That's his goal. So simple yet fulfilling.
That's how I want to be.
2024-03-05Start again
When was the last time I went through the basics?
Last Friday, after pushing myself to pursue a job that I did not enjoy, I finally decided to listen to my body and accept no matter how much money I was making, or how important a company was: if I cannot see myself being there in the future, then I should not be there.
Now that I'm back to the pool of unemployed population I started practicing for coding interviews. And let's face it, I'm out of shape. Algorithms, System Design, Observability, Requirements, Management, Scrum, React, Typescript, Testing, HTML, CSS, Javascript, Promises, Responsive Designs, Ruby, Ruby on Rails, Databases, ERDs, Problem-Solving, Analysis, Behavioral questions... The list is extensive.
When was the last time I read the React documentation? When was the last time I wrote a plain, simple, vanilla js app? I want to be up to date with the dev world, follow the trends, and stay on top of my game. But to build up, a strong foundation is necessary.
The steps to keep me on top are:
- Learn.
- Build.
- Explain.
These three steps. Over and over again. Selecting a topic, understanding it, building a few prototypes, and explaining the how, the whys, and what's next.
There are a few additional steps to achieve mastery: deliberate practice, focus, and physical well-being. I've read a few books on self-improvement, learning, and habits. There are a few key insights that I gain from those:
-
Identity change: To become who you aspire to be, seeing yourself in that role, imagining what actions and routines that person has, and identifying those who you admire are key to developing long-lasting habits. Become what you want to be. Don't try to imagine yourself as a I'm trying to, instead see yourself as an I am.
-
Small daily changes: A big change will require a big effort. Focus on small but repetitive changes instead of radical modifications.
-
Find a mentor: When working on something new, it's easier to have the guidance of an expert.
-
Find a community: Making what you are trying to learn or achieve into a social event will allow you to keep yourself in that mindset.
-
Deliberate practice: pick a topic, focus on improving something, and measure.
I had a job interview two weeks ago. I was asked a basic question about React. I did not know the answer. I did not know the answer to a basic question. I've been using React for the last... 6 years. How come I cannot answer something basic? I was frustrated and the interview repeated in a loop for days. I will write in detail about the problem once the self-shame is gone, but I knew then and I know now that I have to reconnect with my craft and go back to the state of playful curiosity.
I have to look at my skills with a renewed lens and question the basics, go through the code, understand the building blocks and build more, put it out there, and share what I can do.
Putting in the effort, the discipline, the time.
I have to go back to the keyboard and start again.
2024-03-02Outside
Well, it looks like the code highlighter is now working.
I started reading about NPM packages because I would like to publish one for the first time. I just had a quick look at the docs and they don't seem friendly to navigate. So maybe I will be documenting the steps for future reference.
I want to publish a Reddit Client that I've been using to track the mod queue. But today I have two events so I will not have that much time to spend in front of my computer.
Today I will be outside.
2024-03-01Another Day
So, today I'm going to be focusing on the fonts, the layout just, and setting some global configurations.
And also an update on the reading of the posts. Right now I just wanted to throw whatever I want to post into a folder called 'entries'. Each file in this folder is an '.mdx' file and the name is the date in which I started writing.
However, there was a problem with the way I was loading the files. First, they were being displayed in A-Z and I wanted to be Z-A. For that, I added a .reverse() at the end of the function that was grouping all files. But this did not affect the order of the imports. So the files were still rendering as A-Z.
After doing some debugging I noticed my error: I should not be using forEach to group promises.
Before:
const getPost = async () => {
let post: JSX.Element[] = [];
try {
const files = fs
.readdirSync(directoryPath)
.filter((filename) => filename.endsWith(".mdx"));
files.forEach(async (file) => {
const { default: Component } = await import(`@/entries/${file}`);
post.push(
<article key={file}>
<Component />
</article>
);
});
} catch (err) {
console.log("Unable to scan directory: " + err);
}
return post;
};
and after:
const getPost = async () => {
let posts: JSX.Element[] = [];
try {
const files = fs
.readdirSync(directoryPath)
.filter((filename) => filename.endsWith(".mdx"));
for (const file of files) {
const { default: Component } = await import(`@/entries/${file}`);
posts.push(
<article key={file}>
<Component />
</article>
);
}
} catch (err) {
console.log("Unable to scan directory: " + err);
}
return posts.reverse();
};
And now it works. The lesson of the day: Do not use forEach with async-await.
2024-02-28Hello World
Using the mandatory name for the first post. The idea of publicly storing whatever I'm reading, learning, or testing has been on my head for a while.
Writing is what I do most and has been so far a tool for self-inspection. When I think about writing for an audience, my writing gets conditioned by the idea of perception.
How is this going to be seen by a stranger? How is it going to be seen by my friends, by my family, by my colleagues?
It's time to mature and accept that sometimes I'll get negative feedback for what I put out there. If you are not willing to accept that criticism, if the solution to avoid confrontation is to hide, then I'm guiding myself through an imaginary failure. Which is in itself a worse kind of failure than a real one.
In the upcoming days, I would like to start working on a few projects that I had in mind.
- Reddit Moderation tool.
- A Exercise Log Tracker.
- An audiobook player.
- To catch up on vanilla js.
- Get familiar with Vercel, Supabase, and Fly.
- Read and learn more about Software Engineering.
- Explain Frameworks, Languages, and Tooling and make content more accessible.
So this is how this project currently looks like:
I think the best we can do is to check for some sources of inspiration.
This one looks nice