Resuming our BOINC activity!

In July 2021, we decided to join Science United, a distributed research project powered by BOINC to help people donate their computing power to help advance scientific research. This includes finding cures for COVID-19, solving complex mathematical problems, giving a better perspective about our universe and more.

This isn’t actually the very first time we’ve contributed to the BOINC project, which we have actually done since 2016 with BAM! However, since Science United automatically allocates the most suitable projects for any device types as possible, we decided to bring our array of ARMv7-powered roothouse into the club.

That said, our roothouses were broken, as explained by Caps on our recent post about BINUS Today and our private GitHub Actions setup. After cleaning up those issues, we decided to reopen our doors for BOINC projects, so these idle devices can still work for science when there’s no more Actions to do!

Share your favorite place with their favorite maps in maps.reinhart1010.id.

Today, we’re excited to announce maps.reinhart1010.id, a free service that lets you share geographical locations without forcing anyone to download and install your preferred map app.

That means you can finally share locations from Waze to those who instead prefer Google Maps or OpenStreetMap and vice-versa!


Believe me, this app isn’t solely built because of Linktree. In fact, we’re already thought all about this feature when we originally built Food Navigator in 2019. And we actually stole Wikipedia’s idea when building this feature for the first time!

Even Wikipedia already included similar feature before!

Since Apple’ iOS doesn’t offer a standardized way to view map links in different map apps (similar to how Android handles geo: URIs), mobile map apps compete with each other by providing incompatible map app links, which means you (most likely) need to install their own apps to view your friend’s or colleague’s shared location.

Caps
Use Waze to drive to Palmerah Utara 1: https://waze.com/ul/hqqguwnzve
Me
Indonesia, Special Capital Region of Jakarta https://yandex.com/maps/org/100187376781
Caps
https://urldra.cloud.huawei.com/ifrW8PPMDS

In Food Navigator, we decided to directly place a list of links which users can click to open in their own map apps such as the one bundled with Windows 8, 10, and 11.

🆕 Sharing a new location

To share a new location, simply visit https://maps.reinhart1010.id/ and enter the place details including coordinates.

However, we know that you’re lazy to copy-and-paste coordinates, so that’s why we offer conversions from tens of unique online map URLs and coordinate formats, including Google Maps’ Plus Codes.

Some map apps commonly copy unnecessary text when you decide to copy or share a specific location from their app. Let’s take the previous example into the test!

Caps
Use Waze to drive to Palmerah Utara 1: https://waze.com/ul/hqqguwnzve

The good news is that you can still copy-paste the original message to our site and let our site automatically detects and parses the URLs for you!

👋 Receiving a new location

Now that your random friend sends you a location, you can choose one of our supported map apps to open and continue the search.

Of course, you can see a list of supported apps under More apps and websites…, and you can assign your favorites for a quick shortcut the next time someone else sends another map link.

⚙️ Behind the scenes

This site is, in fact, the first webapp to be powered using Remix. It’s also the first webapp to run under Cloudflare Pages and Workers. And of course, it’s the first one to use Konsta UI which provides a more native feel for both Android and iOS devices!

Oh wait! I almost forgot to say that this is also the second one to utilize Mapbox (the first one is well, to render live maps on this site) and the first to use Cloudflare’s R2, a Amazon S3-compatible storage service. And finally, also integrated hCaptcha for the very first time to support our cloud-based URL de-shortening service.

That said, the Cloudflare Workers ecosystem has their own limitation in terms of standard libraries and bundle size. Note that Workers are not fully compatible with regular Node.js libraries, and that’s why we ended up using the standardized Fetch API instead of libraries such as Bent and Axios. At least we don’t have to handle with plain old XMLHttpRequest, though.

Aside from that, we originally wanted to use Apple Maps instead for rendering static maps, but soon we decided to remove it due to technical difficulties in signing requests with Cloudflare Workers.

It’s surprising to see that R2 doesn’t support public buckets yet, so we decided to include a workaround which sacrifices our Worker to kindly fetch from R2 and proxy the results. And to prevent spam, we generated limited-time tokens to fetch the static map when absent from R2.

📈 Future plans

Making this app a profit still seems to be a must, especially when our app becomes popular and starts to exhaust the free quotas of Mapbox and Cloudflare. While it’s quite tempting to create a Premium subscription, it will take another few months or so to be able to integrate them in such an efficient way.

That said, you can still donate to us if you find it useful 😄

Becoming a teacher of machines: Defining a philosophy that keeps me whole as a * developer.

Hi, I’m Reinhart. I rarely wrote in Hashnode as most of my content in reinhart1010.id are often political, comical, and off-topic, but I just stumbled across Hashnode’s writeathon and thought it’s great to give a shot. Sorry, I mean four shots.

I’m working on numerous tech stack and computer systems, which you can found on my official /uses page, my blog post, and of course, my @reinhart1010 and @alterine0101 GitHub profiles, like:

And yeah, I own the most number of tags/categories in Wes Bos’s official /usesdeveloper page list. My tech stack spans across operating systems, and I really wished to put any on the computer and phone fields. But after looking at how 1337Linux users often being described as, I decided to put linux and androidrespectively.

Me on uses.tech

Beyond back-end, front-end, and even full-stack, I am an asterisk developer. Anything! From creating simple CLI tools, web apps (in static, PHP, and Node.js ways), and even mobile apps while currently tinkering in Arduino, computer networks, operating systems, system administration, CI/CD, RPA, and more back-end stuff.

Some of my works are available on GitHub and GitLab, where Hacktoberfest and has become a child’s play as I do contribute and maintain several open-source project including Webcompat.comand tldr-pages.

My developer soul has evolved from an aspiring JavaScript developer (in case you don’t consider HTML as a programming language) into apps, systems, and beyond. And today, I’m practicing to be a reality (“real” reality, VR, and AR) and life developer as well, while holding the same set of principles as when I was just a JavaScript developer.

I wanna code because…

Of course, there are many, many reasons why people really wanted to code, ranging from passion to profession. To recap on things I’ve heard, people want to code because of:

  • Their interest in creating websites, and I do,
  • Because I just follow the trends who said CS will be more useful in future career,
  • Their curiosity in video games, also those people who owned a special, PlayStation “Net Yaroze” console,
  • Their desire to apply the knowledge of computer science to computer engineering,
  • Hobby. Tinkering about electronic things and how do they work,
  • Already hooked up with Texas Instruments calculators,
  • BECAUSE IT’S FUN!!!!!! (in the spirit of Scratch and MIT App Inventor)

The main reason why I still want to code is beyond what they believe the most. Even when financially unpaid, I’ve transformed my university’s student association organizationto start building things on top of Git and GitHub, including a Laravel-based event registration and attendance website which I initially developed way back since 2020. It’s also the same moment as I was first exposed to PHP and Laravel as a Node.js developer, yet I still survived to master both of them, even better today.

Even when I left HIMTI, the site is still actively maintained by people
It's easy to do register for these events :)
Form Validation FTW!

And even with the advent of no-code platforms including Bubble and Siri Shortcuts, I still prefer to write code especially due to their flexibility in performing arithmetic operations. Just try to concat a specific string into all strings inside an array/list in Siri Shortcuts vs your favorite programming language.

And the reason is, because I love to teachcomputers all the things I love to do.

The teacher mindset.

Indonesian folklore highlights the importance of teachers as “heroes without traces of acts”. They are often known so as knowledge transfer can be done discreetly or even secretly, unlike {{insert_superhero_name_here}} who often leave traces of their superpower steps everywhere they go and do. Teachers are directors of human knowledge, which will fruit into decisions and innovations. You won’t be here today without following the steps and directions of your teacher who told 1 + 1 = 2 and 283 mod 2 = 1.

Programmers, indeed, are the teachers of machines and directors of machine knowledge. And even if we exclude the context of computer science, TV show programmers teach those broadcasting machines to broadcast specific parts of content at specific moment, even though not all machines can do that automatically.

Having the same mindsets as the teacher really helps me in solving the most frustrating part of software development: handling with bugs and issues. Just like those less-educated children who often create chaos in schools and homes, we have to understand the characteristics of the ones who we teach. If we talked about second-generation programming languages, we indeed talk about the technical differences between computer instruction set architectures (ISAs) like x86 and ARM.

Or in a newer-generation languages such as JavaScript and Python, we might need to consider operating system-specific differences into account. For example, one does not simply create native Android apps in Java the same way as they do on desktop with AWT or Swing. Not that just because Android has a distinct graphical user interface (GUI) toolkit, Android also has their own unique operating system features and APIs which might not be simply available on desktop, such as native calendar integration.

Goodbye Computer Science, hello Computer Literature.

Continuing my previous point, I have to learn to be and think as the one who I teach. That means if I’m teaching robots on doing things, I have to be a robot.

I haven’t transformed myself into a robot until 2019, where I finally enroll in the computer science undergraduate program after having 5+ years in web development. When I was introduced about Object-Oriented Programming (OOP) a year later, I was mind blown that I’m, too, an Object.

Mastering programming languages doesn’t make me just excel in Computer Science. I’m mastering Computer Literature, aka. the ability to speak, I mean print(), and interfacing with computers! Knowing the lingua franca of Java methods and REST APIs, trained myself to understand binary and hex, the essence of state machines, and even more!

Being a computer linguist makes me want to speak computers all day. Like !0 (which stands for true in JavaScript), the ones mentioned on the Jargon File, supporting “Interface in Polymorphism” on my nation while making personality tests out of pure code:

let i = 0

i = 1

(Note: This code might seem to be normal for JavaScript devs, but if you’re irritated with this, you’re definitely a Swift developer)

Speaking in code, sorry, I mean print-ing in code, has since become my habit. After all, I’m united with code, so I have nothing else to do rather than code every day, real and digital. Yeah, solving problems quickly and efficiently is important, CRUD is important, but the most important thing to be motivated on code all times is well, to be the machine you would teach through your code.

So, Object[], how do you think yourself as a Programmer extends Human implements MachineKnowledgeBaseDelegate? I’m adding an Listener to your exotic Storyand properties!