2024 Retrospective

Having written a retrospective pretty consistently for the last decade or so, at this point its almost customary to start with how different this year felt compared to previous ones. But this one was truly one for the books!

Work

A big year for Xfinity Moments

Moments is the internal name for the digital keepsakes and gamification platform my team launched late last year. The project has been my baby for the last 2 years and taking it from an idea to an internal prototype to a system in production with hundreds of thousands of keepsakes now unlocked has been an amazing journey. We ran 5 experiences around Moments this year with a 6th one around the SNL coming very soon. I have written about the success we had with the Olympics experience before, but in general it has been a very rewarding experience for me personally to see something you truly believed in now actively considered for various initiatives. I have learned so much about building systems at very different scales through the project but am even more thankful to the small team that built it and the various leaders at Comcast who both believed in it and championed it at various forums.

Managing teams

For the last 20 years I have worked as a technical contributor in various teams at various capacities leading up to a Senior Principal Engineer role at Comcast Labs that led me explore various emerging technologies and how they might fit at Comcast. However the last couple of years with the gaming initiative previously and the Moments project more recently, my role has been more directional with day-to-day engineering time often getting subsumed by things like release plans, coordination meetings and defining and allocating tasks to my team. This year, after a lot of deliberation, I took the advice of various mentors and transitioned to management and took on the role of Director of Engineering at the Emerging Products and Technologies team. The new role brings with it the opportunity to influence multiple projects and work with a lot more people. I still get to write code to explore some technical avenues, I just don’t have to worry about holding up the deliverables for the project sprint in progress which has relieved a fair bit of guilt 🙂

Agentic AI

One of the new areas I have been focusing on at work is the rise of Agentic AI and its impact not only on products themselves but in the processes and workflows that go into creating and evolving products. Exploring that landscape for the last couple of months and seeing a new breed of tools that can completely disrupt the traditional processes has eye-opening to say the least. If this is a space you have any thoughts on, do drop me a line.

Non-work

Becoming an American citizen

Having lived in the US for about 22 years now, I finally became an American citizen this year. It feels weird to think that I don’t have to stress about any kind of mistake in my paperwork or some change in government policy that might force me to leave the life I have built here. It is also a moment of reflection on my own identity. It is poetic that this happens this year, my 22nd year in the US when my first 22 were spent in India. I have a lot of thoughts that I hope to condense into something sharable soon.

Writing

Having moved-off Twitter for the most part, I have been trying to use the alternatives (you can find me on BlueSky, Mastodon and Threads) and they are fine but I have lost most of my Twitter friend circle in the transition. I had been noodling on starting a newsletter for a while and I finally pushed the trigger a couple of months ago and started a Substack newsletter. I am still trying to find the right format there but its been a good place to collect and share the various links I read in a week or 10 days, which is mostly what I used Twitter for. Please subscribe!

Reading

2024 was not the greatest year for reading book, but I did enjoy a few. Ended up reading a lot more graphic novels which were great.

Here is to a great 2025!

The Olympics “Passport to Paris” experience

The 2024 Olympic Games kicked off yesterday (Friday, July 26) with what a spectacular opening ceremony on the Seine. The Olympics have always been a big event at Comcast with numerous new experiences launching at this time that push the viewing experiences to new levels. 2024 is no exception, except for a more personal reason: this is the first time the digital keepsakes / Moments project that my team and I have been building for the last couple of years will make an appearance on millions of TVs and online properties celebrating the 2024 Paris Olympics!

The “Passport to Paris” experience, that went online last week, will allow Xfinity Rewards members to collect digital collectibles (stamps) by participating in online experiences, like polls, quizzes, stories, etc and even by watching certain events on X1, Stream or Peacock. Collect enough stamps and you unlock various rewards, from gift cards to physical commemorative pins! This is the latest iteration of the content capabilities of the platform, which we have previously used to create experiences around the latest Trolls movie, Superbowl and March Madness. You can learn more about it from this press release or on other sites on the internet.

It’s amazing to think that the whole platform was just a prototype on a laptop two years ago when we demoed it to the executive leadership. The core team has always been small, and always in flux with folks joining in to help out when they could or when we were operating in domains I knew little about (too frequently 😉 ). I am so grateful to everyone who supported this project as it grew from an idea to the experience it is today.

I will continue to share more about this platform as we evolve it, and there will be other experiences powered by the platform out soon, but for now, here is a video of what we just shipped.

If you are an Xfinity Rewards member, do check it out and let me know what you think!

Categorizing Google’s “101 real-world Gen AI use-cases”

Google Cloud recently published a post titled “101 real-world gen AI use cases from the world’s leading organizations“. As with any list that long, my eyes started to glaze over by the time I reached the 10th bullet point. So I asked an LLM (well, ChatGPT, sorry Google Gemini) to categorize the list by grouping them into the themes that are in play. This was a lot more useful:

  1. Customer Service & Support:
    • ADT: Customer agent for home security setup.
  2. Travel & Hospitality:
    • Alaska Airlines: Personalized travel search experience.
    • IHG Hotels & Resorts: Generative AI chatbot in their app.
    • The Minnesota Division of Driver and Vehicle Services: Translation for non-English speakers.
  3. Retail & E-Commerce:
    • Etsy: AI to improve search recommendations and ads.
    • Target: AI solutions for personalized offers.
    • Victoria’s Secret: AI agents for in-store associate support.
    • Woolworths: Generative AI to improve communications.
  4. Healthcare & Life Sciences:
    • Bayer: Radiology platform for data analysis.
    • DaVita: Transform kidney care with AI.
    • Highmark Health and Freenome: AI for clinical trial planning.
    • Dasa: Faster detection of findings in test results.
  5. Finance & Banking:
    • ING Bank: AI chatbot for improved customer query answers.
    • IntesaSanpaolo, Macquarie Bank, Scotiabank: Gen AI to transform banking operations.
  6. Marketing & Media:
    • Golden State Warriors: AI to improve fan experience content.
    • Los Angeles Rams: AI for content analysis and scouting.
    • Carrefour: AI for dynamic marketing campaigns.
    • Procter & Gamble: Generative AI platform for creative asset creation.
    • WPP: Google Cloud’s gen AI in their marketing system.
  7. Internal Knowledge & Productivity:
    • Cintas: Knowledge center for customer service and sales teams.
    • Uber: AI agents to improve productivity.
    • Box, Typeface, Glean: AI for marketing and financial services.
    • Workday: Vertex Search for data insights.
  8. Education & Research:
    • Pepperdine University: Real-time translation for students and faculty.
    • Mayo Clinic: Accelerated scientific research with data retrieval via Vertex AI.
    • BenchSci: AI for scientists to understand biological connections.
  9. Creative & Design:
    • Canva: Vertex AI for video editing.
    • Paramount: Streamline metadata and video summaries.
  10. Security & Compliance:
    • BBVA: Google SecOps for security threat detection.
    • Pfizer: Aggregating cybersecurity data sources.
    • Palo Alto Networks: AI-driven security operations platform.
  11. Data & Analytics:
    • Spotify: Dataflow for ML podcast previews.
    • AI21 Labs: BigQuery integration with Contextual Answers.
    • MSCI: ML with Vertex AI for climate-related risk insights.

Good Reads – March 8th

  • Jeff Dean: Exciting Trends in Machine Learning – A worthwhile watch on YouTube though more a retrospective on how we got here than where we are going; which is great since the pace of innovation in this space is demolishing predictions so fast and any “future of AI” video has a shelf life of only a few months
  • How Google helped destroy adoption of RSS feeds – A bit of a dramatic title, though I suppose “How Google lost interest in RSS as everything was moving to social networks” might have been less interesting. I have strong love for RSS and had even written an RSS reader way back using Google Reader’s unofficial API. I have thoughts but will hold those for a more dedicated post on that.
  • Project of the week: RSS-is-dead.lol: Speaking of RSS, this project is kinda cool: it navigates your social graph on Mastodon and finds RSS feeds of folks that account is following. If only my RSS reader was still around, I could actually use those discovered links :). Here is my profile in case you want to see it in action but don’t have a Mastodon account.
  • BlueSky opens up to federation: Bluesky might be the social network I most agree with philosophically, but find it boring enough to never actually go there. The fact that I can have a domain based account there is great (you can follow me @arpitonline.com there). The federation implementation seems good at first glance but will have to dive in more later maybe (if it survives the wrath of Mastodon fans)
  • Please, enough with the dead butterflies: Speaking of BlueSky, someone on Hacker News pointed a link to this pretty great post on how most artwork about butterflies actually draw their wings in a position that is only observed in dead butterflies. I’ll never get that thought out of my head now.

Good reads – Week of Feb 18, 2014

Dev

  • Dart 3.3 and Flutter 3.19– I am one of a very small set of people running a Flutter web app in production, so excited to see work going into better JS interoperability and a path to WASM. Impeller support for Android is neat to see as well.
  • How Custom RenderObjects can make your life easier (FlutterCon) – One of my aha moments with Android was when I finally understood how the layout engine worked (which led to a custom framework that was very popular for a while). I am starting to feel the need for a similar aha moment with Flutter given how much widget code is in our codebase that feels unoptimized.
  • Micropayment capabilities in Chromium – I read this on a forum (fine, Reddit) and there was a lot of criticism of this move, but if folks don’t want ads, then you have to let publishers at least offer payment based access. I remember the “small fractional payments” was the original pitch for Bitcoin but it’s interesting to see the Web Monetization API finally be a thing 15 years later.

Design

  • GitButler product demo – Unlike most apps for working with Git that faithfully surface Git’s capabilities but don’t really think about user mental models or approaches when working with it, GitButler takes a different approach and tries a few new ideas around developer workflows. I like it.
  • MyMind’s share UI – Very calming confirmation screen when you share something to MyMind (a personal notes/images app with AI).

Misc

Things I read – Week of Feb 11, 2024

Dev

  • A deep dive into Strapi’s architecture (strapi.io) : Strapi calls itself a headless CMS but it is more a web framework with a built-in CMS (kind of like Django). We are using it a fair bit at work and it’s been decent so far. At some point I’ll write a more personal “lessons learned” post but in the meanwhile, this is a good introduction to the system’s design.
  • Dart Vector DB (github.com): No clue if this is any good, but glad to see an on-device Vector DB for Flutter apps.
  • The Undercover Generalist: Good post that highlights that most job reqs ask for specialists when most of the industry really needs generalists. The book Range is also a good read on that topic.

Misc

Things I read this week (Feb 4th, 2024)

Dev

Design

Misc

Things I read this week (Jan 28, 2024)

Dev

Design

Misc

NFTs are about to take a bigger role in your expanding online life (MarketWatch.com): Slightly wishful thinking by the author here but there is a lot of interesting projects around in the fairly niche community of NFT enthusiasts. The tech is fairly proven, but regulatory uncertainty, bad press, and hard on-ramps into the ecosystem are holding it back from going mainstream.

Binoculars with built in image recognition: Would love to gift one of these to my father-in-law who is an avid birdwatcher, but at $5K it might be a bit much ;). He already has a smart bird feeder though.

Disney’s HoloTile floor (YouTube): The latest in tech that could be used to let users walk around in VR and yet not physically move. It’s cool. I want someone to make the Jamiroquai’s Virtual Insanity video using it 🙂

// follow for updates:

Things I read this week (Jan 20, 2024)

Dev

Design

Best UI / UX for subscribing users to web push notifications (Pushpad.com): We might have to add web push notifications into our web app soon, and while Firebase makes the engineering much easier, the UX of permission prompts is a bit of the wild west.

Misc

The myths we tell ourselves about American farming (vox.com): An insightful, though depressing read, on Agricultural Exceptionalism, or how our romanticized notions of farmers and farming are allowing that industry to operate under a different set of environmental and labor laws that hurt our society.

How Spotify helped turn Afrobeats into a global phenomenon (restofworld.org): I had never heard of Afrobeats before but have been listening to it this week and it’s kinda neat



// Follow for updates

Using native share API in Flutter based web apps

One of the fairly new APIs added to the web stack is the Navigator.share API. The API allows websites and apps to invoke the native share sheet on OS running the web browser to let the user share text, links and images to the services they actually use.

This week, one of the tasks on our new web app (written in Flutter) was to transition from our custom “share this link” UI that was preconfigured to a select set of services (Twitter, Facebook, Reddit, email) to the native share api allowing users to share the link on their configured services.

Some thoughts on the Share sheet

Before I continue, lets talk about the OS share system in general. If there was ever a “God Object” equivalent of user interfaces, the system share sheet on mobile devices has to be it. The widget has become sort of like an escape hatch for the underlying application with not only share capabilities, but a host of other actions in the same menu (Find on page? Print? Add to home screen?) which keeps getting updated by your installed applications. I don’t think anyone can list the menu options there from memory, and yet if we expect to run any action on any data from the underlying application, we expect that action to be available in the share sheet.

I bring this up because the native share from a webpage is now not as simple as sending a title, text, link and image to the share sheet and assuming it would work. Different behaviors from different apps get enabled based on various combination of the 4 fields. For example, one service we wanted to make sure users could use was Instagram (assuming they were Instagram users). IG behavior via share is something like this:

InputInstagram behavior
Only title, or title + textCannot share to Instagram
link + any combination of title and textShare with a friend on Instagram as a message
Only imageShare that image in a post, story or message
Image + any of the other fieldsShare image as a reel
Instagram behavior matrix

Other image oriented services like Snapchat and Pinterest also seem to be sensitive to the combination of the 4 fields sent. Its kind of a bummer that we have to now spend QA cycles making sure we are sending the right order of fields to get the desired behavior from the receiving app.

Native share on the desktop?

The other challenge to native sharing is that while the browser API may be available on a lot of platforms, native share on the desktop does not make sense since most people don’t install apps for the services they use on their desktop which means that the share menu is pretty barren. Chrome on the Mac desktop, perhaps sensibly, does not support the web share API but Safari does.

Our solution for the app now is to use our custom share UI on desktop browsers but use the native one on mobile. Feels a little hack-ish but it makes the most sense from a user’s point of view.

Sharing images on Flutter web apps with Share Plus

The last aspect of the implementation that tripped us a bit was trying to include images from a web URL along with the title and link to the share API. We are using the Share Plus library which is pretty good and supports the native share API. Unfortunately we didn’t find any links on how to convert an image link to the image attachment (its still early days for Flutter web I suppose). If anyone else needs the snippet, here is how you do it:

final http.Response responseData = 
  await http.get(Uri.parse(linkToFile));

Uint8List bytes = responseData.bodyBytes;

var file =  XFile.fromData( bytes,  mimeType: 'image/png', name: "MyPic.png");

await Share.shareXFiles([file], text: 'Hello', subject: 'Check out this image' );

The thing that I wasted 2 hours on today was this snippet not working cause the name I was giving my file did not include the file extension 🤦‍♂️. So be warned 🙂