gfalcao | 4 months ago | on: A worker fell into a nuclear reactor pool
gfalcao's comments
gfalcao | 9 months ago | on: Show HN: Tattoy – a text-based terminal compositor
gfalcao | 10 months ago | on: Reinvent the Wheel
A great friend of mine once told me the following quote from an unknown author: "Reinvent the wheel, not because we need more wheels but because we need more inventors." That quote has brought my mind and heart to some modicum of tranquility at various occasions when I wanted to learn some concept and resolved to write my own "toy version" of a software library, framework et cetera. Later on, when I learned about Feynman's quote “What I cannot create, I do not understand”, amalgamated the sentiment that it is okay to build something in order to learn one concept. I have thus far learned that in every new journey to reinvent the wheel, so to speak, often led me to paths where my intuitions about the initial concept got stronger and beyond that, I learned several other concepts.
gfalcao | 10 months ago | on: How much information is in DNA?
gfalcao | 10 months ago | on: How much information is in DNA?
gfalcao | 2 years ago | on: Rxinfer: Automatic Bayesian Inference Through Reactive Message Passing
gfalcao | 2 years ago | on: Berlin's indoor pools
gfalcao | 2 years ago | on: Telegram has announced a partnership with Tencent
gfalcao | 4 years ago | on: Rockstar: a language for programs that are also hair metal power ballads
gfalcao | 4 years ago | on: Ask HN: Studying/Note Taking Software
It's not a software per se, but the way he organizes his notes is the holy grail IMHO.
gfalcao | 4 years ago | on: Facebook is now claiming official CDC.gov links are “False Information”
gfalcao | 5 years ago | on: OO in Python is mostly pointless
Object-oriented programming.
Many students of the art hold out more hope for object-oriented programming than for any of the other technical fads of the day.
I am among them.
Mark Sherman of Dartmouth notes that we must be careful to distin- guish two separate ideas that go under that name: abstract data types and hierarchical types, also called classes.
The concept of the abstract data type is that an object's type should be defined by a name, a set of proper values, and a set of proper operations, rather than its storage structure, which should be hidden.
Examples are Ada packages (with private types) or Modula's modules.
Hierarchical types, such as Simula-67's classes, allow the definition of general interfaces that can be further refined by providing subordinate types.
The two concepts are orthogonal — there may be hierarchies without hiding and hiding without hierarchies.
Both concepts represent real advances in the art of building software.
Each removes one more accidental difficulty from the process, allowing the designer to express the essence of his design without having to express large amounts of syntactic material that add no new information content.
For both abstract types and hierarchical types, the result is to remove a higher-order sort of accidental difficulty and allow a higher-order expression of design.
Nevertheless, such advances can do no more than to remove all the accidental difficulties from the expression of the design.
The complexity of the design itself is essential; and such attacks make no change whatever in that.
An order-of-magnitude gain can be made by object-oriented programming only if the unnecessary underbrush of type specification remaining today in our programming language is itself responsible for nine- tenths of the work involved in designing a program product.
I doubt it.
gfalcao | 5 years ago | on: OO in Python is mostly pointless
Brooks goes on to argue that there is a difference between "good" designers and "great" designers. He postulates that as programming is a creative process, some designers are inherently better than others. He suggests that there is as much as a tenfold difference between an ordinary designer and a great one. He then advocates treating star designers equally well as star managers, providing them not just with equal remuneration, but also all the perks of higher status: large office, staff, travel funds, etc.
gfalcao | 5 years ago | on: OO in Python is mostly pointless
I've seen a lot of python code that looks like the example from the blog but that's simply just a narrow example and does not reflect all the potential of OO, not only in Python but in any programming language.
The thing I see in common in such poorly designed OO code is that it is usually not covered with unit tests that are actually useful and informative. Sometimes it's just not even tested at all.
gfalcao | 5 years ago | on: Show HN: PSX Party – Online Multiplayer Playstation 1 Emulator Using WebRTC
gfalcao | 5 years ago | on: Show HN: PSX Party – Online Multiplayer Playstation 1 Emulator Using WebRTC
gfalcao | 6 years ago | on: Please re-add original author to docs and license
I'll submit a pull-request with the story soon.
Thank you!
gfalcao | 6 years ago | on: Please re-add original author to docs and license
gfalcao | 6 years ago | on: Please re-add original author to docs and license
Let me clarify the whole story:
In 2006 I had just gotten into college and was learning Python by myself, my English skills (also self-taught) were pretty low and I had to rely a lot on whatever material was available in Portuguese (I'm from Brazil).
In 2007 I had an amazing college teacher, the "drop of water in the desert" kind of teacher. He was trying to convince everyone that they could move from MS Windows to GNU/Linux and that the available desktop software was pretty decent.
The only catch is that he used KDE2 and all the "cool" desktop apps he was showing were built on QT, like a good pupil I always tried to pair up an equivalent GTK option to every QT app my teacher showed to the class.
That worked well for everything: Music Players, Photo Viewers, etc.
One day he showed Yakuake (https://kde.org/applications/system/org.kde.yakuake) to the class and everyone went bananas, this was such an amazing tool.
But then I did not have a good alternative for GTK if I wanted to press F12 to get a drop-down terminal I'd have to install libqt on my Debian? No way!
I set out to write an equivalent of Yakuake for GTK+ (hence the name Guake, with "G" for GTK), at the time I did not know exactly how D-Bus worked and had no idea of how to write Python extensions in C.
The very first working version of Guake was a Gnome Applet that used GTK bindings to libvte to make a terminal always available. Was still not good enough for me.
The next step was to write a regular GTK Window application and try to make it disappear, but I was having a lot of trouble binding F12 globally, it only worked well on Metacity which was the default window manager for GNOME2 at the time.
Guake's user experience was not great, it only worked well on Metacity but was good enough for me to show to my teacher, I was so excited I was able to create my very first GPL software and publish on source forge. I was ahead of everyone in my class at the time, I was learning on my own the things that would be taught only in the next semester and many things that we would never learn in class (such as Python programming).
Some months go by and Guake-Gnome-VTE (the original name) gets some visibility, and this guy Lincoln de Sousa reaches out to me, he told me he had fixed the global keybinding problem by writing a Python extension in C, also he refactored the whole code and even applied GNOME Human Interface Guidelines to it.
It sounded great to me, I was so excited that someone else was interested in Guake, and made improvements to it, I was in awe with open source.
Except for one thing: Lincoln rewrote a lot of things that were working, just for the sake of cleaning up the Python code the aesthetics of it (actually he was applying PEP8 which I had no idea what was before this)
I had these mixed feelings: in one Guake had become what I wanted it to be, the global keybinding worked anywhere, the UI looked even better and the code was a lot easier to understand.
On the other a lot of the code I had written was deleted, I was not a skilled python developer when I wrote the first version of Guake, so I had spent several hours reading, coding and trying things out.
Anyways, the whole thing was a win-win, yay open source, now Guake had 2 maintainers putting a lot of time and love into it.
After some time Lincoln proposed that we moved the code off of Sourceforge to a git repository, self-hosted (we had a very "purist" mentality regarding FOSS and were terrified of having our code hosted by a proprietary software such as Github), he had way more experience than me on pretty much everything and he took reins: the code was hosted in one of his servers and all I did was pay for the domain.
In retrospect, I wish I had just pushed the code to Github at the time, so no the commit history would be lost. The irony in having a purist FOSS mentality: the code was hosted on a server that I eventually lost access to.
Also, instead of importing all the commit history from Sourceforge we just pushed the code to git.
You can look at the first commits on github:
commit 4f4ab35d5cb2363dd464e6b252d1c798bd01c2fb Author: Lincoln de Sousa <[email protected]> Date: Sat Oct 6 13:56:50 2007 -0300
patch came from svn
commit 8973af85108c889f7dc16af2d8443d0f8ff3ec05
Author: guake_root <guake_root>
Date: Wed Aug 1 02:35:20 2007 +0000The "guake_root" commit swallowed all the history of the original code I had done.
In 2008 I moved out of my city to work for a big corporation in Rio de Janeiro, there my FOSS purism slowly evolved into tolerance for proprietary software, eventually, I even got an iPhone and a MacBook.
That's when I stopped contributing to Guake: I had moved to MacOSX and the project had been taken over by other maintainers. But even the icon is still the one I design on Inkscape, Guake was my first open-source software, I put a lot of time and love into it.
Today 14 years later I seldom use Guake because I seldom use a Linux Desktop, but I must confess that seeing my original authorship vanish from the project is very sad.
gfalcao | 6 years ago | on: Why I Like Math [pdf]