Recently there was been a big fuss about “Mastodon“, an open-source project that is very similar to twitter. The biggest difference is that it is federated. So what it means?
It means that it works like “email”, there are several providers (called instances) where you can create an account (you can setup your own server if you desire) and accounts from different providers can communicate with each other, instead of all information being in just one silo.
Of course for someone that is in favor of an open web this is a really important “feature”.
Another big plus is that the wheel wasn’t reinvented, this network is inter-operable with the existing “GNU Social” providers (uses the same protocol), so you can communicate and interact with people that have an account in an instance running that software. It can be seen like 2 providers of the same network running different software packages (one in PHP the other in Ruby) but talking the same language over the network.
I haven’t tested it much yet, but given it is a push for a solution that is not centralized (which is a rare thing nowadays) and I think it is a small step in the right direction, So I’ve setup an individual instance for myself where I will publish regularly links of posts/articles/pages that I find interesting. Feel free to follow at https://s.ovalerio.net and if you know someone worth following in this network, let me know.
So certain parts of the world already entered the year 2017 (this system doesn’t sound that great, but I will leave this discussion for another occasion) and we, here in Europe, are making the preparations to start the new year in a few hours.
I am not found of those traditional new year resolutions that everyone does, they seem always destined to fail. But, yesterday I found a challenge on HackerNews that is very interesting and looks like a great push to be more productive during the whole year.
This post explains it a little better, but in brief, everyone that tries to accomplish the “1ppm Challenge” must build and ship a different project every month during the next year. For it to work out, in that restricted time-frame, the projects must have a clear objective and focus on solving a well defined problem. They also must cut all the clutter and be a MVP (Minimum viable product) since we only have +- 4 weeks for each one.
On the original challenge the projects can be anything, but for me I will restrict it to software projects (at least 10 in 12). My goal with this is to improve me skills in shipping new products and to focus on what matters the most in a given moment. I’m realistic about the challenge and having a 100% success rate will be hard, so a the end of the year I will evaluate my performance this simple way: number_of_finished_projects/12.
By number_of_finished_projects I mean every project that meets all the goals defined for it. Since I don’t have yet 12 good ideas I really want to work on during the next year, the project for each month will be posted in a new post before the beginning of every month and the challenge log will be updated.
So lets see what is the score I achieve at the end of the year. To get things started here is the description of the project for the next month:
Audio and video capture monitor
Description: This project aim is to let people know when their computers camera and microphone are being used by any program. This way every time a program starts to use this devices the users gets an alert. For now it will be Linux only.
Goals:
Must be written using Rust
Must detect when the cam or the micro is active (being used)
Must alert the user
Provide a log for all activity (optional)
So, I’m looking forward to know how this challenge will play out. Tomorrow it is time to start. Hope for a better 2017 for you all.
A few weeks ago took place in Lisbon the first edition of Pixels Camp (aka Codebits 2.0), an event that I try to attend whenever it happens (seepreviouspostsaboutit). It is the biggest technology focused event/conference in Portugal with a number of attendees close to 1000.
This year the venue changed to LX Factory, even though the place is really cool, it is not as well located as the previous venue, at least to people who don’t live in Lisbon and arrive to the airport. The venue was well decorated and with a cool atmosphere, giving you the feeling that it was the place to be. However, this year there was less room for the teams working on the projects and not everybody was able to get a table/spot (it appeared to me that the venue was a little bit smaller than the previous one).
From the dozens of great talks that were given on the 4 stages of the event, many of whose I was not able to see since I was competing in the 48h programming competition, bellow are two that I really liked:
All this is great but the main activity of Pixels Camp is the 48h programing competition and this year we had another great batch of cools projects being developed (total of 60, if I remember correctly).
As usual I entered the contest, this time with the fellow Whitesmithians, Rui and Pedro. We chose to develop a GPS based game, you know, since it seemed to be a popular thing this summer and we though the medium still has great potential to do really entertaining stuff.
The idea already had a few years but never had been implemented and at its core was quite simple. It took some ideas from the classic game “pong” and adapted it to be played in a fun way while navigating through a real world area.
We called it PonGO and essentially the users must agree on a playing field, such as city block, a city or even bigger areas, then they connect their phones and the ball starts rolling. The players have to move around with their phones (which they use to see the map and track everyone’s position) trying to catch the ball and throw it to the other side of the map. The player that is able to do it more times wins the game. Here is sketch we did while discussing the project:
Initial Sketch
As you can see in the above image, that would be on the phone’s screen, the player (in yellow) reached close enough to the ball so it can play it, now he has to change the direction to one of the opposite sides (marked as green). The other players (in blue), will have to run to catch the ball before it gets out. Spread across the map you can see some power ups that give users special capabilities.
That’s it, it might seem easy but doing it in less that 48h is not. We ended with a working version of the game but the power ups were not implemented due to time constrains. Here are some screenshots of the final result(we used the map view instead of the satellite view so it might look a little different):
The code itself is a mess (it was an hackathon what were you expecting) and can be found here and here.
At the end, it was a great event as usual and I would also like to congratulate some of my coworkers at Whitesmith that took home the 7th place in the competition. Next year I hope to be there again (and you should too).
If you are like me, you have a bunch of notes and documents written in markdown spread across many folders. Even the documentation of some projects involving many people is done this way and stored, for example, in a git repository. While it is easy to open the text editor to read these files, it is not the most pleasant experience, since the markup language was made to later generate readable documents in other formats (eg. HTML).
For many purposes setting up the required configuration of tools to generate documentation (like mkdocs) is not practical, neither it was the initial intent when it was written. So last weekend I took a couple of hours and built a rough (and dirty) tool to help me navigate and read the markdown documents with a more pleasant experience, using the browser (applying style as github).
I called it “mdvis“ and it is available for download through “pip”. Here’s how working with it looks like:
It does not provide many features and is somewhat “green”, but it serves my current purposes. The program is open-source so you can check it here, in case you want to help improving it.
Three months have passed since I left the office and started working remotely (+1000 km), in this post I share the “pros and cons” of my short experience, even though across the Internet many people already covered this topic extensively.
Whitesmith has been “remote friendly” since first day I joined, more recently the company is trying to become a “remote first” business, as described in a recent blog post. What this means is that remote workers should be treated as first class citizens and the company’s processes should assume that all employees are working remotely. This mindset gave me the possibility to move farther away for a while.
The first thing that I’ve done was to rent a table in the nearest co-working space, because staying all 24/7 in the same house is not my thing. It was a good decision, this way is possible to meet and interact with new people from different backgrounds regularly and I have a spot where I can focus without too many distractions.
Regarding the job related issues, the asynchronous nature of remote work is both its biggest strength and at the same time its biggest drawback. I say this because all the liberty and flexibility comes with a cost, which is the lack of a fast feedback loop and that instant discussion on the spot that settles everything down, without the need for more message round trips or checking my peer’s availability for a quick video call.
On the social side, one aspect that I noticed (and already expected before embracing this new experience) was a small detachment of whats going on in the office. Slack is more active than ever but is not the same as the “water cooler”, plus new people are constantly joining in. Without a physical presence it is hard to get to know the newcomers.
Even though there are these rough edges, I’m really enjoying working remotely. In 2016 I will try a few new strategies to overcome the above obstacles, such as:
Improve my written communication skills
Avoid slack for long running discussions and prefer more structured platforms
After being absent last year, today I will start my participation in the Rails Rumble event. Together with a teammate we will try to finish a project within the next 48h, using the Ruby and its Ruby on Rails web framework. Personally I enjoy this kind of challenges, even though it’s not guaranteed that we will be able to finish anything. This was what happened 2 years ago when we weren’t able to finish our project, our final push had a bug that turned the application completely unusable. Even didn’t winning anything, we learned a lot and had some fun.
Later we continued working on that project for while, eventually we were able to enter other contests with it and obtained very good feedback. The application was called Payup and is still online (but it doesn’t work very well).
However the market for this kind of application already had many competitors, some of those more mature and well established. Our app had some flaws that needed to be fixed, with our day jobs and other projects we slowly let it die. But hey, it wasn’t bad for the work of one or two weekends.
Not every personal project either related to a hobby or from a challenge must necessarily be a huge success and be maintained forever, that is the great thing about these kind of projects, you do it, you succeed, or you fail, and you move on to the next one and keep learning new stuff. If you had to maintain every project or experience, you once worked on forever, you probably would lose the interest in starting new things, even if they were just for fun.
So today, we will do it again. I’m searching my list of ideas and discussing them with a teammate. A new ride is about to start…
In the beginning of last week, during the days 13 and 14, I and some guys from Whitesmith went to Braga for the first RubyConf Portugal. I’m not a huge fan of Ruby but since i work with it from time to time, i took the chance to learn a little bit more about it and improve my understanding of the language.
The event was pretty cool and if you go through the agenda in the site you can see that the speakers that gave the talks are well known individuals in this community. The good stuff about this conference started with the choice of the city of Braga to host the event, since this kind of stuff in Portugal always happens in Lisbon or Oporto.
The venue was in an amazing spot, called “Bom Jesus”, that has a nice view over the city as you can see in the photo below:
Venue Location: Braga
I liked some of the talks, essentially the ones that are related with my work, the rest didn’t said much to me but this is normal and it happens in every event. The funny part was that in this event we spent more time hearing about other languages (Javascript, Go, Rust, C) than ruby even though they were related with the ruby ecosystem.
The host of the event was Jeremy Walker, and he did a great job from the start where he showed up dressed as a roman guy (seems it was the theme of the event) until the end of the last talk.
In the second day the two presentations that i liked the most were: “TBA” (according to the speaker that was exactly the name of the talk) and “Search Your Feelings: Multi-Table Full Text Search in Postgres“, both without too much ruby. One addressed Rust and the other Postgres, two topics I’m really interested in improving my skills at the moment.
Steve Klabnik’s Talk
Aside from the talks the rest of the event (food, party, etc) was great. The only complain that I have is about the conditions of the room where the talks were given, since those who were unfortunate (or late) to stay in the back of the room had some issues to properly see the slides (as you can see in the last photo, I was in the middle of the room).
Finally I must congratulate the guys at Group Buddies for the organization of this conference. I hope this kind of events become more common here in Portugal and happen outside Lisbon, so more regions of the country can benefit from them.
Edit: For those unable to be there, the organization just released some photos and videos taken during the event. You can find them here and here.
A week ago the support period for the last version of Python 2 was extended by 5 years (from 2015 to 2020) and this event just ignited once again the discussion about the fragmentation in the python ecosystem. Some have the opinion that version 2 should have a 2.8 release while others keep saying that the future is python 3 and this event will delay even more the adoption of the new version.
The truth is, version 3 already has almost 5 and half years (released in December 2008) and it seem it didn’t have yet conquered enough number of users to dethrone the old version. While the first iterations of the new major version met many critics (3.0 until 3.2), the last 2 releases seems to have conquered very good reviews and after many years the majority of the most important libraries and modules seems to have support for python 3 (can be checked here ).
This way and after some thought, i decided that it is time (maybe a little late) to change my default development version for new projects to python3, since it really is the future of this programming language and it is time to move on. There will be exceptions of course, like old projects that need to be maintained, new ones where the requirements do not allow the new version or where the needed packages do not yet support python 3.
So lets check what this “new” version has to offer.
The 3 days passed so fast that i got the sensation that the event took place in only one day. The only regret I felt in this year’s event was related with the fact that our team was unable to get the project ready for the presentation in 48h.
We were developing a service that would pay developers (using MEO Wallet) who contribute to open source projects, with bounties associated to specific issues, as soon as their pull request is merged in Github.
Recently i realized that the system that i used to blog wasn’t the most appropriate and that was preventing me from writing. To publish an article, i needed to go through too many steps (most of them to make the content look the way i wanted) and the maintenance of the system didn’t worth the time i was wasting on it. So as can you see i switched to WordPress, since it offers much better tools, to concentrate more on the content and soon i hope to get a more regular posting schedule. If you find any bug, please let me know.