A Take on Approximation Algorithms
I recently started my Master’s degree in Computer Science and Engineering (MSCE) and one of the first courses I am following is Advanced Algorithms. It is actually the only single course that is mandatory for all MSCE students, independently of the track/stream they chose. I chose the Web Stream.
The Advanced Algorithms course is divided into three main topics and we recently finished the first one: approximation algorithms. As a way of consolidating my knowledge and also reading a bit more than the notes given by my professor, I decided to write this essay. But first, what is an approximation algorithm and why is it important?
Some of the most well-known problems within Computer Science are virtually impossible to solve optimally at scale in a useful time. One of the most important known problems is the Traveling Salesmen problem. This problem boils down to: given a list of cities and the distances between each pair of them, what’s the shortest possible route to go from a certain city to itself, visiting all of the other cities. This is problem has many more applications that its literal sense, hence its importance.
It’s been a little bit over a month since I first arrived in Eindhoven. Since then, I have had time to explore the city, a bit of Rotterdam, and even find a Portuguese store with “Pastéis de Nata” in Helmond! I have also had time to study, but had to decrease my time at Protocol Labs due to my studies. With all of this, I haven’t had time to give much love to my blog.
Inspired by Tom MacWright, I am going to make a commitment that sounds quite simple: make a post every month called “Recently”. On it, I should reflect about the past month, the highs and lows, the things I’ve learned, important things I think are worth mention and so on.
With this, I am also deprecating the now page. Why? This posts should already give an overview of what’s been happening lately that is not covered by my micro posts. But don’t worry! I’m not breaking any links. It will just point to the most recent “Recently” post… no pun intended!
The Future is Decentralized
We are living in an increasingly interconnected world. Today, 4.1 billion people have access to the internet. And with every passing year, millions more are born into the world as “digital natives” with digital technology and the World Wide Web at their fingertips from early childhood.
But as the internet becomes more and more intertwined with our everyday lives, we must remember that it’s up to us to set the right course for the web’s future and to continue improving it. Today, control over the internet is increasingly centralized in the hands of just a few big tech companies.
Back to the Web of the 90s
Over the past months, I have been reading more and more posts where people are saying they miss the vibe of the 90s web. Even though I wasn’t alive to see how that web was, I still remember the website of my high school filled with overly saturated colors, GIFs and iframes. Not only that characterizes some of the pages of the early web, but also the pixelation and the footers saying to use X or Y browser.
I decided to make a few updates on my website - again. However, this are a bit more than visuals and I’m mostly reinventing the way I manage IndieWeb posts, namely likes, reposts, notes and replies.
How Do I Generate My Knowledge Base From Notable
For quite a few time, I used Bear as my go-to Notes application for two reasons: it was simple to use and the syntax was quite similar to markdown. However, it is not markdown and it does not support some things that’d like to see on such software: diagrams, mathematics, wiki-like links, etc.
After searching for a bit I found out an app called Notable. In addition to having all the features I wanted from Bear, it is also storage independent, meaning everything is stored as markdown plain-files that I can version control with Git or some similar software.
Analyzing My Shows and Movie Habits
Today, I decided to readd a watches page, but this time it isn’t built from hundreds of
posts, but from the data that I get directly from Trakt’s API.
I built a small tool called trakt-collector used
to collect your history and save it in JSON format.
The Trakt API gives you so much information about every episode and every movie: from the title,
to the rating, description, channel where it aired, when it aired first, the countries where it aired,
etc, etc. I don’t actually need all that information, but it’s never too much to store.
For quite some time, I have been getting more and more into the IndieWeb world and trying to own my own data. I have started publishing more to my website and using it as a place to store most of my public data, i.e., data I already published on other social media and platforms.
It now holds my web interactions, such as replies, likes and reposts, as well as my reading log. Since the beginning, I also wanted to this website as a place to store my watch logs. With watch I mean watching movies and TV series.
As Tom once said, it is now time to own my own reading log. Why? Despite all the reasons mentioned on Tom’s post, I also got bored of Goodreads and I ended up not using it as much as I should have.
With university, work and… life… I stop reading as much as I did before. But it’s now time to get back to some reading. Even if it’s not that much, I need to read something. I must do it.
In 2015, I started a project called http.hugo, which was a just a simple plugin for Caddy, a really fast web server built with Go with automatic HTTPS. At the time, the plugin was exclusive for Caddy and it provided a simple UI to edit your files in the server, rebuild the website and so on. They were just simple features.
Build a Dynamic Website… or Not?
After digressing a bit about building a Micropub endpoint for my website, I’ve been thinking about the next steps: if I should keep Hugo or move to some other system.
I opened a topic on Hugo’s discourse to see to which point it would be reliable to use the watch mode of Hugo in production and it seems, as I was expecting, that it wasn’t made for that and there is no way of making incremental builds as of right now. And I don’t blame Hugo developers — I understand that’s quite a big issue and it needs to be a really thoughtful process.
Adding Support for Micropub Endpoint
Recently, I have talked about restructuring the URLs of my website and adding IndieAuth so I could use my domain as my main online identity to login into services. Along those lines, I came across Micropub. In their own words:
The Micropub protocol is used to create, update and delete posts on one’s own domain using third-party clients.
So it’s basically a simple common protocol that could let any website get updated using an arbitrary CMS (Content Management Software) or application that supports it. I really enjoyed the spec and there’s suggestions and issues being worked on.
Enabling IndieAuth on My Website
This is going to be a quick post — I hope.
After updating the structure of the URLs on my website, I felt like the next step would be to implement IndieAuth because almost everything on the IndieWeb needs that.
Thoughts on This Website’s URL Structure
I’m now working on making my website more IndieWeb friendly, which was triggered by my searches after writing my last post about owning our own data. It has been… harder than I though. But in a positive way!
There are so many, but so many concepts in the IndieWeb world that I could never imagine before, but first: I need to support multiple data types because this website will now on hold more than just long articles like this one. We will support notes, bookmarks and articles for now.
We Don’t Own Our Data, Do We?
Data, data, data.
Big data, buzz words. I have been wanting to write about data for quite a long time already, but I’ve never found a moment where that would be opportune for me. Data is one of the most important resources for companies right now even though we don’t acknowledge it most of the times.