One of the useful arts in type-oriented programming is the utilization of a type system to safeguard business logic. Today, we are going to experiment with TypeScript to find out how deep the type system can be involved in safeguarding business logic.
What I strongly feel to be the essence of robust after years of gory struggle for robustifying software, countless philosophical discussions, and meditations.
Some certain individuals understand everything and make perfect ideas. The ideas will be tried over time, but it always turns out to be the ultimate. Most only realize it after years, but not these people. They are, what I call, the farsighters.
Among a nauseatingly huge number of "modern web UI frameworks" out there, React stands tall. It is a very nimble library to write a JavaScript-based app on top of. React app code can stay way more clear, consistent, and recognizable regardless of complexity, compared to other frameworks. Why? Because unlike other frameworks, which are more of a template engine, React focuses on assisting to build an asynchronous machine tree.
Complex software can be daunting to author. I'm dissect and reintroduce the concept of asynchronous machines, why do we need it in the first place, and how digging deep into the concept might help conquer complex software.
Writing a program is all fun and games until someone persists your data. Your user data gets saved in the database, persisted! Some folks use your API, persisted! Your website's JS files cached, BAM, persisted! They're actually gonna be alright until you need to change something. When it's impossible to do without breaking change, emergency meeting!
Up until now, the fastest way information can go from one brain to another is through sound waves, pictures, or moving pictures. It is slow, compared to the connection between synapses in the brain. This fast-moving information media is critical to building complex concepts. I believe, a single healthy mind as an authority is a major factor in a successful creative endeavor.
I was introduced to Rust in 2018 and has been enamored since. Rust is a system programming language, much like C++. Unlike C++ though, being relatively new, its language design is more modern and sophisticated. Writing with can feel more like writing TypeScript or Haskell. Not surprising since, despite being a language with a very minimum runtime and no GC, it derives many principles of functional programming such as immutability, type inference, higher-order functions, pattern-matching, etc. Over the course of tinkering things with Rust, I realized that writing Rust code makes me a better coder in other languages. This article will describe how my attempt to push the best in Rust's language design into TypeScript, my main language, without altering the language itself.
I imagine that going passing into a black hole would be like walking into a downward slope. The height of the ground in this analogy is the aforementioned "effort" to fill up a space and pass a time. Being lower means needing less effort to fill up space and pass a time, hence being smaller and getting old slower. For the slope angle, the smaller the black hole, the steeper the slope is, and vice versa.
“Effective people are chronobenders.” It all started with fire, lever, pulleys, and wheels. About two centuries ago humankind underwent the industrial revolution. Since then humans have been racing with time with its fastest steed, the automation."
The box is a thought experiment about a technique to overcome a problem with subtypes. After a couple of years of professional days as a software developer and a couple of years being a information technology college student before that, I finally understand what is abstraction, what can be abstracted, and what must not.