Bravehearts vs Champions

When Klopp came to Merseyside 3 years back he said his number one priority is to focus on defense. I wrote then that I wanted no miracles from him and rather let local fans let him do his thing. Now after 3 years, Klopp might not have fixed Liverpool’s defense but fans supported him on his weird player pickings, on-field fanaticism, and heavy-metal game play. And all that got us to the showdown tonight.

Last time when Liverpool won Champions League, I was in the final year of my undergrad with no access to a live game. I came to know of the achievement after many days. No enthusiasm. Since then, it was a dream to witness a similar situation. For me, playing a Champions League final is a much major achievement than any other league including winning the Premier League.

It’s nothing short of a miracle to reach this final with the current team. I would give most of the credit to Klopp (apart from the Salahs & Manes) for infusing the bravery among all of the players to believe that only way to win a game is by scoring goals. And no wonder Liverpool is the team with the most goals.

Whether Liverpool could continue the same fluidity & hunger for goals of the previous matches tonight against a team that are born to win this cup is not the point. The point is for how long they could do that. Longer they challenge Real, stronger the chances of glory.

I will be watching my dream come true tonight and would love if they could get the cup the sixth time. But it does not matter.

You will never walk alone


Retrospecting 2017

From Typeclassopedia’s Functor page

Intuition will come, in time, on its own.

This year’s highlight, for me, is the shift from Scala to Haskell.

I started the year with a lot of enthusiasm continuing programming in Scala. Focussing on the functional side of things, I chose cats shapeless, akka (especially the streams) & monix for various use-cases where they seemed fit. shapeless was really interesting & mind-bending at the same time, hence I worked my way through Type Astronaut’s Guide to get a better grasp of it. I managed to solve relevant tasks elegantly using these tools and I was happy the way I was progressing.

At the same time, I was also drinking a lot of kool aid reading papers & blog posts to further my journey in the beautiful land of Fun Programming. Most of those text contained code in Haskell, of course. It got gradually difficult for me to continue understanding those codes without a proper understanding of basic tenets of Haskell. So I decided a digression to actually learn Haskell, just so that I could get a proper understanding of those pedagogy and then will come back to Scala to implement leveraging that acquired knowledge.

So I started with the Haskell Book and, honestly, the first chapter on Lambda Calculus half-converted me. It was really shocking to me when I realised how the kind of reasoning that we can do with Haskell programs, mostly due to its strict ideological stance to remain pure whatever it takes, can never be done with Scala. Never.

This realisation became more apparent as I went back to those papers & posts & realized how people implicitly leveraged that same purity for their ideas. The nice thing with Haskell’s purity by design is that it never cheats on you. Which is not the case in Scala, and I discovered it as I went back to all those codes of mine and observed them now with my new lens of purity. I tried to refactor but it got really complex & lost all its elegance.

Pure functional programming provides referential transparency for free & thereby resulting in equational reasoning. And all these results in sleeping peacefully at night. These known heresies become real in Haskell. Scala just gave an illusion of them but I found very late that they were all lies.

Scala’s weird syntax never bothered me much, also when programming with higher-kinded types. To me, semantics mattered more. But with Haskell, that trade-off also went away. Now I believe that Haskell’s syntax is the only natural way of writing expressions.

I worked my way through Haskell Book, few other online courses, and some side projects (one of them was migrating this blog to Hakyll). But then LambdaConf videos came out especially the Let’s Lens workshop from Tonny Morris. I had watched Kmett’s talk on deriving lenses and could not get most of it. Tony’s lets-lens exercises provided the best progression to eventually understand Kmett’s derivation of lenses. The video was also interesting for me to help understand how people actually think when writing Haskell. There were many enlightening moments in that 6hrs long video that really gave me a lot of confidence in writing Haskell for everyday programming.

I met Tony in person at Functional Conf this year. Got a lot of unconventional wisdom, worked my way through his superb fp-course and all that boosted my spirits to write more Haskell.

I consider this year to be one of the most productive years personally for me. I wrote & read a lot of Haskell code. Both of which I feel is highly necessary to build intuitions.

I’ve read complaints on Haskell’s community & it’s availability of documentation. My experience was very different though. I learn a lot hanging around in Haskell IRCs and also lately the Scalaz IRC! I think most of the Haskell related blog posts actually are of higher quality than the ones written with other languages (esp. Scala). Haskell requires a different way to think about solving problems and with that respect available pedagogy is really good. There will always be a scope of doing better and I think people like Julie Moronuki are trying to make that happen.

Haskell made me value the importance of science in Computer Science and hence I believe understanding the underlying theories is absolutely necessary to write any significant code in Haskell. With Haskell, I believe, the concept of design works the same way irrespective of whether the context is small/local or large/distributed. And that’s only possible on account of those underlying mathematical/logical foundations. There are enough prior arts in Haskell community where a theory that applies to a basic program can be lifted at a system level to achieve something big (e.g. haxl, lens). And that’s the beauty of designing programs with Haskell - if done properly (i.e. polymorphically), it liberates the implementation from the shackles of any kind of contexts (execution or deployment).

Apart from Haskell & Scala, I wrote few boring machine learning/statistics code with Python & a good amount of shell scripts 1. I deliberately stayed away from writing any JavaScript this year. But I had to review a lot of them (which is a whole different story).

Among new frameworks that I played around this year, Kubernetes (K8S) & Nix are really the coolest ones. K8S is kind of a beast. I am still grappling with all the concepts there but it will be a big part of my professional life next year so maybe I might talk more about it in future. Nix is a personal interest of mine as it’s kind of a darling within Haskell community and I really like the underlying ideas.


It won’t be surprising now that next year I am planning to write more Haskell. It has taken me quite a long time to learn the concepts by reading a lot of theories, working my way through toy programs & reading a lot of code. And I’m looking forward to doing more of those next year as well. But one of my primary goal for next year is to use Haskell to solve some real-world use-cases that I would be expected to do in some other mainstream languages. And apparently, Haskell fit right into some of my ongoing interests for next year like new ways to do distributed computing & knowledge systems.


  1. Automation & AI are the current marketing gimmicks around Enterprises


How to play WWDC Session Videos in Chrome ?

Oops
Oops

Oh you can’t

Gruber few days back was praising Safari

Safari is Apple’s browser for Apple devices.

I think it should be

Safari is Apple’s browser for Apple devices to serve Apple’s walled garden interests.

The keynote is available in YouTube so every browser could play it, same keynote in Apple’s website could be streamed in every browser but none of the session videos could be streamed in any browser other than Apple’s own Safari and they are not in YouTube. Any guesses on why such discrepancy !

In the What’s new in Swift session, presenters were talking on some new features geared towards server side Swift. Unfortunately, all those developers who are in Linux using Chrome thinking about using open source Swift for their next system software or server side usage can’t see / listen them.

There is always the option to download SD (min. size 400 MB) / HD (min. size 1.4 GB) videos of sessions, am sure that’ll be a really nice experience.

Apple’s support handle in Twitter is confused about it and developer forum is mum.


PGP - Signal Debate

I am a believer of emails being the right choice for serious conversations (especially when its not live). It makes the writer to think. Today’s situations need, more than ever, ways to keep those conversations hidden (from you know). PGP is an old, open, and proven choice to get that. And I am a strong believer of the same as well.

However PGP has not got its right share of footing in the world yet. So it has remained as a mean of few (mostly Hackers & Nerds). That should change. For it to happen people familiar with its highs and lows should talk, write and fight. Such conversations only can bring the right change both in thinking & doing.

Recently Filippo wrote that Signal can replace PGP. And then Bruce Schenier backed him. To me the thought sounded a bit strange. But the points raised against PGP are important to note and act upon. As a counter, Walkfield wrote a fine piece backing PGP. All of these view points will only help and should happen often.

In the mean time, I will say that Keybase is doing their best to spread the love of PGP. I am there. I hope others will join.


Functional Ladder

The LambdaConf guys came up with an interesting way to group Functional Programmers.

LOFP is a standardised progression of different concepts and skills that developers must master on their journey to becoming expert-level functional programmers

Too bad it made many developers, especially in Twitter, go mad. It’s not Politically Correct to call anyone by some kind of name these days, that was the biggest worry for most. People also said - most of the stuffs mentioned are really hard, placed in wrong order, will take years to learn, and does not matter.

I don’t agree. To me the note is important for anyone who cares for Functional Thinking and want to have a deep understanding of the same. It has directions to what one should know at each step and how to put use of the same. People must realise - It takes time to know something well.

However, I could think of one small thing to add - the instructions will make more sense for people who are fine with the idea of Typed Functional Programming (oh no!)


Joe Armstrong's method of solving problems

Joe explaining his approach to solve problems while answering a completely different user question

The general method for solving all problems is:

  • Find the most difficult outstanding problem
  • Solve it

Repeat this until the only remaining problems are trivial - and you know you can solve them.

I’ve always liked Joe’s way of explaining things and hence feel his book is one of the best books introducing a programming language. It’s very much a peek into the mind of the creator rather than just boring language specification laid out on paper.

Later on in this post Joe also mentions where he thinks Erlang is good at, which is really important to note coming from creator himself

Erlang is useless for making GUIs, number crunching and watering flowers. Choose another technology for this.

Erlang is gaining traction nowadays as the language (or platform) of choice especially to build IoT edge gateways, web servers (thanks Phoenix) & general actor-based distributed systems. Now, the problem with any language coming to mainstream is that people tend to use it for all sort of things. During those times, we should remember what Joe says here.


Aarohi 🎗

👧🏻
👧🏻

It’s been 20 days today but better late than never - we got our first human resource, an awesome baby girl - Aarohi

It’s just mind blowing few weeks since her inception to this world and still some nights, as I am pacifying her, I can’t believe that I’m holding my own creation.

It’s gonna be fun !


Being a millennial of today, she already has her own active Twitter account


Apple Pay on the Web

When Apple announced about Apple Pay APIs for the web (read Safari), I kind of guessed that it will be different from the Web Payments API standard from the Web Payments Working Group.

The documentation of the Apple Pay JS framework talks about bunch of JS events and one session object. Pretty straight forward stuff with some conditions though

There are three requirements for using Apple Pay on your website:

  • You must have an Apple Developer Account

  • Any pages that incorporate Apple Pay must be served over HTTPS

  • Your website must comply with the Apple Pay guidelines

Well so I was right, but not entirely though.

Apple is a member of the aforementioned Web Payments Working Group. And they sent a message to the mailing list post the keynote. Following text caught my attention:

There are several differences between the Apple Pay API and the Payment Request API, and we look forward using the experience we’ve gained while working on it to help push the Payment Request API forward

So there is still some hope of convergence here.

I am looking forward to tomorrow’s WWDC session on the same and might update this post if some new information comes to light.


Getting rid of "um"s and "like"s

I’ve the problem with “um” and everyone in Enterprise World around me has a severe problem with “like”. Now being a rookie podcaster I could feel the lack of confidence of the speaker sprouting these nonsense every second which is irritating to any serious listener.

We all have to work around it and Seth has some nice tips (emphasis mine)

… First on your own, eventually practicing with friends, replace the “um” with nothing. With silence.


English hooliganism - far better show than their game

I didn’t see the match, coz it was a late broadcast here, but I read it was a hodgepodge (usual for England in any big completion). However, I am half startled - half chuckled reading about the continuous nonsense being displayed by the stupid English fans(official word) against the Russians(who are not much different though).

This comment by an English MP, as reported by Guardian, quite succinctly present the helplessness of this colorful English culture

“There doesn’t seem much that can be done to solve that.”