─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.3.2 (2023-10-31)
os macOS Sonoma 14.1.2
system x86_64, darwin20
ui X11
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz Asia/Singapore
date 2024-01-13
pandoc 3.1.10 @ /usr/local/bin/ (via rmarkdown)
quarto 1.3.450
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
sessioninfo * 1.2.2 2021-12-06 [1] CRAN (R 4.3.0)
[1] /Users/ddanieltan/Code/ddanieltan.com/renv/library/R-4.3/x86_64-apple-darwin20
[2] /Users/ddanieltan/Library/Caches/org.R-project.R/R/renv/sandbox/R-4.3/x86_64-apple-darwin20/84ba8b13
──────────────────────────────────────────────────────────────────────────────
A Tour of Google IDX
Google IDX
IDX is a project from Google that aims to provide an entirely cloud based app development experience. From development to deployment and everything in between can be done from the comfort of your web browser and seamlessly integrated through Google’s cloud ecosystem. While hardly the first in this space, the project piqued my interest and I signed up for beta access to give it a spin.
Creating a new app
The onboarding experience was very smooth, my google account was required to sign up for the beta and immediately synced to my IDX account. At this stage there weren’t too many templates to choose a starter project from from the last option on the “Create A Workspace” page, it looks like Python, Go and importantly AI templates are coming soon, which I can imagine would accelerate interest in this project.
Editing Experience
A couple of clicks later, I was up and running. I really enjoyed how quickly and relatively friction-less it took to get to this stage.
Greeted by my familiar vscode/monaco editor, I found navigating the options straightforward. The 2 additional icons on top of the usual vscode options you see on the sidebar to the left are for the Firebase deployment and Project IDX options.
Crucially, the typing experience felt natural and latency free. Coding up a simple web app was fuss-free and the default settings had quality-of-life features for web development such as instant reloading previews and a colour picker.
Nix
A rather novel choice that IDX made was to use Nix as the package manager to define environment configurations for every workspace. Learning that Nix is a purely functional package manager piqued my interest as not too long ago I spent a year learning Scala At the outset, I do see a lot of sense in having a functional approach to dealing with package dependencies, but I’d love to spend more time with this tool to understand it more.
For my simple app, the Nix configuration was pre-populated and I could understand all the default settings made. The ability to edit the command used to preview your app defaults to the standard Python web server but can be changed for other languages if needed.
Python environment
While the Python workspace is coming soon, seeing that Python was used as the default web server for previews got me curious to poke around a bit.
I found the default python version to be 3.11 but it was truly a barebones environment that did not come with pip installed. This is not too surprisingly considering every development container is a fresh VM instance. I look forward to seeing the start python environment when it becomes available as I imagine there would be more batteries included for that workspace.
I ended my session with a quick check of the specs of the cloud machine that is provided for free. It turned out to be in-line with most basic tiers of cloud containers that I have come to expected.
Overall
What I liked so far
- Delivers on the promise of a convenient way to develop apps
Classic and familiar editing experience, they resisted the urge to reinvent any wheel unnecessarily
Free (but I wait with bated breath to see how long this lasts)
What I’m looking forward to
Python workspace and app examples
AI coding assistant
More detailed documentation. The current docs feel a little light but we are still in beta.
Vim mode: I would prefer native bindings over Vim emulation offered via vscode extensions
Overall, Project IDX impressed me in my quick testing. It was a breeze to get started and the tooling made my development experience enjoyable! My little write up is missing my review of the deployment process but that’s solely because I did not have an existing Firebase account. If I revisit this project again in the future, I’ll be sure to try that experience out too.
Appendix
Somewhere, something incredible is waiting to be known – Carl Sagan
Reuse
Citation
@online{tan2023,
author = {Tan, Daniel},
title = {A {Tour} of {Google} {IDX}},
date = {2023-11-04},
url = {https://www.ddanieltan.com/posts/google-idx},
langid = {en}
}