Blog posts from the feed-en-tech channel (@feed-en-tech)
Announcing the development of Shiftine, the Content Multiplexing System.
In the coming months, we decided to completely replace 90% of our websites, either powered by: Google Sites HAM (like our digital garden) Odoo (as currently used in Shiftine) T-3000 (our latest reinhart1010.id source code) into a single, custom-made content management system (CMS) to standardize the look, feel, and features to our websites. Our general purpose is to let future website improvements to be shipped as quick as possible, and to let ourselves build even faster microsites and content, combining the simplicity of text-based content (like Markdown and YAML) with rich-layout editing. What does this mean… For most users Most users will see significant changes to our website appearance, which will become more unifed than ever. And most users should benefit from our official support for older web browsers, from the latest browsers down to KaiOS and Opera Mini. We are also planning to add non-HTTPS mode for WAP browsers, as well as support for Gemini Protocol. Note that in order to continue accessing our site from HTTPS, your browser and/or operating system needs to meet the minimum system requirements for Let's Encrypt ISRG Root X1 to work. Expect new features carried from our main WordPress instance to the non-WordPress ones, such as a dedicated Category and Tag page, all with necessary RSS/Atom feeds. Internally, we would like to completely break up with WordPress. No, not because of the political movements that hit WPEngine over the last months, but to have a state-of-the-art version of Block Editor that allows us to adjust certain content for different protocol targets (which include HTTPS, HTTP/WAP, and Gemini). For users with JavaScript disabled Even though we are interested in adopting a reactive-style as a whole, we do understand the needs of certain users who have JavaScript disabled. And in fact, this is why we decided to remade our website to serve high-quality features even with JavaScript disabled. For the HAM website framework We will still develop and support HAM in the near future, but for our HAM websites like our digital garden, we will introduce two additional features to ease the transition to our Content Multiplexing System: Raw Markdown access in the published site Custom canonical HTML meta tag so search engine would preferably use the links hosted by our new CMS For the fans of Shiftine We want to import some easter eggs that make Shiftine, Shiftine. But for the lore, hmm… it's the moment where she floats over the clouds to send a smiling 200 OK to serve people across worlds and nations.
The illusion of Surveillance Capitalism narrative as we knew it.
Exactly one year ago, I made the decision to withdraw myself from those surveillance capitalism narrative where corporations and governments are ambitioning for extracting your data in exchange for all the fun and convenient things of the cyberspace. And you have to take action. As a person who have ever worked with real FLOSS organizations before real technological startups and real government, I too can connect such one narrative to another. To justify my reasons on dropping the surveillance narrative altogether, I need to say that we live in a society where technological ambitions—including Surveillance Capitalism and Artificial Intelligence—often come and go and leave a huge loss of money and effort. Learning from the fall of Big Data Let's say about the old tale of Big Data, which was perceived as "revolutionary towards the rapid globalization and digitalization" as many people including me believed 5 years ago. And today, we can no longer deny that the role models of Big Data—Google and companies alike—are being beaten by the legal forces of European Union, and surprise, the United States' Federal Trade Commission and Department of Justice. "Data is the new oil" suddenly posed business threats that are barely different than those dealing with real oil. Huge legal battles about monopoly in the energy sector, workplace practices and ethics, cases of environmental and sustainability are keep coming towards the industry. It is also recently known that ESG (Environmental, Social, and Governance) initiative, which PwC pitched three years ago to be highly significant for investors, suddenly became nothing but a massive virtue signalling campaign to psychologically stimulate humans to buy and consume their products. It is clearer each day the industries honestly no longer want to establish such goals. Some of you may already relate those "real oil" company issues with those dealing with "digital oil". The people behind such "digital liberation" movements, including the EFF and FSF, writing their own personal book of corporate sins for email companies, your operating system (including Apple and even Linux), your well-known search engine, your smartphone brand, your "smart" printer, and at the end of the day, towards governments with their law enforcement and intelligence agencies. Here's a page taken out from one of their books of corporate sins: The new version of MacOS — and therefore the new generation of Macs — informs Apple of every time the machine launches a program. The Guardian press seems blissfully unaware of this spying. It even repeats Apple's claims to help users protect their privacy — but only some aspects of their privacy. Just as software developers have redefined "security" to mean "security against everyone but us", Apple is redefining "privacy" to mean "privacy from everyone but us." Reasons not to use Apple by Richard Stallman Not to mention the latest incidents in the tech ambition world: the Apple fallacy of privacy, Google finally get convicted for monopoly with DoJ proposing to sell off Chrome. The Big Data and ESG-like "blockchain-first" corporate pledges are going away, and as we know before, those influencers who were hyped with Blockchain jumped ship to AI. To whom it may concern, double the red pill, please. The Cyberspace is never meant for freedom. Some who support the anti-surveillance liberation movement may be proud for being "red-pilled" (as in The Matrix) over this situation. But it's also an irony that they forgot to take another red pill. A Declaration of the Independence of Cyberspace believes that the Cyberspace itself is independent from the forces of the industrial governments, which they accuse for not being wholeheartedly involved in their conversation, and instead enforces laws by raising issues which the people claiming to be part of the Cyberspace claimed never existed. But is it? It is clear that the early origins of the Internet significantly came from ARPANET, an United States government project. ARPANET was not a regular, political or democratic effort of establishing the computer networks for the public, but it is a military project in the first place. Now what did the military project bring into the design of the modern-world Internet? Yes, the basic TCP/IP network that we still even use as of today. By using the present-day Internet, knowingly and unknowingly, we are using the designs and the arts of the military government to our personal benefits. Like a peanut forgetting their skin. Okay, long story, but some of you cypherpunks wanted to stay away from the government by using a technique named encryption. But think again what made encryption freely available to you, and especially for United States citizens, to people outside of your country. Did you know that the US government has provided a set of encryption algorithm that we blindly use it for day-to-day encryption!? Secure Hash Algorithm (SHA) is everywhere, and even it is used for HTTPS and validating your Linux software packages with a checksum. And as the goodness of SHA itself came from the militant nature of the United States government agencies, so are they protected by the cryptographic exports laws. Thanks to such laws, almost everyone can enjoy the benefits of encryption, including your ambitions to lock yourself out from the governments. I would recommend you to thank to your (government) enemy to give the kindness and permission to you, which the government may identify you as an enemy of theirs, to use such algorithms for use inside and outside the countries where such algorithms are developed and respectfully belong to. So, is freedom synonymous to stealing? Reflecting my actions over the past 12 months of not engaging with such ideological narratives, I wonder if I keep supporting defeating surveillance capitalism, either the enterprise or the government side of things, could eventually benefit me in the long term. If I believe that my personal life and data are stolen as part of a social experimentation from those parties, then I and others decided to take them back by stealing their opportunities, then what makes us different from our own enemies if we altogether love to steal? I know that the Holy Bible has all the answers that we are tasked to pray, give ourselves away, and even bless our own enemies. Applying the basic principles from Mark 12:17, and as the Internet partly bears the image of the government ambitions to organize their (military) missions to protect their own country, I am giving back what belong to the Caesar to Caesar, those who are God's to God, and those belong to the governments, to the governments. I will apply the same principles to the other parts of the Internet, too. The images of academic research efforts for academia, the images of enterprise ambitions to enterprises, and organizations for organizations, and my own intentions for myself. And in addition to that, while accounting to the same Bible, I am a product even in your own terms, as I did not pay anything to be born as a boy on this world (I would rather stay happily in the heavens in exchange for that). Being light—wholeheartedly transparent of our identity, existence, and actions—is indeed a great consequence of following Christ. But I would doubt you shall believe the Bible if you stay true to your ethical beliefs, because all the stories I referenced from the Bible, are all the personal information gathered from real people who were recorded before your establishment of modern human rights and digital rights. Remembering that blessings come from privacy invasions. If I truly follow the current modern world definition of digital privacy as a human right, then I would proudly present the Holy Bible as a great written historical record of people that we even read everyday without each of these people’s consent. The process of recording and distributing the events in the Holy Bible should be considered a privacy invasion, as I and we did not even ask for the consent of the descendants of Abraham, Samuel, or so, just to be able to read, modify, and/or reproduce their stories and quotes either for commercial or non-commercial purposes. We did not ask for the legal consent of the parents of Joseph, Jacob, and David in order to do the same with their stories. Unlike the former ones, these people and their guilty sins were recorded since their childhood days, making the Holy Bible a product of the biggest children’s privacy invasion conducted over more than 1,000 years. If you uphold the values of purity and digital privacy against preying companies and governments, but at the same time love the stories of the Bible, it may be an indication of a double standard. Just as I said last year, God did not ask us to be a light of the world except for Facebook, or even having our shine end-to-end encrypted to peers that you can only trust in such a rigorous process. This Bible is why I left my beliefs on surveillance capitalism.
Site and Infrastructure updates, September 2024 edition.
Hello, world! We’re currently in the middle of something great, and we can’t wait to finally tell about that. And at the meantime, here’s what’s new and improved in our website. 1. We’re making (https://)shiftine.sh. What could that really be? Reinhart personally wanted to relocate our fandom from reinhart1010.id to shiftine.sh, stuffed with command-line easter eggs that fits with our new website name (.sh is also a file extension for shell scripts). But we still need a lot of time to finally ship that to you. Well, queue and jump in to the happiest website that (we’ve) ever shipped! 2. We’re also remaking our color palette website. Our color palette website is currently being rewritten from scratch, this time using Remix and Cloudflare Pages. We’re almost done with Codepen who have helped hosted our color palette website for almost two years, and had blocked our login attempts for months due to a then-ongoing DDoS issue. And we’re rebuilding our codebase to be able to export our color scheme into a number of apps and design systems. That would make us easier to make and share our custom themes for your favorite apps, from Firefox to Visual Studio Code. 3. We’ve upgraded our website to Laravel 11. This is nothing exciting for most people, but hey, we’re still taking care of updating our website libraries for the better. 4. We fixed a Dark Mode bug. Starting today, when you visit our website, we will always set a new cookie named r10-current-auto-theme to fix an annoying Flash of Unstyled Content (FOUC) bug as we changed how our Dark Mode was implemented to support our new 404 webpage (introduced July 2024). We can point you to the exact source code on GitHub where we set and use those cookies. This feature is GDPR-safe as those cookies are made for functional and UX purposes. 5. Search result now include dates. Finally, and finally (this is the last update we’d like to announce for good), we’ve improved our search results a bit by adding timestamps, the date and time where those articles are originally published (not updated). The date and time should be adjusted to your local time settings, so no need to figure out your time from UTC or Asia/Jakarta. So that’s all for now. Welcome to MY world (>_ )!
How to properly update your WhatsApp Business account name with Cloud API.
This tutorial requires the use of the command-line interface. For Windows, we recommend instead to use PowerShell instead of the Command Prompt. Warning: There are three different dashboards to interact with WhatsApp Business Platform. For the purpose of clarity, here's what we really meant about: Meta App Dashboard (formerly Facebook Developers App Dashboard): https://developers.facebook.com/apps Meta Business Suite (formerly Facebook Business): https://business.facebook.com/latest/home WhatsApp Manager: https://business.facebook.com/wa/manage The WhatsApp Business platform also consists of different set of credentials as listed below. Here, we only need to use the Access Token, the WhatsApp Phone Number ID (not the Business Account ID), and the WhatsApp Two-Step Verification PIN (more on that later). Access Token: In order to perform HTTP request to WhatsApp Business Platform. The Meta App Dashboard by default allows you to create temporary tokens for use in 24 hours. To create a permanent access token: Ensure that your Facebook account is connected to both the Meta Business Suite (to manage business entities) and Meta App Dashboard (i.e. by registering into the Meta/Facebook Developers programme). Register a new business and Business Assets (i.e. related Facebook pages and Instagram accounts) on Meta Business Suite. Register a new app on Meta App Dashboard Create a new System User on the Business Settings in the Meta Business Suite On the Meta Business Suite, create the Access Token by clicking on Generate Token button on the System User settings, then link them to the desired App. App Secret (as configured in the App Dashboard): Only useful when authenticating received webhooks. Webhook Verify Token: A unique token set by you to be able to verify certain webhook events. WhatsApp Business Account ID: The Facebook Graph API Object ID representing the business account. This ID can be easily grabbed on the Meta App Dashboard, assuming that you have registered the phone number. WhatsApp Phone Number ID: The Facebook Graph API Object ID representing the registered phone number. This ID can be easily grabbed on the Meta App Dashboard, assuming that you have registered the phone number. WhatsApp Two-Step Verification PIN: A 6-digit PIN set by you to secure your WhatsApp business account. If you are not familiar, the Facebook Graph API introduced an universal ID format for every kinds of object/entities. That means if there is a WhatsApp Business Account ID of 123123123, then it is guaranteed that the number are not used in any other forms of objects, like the WhatsApp Phone Number ID, the Facebook Pages ID, the Instagram Post ID, and so on. Step 1: Request a display name change on WhatsApp Manager. You cannot try this feature on the default Test WhatsApp Business Account or any account that has the Display Name change featured disabled for administrative reasons. Go to WhatsApp Manager > Account Tools > Phone Numbers. Make sure that you are selecting the correct WhatsApp Account on the top-right corner. You can also see that there's the "WhatsApp account ID", which is actually your WhatsApp Business Account ID. It is different than WhatsApp Phone Number ID that we need later, as some WhatsApp Business Account are allowed to add more than one phone numbers. Now, on your desired phone number, change the display name. You can only move to the next step if the new display name is approved. Step 2: Set up (or update) your WhatsApp Two-Step Verification PIN. This is the part where we start to use the command-line. If you never set up those PINs, you can send a request to the WhatsApp Business Cloud API: Replace the {{ACCESS_TOKEN}}, {{PHONE_NUMBER_ID}} and {{PIN}} with the Access Token, WhatsApp Phone Number ID, and WhatsApp Two-Step Verification PIN respectively. # Windows (requires PowerShell) Invoke-WebRequest -Method Post -Body '{ "pin": "{{PIN}}" } -Headers @{ Authorization = "Bearer {{ACCESS_TOKEN}}" } -ContentType 'application/json' https://graph.facebook.com/v20.0/{{PHONE_NUMBER_ID}} # macOS and Linux (requires curl) curl -X POST 'https://graph.facebook.com/v20.0/{{PHONE_NUMBER_ID}}' -H 'Authorization: Bearer {{ACCESS_TOKEN}}' -H 'Content-Type: application/json' -d '{"pin" : "{{PIN}}"}' Note: We recommend to use the System User Access Token instead of the temporary token generated from the Meta App Dashboard. Make sure that the server responds with {"success":true}. Step 3: Trigger the display name change on the WhatsApp Cloud API. Lastly, we can trigger the following command to apply the display name change. Replace the {{ACCESS_TOKEN}}, {{PHONE_NUMBER_ID}} and {{PIN}} with the Access Token, WhatsApp Phone Number ID, and WhatsApp Two-Step Verification PIN respectively. # Windows (requires PowerShell) Invoke-WebRequest -Method Post -Body '{ "messaging_product": "whatsapp", "pin": "{{PIN}}" } -Headers @{ Authorization = "Bearer {{ACCESS_TOKEN}}" } -ContentType 'application/json' https://graph.facebook.com/v20.0/{{PHONE_NUMBER_ID}}/register # macOS and Linux (requires curl) curl 'https://graph.facebook.com/v20.0/{{PHONE_NUMBER_ID}}/register' -H 'Content-Type: application/json' -H 'Authorization: Bearer {{ACCESS_TOKEN}}' -d '{ "messaging_product": "whatsapp", "pin": "{{PIN}}" }' Make sure that the server responds with {"success":true}.
Fing now won’t let me scan without giving my money, so I forked an old Android app for that (Altia).
Firefox have just ended this annoying popup.
Our guide to data models is here!
Last month, we explained on how we commonly design our REST API for our products. But apparently, some people still don't understand what the “model-centric path approach” actually mean. Now, we admit that it might be technical to explain here. In short, we are talking about data models, aka. how we commonly organize different sets of data. Since we all believe in object-oriented (OOP) software design, as well as object-relationship mapping (ORM) mechanisms, we adopt a strategy where a data model should be designated as a distinct Class (in OOP) and Entity (in entities, commonly in relational database design). Today, we are starting a new experiment on our digital garden. As we discussed last year, a digital garden is another way to organize ever-growing knowledge without forcefully having it to be perfect to be, a blog article, for example. And sure, there are some “plants” there that are more mature than others, and our explanation of Data Models could be one of them. When we talk about a data model, we’re not talking about one specific kind of data, but a group of data assigned according to a related context. It means that each data contained inside a data model should be related in a certain way. And that also means, data models are an efficient way to organize data to produce an information. Data Models on our digital garden. Now, no matter how deep are your current understanding about data, OOP, database systems, or so, we are trying our best to explain these concepts from beginners and up. So, why not just check it out at https://shift.reinhart1010.id/note/data-models?
HAM v1.1: Supporting tables and technical diagrams!
The version 1.1.0 was quickly withdrawn due to issues loading with custom tables HAM, our homegrown static Jekyll wiki framework now just got an update. Just like our past versions, this one is heavily motivated by our internal projects that are using HAM. With this new version, you can now render diagrams with Mermaid. Mermaid is an open-source language and engine that lets you render technical charts and graphs from plaintext, just like Markdown for rich text. Mermaid has been used in some notable Markdown-based apps that we personally love, including Joplin and GitHub. However, for the time being, we currently only support Mermaid when embedded inside a <pre class="mermaid"> HTML tag, instead of ```mermaid (as an annotated Markdown code block). The latter may clash with our existing syntax highlighting feature powered by Highlight.js. In our digital garden, we use Mermaid to render Entity Relationship Diagrams (ERDs) and Unified Modeling Language (UML) diagrams. And lastly, we also decided to add support for tables, just like our main website! If you have previously used other table markups, like the ones offered in Bootstrap 5, you will need to opt out from default styling by adding a special data- property, i.e. <table data-ham-ignore="true">.
Introducing HAM v1.0.4.
HAM is a simple Jekyll framework that allows you to build static wiki sites. And today, we are introducing a maintenance update with the following changes. First, the Bootstrap Icons dependency was updated from v1.11.1 to v1.11.3. There are no significant changes from the 100+ new icons introduced since v1.10. These icons are directly built into HAM, and you can simply use them in your Markdown source files as <i> HTML tags. (Just make sure you have reviewed their Web Accessibility recommendations on placing icons.) Next, we have also fixed a bug on v1.0.0 where users are redirected to the wrong YouTube URL when their web browsers do not support <iframe>. Well now, all modern web browsers supports that feature, and we're making this change to ensure that . HAM is not going anyway sooner. We still love HAM, and still use them on some of our internal projects. In fact, HAM still looks very nice on building another API documentation website like this: Of course, there are still some work to do. At least, readjusting the heading texts and adding more Liquid tags, and making these ugly tables more beautiful just what we recently did on our main website. So don't worry, we're still dogfooding HAM on our own.