⋆☃︎‧*❆₊⋆Caleb Josue Ruiz Torres.⋆꙳•❅‧*₊

⛄🎄🎁Software Developer.🎉⛄🥂

Ongoing stuff.

Happy Holidays!

Happy holidays for all of you, it is time for me to say thank you for visiting this website. It is my hope heavens give you the strength to accomplish whatever you have in mind this 2025.

Happy new year!!!

--

Caleb.


Free will - VWIPP0.000010

Neuters internal systems were of course equipped with reasoning capabilities, they were hidden from humans and their main task was to be in charge of some other robots interacting with human beings.

These other Robots I am mentioning have a more customary appearance, wether in the form of an animal or an humanoid with almost no difference than a any given person.

No specific Neuter can be blamed of deducing certain scenarios beyond the limits stablished by the rules in their programming, but these were learning systems, and they were constantly feeded with information arriving from all sort of places.

Doubtfully, it pressed the atome in the orbital apparatus.


Going mechanical? - VWIPP0.000382

Going mechanical? What does its friend even mean with this suggestion?

Most likely the recommendation doesn't have to do with Cyborg technology, since at that point of space-time that was a thing from the past.

VWComingBackToReturnMyHat_Small - An image depicting Verita and its friend staring at question mark.


Calculus.

Historically, Calculus has been sold as being a difficult topic. I bought the book Calculus Made Easy written by Silvanus P. Thompson a couple of years ago in order to revisit the little to nothing Calculus knowledge I have been able to grasp while in high school and my first year in university (I am not a brilliant student). In all honesty, rather than revisiting, I will call it as it is, learn, some topics even for the first time.

There is a free version from this book, since it was written more than one hundred years ago.

Why now? Well, this has been in my mind for more than twenty years. I am unemployed right now, while I continue my job search and preparing for job interviews (I have even started to solve problems in platforms like leetcode and alikes, even when I enjoy mostly solving problems that are present in some books instead). I think I can afford to spend one hour or so to the study of this topic.

These days my main interest in this topic does not come from physics but Computer Science, I just learned about some differentiable programming paradigm, and now I am very curious to see what's all that about.

If you are hesitant, just jump in! Most likely you will be surprised you are able to derivate and integrate some functions. Allow me to invite you to take a look at my YouTube channel from time to time since I may publish a video or two related to Calculus. I will say farewell for now by bringing to you a quote from the aforementioned book.

What one fool can do, another can.


A note of gratitude to the Hacker News community.

A couple of days ago I finally decided to write about my current job situation and I did it via a question at the Hacker News website. To be honest, I was not expecting any answer since I posted my question in the night. In the next day I was surprised that my question actually got quite an amout of answers, I am humbled because of that. Perhaps some people may think it is not a good idea to expose yourself like the way I did, but in my case, I can tell you, my life has been all about searching for answers and questioning everywhere, observing people, admiring people, trying to learn the best way a person can be and act.

This entry is meant to express my gratitude to all people from all over the world taking the time to answer questions some other people are adverunting asking about, there are not stupid questions in my opinion. Still, I would like to address some comentaries I feel the need to elaborate or to provide extra information, I put together what I consider similar thoughts or point of views, in order to provide a single commentary.

On my website looking like some 90s website...
Well, I didn't have in mind for my website to look like that, I wanted to keep it simple. Why? Some years ago I've encountered Mr. Leslie Lamport's website and since I admire him (Even when I don't understand much of his work) I thought it was so cool to have a website fashioned in that way because it focuses on the work the person is doing, I also considered how Mr. Peter Norvig's website looks like, and some other computer scienctists I admire (And yes, I do understand I don't have the kind of work they have been making their entire life). Which brings me to the next commentary.

On being proud about my ACM membership.
Yeah, I consider becoming an ACM member one of my best career decisions I have made, it was December 2010, got my Christmas bonus and paid for my membership, I got the Communications of the ACM magazine, read some articles, they were sending news on a weekly basis, in 2011 they informed about the first three courses that were published on Coursera, I could never look all that information they were able to condense on my own, nobody told me I needed that membership, the reason is that I just happen to like knowledge, now that I think about it, perhaps it was the need to belong to some community of great computer scientists. I don't think so.

WTF has Steve Jobs has to do with this?
Same as before, I admire some thoughts he has given in some interviews. And no, I don't bring those Steve Jobs quotes in my job interviews.

To the couple of invitations I got in the aforementioned thread.
Thank you very much, in the case of Elixir I will get in touch with you. In the case of Amazon, yeah, you can refer me, but I do have an ongoing process with Amazon. Thanks a lot to all of you!

On having a fake identity in order to express my opinions.
I don't think so, I'd like being me, I like authenticity, and I like interacting with people that is proud to express their opinions in public no matter wether those opinions are unpopular or polliticaly incorrect, as long as those aren't invitations to hatred and other detrimental point of views to our civilization. In the book Mathematics for the Million I read Tyranny has no formidable enemy as the pen. I get your point, but societies should put people in charge that respect freedom in all its forms, but that's another story.

Spending my days on leetcode and alikes.
I have to be honest, I don't enjoy that much the problems on those web portals. Still, John Guttag recommends spending some minutes a day dabbling with code, my answer to that is to instead solve some problems some computer science and programming books include, I am not discarding leetcode, I will be tackling some of those exercises and probably upload some videos on that respect.

To the person sharing its website for inspiration, doing Blender on the side.
I will definetively will take a look at your website, thank you very much for sharing it with me. For real.

Springboot.
That's what the market wants in my Geography, that's what I shall study.

The uselessness of Haskell, and abandoning Scala.
Reading "Programming in Haskell" by Graham Hutton has forced me to think in a different way about expressing computations, that's always cool, and that happened ten years ago too! When I read some parts of Mathias Felleisen et al How to design computer programs second edition, they were using a dialect of Racket, which feels like Lisp. In relation to Scala, I'd like Scala's 3 syntax. I suppose I can read one or two concepts on a given weekend.

The high paying jobs on the US coasts hire for intelligence and general programming skills. Everywhere else, you're expected to have specific experience in their language and framework. Every job I've had, I've overheard applicants being dismissed out of hand because they didn't use the exact language we were using. It's ridiculous, but it's reality.
This commentary caught my attention, I have observed the same behaviour even miles away from the USA, it should be that way everywhere in my opinion (But that's not the reality).

Opinions on my personality.
It is a little bit difficult for me to come up with a commentary on the kind of assertions you have made of me without even knowing me, at least there are some folks going through my posts history and coming with different conclusions. I take care on my character instead of what other people think of me, both are equally important, and you may argue one is more important than the other, but even if a sea of lies surrounds a person, the true will always be the true, and my hope is for the people to always exercise Mathew 10:16.

My website's domain name being odd.
This website is live thanks to Gigalixir's vision on provinding a free tier without a credit card. Yes, I am that broke. Thanks Gigalixir!!! (Apparently some folks recognized that fact, and mentioned Elixir in the thread).

English, and typos.
Yes, my bad. How could that happened? Jehehe, I am really sorry, now Bachelor is written in a correct way, yeah, I started revisiting some topics on English Grammar.

My CV.
I have taken into account your thoughts, thank you very much. Now there is a single step between the link and the CV in its extended edition I have prepared for the sake of providing extra information about the roles I have had in my career, I can't made up stuff, it is what it is. In order to preserve history, I'd like to leave over here the one single page CV, and the frozen CV. Thank you very much for your insights.

My apologize if I left some comments without providing extra information (I am pretty sure I've missed some of them), but please remember my main task right now is finding a job, that's what leads me posting over Hacker News in the first place.

People! thank you very much for taking the time to answer. Please keep it up! And if you are searching for a job without being that lucky, think of this delusional fellow you just have read about. And if you need some help, please write a line or two because I am certain I can help with something. Happy weekend!

P.S. I say goodbye for the time being with this comment which was also present in the thread:
...reflect on what you want, it’s definitely not a programming skill issue.
That means the world to me, thanks to everybody!


The Road Ahead

Hello there all, I was accompanying my mother in the hospital for an entire week, with little to none access to the Internet. Now that I am back I would like to share some sort of TODO List I have in mind.

Right now this is more like a sketch and it is a little messy in terms of priority, structure, and precise descriptions on any given item on the list. Take this as a the things I would like to tackle next.

  • Lab 6 in FP101x, Which is based on the paper "A Poor's man concurrency monad".
  • Continue the Algorithms course by Robert Sedgewick and Kevin Wayne on Coursera.
  • Finish some animation I've started about a dancing Fox (If you are subscribed to my YouTube channel most likely you already seen an image on the topic.
  • The first string (Low e) of my electric guitar is broken, for the time being I will practicing focused guitar licks on certain strings of the song's section I was trying to learn like "fire and ice" by Yngwie Malmsteen. I am adapting to play without the first string. It can be done, I will try some record some videos for you.
  • Explain the protected access modifier in Java, probably using Blender.
  • Come up with an animation portraying the concept of chance.
  • A new "information piece on Verita's world portraying robotic assistance in that space-time.
  • Fix the song "Los Zapatos de De Moivre", that is, fixing the tempo on bass section and re-record the chord progression.
  • Keep on with the ongoing series of live coding sessions with Functional Programming in Scala (Second Edition).
  • Keep on with ongoing series "Un minuto de guitarra", a Spanish series of short videos on how to play the guitar.
  • Keep on with the series on Writing web applications using Elixir and the Phoenix web framework.
  • Yes, I won't stop my study on elementary Mathematics.
  • Record and publish a review of the book "Geometry" I have just finished.
  • Record and publish a video on my take on how to learn Mathematics. This will include material on "A mathematician's lament".
  • Blender is a world on its own, so I will certainly be practicing with the Software.
  • Build a metronome web application to support "Un minuto de guitarra"
  • Start a series of tutorial on Mathematical Thinking, focused on Geometry.
  • Finish reading the book: Methods of Logic by Van Quinn.
  • A lots of the videos I will be producing will require music, so I need to find time for this endeavor, I will be using Pro Tools.
  • Read for you "Homo Ludens" by Hideo Kojima.
  • Yes, Java will always have a place in my heart so I will be continuing reading some topics on this programming language using some book I have access through my ACM membership.
  • Implement a video game idea I came across while reading Geometry.
  • Make this list a live web application, so you can see how the priority of the items are impacted.
  • I am still looking for a job after all this time, so I will continue applying to job vacancies.
  • Start a series on solving SQL problems on Leetcode.
  • I have in mind a couple of videos entitled: Sinning with Scala. Stay tuned
  • You know this website lacks a little bit of resposiveness while on cell phones, we need to deliver a better user experience four our audience using mobile devices.

How can you engage with the above TODO List? Indeed, you can actively participate and make lots of these items a reality. Write some comment, like the videos, write me an email with any question you may have.

There is more, you can donate using the button in the upper left corner and directly impact the priority of this TODO List. Make sure to put the item you are upvoting in the donation comment, thank you in advance.

Happy Saturday!


Sleeping without Nagmetika - VWIPP0.000090

Why would you expose yourself to an artificial dream by going to sleep without your Nagmetika?

Yes, Verita's world citizens are also target even in their "dreams", when they are asleep. Their electrical activity is monitored, scrutinized, even attacked!

They design scenarios for the subject to act upon the information arriving to them, to you? This so called dreams are not natural any more. How do they lost such a beautiful treasure? This communication channel with whom or what? Lost forever. Unless they are willing to do something about it.

Verita holds the belief that dreams and the "real" world doesn't hold a connection as it used to be in the past, and if it does, it is generated, manipulated. For now the "humanity" of those who owns the apparatus is in the equation, their ambition and stupidity, since they took it by force, a marvelous device designed by people whom believed in progress, to be used for a greater good.

Next time you are going to sleep, do not forget your Nagmetika.

--

In the case you weren't brought here by a YouTube video accompanying this text, I invite you to go and watch it. The original concept was for the character to be playing in the sand, crouched, without the initial look presented in the video but a friendly one, a familiar look to Verita. A minute after this initial scene, the character switch to the appearance in which you get to see it the whole time, the malevolous character starts chasing you, sorry. Chasing Verita. At some point she thought the character leaves the dimension only to be surprised! Waking up, realizing its neuro-electrical activity wasn't protected. Therefore, the nightmare.

VWWakingUpNoNagmetika - An image depicting Verita just waking up.


Nagmetika - VWIPP0.000099

Located in a space, time, dimension, unknown to the writer right know. Nagmetika is a device for its user's peace of mind, since their neuro-electrical activity is under constant monitoring by the power in charge, attacks to their free will are quite common too.

But how does Nagmetika looks like? Whom brought such a marvelous device into existence? If you are coming right from the YouTube short you may even have more questions. The two-leg cube running around was meant to be brain neuron, tryng to escape from prying eyes. Imagine this brain neuron as you love them to be, the cube is but a placeholder, where is the thing trying to chase it?

How could something like this happened? Did no one in the past cared about anything? Were they even aware of ongoing stuff surrounding their lives, shaping the fate of humanity? Such is the present in Verita's world.

Still, now that you are here and there, put on your Nagmetika if you still want to be you.

Nagmetika.


Neger of the world.

Like most people in the world I like listening to music, my music preferences are not limited to one music genre. One day I can be listening the song Dream # 9 by John Lennon and some other day or even in the same day I can be listening Bisso Baba by Richard Bona. I also happen to like interviews given by people in some areas I am interested in. Like computer science and music.

In this context I suppose YouTube come up with the following video recommendation, a video entitled "John Lennon explains 'Woman is the Nigger of the World'". In which the singer explains the background for the song they are talking about, at some point John Lennon quotes some guy named Ron Dellums as follows.

If you define niggers as someone whose life style is defined by others, whose opportunities are defined by others, whose role in society is defined by others, then good news! You don't have to be black to be a nigger in this society. Most of the people in America are niggers.

Now, hopefully in 2024 we are all well beyond racism stupidity, those are obscure thoughts from past millenia. Then why am I even mentioning these words in this blog entry?

Well, I would like to contrast the idea of having others defining our life style, our opportunities, and our roles in society. No matter where in the world we are, with the idea of being ourselves agents of our own destiny and not mere objects submitted to the forces of fate.

I've heard the approach depicted at the end of the above paragraph from Judea Pearl, while listening a commencement speech he gave several years ago. Now this guy is from Israel and given the current context the world is going by in that point of the world. I would like to state that as a Mexican, I share the point of view of neutrality characterizing my country on these sort of affairs. But personally I am against violence in all of its forms, it is rarely justified and it should be always the last resort.

There's also the need to not pay attention to the people trying to put you down, equip yourself in science an education and you will be immune to ignorant people trying to propagate nonesense around the world. Beware on the fact that violence scalates very quickly, no need to be so tolerant.

So, what's my cause? Equal Opportunity as defined by Steve Jobs.


One last thing...

Most likely you recognize the title for this blog entry as a famous phrase Steve Jobs used to say when presenting Apple products to the public. I am using it because this is the last entry for this year in this section.

I found this interview Steve Jobs gave in the year of 1995 (The interview took place in 1995 but I found the video a few years ago). I don't quite remember seeing this interview in its entirity, for some reason or another I always stop at the middle of it, but the next year I will watch the entire interview although I am not sure if I will write about it. Still, the first section of the interview always manage to amaze me, this last time to the point of inspiring me to write about it.

And why is that? Well, for starters because it deals with a topic very dear to me, education and its impact on people, therefore its impact on societies. If you have wandered a little bit over this website you probably have found an article entitled homo ludens, which I wrote at the beginning of this ending year. And it touches on education and civilization.

Back to our topic, I've already shared some comments in spanish in relation to this interview, at least with the section I am referring to, the first twenty minutes of it. So it is about time to write those same thoughts over here.

There are some things mentioned by Steve Jobs that I consider are great elements of universal application, specially in these days of Internet. However, these comments will gravitate on the topic of education. Let's follow the order of the interview, I don't want to repeat it over here because that would be silly and you can actually listen the interview by yourself.

You will hate me for not linking the exact source when I quote a person, sorry about that. At some point of my life I was reading an interview Daphne Koller offered some years ago. She mentioned something about finding the next Steve Jobs, in the context of providing access to high quality education for everybody with the help of Coursera. So, how do we produce more people like them? I am not talking about repeating characters (That would be a boring world), I am talking about producing more artists, inventors, people exercising what they love the most, athletes, dancers, computer programmers. Now, don't get me wrong, every single person in this world is important, I am talking about finding ways in which every human achieves its capacity to a full extent. We will be taking a look on what Steve Jobs himself said in relation to his first years in our planet.

Crié a mi hija al estilo Americano, that's how I remember the beginning of a book called "The Godfather" by Mario Puzo, I suppose a literal translation to the English language will say something like (I don't have access to an English version of this book): I've raised my daughter with the American style. What's that American Style? Judea Pearl talks about the USA as being a country of values, just to give you an instance.

The memories of Steve Jobs beging portraying such environment, prosperity, hard working people. He describes himself as a very lucky child, being raised in the family he was raised. His father was a machinist, and Steve Jobs mentions they were moving to Silicon Valley at the early age of five years old. and in here we can start tracing the first elements a child needs, children need someone to spend time with them, specially their parents. Now, I don't have children, which according to some people disqualifies me to talk about the topic. But my interest in human development and their impact on society I think concern us all. I don't want this blog entry to become a biography of Steve Jobs, so I will minimize the references to his life but some events will still be mentioned.

His father prepared a little space for Steve Jobs and taugh him how to use some tools, how to take apart things and how to put them together again, how to build things. His mother taugh him to read even before attending school, so we have the family life covered, a child needs a nurturing family accompanying them in their world exploration.

Now, on the importance of our interactions with other people, Steve Jobs mentions how three or four people impacted his life in a great positive way to the point of being certaing about the possibility of him ending in jail if it wasn't for those four people willing to spend some extra time with him. Perhaps we are unable to change the world, but it is a fact we can help to change the track of other people's live in a good way. Mrs. Hill invited little Steve to work on his own with a Math book and rewarded him with five dollars in exchange, he learned more in that same year than the past years in the school. How many times do we invite someone else to learn something new and providing them with a little reward? A little I am proud of you, it doesn't have to be money, although money has proven to be a great motivator for people, once folks do their first baby steps on their own with a given area of study most likely they will follow along with more challenging topics. At least that is my experience with my rediscovery of Mathematics recently, with the help of a Geometry book, which exercises Israel's Gelfand philosophy on Mathematical teaching. You start by marking points and drawing lines, there's no challenge to start doing so, and everybody will be tempted to give it a try because of the feeling of not being too dificult.

So this is the America Steve Jobs is portraying, the America from which Yngwie Malmsteen have said in an interview that he couldn't achieve what he did in no other place in the world. Does that characteristics still prevail in the USA of the present times? I don't know, and I am a firmly believer of the premise that every country is in charge of its own destiny. Most important to me is the question, how can we replicate such features in other geographies? We have a beautiful landscape here in Mexico, a beautiful place indeed. How can we help people to reach its full potential right here? or for any given other country how they can develop their own land of opportunity? In my opinion, Steve Jobs himself is giving away the answer in the interview, he describes himself as a non-believer of equal outcome, but definetively identifies with the firmly belief of equal opportunity.

What is equal opportunity? A great education, that's how he describes equal opportunity. Access to an education has been a privilege through human history, and even in the case you did have access to an education? What was the quality of such education? Don't get me wrong, parents from all over the world go through colossal struggles to send their kids to school. These same parents are the customers of education according to Steve Jobs, he went even further and critizice the fact that some parents stop caring about being the customers and went away, resulting everything in such a bureaucracy and such a monopoly holding back the quality of the product. I don't spend that much time watching movies these days, but I remember the main character in the movie "Good Will Hunting" educating himself in a public library, it has been a long time since I was in a public library so I don't know how good their book inventory these days are. But we have Internet, and the world has been blessed with great human beings like Daphne Koller, which alongside Andrew Ng launched Coursera, and a good movement started back in the day, some other companies were born with the same idea, giving access to high quality education for everyone, at the beginning you only needed Internet access. Ten years later a lot of these courses have been cancelled or archived, without the possibility for you to even access them anymore. Is it enough?

There is another factor being mentioned by Steve Jobs, guidance. In the context of describing how computers aren't the solution to the problem of education, because he describes computers more like reactive tools instead of proactive agents (Remember the year of the interview). The most important factor is having another human being inciting your curiosity, inviting you to think. Kids don't need an assistant, they need guidance. Even grown adults need guidance, teenagers, "because when you are young a little bit of course correction goes a long way" said Mr. Jobs, you don't need a computer to guide a kid in their first explorations of the world, but you need to care.

Where's the next Steve Jobs? It is up to you to cooperate and collaborate creating the society he was describing in the beginning of the interview. You are the customer, don't stop caring. Demand quality in every aspect of life, it is your right. Without forgetting the element of love, which was the igniter, the force behind Steve's Jobs parents to give away so much of their time while rising their kid. Love your brother and love your sister.

Pero amo más a mi hermano el hombre.

Happy new year!


Tech Stuff.

Sorry for the delay among entries over this place, I was a little busy.

As mentioned in a post previous to this one, let's install the Racket programming language on OpenIndiana.

We will show how to do it in a new section. So this blog can be used for other topics as well.

Well, see you there if you are interested on how to perform the aforementioned installation. If not, see you in a future time in which I am going to share some thoughts about some interview Steve Jobs gave many years ago.


OpenIndiana.

In the past I have had the opportunity to grab some physical CDs containing the OpenSolaris Operating System (OS), those were sent as a gift from Sun Microsystems to the people who requested them.

Nowadays OpenSolaris is discontinued but if you want to experiment a little bit with some alike OS, you can use OpenIndiana. In the past weekends I've installed such system on an "old" Toshiba Laptop. Following are the installation steps.

  • Download the operating system. I do recommend the "Live USB" if you are just getting started.
  • I didn't succeed "burning" the image (I tried with the .ISO file too) to an USB, on Windows using Rufus or "Disk Imager".
  • The aforementioned Laptop was running Ubuntu, so I've used the dd command.
  • You'll have to know the indentifier your computer is using for the USB drive, get the information you need with the lsblk command, most likely you will be presented with identifiers in the style of "sdc1", etc. Take note of the root name, i.e. Without the number, only "sdc". Four our present discussion purposes let's call it USBNAME.
  • Now you can copy the downloaded .usb file to your USB with the next command: sudo dd bs=4M if=PATH_TO_YOUR_IMAGE.usb of=/dev/USBNAME && sync
  • Once the process is finished, restart your computer and boot from your USB.
  • Follow the installation instructions, you will be assisted by a graphical user interface.

The above instructions can also be found here.

I found out Java was already installed, along with Python. Have a look. (Click to enlarge).

Open Indiana Visualization

Well, next time we will see how to install Racket on OpenIndiana.

"OK, Spanish".

If you happen to know the Spanish language, I will be adding some content on this site in Spanish as well.

¡Que lo disfrutes!


The Royal Road to La Géométrie.

"There is no royal road to Geometry", more than two thousand years after that saying, maybe we can say we have it easier today, that's for sure in some ways, thanks to people that believe certain knowledge is meant to be presented in ways most people can appreciate.

I would like to share with you the existence of the book entitled Geometry (In the remote case you aren't aware of it) by Israel M. Gelfand and Tatiana Alekseyevskaya (Gelfand). It's writing started in 1989 but the book see the light until 2019, that's a lot of time if you ask me. The author describes a lot of technicalities involved in the process of making it happen, also she is describing health challenges and a number of injuries delaying the book, the publishers took another ten years to finish the job. Fortunately Mr. Gelfand (Who came up with the idea of writing the book) was able to witness the conclusion of the final manuscript for the book, at his 96th birthday (2009).

Geometry is described as the simplest model of spatial relationships in our world. With this book there is no need to memorize theorems, axioms, it is not focused on proving theorems using logic either. Accompanied by lots of figures the material tries (and excels on it) to teach you to see geometric objects, to grasp relations between them, and construct them by drawing. Indeed, there are exercises and problems for you to try too.

I certainly share Mr. Israel Moisevevich Gelfand point of view related to Geometry, in the sense that studying geometry will help us to visualize objects and shapes on the plane and in the space, and help us to develop an understanding about how they change if they are moved. There are certain skills we all need to operate in this complex world no matter our job or area of study, the author wanted to expose us to those skills including but not limited to geometrical vision, imagination (Yes, imagination. You may heard some people being critiziced for having "too much of it"), and creativity.

One of the greatest examples of Geometry helping people navigating this life is Sor Juana Inés de la Cruz, a literature champion, and a beautiful soul, tortured in the most inconcebible way. In her Respuesta a Sor Filotea de la Cruz she portrays how when she was requested not to read any book, she indeed was appreciating geometric objects whenever she was walking or even observing children play. She was using the nature as a book to survive her ordeal, and geometry was the language she was using to interpret it, most likely you already have come across the famous quote from Galileo: The Book of Nature is written in Mathematical language.

It does not matter if you are not a high schooler any more, studying Geometry will certainly equip you for the everyday life and will enable you to appreciate our beautiful world even further.

Use your imagination, see you later.


Shining in the light.

I know you know, Scala 3.3.0 LTS is ready to be downloaded and installed.

Did you know you can use such an expressive programming language to complete some training at Udacity? e.g. Design of Computer Programs taught by Mr. Peter Norvig himself!

That's right, take a look to the following screenshot I took two months ago.

Scala to Python translation depiction

Indeed, Udacity has enabled an assistant using LLM technology to help you in your learning journey. So even when the autograder accepts Python code, you can use Scala to design your solution and then have the AI assistant translate your code into Python so you can submit it for evaluation.

My request does even contain an incorrect English sentence, did you spot it?

Heads up! In production you'll likely want to use the safer version headOption instead of head.

Shining in the light is the first track in the album Walking into Clarksdale album by Page & Plant. Enjoy it!


Enhance

Most likely you are aware of some websites like leetcode, to tackle some computer science problems. A famous data structure you'll find there is the Linked List. For simplicity it is presented as follows, using the Java programming language:

						
class ListNode {
    int val;
    ListNode next;
    ListNode() {}
    ListNode(int val) { this.val = val; }
}
						
					

From an API designer point of view, you'll want to enhance such definition by adding features so the users of your library have more expressive power at their fingertips. The first thing that one should want to provide is the ability to use the enhanced for statement given a Linked List. You achieve this by implementing the Iterable interface.

Can I provide my library users a way to transform a Linked List they have created by mapping a function to every element in the list? e.g. root.fmap(x -> x * 7); with root being the Linked List's head. While we can spend some time digging into Category Theory to grasp a formal definition for what a Functor is, instead we shall have a look at Haskell's Functor type class which basically says you have to provide an implementation for the following function fmap :: (a -> b) -> (f a -> f b) in order for your data definition to be considered a Functor.

In the previous post the idea that a Haskell class is like a Java interface was presented. For the purposes of our discussion, it turns out we need to come up with an interface for Functor defining a fmap function.

						
@FunctionalInterface
interface Functor {
    void fmap(IntUnaryOperator op);
}
						
					

Now, our Linked List can implement the aforementioned interface, so we can transform the elements within the list using the famous lambda expressions like the one presented above. If you are in a hurry, I am sharing with you a self-contained example. See you next time.

Edit: May 15, 2023. Somehow I felt the need to add this unrequested and more likely unnecesary clarification, and the thing is that by no means we are trying to exercise the Functional Programming paradigm in this example but only trying to borrow the Functor idea and land it to Java.


Happy Hacking!

Sorry, I couldn't resist the temptation to write about this topic, so here's my attempt to talk about Monads!

Let's consider what Mr. Simon Peyton Jones is saying in the following video, in that section the same explanation comes in two places:

  • Haskell class is like a Java interface
  • [Haskell class] It's more like an Object Oriented Interface

If you happen to know the Java programming language, you'd certainly remember the Comparable interface, which requires you to implement the compareTo method.

Now, while you can have a look at the source code for the Monad class. Let us rather focus in a some sort of simplified version presented in the book I am reading these days.

						
class Monad m where
  return :: a -> m a
  (>>=)  :: m a -> (a -> m b) -> m b
						
					

And just like that, if you want a data type to be a Monadic one, you'll just have to provide implementations for the two functions in the aforementioned code. And just like the Comparable API designers mention in the documentation that compareTo implementors must ensure total order property is present in the code, in that same way, Monads requires you to be sure some laws are present in your implementation.

What are these laws? And how can we go about implementing the functions in the Monad class? We are lucky, we are standing on the ground of more than thirty years of research produced by hard working computer scientists in this area. A good starting point however, is the Advanced Functional Programming training course taught by Professor Graham Hutton.

Let me finish this post, just like Mr. Erik Meijer ends his tutoring in his videos for the FP101x (Heavily recommended): Happy Hacking!


The end of programming?

This weekend I was watching "advent of Scala", a video posted by George Hotz, aka geohot; And if you are a Software developer, you certainly know we all consult books, forums, perform queries over search engines, to deliver the feature we are working on at any given point of time. Even consumated computer scientists like Erik Meijer accept that fact.

Now, if you pause the aforementioned video at [04:38] timestampt, you can actually see the suggestions ChatGPT offers to geohot after his query about how do one read a file in Scala. One of them being:

						
import scala.io.Source

// Read the lines of a file
// as a list of strings

val lines: List[String] =
  Source.fromFile("/path/to/file.txt")
        .getLines.toList	
						
					

Which is cool, if you think about it. It turns out the suggested way of doing this, presented in the Effective Programming in Scala training, is actually as follows.

						
import scala.io.Source
import scala.util.Try
import scala.util.Using

def readDateStrings(fileName: String): Try[Seq[String]] =
  Using(Source.fromFile(fileName)) {source =>
    source.getLines().toSeq
}
						
					

"Using ensures that the resources we use are eventually released, whether our program fails or succeeds" as the fellows at the Scala Center share with us. The second suggestion offered by the AI is StdIn.readFile, I shall mention I was unable to find any information related to that function in the latest Scala 3 API documentation, perhaps is unexisting. Yes, AI assistants will evolve and get better with time. These days, however, we are still in charge of writing beautiful code, so these machine learning models can be trained on those examples and perform better. And we can only do that by continuing investing time educating ourselves.

So, no, in my opinion it is not the end of programming, a conclusion I haven't realized based solely on the above discussion. But it is now clear to me that people building products using only classical computer science models and techniques will be at disadvantage while competing with the computer itself, in the sense that the machines are in fact in charge of deriving the "business rules" based on the data we feed in.

Please don't dismay on all those "prophecies of doom". I really invite you to learn how to program in the classical sense, because it is fun, and it's a very rewarding intellectual endeavor, and there are other benefits that come along with it, just as learning some high school Mathematics (Even if you feel like you were left behind), and you've heard it first from Leslie Lamport, it's all about thinking. Our future societies will be grateful if we exercise our thinking today.


On having healthy lifestyle.

While reviewing some paperwork related to my job history in the past days, I found out I was 236 pounds (107 KG) back in June 2015. These days I am 280 pounds (127 KG). I've been gaining a lot of weight, specially in the last three years.

Today I am sharing with you this new goal. I am proposing myself to start losing some of that weight by means of taking walks and a healthy diet. What do you think? Am I up for the challenge?

Stay tunned for the results.


About this section.

Indeed, this section is planned to share with you the things I am currently focused. It will blossom in an entire blog but for now I am just presenting the layout of some goals I am actively working for the time being.

  • Obtaining the Oracle Certified Professional (OCP) targetted for Java Developers in the upcoming months.
  • Start a series of programming blog entries intended for people new to the field, it will be in Spanish.
  • Right now I am in the middle of the book "Programming in Haskell" by Graham Hutton. Since I am only read this material on Sundays I suppose this is becoming more like a year goal instead.
  • Of course I am not forgetting about continuing my journey with Blender 3D.