Friday, March 1, 2024
Epistles to a Software Developer: Abstraction
Dear Eri,
Greetings! How do you do today?
“Registration” Think of what exactly happens when you register a thing. It involves three steps: accepting submitted information, recording it, and storing it. Three steps described in one word. If I say “grooming kit”, what do you imagine? List all the items in your bag? Baby powder? Lipstick? Face powder? Mascara? Hand sanitiser? The list may never end and may vary person to person.
You see, describing multiple things in one word is a timeless technique called abstraction. See how one word is jam-packed with ideas? If I say “Shopping Mall” or “Winemaking”, sensations will gush into your mind; bonus if your imagination is vivid. Abstraction is derived from the Latin word “abstrahere” which means “to draw or pull away”. Drawing a pack of things requires a handle or something to hold on, which is your one word (or phrase) to describe a cohesive collection of things such as a “music band” or brewing a coffee.
Take note that things can be contained in a word, phrase, or a sentence. You might be asking “What is ‘abstraction’ in software development”? If you remember what I taught you about IPO, you can abstract the example I gave you in one phrase: “Temperature Conversion”. Since whitespaces are not available when naming a variable or a user-defined function, name it as “convertCelsiusToFahrenheit” or whatever perfectly describes the function. Abstraction will be your bread and butter when it comes to writing software. Most things are abstractions of abstractions. One word like a function name describes a series of steps… and those steps are called function calls which also describes a series of steps… the deeper you go, the higher your mental energy depletes. Not intrinsic to OOP, but you’ll do this mostly when you do OOP. Abstractions, when done right, make a beautiful readable code.
Let’s go back to “Registration”; as an exercise, see that “accepting”, “recording”, and “storing” are abstractions abstracted by “registration”. Let’s start with “accepting”, the steps to accept the thing is to receive it, validate it, and let it in. Well then, how do you record a thing? Vinyl? Paper? Photograph? Neural implants? There’s so many ways, but choose what suits your requirements. The data from “accepting” is used by “recording” then by “storing”. Grab a pen and paper and list all the logical steps to “accept”, “record”, and “store”. I expect that you’ll draw a “tree” or a “ramifactive” image. Align all the items by their “level” as you write them. After exhausting your imagination, please explain what “Layers of Abstraction” is, strictly from your experience from the exercise. No references other than your mind and memories. How many layers will you make?
Cheers,
Haytham Merger
Thursday, February 29, 2024
Deprived Desire Drive
I made a song that has two versions: English and Japanese. I made the song on top of this piece. The song will be uploaded eventually. Each Japanese line has the corresponding English line. The English version is not directly translated but the emotion and meaning of the song is preserved as much as possible.
闇え座る
Here I sit in the dark
一人、コーヒーを飲んでいる
I'm alone drinking coffee
静寂の中にうるさいすぎ
In the midst of silence, there is so much noise
僕の心は不眠の市
My mind’s a city that never sleeps
忙しい、静かない、なぜ?
Ever so busy, why can’t it keep still?
風のキッスは唇のぬくみを取る
The warmth of my lips taken away by the kiss of the breeze
I freeze
やすい夜。まだ暑いmug
The night is calm. My mug’s still warm
思いの役者は話し合っている、
People in my head are talking about
やるべきと足りないもの。
Things I must do, things that I lack
ねがいの性質がなんだ?
What’s the nature of my desire?
生きたくない、死にたくない。
I don't want to live or die
笑えない、泣けない
I neither laugh nor cry
虚しい感じる、no drive
I am empty, I feel no drive I…
本当と偽りをいえらない
I can't say the truth or lie
いつも間違い
I'm oftentimes awry
有耶無耶、願いはなんだ?
I feel hazy. What's my desire?
なにを感じるか?
I don't know what I feel
感じるほうわからない
I don't know just how to feel
ただ呼吸。じっと座る
I just breathe. I sit still
温いない、心臓は病気だ
I lack warmth and my heart's ill
Lovesick。愛なし
Lovesick. Loveless.
感じょう的にsick
Emotionally sick
明日しごと、やるべきある
I work tomorrow, I have things to do
[interlude]
うるさい! うるさいすご。
Quiet! So much noise
僕の心は不眠の市
My mind’s a city that never sleeps
忙しい、静かない、なぜ?
Ever so busy, why can’t it keep still
まだ冷たい。ぼくのmug空
I am still cold. My mug is empty
飲み干したみたい、
Seem I have drank all
My coffee
希望死んだ。さきになんだ?
My hope is dead. What lies ahead?
不要な欲求。考えている
Cravings unwanted. I am thinking about
こと抑制した、抑圧した
Things I suppressed. Things I repressed
ねがいの性質がなんだ?
What's the nature of my desire?
生きたくない、死にたくない。
I don't want to live or die
笑えない、泣けない
I neither laugh nor cry
虚しい感じる、no drive
I am empty, I feel no drive I…
本当と偽りをいえらない
I can't say the truth or lie
いつも間違い
I'm oftentimes awry
有耶無耶、願いはなんだ?
I feel hazy. What's my desire?
なにを感じるか?
I don't know what I feel
感じるほうわからない
I don't know just how to feel
ただ呼吸。じっと座る
I just breathe. I sit still
感情のない...
I am numb...
いきます
I'll be gone
Thursday, February 8, 2024
Epistles to a Software Developer: Functions
[Originally written on February 4, 2020]
Dear Eri,
Good day! I was quite too busy, so this letter’s late. I’ve been implementing a certain kind of architecture in a company backend app that I’m building from scratch. I don’t know your college curriculum, but before you learn any new language, you must know what IPO truly means: “Input Process Output”. It describes most of the systems in general. For example, I wanted grated cheese for my Filipino-style spaghetti: the block of cheese will be my input, the grating is the process, and the sprinkled cheese is my output. You get what I mean.
To visualise an IPO, you must visualise what you want, what to do to get what you want, and the things you’ll need to do what you want. Let’s say that you want to do a simple temperature conversion app; let’s be specific: from degrees Celsius to degrees Fahrenheit. Now, imagine three boxes of equal size. Line it up horizontally. In each gap, you place a rightward arrow. In the first box is your input, a temperature in degrees Celsius. In the second box, the formula. In the third box, the temperature in degrees Fahrenheit. A simple exercise. Draw it now on paper if you want. Visualise clearly.
After visualising the IPO diagram well, you’ll want to make a code. You see, most programming languages have a structure that can do the process in the diagram you just made… In OOP languages, you may call it a “method”, in most languages you call it a “function”. Those two aforementioned will always have these parts: the parameters, the processes, and the “return value”. Respectively, they’re the input, process, and output. (Although some functions lack either “input” or “output”; IPO is just a mental model, remember) Now, can you write a function in C++ or your preferred language? (HINT: it’s a separate block of code from the “int main” function). Call it afterwards. If you know your preferred language well, this will be trivial. Always read the docs or tutorials on the internet if you don’t know anything.
Most console apps (the ones you run from Windows CMD, Powershell, or Linux command line) have “arguments” or “args” inside a parenthesis written after the name of the function when you see their source code, especially in Java or C#; the program needs an input to run, and the output is usually an exit code, where any non-zero value signifies an error in the program. You must practise the use of consoles/command lines as early as you can in your college life, preferably that of Linux
I wish the best of luck upon you, Lucilla Eri.
Haytham Merger
Tuesday, February 6, 2024
My Reflections on Moral Letters to Seneca - Vol. 2
[Previous]
Good day! February has come. This will be a bit lenghty. About my copy of the book, I bought it on January 21, 2024. Anyway, here are my reflections.
On Sharing Knowledge
On Crowds
"Certainly, the greater the mob with which we mingle, the greater the danger."
This reminds me of Murphy's Law: "Anything that can go wrong will go wrong.". Think about the stampedes, some sudden terrorists, etc. But, Seneca talks about how he will become a "changed" man but in a wrong way. It's as if he's some sort of a stereotypical introvert despite being a politician. It's as if he's agoraphobic, I don't know.
He talks lengthily about the people of the arena, the audience. They enjoy watching fights, witnessing gore, being enthralled with action, cheering, occasionally seeing some wild beasts. Today, it is akin to an MMA match minus the beasts, the people's cruelty, and daily deaths... and the fighters are voluntarily in the arena. Similar enjoyment can also be seen in a NBA or FIFA World Cup. Hell, even in a cockfight arena. Even a huge bickering on social media by the celebrities create a similar atmosphere.
The arena usually has someone who committed a crime and now "entertains" the people on their high ground (if you know where they usually sit). Even now, some people are harboring morbid curiosity, it'll be evident when you show them a random gory motorcycle accident on an internet video.
The death arena people irks Seneca. He is horrified of these people that he would want to save the wayward guy who ended being an entertainer in the arena. He realises how cruel the people are. He also talks about the horror of human nature when it comes to riches or being slanderous... to the point that he feels that he should "imitate or loathe" the world, but he recommends to do neither.
The best course of action is to mingle with select people who brings out the best in you. Neither be a people pleaser nor try to win the heart of the crowd. It's better to cultivate oneself. It's better to improve own knowledge and wisdom and to share it with friends. One's best qualities shall always face inward, he tells Lucilius. Say, you want to hone your software development skills, do so and eventually you'll find friends of the same cloth like I did.
On Philosophy and Friendship
"... for a happy existence, he needs only a sound and upright soul, one that despises Fortune."
I interpret this as living with people well.
The latter half of the letter talks about being self-sufficient to the point of overcoming misery, loneliness, emptiness, and the like. It's easier said than done. Corollary to this is contentment. This is quite similar to the Buddhist teachings. One may have cravings, but it does not necessarily mean that one will be too driven or devoured by it. One may feel a want to make friends, yet not being driven by loneliness. I had that kind of feeling where I wanted to make friends with someone due a deep emptiness within me that causes some sort of harsh loneliness. The keyword I set here is desperation. One must avoid being too desperate to make friends, in turn, it leads to a want of accolades and what not.
"Unblest is he who thinks himself is unblest"
Speaking from experience, I suffered a similar fate. I may be the "Bearer of the Curse", yet I still managed to go on and cultivate what I need to cultivate. I am blest to not have ended up myself and still manage to practice my profession. Now I am less pessimistic, less nihilistic, and less cynical.
Speaking of desperation. There's this movement called "incels", a support group who helps anyone with psychological challenges when it comes to finding a love partner. Sooner or later, some people who crave not only love, but also sex, has hijacked the term for themselves. These group of guys also called "incels" are too driven not only by loneliness but also severe frustration that it corrupted their souls. They formed an echo chamber where they hold misogynistic views, objectify women too much, being too entitled, forgot what "consent" really means, fantasies of sexual violation against... too many to mention. One of their well-known patron saint is Elliot Rogers who, due to his frustrations, ended up 3 men, 3 women from a house supposed to be full of women... I don't know his total body count. Despite having the looks, he still didn't get a girlfriend despite having the capacity to do so. Show someone, who doesn't know him, his face and I bet someone will find him attractive, but he gave into his vanity and the rest is history. This is what happens when one neglect one's soul. They have gone beyond desperation. In this case, these later "incels" found the wrong friends. One may pray for their redemption. This is one of the dangers this letter reminds me of.
"Please be kind to yourself" the thought resounds. Do not give in to any desperation.
Thursday, February 1, 2024
Epistles to a Software Developer: Prerequisites
[Originally written on January 20, 2020]
Dear Eri, Good day! I hope you are doing fine. We have been exchanging messages these past days. I have taught you some things with regards to software development, yet they are random and unstructured. My mentee, a girl who just finished senior high, STEM strand, is now an IT student. You wanted to take a degree for an aspiring veterinarian, yet you chose IT. It is still fine, just think in systems and parts. I am by no means a master, yet, however, I know what it takes to tread the path of a software developer. I’ll guide you through your years, especially on self-studying. I’ll be sending you letters when I have a lot of time. The field of software development will be full of symbols, diagrams, and mental models. Yes, you have to be clear with your mental models, that’ll be your bread and butter. A decent skill in maths is necessary. Most of all, you’ll need to be always logical when it comes to the technical aspects. Since most of the manuals, tutorials, and documentation are in English, you might as well improve your English skills with regards to reading and writing; a well-honed reading comprehension skill is a must. Hone your “Googling” skills. Also, your abstract reasoning will be put to the test; I told you what your bread and butter is. With regards to mental models, I always use the IPO model which stands for Input Process Output. Now, now, you don’t have to always draw it on a paper; I use it because it is easy to visualise in my head. Some other complicated diagrams exist, like the Flowchart, or UMLs. For now, just practise the use of the flowchart diligently. This path requires you to efficiently interpret diagrams and symbols, and that can be achieved by practice. I repeat, IPO and Flowchart; the rest can be learned well later. A pen and paper will aid you in learning if you diligently take notes; typing doesn’t have that feel and memory reinforcement. A whiteboard will also do, but use your camera and take photos of what you’ve written there for future reference. Stick to one programming language for the meantime and you’ll be surprised how easily you’ll learn another. I recommend Java or Python. This is what your mentor can teach you for now. I’ll send another letter next week. See you soon! Regards, Haytham Merger P.S In my university, they teach C++ to Nursing students in the very 1st semester.
Sunday, January 28, 2024
My Reflections on Moral Letters to Seneca - Vol. 1
A quick background: I acquired a book published by HarperCollins. Along with someone, I bought it in a Fully Booked bookstore somewhere in the Mall of Asia. She has her own copy and she recommends me to read well the book as might as well write my reflections on it. The book is well known as Letters from a Stoic.
I hereby section it per letter.
On Discursiveness in Reading
On True and False Friendship
On the Philosopher's Mean
Friday, July 1, 2022
Allucinator's Tales: The Receipt
A guy buys a takeout from a famous fastfood restaurant. He noticed that the cashier woman is cute. He checks the receipt, and sees her full name. Receipts often show who the cashier is, either identified by full name, first name only, or some sort of random numbers.
He checks the name on FB, and oh boy, a solid intel, it is.
Lesson: you are not a CIA or FBI glowie[1]. Don't do this. And as for the receipt/POS makers, use a random sequence of letters or numbers instead to identify the cashier. (So that ID string can be searched in their internal database instead.)
Fortunately, the guy in the end lost his interest after some hours, and did nothing thereafter. And also found out that petite woman is a single mother (though this isn't the reason he lost his interest.)
[pic related: the storyteller]
[1]Quoted from Terry Davis: "The CIA nig**ers glow in the dark. You can see them if you're driving. You just run them over; that's what you do. Fucking CIA nig**ers."


