Skip to content
Avatar
☠️
Do what you want cause a pirate is free! You are a pirate!
☠️
Do what you want cause a pirate is free! You are a pirate!
Block or Report

Block or report jonasraoni

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Add an optional note:
Please don't include any personal information such as legal names or email addresses. Maximum 100 characters. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
jonasraoni/README.md

About Me

🤵 Software engineer with +20 years of experience (first job in ~2001), check out my LinkedIn or CV for more professional information.

I'm a persistent hardhead (I'll try again and again, until I succeed!), natural saver, proactive, challenge lover, bug hunter, dad of two boys (🔥🧊), soccer player wannabe, lego builder, fan of Italian food and desserts 🍨

I don't think I've contributed much to open-source, but it was enough to make "jonas raoni" and "jsfromhell" bring respectively +26K and +35K records just in GitHub, probably due to my old project http://jsfromhell.com (online for historic purposes). These little pieces of text have the power to transcend my own existence 😵

💼 Work: Systems Developer at the SFU University, working with open-source publishing platforms.

🛠 Skills: My key languages are JavaScript, C# and PHP. On a daily basis I deal with microservices, REST APIs, message queues, tests, build SPAs in Vue.js, general optimizations and support users. About storage/messages, I'm normally using Microsoft SQL Server, PostgreSQL, MySQL, Kafka and RabbitMQ.

At this moment I'm moving into Node and React.

Past: C/C++, Object Pascal (Delphi), a bit of Java, jQuery, AngularJS and dead tech.

How I Code/Solve Problems

I'm a practical person, who doesn't like slow, long and repetitive things, so I naturally try to be concise and short in my codes, I also try to write things as performatic as possible. Since I like small challenges, I've started solving the tasks below in my micro spare time:

Chutes/snakes and ladders HackerRank solutions in JavaScript Codility solutions in C# LeetCode solutions in JavaScript

General Beliefs/Rants About Programming

  • Personal rule of thumb: Every now and then we're surrounded by new ideas and technologies, which means that everything we're building is already a kind of legacy, which will be dumped (errr transformed) a couple of years ahead.

    I think it's part of our job to make the transition easier, by minimizing the amount of code, complex architectures and customizations to the minimum. Choosing long-standing libraries and avoiding being an early-adopter of tools/frameworks might be helpful.

  • Code fragmentation: The less code the better! Naturally the same applies to the number of files, classes, tools, services, etc.

    I guess that everybody agrees simple and small functions/classes (implicitly fragmented across several files) are easier to test, reuse, understand and less likely to be broken. But debugging/reading such code full of indirections highly increases my cognitive load, I feel like reading a book where each paragraph sends me to a random page, with no context, and switching between these pages is painful (unless I'm the creator 😁).

    This way I generally prefer to avoid fragmenting the code/creating too many abstractions... Basically, I think that a god method/class is horrible, but the inverse is not less cruel.

  • Micro-optimizations: My favourite stuff! But it's not fruitful to spend time nitpicking (micro-optimizations) and sharpening your knife (overengineering) for a war that may never come, better to spend some time on macro-optimizations using a profiler ¯\(ツ)

  • Code complexity: Everything in life needs equilibrium, especially when a piece of code becomes so complex, that even its creator can't fully understand it without reading the code throughly. As there's no specific rule here (what is simple for you, might be complex for another), I think it's enough to just align the complexity with your team, always giving preference to the simplicity.

  • Dependencies: I'm against depending too much on specific features from closed source products/vendors, everything should be replaceable. On the other hand, I fully support using popular open-source projects, as you get support, documentation, testers and upgrades for free.

    After having some experience modernizing large legacy code bases, I'd say it's much better to use ready packages than hand-made code, even if you can do a better job.

    p.s.: I'm still trying to swallow micro-dependencies (hello node_modules), but well, as long as it saves you some lines of code, it should be ok...

  • Slow vs fast languages: I enjoy using the fastest language available, but in the end processing speed is overrated. For general applications, what really matter is having an effective data transfer/structure, as the key to performance is avoiding/delaying/throttling the resource usage.

  • Coding patterns: I see coding as a kind of art, so I'm not a big fan of materials spitting coding rules. Some people end up using those as a kind of "horse eye patch", which limits their alternatives, while the truth is that a problem might have N different (and equally great) solutions. But yeah, things are easier when everybody speaks the same language :)

  • Reinventing the wheel: Traditional jobs, require standard approaches. Despite that, I think reinventing the wheel is the best way to evolve something, it gives us freedom to filter out bad decisions and merge in the good ones, that's how disruptive tools/approaches are born.

  • Hiring in IT: We're often looking for our clone. Someone that thinks and knows the same things as us, and in this process a lot of great professionals are lost... And I think it's not possible to fix it.

    Big companies can afford to add more people/steps into the hiring process, to make it less biased (but more stressful for the interviewee), or to raise the bar with complex requirements, to ensure they are hiring an exceptional brain (hopefully they are not grabbing bazookas to kill ants, that's bad for the society).

    For smaller companies I'd follow these priorities: indication from someone I trust > previous experiences/personal projects AND/OR offline coding/implementation test (not huge, but complex enough to allow the person to show his organization, reasoning and resource management skills) > soft-skills.

Random Facts

  • I've been working remotely since 2015, and I fully recommend it.
  • I got my first computer when I was around 10 years old, a 486-DX2. I've learned how to use it by spying my cousin giving classes about DOS (not DoS 👀), so I still remember something about: devicehigh=xyz, deltree, typing win to start the Windows 3.11, turbo button, sound blaster kit, cleaning the mouse ball, zipdrive, SCSI (the super fast disk that nobody had 😁), etc.
  • I've got access to the computer after finding the key (yeah, computers had locks) and discovering the password (which was errrrr "password" in my language 🤦‍♂️).
  • I've joined the internet after listening to some guys discussing about it and HTML in the classroom when I was ~14... I've got curious and once I arrived at home, I found an AOL CD and installed it, but well, it required a modem... Hopefully I remembered my cousin was talking about this device, when he was setting up a Dial-Up connection to play Duke Nukem online againt my other cousin (a real WTF at the time and, I still don't know from where he took all this knowledge haha)... So I found a great 13.4 Kbps modem in a box with old hardware pieces, cut some cables and it just worked! I still remember about using the internet at night to save money, losing the connection when someone was calling and the introduction of "download resumers" was awesome 😎
  • I still feel proud about my old codes, since I've created a binary parser (which was used by the MongoDB Driver, exactly here: https://github.com/mongodb/node-mongodb-native/blob/c9a7b9050d54794d0f515e10f3c4d3556f9f6cbf/lib/mongodb/bson/binary_parser.js#L1), a big number library and other things in JS, some years before they were introduced to the language, it's cool when you get random (as I totally didn't need these things) ideas and make them work =]
  • Given that frontend has changed a lot these days, I don't have a specific preference to work in the backend/frontend anymore (it used to be the backend).
  • I took part into the contest where the creator of JQuery (John Resig) was starting to become popular haha (our entry is the number #2, John's entry is #3).
  • I've started reading about web stuff around 1997... It was the time when everybody was using AOL, chatting rooms (who knew how to write rainbow texts was considered a hacker haha), Yahoo Groups, SubSeven (o_O) and etc... I've got a 30-50 pages Word document and it was just enough to learn HTML/CSS. It was also talking about JavaScript, but I didn't grasp it at first (why do I need this crap?)... Errrrrr, not until I discovered it was used to create those cool mouse trails, blinking radios, etc. 😂
  • I've won a video game championship when I was a child (and others at my working place). The older guys (which lost for me by scores of 10x0), were praising me as a god 😂🏆
  • My first paid task was converting handwritten monographies to Word when I was around 13. I have nothing to complain, any amount of money is a treasure for a teenager haha.
  • My first programming language was JavaScript.
  • My favorite type of task is improving performance and diving into weird bugs.
  • My first home page is still accessible through the https://archive.org, but I'll never reveal its address! Some close friends must still remember about it 👀
  • I've got my first programming job around 2001, a kind of freelance job to work on the integration of a machine to test the cushioning system of cars using Object Pascal/Delphi (I didn't receive my last paycheck 😑). After that I've moved to another company which was building hardware to teach children, doing the same type of job... At a certain time, I've decided to join a university (which I just finished around 2014 with the introduction of remote courses)... There I was solving the exercises using minified codes in C, the teacher got interested in my skills and indicated me to work in a company which was developing mobile applications in C/C++. After that I've moved to a digital agency and I've been working with web related technology since then, mostly using C#, PHP and JavaScript.
  • I've been once a victim of a kind of social engineering attack... When I was 16, a friend of mine asked me to take a look on a game that he made and it had a hidden keylogger haha (that day I realized how ineffective antivirus were against unknown threats haha)... Hopefully he warned me later! These days I was looking for him in internet and looks like he became famous for earning prizes in online promotions, such as a CAR haha... I have a small guess about how he got the prizes 👀
  • I've been once a victim of a ransomware as well! Someone connected to my MySQL database years ago and renamed the databases to form a message asking for money (after that I've finally became a bit psycho with security) 💩
  • My favorite PC games were Euro Fighter 2000 (a flight simulator), Full Throttle, Indiana Jones, Quake, Duke Nukem and Warcraft, countless hours spent on them... The most revolutionary one was Carmageddon, my family was just shocked! Then it came a lot of trash games + the infinite Battlefield/Counter-Strike (I was the AK guy) seasons, which were then replaced by eternal (successful, but full of hatred against the game's AI) FIFA seasons, until I got retired from games 😂
  • I don't trust in the current state of crypto currency, but digital money is here to stay (I can't remember last time I've touched bills/coins)... Also descentralization in general sounds great given our failed leaderships.

First Open Source Projects

  • A source of manually minified JavaScript snippets written with a friend a long time ago, when I had plenty of spare time. It's kind of abandoned, but I'm still using some codes from there 💯.

    JSFromHell

  • Code editor written in Object Pascal that used Scintilla under the hood, it was also my first open-source project. I've contributed with a lot of code and ideas, such as the transition from procedural code to an object oriented approach. The plugins were written in JavaScript and the interface of the editor could be customized with CSS (AFAIC we were parsing the CSS and building the interface based on it). Looks like the idea was great, given the popularity that tools such as "Electron" got 😵

    Notes Editor

My GitHub Gists

Just small codes and notes which I thought wasn't worth to create a repository.

GitHub stats Top Langs

visitors

Pinned

  1. codility Public

    My solutions to exercises and tests at http://codility.com.

    C# 86 65

  2. notes Public

    A code editor with support for dozens of languages, syntax highlighting, JavaScript macros/plugins, personalized smart indenting, debugger, folder search, etc.

    Pascal 7 8

  3. My solution for the chutes/snakes and ladders problem. I've left a description with all my reasoning/approaches.

    JavaScript 1

  4. hackerrank Public

    My solutions to exercises and tests at https://hackerrank.com.

    JavaScript 2 2

  5. leetcode Public

    My solutions to exercises and tests at https://leetcode.com

    JavaScript 4

  6. JavaScript functions from JSFromHell.com

    JavaScript 5 2

961 contributions in the last year

14 contributions on February 6, 2022 2 contributions on February 7, 2022 1 contribution on February 8, 2022 2 contributions on February 9, 2022 5 contributions on February 10, 2022 7 contributions on February 11, 2022 1 contribution on February 12, 2022 14 contributions on February 13, 2022 2 contributions on February 14, 2022 3 contributions on February 15, 2022 10 contributions on February 16, 2022 4 contributions on February 17, 2022 No contributions on February 18, 2022 3 contributions on February 19, 2022 1 contribution on February 20, 2022 5 contributions on February 21, 2022 No contributions on February 22, 2022 4 contributions on February 23, 2022 1 contribution on February 24, 2022 11 contributions on February 25, 2022 No contributions on February 26, 2022 1 contribution on February 27, 2022 1 contribution on February 28, 2022 No contributions on March 1, 2022 No contributions on March 2, 2022 No contributions on March 3, 2022 No contributions on March 4, 2022 No contributions on March 5, 2022 No contributions on March 6, 2022 No contributions on March 7, 2022 1 contribution on March 8, 2022 5 contributions on March 9, 2022 No contributions on March 10, 2022 1 contribution on March 11, 2022 1 contribution on March 12, 2022 4 contributions on March 13, 2022 4 contributions on March 14, 2022 3 contributions on March 15, 2022 No contributions on March 16, 2022 No contributions on March 17, 2022 No contributions on March 18, 2022 No contributions on March 19, 2022 No contributions on March 20, 2022 No contributions on March 21, 2022 No contributions on March 22, 2022 No contributions on March 23, 2022 No contributions on March 24, 2022 No contributions on March 25, 2022 No contributions on March 26, 2022 No contributions on March 27, 2022 No contributions on March 28, 2022 No contributions on March 29, 2022 5 contributions on March 30, 2022 2 contributions on March 31, 2022 4 contributions on April 1, 2022 No contributions on April 2, 2022 3 contributions on April 3, 2022 10 contributions on April 4, 2022 No contributions on April 5, 2022 5 contributions on April 6, 2022 7 contributions on April 7, 2022 6 contributions on April 8, 2022 9 contributions on April 9, 2022 No contributions on April 10, 2022 2 contributions on April 11, 2022 4 contributions on April 12, 2022 3 contributions on April 13, 2022 1 contribution on April 14, 2022 1 contribution on April 15, 2022 1 contribution on April 16, 2022 No contributions on April 17, 2022 1 contribution on April 18, 2022 No contributions on April 19, 2022 No contributions on April 20, 2022 No contributions on April 21, 2022 No contributions on April 22, 2022 No contributions on April 23, 2022 1 contribution on April 24, 2022 No contributions on April 25, 2022 1 contribution on April 26, 2022 No contributions on April 27, 2022 1 contribution on April 28, 2022 No contributions on April 29, 2022 1 contribution on April 30, 2022 No contributions on May 1, 2022 1 contribution on May 2, 2022 No contributions on May 3, 2022 1 contribution on May 4, 2022 No contributions on May 5, 2022 1 contribution on May 6, 2022 No contributions on May 7, 2022 1 contribution on May 8, 2022 1 contribution on May 9, 2022 5 contributions on May 10, 2022 4 contributions on May 11, 2022 2 contributions on May 12, 2022 1 contribution on May 13, 2022 2 contributions on May 14, 2022 No contributions on May 15, 2022 1 contribution on May 16, 2022 No contributions on May 17, 2022 No contributions on May 18, 2022 No contributions on May 19, 2022 No contributions on May 20, 2022 1 contribution on May 21, 2022 1 contribution on May 22, 2022 1 contribution on May 23, 2022 1 contribution on May 24, 2022 2 contributions on May 25, 2022 5 contributions on May 26, 2022 5 contributions on May 27, 2022 1 contribution on May 28, 2022 9 contributions on May 29, 2022 4 contributions on May 30, 2022 1 contribution on May 31, 2022 1 contribution on June 1, 2022 No contributions on June 2, 2022 No contributions on June 3, 2022 3 contributions on June 4, 2022 1 contribution on June 5, 2022 No contributions on June 6, 2022 5 contributions on June 7, 2022 No contributions on June 8, 2022 1 contribution on June 9, 2022 1 contribution on June 10, 2022 1 contribution on June 11, 2022 8 contributions on June 12, 2022 No contributions on June 13, 2022 8 contributions on June 14, 2022 No contributions on June 15, 2022 10 contributions on June 16, 2022 8 contributions on June 17, 2022 No contributions on June 18, 2022 1 contribution on June 19, 2022 3 contributions on June 20, 2022 4 contributions on June 21, 2022 1 contribution on June 22, 2022 2 contributions on June 23, 2022 No contributions on June 24, 2022 5 contributions on June 25, 2022 3 contributions on June 26, 2022 9 contributions on June 27, 2022 6 contributions on June 28, 2022 1 contribution on June 29, 2022 15 contributions on June 30, 2022 7 contributions on July 1, 2022 19 contributions on July 2, 2022 2 contributions on July 3, 2022 1 contribution on July 4, 2022 9 contributions on July 5, 2022 6 contributions on July 6, 2022 1 contribution on July 7, 2022 No contributions on July 8, 2022 No contributions on July 9, 2022 4 contributions on July 10, 2022 1 contribution on July 11, 2022 1 contribution on July 12, 2022 No contributions on July 13, 2022 13 contributions on July 14, 2022 8 contributions on July 15, 2022 No contributions on July 16, 2022 No contributions on July 17, 2022 No contributions on July 18, 2022 No contributions on July 19, 2022 2 contributions on July 20, 2022 1 contribution on July 21, 2022 6 contributions on July 22, 2022 4 contributions on July 23, 2022 4 contributions on July 24, 2022 No contributions on July 25, 2022 2 contributions on July 26, 2022 3 contributions on July 27, 2022 11 contributions on July 28, 2022 4 contributions on July 29, 2022 6 contributions on July 30, 2022 5 contributions on July 31, 2022 1 contribution on August 1, 2022 2 contributions on August 2, 2022 11 contributions on August 3, 2022 5 contributions on August 4, 2022 4 contributions on August 5, 2022 4 contributions on August 6, 2022 3 contributions on August 7, 2022 7 contributions on August 8, 2022 6 contributions on August 9, 2022 3 contributions on August 10, 2022 9 contributions on August 11, 2022 21 contributions on August 12, 2022 4 contributions on August 13, 2022 24 contributions on August 14, 2022 5 contributions on August 15, 2022 2 contributions on August 16, 2022 6 contributions on August 17, 2022 No contributions on August 18, 2022 1 contribution on August 19, 2022 1 contribution on August 20, 2022 1 contribution on August 21, 2022 2 contributions on August 22, 2022 3 contributions on August 23, 2022 No contributions on August 24, 2022 2 contributions on August 25, 2022 1 contribution on August 26, 2022 No contributions on August 27, 2022 1 contribution on August 28, 2022 No contributions on August 29, 2022 1 contribution on August 30, 2022 1 contribution on August 31, 2022 1 contribution on September 1, 2022 1 contribution on September 2, 2022 No contributions on September 3, 2022 No contributions on September 4, 2022 1 contribution on September 5, 2022 No contributions on September 6, 2022 1 contribution on September 7, 2022 No contributions on September 8, 2022 1 contribution on September 9, 2022 2 contributions on September 10, 2022 10 contributions on September 11, 2022 6 contributions on September 12, 2022 3 contributions on September 13, 2022 8 contributions on September 14, 2022 4 contributions on September 15, 2022 5 contributions on September 16, 2022 1 contribution on September 17, 2022 2 contributions on September 18, 2022 10 contributions on September 19, 2022 4 contributions on September 20, 2022 1 contribution on September 21, 2022 No contributions on September 22, 2022 12 contributions on September 23, 2022 No contributions on September 24, 2022 No contributions on September 25, 2022 1 contribution on September 26, 2022 No contributions on September 27, 2022 1 contribution on September 28, 2022 1 contribution on September 29, 2022 No contributions on September 30, 2022 1 contribution on October 1, 2022 1 contribution on October 2, 2022 No contributions on October 3, 2022 1 contribution on October 4, 2022 1 contribution on October 5, 2022 No contributions on October 6, 2022 1 contribution on October 7, 2022 5 contributions on October 8, 2022 2 contributions on October 9, 2022 2 contributions on October 10, 2022 1 contribution on October 11, 2022 2 contributions on October 12, 2022 3 contributions on October 13, 2022 1 contribution on October 14, 2022 1 contribution on October 15, 2022 1 contribution on October 16, 2022 1 contribution on October 17, 2022 1 contribution on October 18, 2022 7 contributions on October 19, 2022 1 contribution on October 20, 2022 No contributions on October 21, 2022 1 contribution on October 22, 2022 1 contribution on October 23, 2022 2 contributions on October 24, 2022 2 contributions on October 25, 2022 1 contribution on October 26, 2022 1 contribution on October 27, 2022 2 contributions on October 28, 2022 1 contribution on October 29, 2022 2 contributions on October 30, 2022 4 contributions on October 31, 2022 1 contribution on November 1, 2022 2 contributions on November 2, 2022 No contributions on November 3, 2022 1 contribution on November 4, 2022 No contributions on November 5, 2022 No contributions on November 6, 2022 1 contribution on November 7, 2022 No contributions on November 8, 2022 1 contribution on November 9, 2022 8 contributions on November 10, 2022 7 contributions on November 11, 2022 2 contributions on November 12, 2022 2 contributions on November 13, 2022 1 contribution on November 14, 2022 2 contributions on November 15, 2022 6 contributions on November 16, 2022 3 contributions on November 17, 2022 2 contributions on November 18, 2022 1 contribution on November 19, 2022 No contributions on November 20, 2022 2 contributions on November 21, 2022 3 contributions on November 22, 2022 2 contributions on November 23, 2022 2 contributions on November 24, 2022 1 contribution on November 25, 2022 5 contributions on November 26, 2022 13 contributions on November 27, 2022 1 contribution on November 28, 2022 1 contribution on November 29, 2022 1 contribution on November 30, 2022 7 contributions on December 1, 2022 8 contributions on December 2, 2022 3 contributions on December 3, 2022 1 contribution on December 4, 2022 No contributions on December 5, 2022 No contributions on December 6, 2022 No contributions on December 7, 2022 No contributions on December 8, 2022 No contributions on December 9, 2022 No contributions on December 10, 2022 2 contributions on December 11, 2022 1 contribution on December 12, 2022 2 contributions on December 13, 2022 No contributions on December 14, 2022 No contributions on December 15, 2022 No contributions on December 16, 2022 No contributions on December 17, 2022 1 contribution on December 18, 2022 5 contributions on December 19, 2022 18 contributions on December 20, 2022 3 contributions on December 21, 2022 1 contribution on December 22, 2022 1 contribution on December 23, 2022 1 contribution on December 24, 2022 No contributions on December 25, 2022 1 contribution on December 26, 2022 1 contribution on December 27, 2022 1 contribution on December 28, 2022 2 contributions on December 29, 2022 1 contribution on December 30, 2022 1 contribution on December 31, 2022 1 contribution on January 1, 2023 1 contribution on January 2, 2023 4 contributions on January 3, 2023 1 contribution on January 4, 2023 1 contribution on January 5, 2023 No contributions on January 6, 2023 No contributions on January 7, 2023 9 contributions on January 8, 2023 5 contributions on January 9, 2023 2 contributions on January 10, 2023 1 contribution on January 11, 2023 1 contribution on January 12, 2023 4 contributions on January 13, 2023 16 contributions on January 14, 2023 6 contributions on January 15, 2023 6 contributions on January 16, 2023 18 contributions on January 17, 2023 9 contributions on January 18, 2023 No contributions on January 19, 2023 2 contributions on January 20, 2023 1 contribution on January 21, 2023 1 contribution on January 22, 2023 3 contributions on January 23, 2023 6 contributions on January 24, 2023 1 contribution on January 25, 2023 2 contributions on January 26, 2023 5 contributions on January 27, 2023 1 contribution on January 28, 2023 1 contribution on January 29, 2023 1 contribution on January 30, 2023 6 contributions on January 31, 2023 6 contributions on February 1, 2023 4 contributions on February 2, 2023 No contributions on February 3, 2023 No contributions on February 4, 2023 No contributions on February 5, 2023 No contributions on February 6, 2023 No contributions on February 7, 2023 Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Jan Mon Wed Fri
Activity overview
Contributed to pkp/pkp-lib, pkp/ojs, pkp/ops and 50 other repositories

Contribution activity

February 2023

Created 8 commits in 2 repositories
Opened 2 pull requests in 2 repositories

Seeing something unexpected? Take a look at the GitHub profile guide.