Saturday, 14 March 2026

Formula 1 - Chinese Grand Prix Sprint

 For the second race running a familiar pattern emerged. Mercedes locks down the front row. Ferrari's blot like lightning from the start line to take the lead with George Russell in second, Antonelli botches the start to lose 4-5 places and then resumes a recovery drive.

Last weekend it was Leclerc who nipped in front of Russell, this week it was Hamilton. A cat and mouse then ensued with both drivers strategising their energy deployment to figure a way past each other. Hamilton in the process ruined his tyres which gave George, who was managing his tyres the ability to fight back and take the lead. Hamilton then proceeded to tussle with his team mate, potentially torpedoing Ferrari's only chance of taking the fight to Russell. At this point of the game, the joint objective should be to take as many points from Russell as possible. Hamilton, in my opinion, could have hung back and let Leclerc have a chance at challenging Russell forcing Russell to compromise his tyres. Who knows, this may have given Hamilton a chance at the win later on in the race.

Antonelli fought back passing cars with relative ease till he clattered with Hadjar earning a 10 second penalty for his favors. The Hulk's retirement brought out the safety car and a free pit stop which earning Antonelli a realtively less detrimental way of serving his penalty. This helped him end up fifth behind Norris thanks to a misjudged overtake by Piastri, who gave up the place on instruction from the pit lane rather than get a penalty.

Back down the order McLaren seem to be the third best with Red Bull coming in fourth - however the Red Bull looked really out of sorts at Shanghai, with Max terming it as undriveable. A messy start which him tumble down the order. After a recovery back to sixth, he then pitted during the safety car for fresh tyres which should have ideally landed him in the top five. However with the mid runners like RB, Haas not pitting and an extended safety car period leaving less than 3 laps of racing, it meant that he finished outside the points in 9th and 10th respectively.

Oliver Bearman is fast emerging as a standout talent continuing from his impressive performances last year. Thanks to him the Haas is regularly in the top 10 in all races so far. The development race is yet to show it's colors so we don't know what the eventual order might be. It's evident though that given the car the kid has terrific talent. Ferrari should pontentially on board him as a driver in the next couple of years.

What is emerging as crucial is the ability to harness excess power from the internal combustion engine as most of the top runners have figured out the electric side of thing more or less equally well. Mercedes extra compression volume when hot is proving critical. However this advantage doesn't seem to have extended to it's customer teams notably McLaren and Williams. Williams really seem to be in a spot of bother this season and don't seem to have figured out the Mercedes power plant all too well. 

Onto the main race tommorrow.

Sunday, 8 March 2026

 Formula 1 is back. Not with a bang but rather with battery regeneration and energy recuperation. With 50% power coming from the battery pack, drivers have had to learn new tricks both old and new. So how did the racing fare?

Off the bat, it's evident that Mercedes has nailed the new regulations producing a car that is at the top of the pile. Leclerc in the Ferrari offered some opposition but Ferrari's botched VSC strategy put waste to that hope and Ferrari's chance of a potential win. 

Antonelli had a botched start but the ease with which he made up ground was testament to the car's performance and his quality as a driver.

The first couple of laps were interesting but flattered to deceive. The dogfight between Leclerc and Russell was very promising, with the requirement for energy recuperation leading to the positions being exchanged almost every corner. Once Leclerc pulled some sort of a lead, Russell seemed to have issues following Leclerc which was repeated in the duel between Max and Lando but that may also be due to the gap in performance between the Mercedes and Red Bull power trains.

I foresee that the smarts in the teams will now figure energy recuperation strategies, where to do so, how much to spend and overall come up with some pre determined strategy that takes the decisions farther away from the driver. Today's race being the first had some unknowns and hence the excitement but I don't think this is going to last.

Arvid Lindbad was the driver who stood out with his ability proving why he was promoted to the Red Bull sister team so quickly. He showed none of a rookie racer and always seemed quite confident and decisive during the race.

With the new regs a lot of teams seemed  to be in the mix in the top 10 positions instead of this being limited to the regular bit hitters like Mercedes, Ferrari, McLaren and Red Bull. But today's race will be debriefed threadbase, the data pored over and analysed several times over and energy deployment strategies developed for each track.

Unlike previous years, F1 teams have some powerful allies in Claude, ChatGPT, Gemini and a whole host of other models and agents to do this. Might be a great leveler, that.

Sunday, 4 August 2024

BMW X1 (F48) Rear Brake Pad Replacement

 So the CBS for my BMW X1 indicated that the rear brakes pads were up for replacement. The pads were last replaced at 58k kms and the odo currently stands at 82k kms. Which means I got about 24k on the pads. From what I read this is average with a general life of the pads being about 25k. The last time I changed the pads I got it done at the BMW service center as I did not have the pads and not enough research completed to attempt a DIY.

I sourced a set of AKEBONO pads for around $100. Ordered an extra couple of sensors just in case. The pads however come with a brake sensor and springs that fit onto the pad.


Every DIY comes with it's own set of peculiarities. All manufacturers have specific approaches regarding design of bolts. fastenings etc. For the X1 here is what stood out for me:
  • The electronic parking brake. The X1 comes with a electronic parking brake which means that there is a motor that is actuated to push the pads against the rotors. This means that pushing the piston back to get clearance for the new pads doesn't quite work. There are multiple ways to do this:
    • the standard practice is to achieve this through BMW's service software ISTA. In ISTA there is a routine that puts the brakes into service mode which essentially pull back the motor from the piston so that you can push it back. This is what i used. It also means that you need to reset the brakes to normal operating condition using ISTA once the service is done. ISTA provides a clear step by step procedure to get this done and is pretty easy to follow.
    • another option is to remove the motor from the calipers entirely so that the piston can be pushed back
    • the third option is to apply reverse polarity to the motor to and spin in in the opposite direction to retract it.
  • When you remove the dust covers over the caliper bolts you might be excused for expecting a 12mm bolt like most of the other vehicle. BMW however uses a hex bolt that needs an 7mm Allen key (H7) to unscrew the caliper guides. Picked this nice toolset from Flipkart that included a star allen key that helped with the X1's oil filter drain cap, the filler nut for the Aisin transmission as well.

I used the ISTA software to set the parking brake to service mode, jacked up the car and removed the tyres. The first step is to unplug the socket to the parking brake motor. This is the plug that you see dangling at the bottom of the image below. It has a small tab that you have to depress while pulling out the plug to unlock the lockinging mechanism. While pushing it back just push till you hear a click of the locks engaging.


Unplug the brake wear sensor from the socket which is located behind the fender lining towards the rear of the wheel well. I was able to access this by folding the lining back but you may have to pull out one of the fasteners to access the socket. Just following the wear sensor cable to locate the socket. It sits in a plastic holder along with the ABS sensor socket. You can see the wear sensor cable in the right of the image below.


Next I removed the spring that holds the calliper agains the caliper assembly. If you don't have this the you will get a rattle as you push against the callipers even with the calliper bolts fixed. No guesses for how I figured this one out. Let's just say I had changed the pads and bolted back the wheel on one side before the figured this one out.😐 To remove the spring just push down on the top with your thumb and use a flat head screwdriver to pry out the portion that goes into the two holes on the face of the calliper itself.

It other vehicles I've owned you had to remove only one of the calliper bolts and loosen the other and the calliper could be swung up/down to access the pads themselver. However in the X1 you need to remove both the bolts and lift the calliper off to access the bolts. These kind of aspects create a new appreciation on how simple things lend themselves to easy service procedures and less mistakes which make Japanese cars much cheaper and faster to service. In the image below you can see the calliper with the spring removed.



I used a box to place the calliper on, once I removed it from the assembly to avoid straining the brake lines and ABS cables. You can see the piston in the middle that I pushed back using a socket extension so that the increased thickness of the new brake pads could be accomodated.



Comparing the thickness of the old and new pads. Maybe another 1000 kms left on the old pads. However the wear sensors were pretty worn out and indicated I was 400km over the replacement warning. Give the amount to programming these cars have I am not sure how much this would cause the control modules to adjust associated setting and performance so I generally follow the CBS (Condition Based Service) warnings.




Installed the pads next which just hook on top of the calliper assembly requiring the calliper to hold them in place. This makes it a bit fiddly while installing the calliper. Another aspect that I dislike over the Japenese cars that have a pad profile that just locks into place which makes installing the calliper much easier. You can also see an additional spring peeping out in the middle of the picture. Got new ones along with the Akebono pads. I think these help the calliper push down on the pads and maintain them in place. Maybe ensure that the wear sensors are held tight in place to but not 100% on this one. Anyway they slot into the grove for the wear sensor. You need to install new wear sensors as the old ones will be pretty worn down and useless.


New pads in place with the callipers fixed and the spring installed. Did it in perfect order on the second wheel after all the learning on the first one. 


Some additional observations. The hex bolt is access from the rear face of the wheel and it helps to have a longer Allen key or a ratchet extension. 

The plug that goes into the socket of the parking brake motor. The socket is just above the plig in the diagram and located towards the bottom of the assemble. You can also see the wear sensor cable coming out through an opening in the calliper. I installed the wear sensor at the end after installing the pads and bolting the calliper in place.


As mentioned at the start DO NOT FORGET to set your parking brake back to normal operating mode using ISTA. Test that all is well by activating and deactivating the parking brake a couple of times.

That's it. As usually the achy joints and muscles notwithstanding, the sweet feeling after a DIY is priceless.



Sunday, 10 October 2021

The Future of AI

 The Future of AI




To say that Artificial Intelligence is taking the world by storm is an understatement. It's projected to be that all conquering technological advancement in the coming century. Depending on what streams you are employed in this triggers a wide range of emotions ranging from gut wrenching fear to euphoric excitement.

I am more of an observer at this point, interested enough to read more or less anything related to AI that crosses my feed. I satisfy myself with being able to understand that transformers has nothing to do with Autobots and Decepticon and stochastic gradient descent is not a mountaineering technique.

It the last one week I read two articles that for me gave a great perspective on AI as a whole. The first was an article by Rob Toews on Forbes.com. This was about the work of AlphaFold by the DeepMind team in predicting with considerable accuracy how proteins are folded into a 3D architecture. The complexity of proteins are covered in the article but let's just say that the combinations are humungous and the combination determines whether you are a mouse or a human being. Normally the structure of a proteins takes years of experimentation and specialised equipment to arrive at. However as of July 2021, a library of 350,000 protein structures predicted by AlphaFold has been published. 

To me the article was fascinating from the point of view that is showed how AI was helping us gain more knowledge and insight into previously unsurmountable problems. Of course this means that the added insight also means that we gain more understanding about what we actually do not know. For a "glass half empty"perspective it also showed how DeepMind was fast gaining in terms of intelligence that could one day threaten my precarious existence as a knowledge professional or even more depressingly take away my ability to commandeer the helm of an automobile through all that self driving blah blah, a skill that I consider existential.

In the midst of this came an article from IEEE Spectrum written by Neil C Thompson which sheds light on the computational limitations faced by Deep Learning. Apparently deep learning models are fast approaching limits of computational capabilities and more importantly incurring huge costs in training deep learning models to achieve the necessary accuracy. This cost is a critical factor in deciding the return on investment of Deep Learning projects and correspondingly their viability. The article touches upon the various work arounds and techniques used by the leading AI research teams to mitigate the cost of training and also CO2 emmissions. 

This places the value of human capital in context and illustrates how much ground technology has to cover to match up to a human brain. Again as mentioned about it also shows the frontiers of knowledge remaining to be explored and conquered. All the talk about machines replacing humans is a bit far fetched. Yes, just like the tractor replaced the oxen certain skills will become obselete. As much as I love driving I do see driving as a skill becoming obselete in the next 50 years if not earlier. However my skill as a software architect will still be relevant assuming I use my natural deep learning mechanism (my brain) to discover the great unknown.

Yuval Noah Hariri in his book "Sapiens" says that great progress started in societies who realised that they knowledge that they possessed was but a small modicum of the vast mysteries that the world had to offer. This realisation and the subsequent drive to gain more knowledge and consequently riches hugely spurred human development in the next 750 years to where we are today. In the same way both articles expose the exciting frontiers that remain to be conquered in which AI is but a welcome aid and not necessarily something to be feared.

P.S : the initial outline of this frontier seems to be the Metaverse but more of that later.

Saturday, 30 January 2021

Book Review : The Phoenix Project

The Phoenix project
An excellent read for anyone in the Information Technology space irrespective of your role or position. It clearly calls out why IT is a differentiator and why IT risk is a business risk. For developers it puts perspective around why things like faster deployments, smaller packages matter from a busines perspective. It clearly elucidates why DevOps is not just something that start when you check in code but right from the requirements phase. 


Suddenly the hulabaloo around the "Shift Left" mantra makes all the more sense to you. In the midst of all this it left me with the Theory of Constraints which provides yet another weapon in your arsenal to approach IT delivery.


Ten deployments per day! Audacious in 2013 when the book was released but today it's much more common place. The book shows the need for automated testing, a focus on security right from the design stage.


DevOps is a culture
Yes it is and this book makes it clear why it's so. It makes it clear why all arms of the IT and business should work hand in hand to achieve goals and why for instance business KPIs should be reflected in application monitoring KPIs. Return on R&D spend, prioritising features that bring business value, paying down technical debt are all aspects that need to be considered in a DevOps culture.

Wednesday, 6 June 2018

Musings on the Iterator Design Pattern

Reading about the iterator pattern sparked a few thoughts. The Iterator pattern is used in conjuction with Collections. It abstracts the traversal methods out of the Collection. This has the advantage that the code of the relevant collection is not congested with the logic of traversing the list. In addition the responsibility of traversing the collection is offloaded to a separate class. Collection have a factory method called getIterator that provides the Iterator implementation for the collection.

Decoupling the Iterator also provides an additional advantage of being able to apply a wider variety of iteration techniques like Filtered Iterator etc.

Now extending this thought process a bit we can use this decoupling technique to provide Pagination techniques for instance for a list where the paging logic is abstracted from the list itself and handles the paging requests. This can be combined with a session cache so that the paging request does not go down to the db server.

This general approach can potentially be used to declutter a class from responsibilities that do not form it's primary objective.