Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
149623 stories
·
33 followers

Digg lays off staff and shuts down app as company retools

1 Share
Digg laid off a significant number of staff and shut down its app, but says it's not giving up on the startup.
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Room 3.0 - Modernizing the Room

1 Share
Posted by Daniel Santiago Rivera, Software Engineer





The first alpha of Room 3.0 has been released! Room 3.0 is a major breaking version of the library that focuses on Kotlin Multiplatform (KMP) and adds support for JavaScript and WebAssembly (WASM) on top of the existing Android, iOS and JVM desktop support.

In this blog we outline the breaking changes, the reasoning behind Room 3.0, and the various things you can do to migrate from Room 2.0.

Breaking changes

Room 3.0 includes the following breaking API changes:

  • Dropping SupportSQLite APIs: Room 3.0 is fully backed by the androidx.sqlite driver APIs. The SQLiteDriver APIs are KMP-compatible and removing Room’s dependency on Android's API simplifies the API surface for Android since it avoids having two possible backends.

  • No more Java code generation: Room 3.0 exclusively generates Kotlin code. This aligns with the evolving Kotlin-first paradigm but also simplifies the codebase and development process, enabling faster iterations.

  • Focus on KSP: We are also dropping support for Java Annotation Processing (AP) and KAPT. Room 3.0 is solely a KSP (Kotlin Symbol Processing) processor, allowing for better processing of Kotlin codebases without being limited by the Java language.

  • Coroutines first: Room 3.0 embraces Kotlin coroutines, making its APIs coroutine-first. Coroutines is the KMP-compatible asynchronous framework and making Room be asynchronous by nature is a critical requirement for supporting web platforms.

A new package

To prevent compatibility issues with existing Room 2.x implementations and for libraries with transitive dependencies to Room (for example, WorkManager), Room 3.0 resides in a new package which means it also has a new maven group and artifact ids. For example, androidx.room:room-runtime has become androidx.room3:room3-runtime and classes such as androidx.room.RoomDatabase will now be located at android.room3.RoomDatabase.

Kotlin and Coroutines First

With no more Java code generation, Room 3.0 also requires KSP and the Kotlin compiler even if the codebase interacting with Room is in Java. It is recommended to have a multi-module project where Room usage is concentrated and the Kotlin Gradle Plugin and KSP can be applied without affecting the rest of the codebase.

Room 3.0 also requires Coroutines and more specifically DAO functions have to be suspending unless they are returning a reactive type, such as a Flow. Room 3.0 disallows blocking DAO functions. See the Coroutines on Android documentation on getting started integrating Coroutines into your application.

Migration to SQLiteDriver APIs

With the shift away from SupportSQLite, apps will need to migrate to the SQLiteDriver APIs. This migration is essential to leveraging the full benefits of Room 3.0, including allowing the use of the bundled SQLite library via the BundledSQLiteDriver. You can start migrating to the driver APIs today with Room 2.7.0+. We strongly encourage you to avoid any further usage of SupportSQLite. If you migrate your Room integrations to SQLiteDriver APIs, then the transition to Room 3.0 is easier since the package change mostly involves updating symbol references (imports) and might require minimal changes to call-sites.

For a brief overview of the SQLiteDriver APIs, check out the SQLiteDriver APIs documentation.

For more details on how to migrate Room to use SQLiteDriver APIs, check out the official documentation to migrate from SupportSQLite.

Room SupportSQLite wrapper

We understand completely removing SupportSQLite might not be immediately feasible for all projects. To ease this transition, Room 2.8.0, the latest version of the Room 2.0 series, introduced a new artifact called androidx.room:room-sqlite-wrapper. This artifact offers a compatibility API that allows you to convert a RoomDatabase into a SupportSQLiteDatabase, even if the SupportSQLite APIs in the database have been disabled due to a SQLiteDriver being installed. This provides a temporary bridge for developers who need more time to fully migrate their codebase. This artifact continues to exist in Room 3.0 as androidx.room3:room3-sqlite-wrapper to enable the migration to Room 3.0 while still supporting critical SupportSQLite usage.

For example, invocations of Database.openHelper.writableDatabase can be replaced by roomDatabase.getSupportWrapper() and a wrapper would be provided even if setDriver() is called on Room’s builder.

For more details check out the room-sqlite-wrapper documentation.

Room and SQLite Web Support

Support for the Kotlin Multiplatform targets JS and WasmJS and brings some of the most significant API changes. Specifically, many APIs in Room 3.0 are suspend functions since proper support for web storage is asynchronous. The SQLiteDriver APIs have also been updated to support the Web and a new web asynchronous driver is available in androidx.sqlite:sqlite-web. It is a Web Worker based driver that enables persisting the database in the Origin private file system (OPFS).

For more details on how to set up Room for the Web check out the Room 3.0 release notes.

Custom DAO Return Types

Room 3.0 introduces the ability to add custom integrations to Room similar to RxJava and Paging. Through a new annotation API called @DaoReturnTypeConverter you can create your own integration such that Room’s generated code becomes accessible at runtime, this enables  @Dao functions having their custom return types without having to wait for the Room team to add the support. Existing integrations are migrated to use this functionality and thus will now require for those who rely on it to add the converters to the @Database or @Dao definitions.

For example, the Paging converter will be located in the android.room3:room3-paging artifact and it's called PagingSourceDaoReturnTypeConverter. Meanwhile for LiveData the converter is in android.room3:room3-livedata and is called LiveDataReturnTypeConverter.

For more details check out the DAO Return Type Converters section in the Room 3.0 release notes.

Maintenance mode of Room 2.x

Since the development of Room will be focused on Room 3, the current Room 2.x version enters maintenance mode. This means that no major features will be developed but patch releases (2.8.1, 2.8.2, etc.) will still occur with bug fixes and dependency updates. The team is committed to this work until Room 3 becomes stable.

Final thoughts

We are incredibly excited about the potential of Room 3.0 and the opportunities it unlocks for the Kotlin ecosystem. Stay tuned for more updates as we continue this journey!
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

Issue 745

1 Share

Comment

I spent a little time updating and cleaning up the iOS Dev Directory this week and it reminded me that I’ve not talked about it here in a while.

The changes I made are relatively minor, but they include a design and wording refresh across the whole site, dark mode support, many more options for showing what social media or profile you attach to your name¹, and improved instructions on how to add a site. I also moved it to its own GitHub organisation and open sourced the website itself, something which was private until now.

The directory has never been a flashy project, but I still think it’s really important that it exists.

Getting people to know about a new blog is hard, especially if you don’t have a large social media following. Having somewhere to list your site is important, and even more so if you include your RSS feed. My personal RSS process immediately subscribes me to any new sites added to the directory, and I know others also have it set up this way. There are also aggregator sites that pull content from the directory’s OPML files.

I started the site in 2018, almost 8 years ago with the intention of broadening the set of people who I subscribed to when reading posts for this newsletter, and it’s certainly been successful at that. There are now almost 1,000 sites listed, and the data file repository has had almost 1,300 pull requests. That said, because it’s not a “destination” site, it always needs an occasional push here to remind people it exists.

So, with that in mind, if your blog isn’t listed then please add it, but let’s take it one step further. If you know of anyone who blogs but isn’t in the directory, or if you found an interesting site recently that isn’t included, add those too! I’d love to push that number of sites over 1,000 in the next week.

I do have another reason to write about the iOS Dev Directory. You might have noticed I’ve missed publishing a few issues of this newsletter recently, and it’s because I have rather a lot going on. I’d love some help with iOS Dev Directory from anyone who thinks a site like this is important. Either reply to the email if you’re subscribed that way or it’s dave at this domain if you’re reading on the web. Drop me a mail and we’ll chat. Thanks!

– Dave Verwer


¹ You can now add social profile links for Bluesky, Mastodon, Threads, LinkedIn, GitHub, Micro.blog, Weibo, and Twitter/X.

News

Hello Developer for March 2026

I noticed something at the end of this month’s “Hello Developer” post from Apple that I hadn’t noticed before, and which I’ve been wishing for for years! Scroll right down to the bottom and there’s a “New Docs” section! I still wish there was a better portal or way to find out about all new and updated documentation, but this is a really good start to highlight some significant changes throughout the month. Looking at the back issues, it seems it’s been there for a while, too! Shame on me for not noticing.

Tools

Network Throttler

I haven’t used Apple’s Network Link Conditioner in quite a few years now, so I was surprised when Ash Hood let me know about his new throttling tool. Turns out the official link conditioner hasn’t had as much love as it maybe needed over the years, and a tool like this might come as a welcome surprise if you’ve been struggling with it. 👍

Code

A Month With OpenAI’s Codex

I really loved this post from Steve Troughton Smith. He wasn’t new to using LLMs for coding tasks, but he admits that he had been “sleeping on the shift that is already well underway in our industry”. What I love most about what he wrote is that it’s all experiments. Writing a Windows app, creating data to fit a specific (and niche) file format, and more. It’s a great post.


Learning to develop more accessible iOS games

When I read the title of Daniel Devesa Derksen-Staats’s latest post, I expected it to be filled with little side-stories about how other games get accessibility wrong. Instead, I enjoyed reading an entirely positive post about how to do it right. Bravo, Daniel, that’s exactly how to do it!


Implementing Passkeys in iOS with AuthenticationServices

I was so excited for Passkeys when they first got announced. What a wonderful idea, but I hate the experience of using them once they reached the real world. I think part of my issue is that I have multiple apps and also the operating system all trying desperately to make me create a passkey, and it always happens when I’m logging into something and just want to get something done. I actively avoid them now, so the constant nagging is just irritating. I also can’t imagine how a “normal” person copes with them if they baffle me. 😬 Is it just me that feels this way?

Aaaaannnyway, apologies for the rant! If you decide to, or are asked to implement them, then Natascha Fadeeva has exactly the article for you. The article is great, despite my thoughts on the underlying tech.

And finally...

Have you ever tried to explain what you do?? I really like this. ❤️

Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

AI Backlash Intensifies, Nvidia GTC Preview, Meta’s Embarrassing Delay

1 Share

Ranjan Roy from Margins is back for our weekly discussion of the latest tech news. We cover: 1) Backlash against AI & specifically Sam Altman's comments about AI as a utility 2) Is this because people are worried about AI taking their jobs? 3) NBC poll shows AI is one of the least popular things in the U.S. 4) YouGov poll shows broadly negative feelings toward AI 5) Pew finds datacenters are very unpopular 6) Consequences of AI's unpopularity 7) Nvidia GTC preview: A rallying cry for AI 8) Could Jensen Huang be the guy that turns this around? 9) Amazon's AI code is messing things up 10) McKinsey's AI tool hacked 11) Meta can't get its act together with Avocado delayed 12) Should Meta's AI use Google's Gemini tech

---

Enjoying Big Technology Podcast? Please rate us five stars ⭐⭐⭐⭐⭐ in your podcast app of choice.

Want a discount for Big Technology on Substack + Discord? Here’s 25% off for the first year: https://www.bigtechnology.com/subscribe?coupon=0843016b

Learn more about your ad choices. Visit megaphone.fm/adchoices





Download audio: https://pdst.fm/e/tracking.swap.fm/track/t7yC0rGPUqahTF4et8YD/pscrb.fm/rss/p/traffic.megaphone.fm/AMPP6622229861.mp3?updated=1773431982
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

IoT Coffee Talk: Episode 304 - Old Wrinkled Brains (The Secret to Staving off the AI Apocalypse)

1 Share
From: Iot Coffee Talk
Duration: 1:01:05
Views: 5

Welcome to IoT Coffee Talk, where hype comes to die a terrible death. We have a fireside chat about all things #IoT over a cup of coffee or two with some of the industry's leading business minds, thought leaders and technologists in a totally unscripted, organic format.

This week Rob, Alistair, Bill, Dimitri, and Leonard jump on Web3 for a discussion about:

🎶 🎙️ BAD KARAOKE! 🎸 🥁 "Jump", Van Halen
🐣 What is that MacBook Neo play for @Apple?
🐣 What can go wrong allowing OpenClawD access through your CLI?
🐣 What happens when we stop exercising our brains?
🐣 Is it cool that our younger generation question learning math?
🐣 How cut-in-paste plagiarism was the first cognitive convenience before ChatGPT.
🐣 Agentic AI-augmented synthetic engagement and the slop of the fake economy.
🐣 Are people and industries going to make the digital twin mistake AGAIN?
🐣 The sovereignty agenda that will supplant digital leadership globally.
🐣 The creeping death that is AI for the enterprise and the fallacy of AI guardrails.
🐣 Did we go to the Moon?
🐣 Will a new generation of AI Luddites be the only hope for humanity and society?
🐣 My AI is better than yours. My data is better than yours. Competitive advantage.
🐣 What happens when humanoid robots molest people? It has happened.
🐣 Why do revolutionary AI use cases look like Rob's IoT use cases from 2012?

It's a great episode. Grab an extraordinarily expensive latte at your local coffee shop and check out the whole thing. You will get all you need to survive another week in the world of IoT and greater tech!

Tune in! Like! Share! Comment and share your thoughts on IoT Coffee Talk, the greatest weekly assembly of Onalytica and CBT tech and IoT influencers on the planet!!

If you are interested in sponsoring an episode, please contact Stephanie Atkinson at Elevate Communities. Just make a minimally required donation to www.elevatecommunities.org and you can jump on and hang with the gang and amplify your brand on one of the top IoT/Tech podcasts in the known metaverse!!!

Take IoT Coffee Talk on the road with you on your favorite podcast platform. Go to IoT Coffee Talk on Buzzsprout, like, subscribe, and share: https://lnkd.in/gyuhNZ62

Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete

#540: Modern Python monorepo with uv and prek

1 Share
Monorepos -- you've heard the talks, you've read the blog posts, maybe you've seen a few tantalizing glimpses into how Google or Meta organize their massive codebases. But it's often in the abstract and behind closed doors. What if you could crack open a real, production monorepo, one with over a million lines of Python and over 100 of sub-packages, and actually see how it's built, step by step, using modern tools and standards? That's exactly what Apache Airflow gives us.

On this episode, I sit down with Jarek Potiuk and Amogh Desai, two of Airflow's top contributors, to go inside one of the largest open-source Python monorepos in the world and learn how they manage it with uv, pyproject.toml, and the latest packaging standards, so you can apply those same patterns to your own projects.

Episode sponsors

Agentic AI Course
Python in Production
Talk Python Courses

Guests
Amogh Desai: github.com
Jarek's GitHub: github.com

definition of a monorepo: monorepo.tools
airflow: airflow.apache.org
Activity: github.com
OpenAI: airflowsummit.org
Part 1. Pains of big modular Python projects: medium.com
Part 2. Modern Python packaging standards and tools for monorepos: medium.com
Part 3. Monorepo on steroids - modular prek hooks: medium.com
Part 4. Shared “static” libraries in Airflow monorepo: medium.com
PEP-440: peps.python.org
PEP-517: peps.python.org
PEP-518: peps.python.org
PEP-566: peps.python.org
PEP-561: peps.python.org
PEP-660: peps.python.org
PEP-621: peps.python.org
PEP-685: peps.python.org
PEP-723: peps.python.org
PEP-735: peps.python.org
uv: docs.astral.sh
uv workspaces: blobs.talkpython.fm
prek.j178.dev: prek.j178.dev
your presentation at FOSDEM26: fosdem.org
Tallyman: github.com

Watch this episode on YouTube: youtube.com
Episode #540 deep-dive: talkpython.fm/540
Episode transcripts: talkpython.fm

Theme Song: Developer Rap
🥁 Served in a Flask 🎸: talkpython.fm/flasksong

---== Don't be a stranger ==---
YouTube: youtube.com/@talkpython

Bluesky: @talkpython.fm
Mastodon: @talkpython@fosstodon.org
X.com: @talkpython

Michael on Bluesky: @mkennedy.codes
Michael on Mastodon: @mkennedy@fosstodon.org
Michael on X.com: @mkennedy




Download audio: https://talkpython.fm/episodes/download/540/modern-python-monorepo-with-uv-and-prek.mp3
Read the whole story
alvinashcraft
2 hours ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories