It's 2021 and my mobile dev device is still a Nexus 4
Why my mobile dev device is still a Nexus 4
And it will remain so in the foreseeable future. Ask me why?
When I acquired this smartphone, in 2015, I never owned a smartphone before and had never planned to own one.
What was the nudge which pushed me over the edge? A dev project.
I had signed with a startup to develop a mobile app. At the time browsers were advanced enough that you could write an HTML/JS app and run it inside a mobile browser.
PWAs were not a thing yet. We were forced to rely on appcache manifest–a pure nightmare; thanks whatever divinity, it has been deprecated 🙏
And it was easier to plug a mobile device in Google Chrome remote debug than to install the whole Android Studio to run the emulator.
This has been my strategy of choice since then.
Always opt for the most straightforward, light, minimalistic solution.
At that time the Nexus 4 was already 3 years old
Today it’s 9 years old. It’s still my main development device. And I’m not planning to change it anytime soon.
This object has become the landmark of why I do what I do, and how I do it.
Having a computer in your pocket, available at such a low price gives you –whether you are some high profile, high salary employee at a snazzy startup, or a struggling rural mom in a developing country–a lot of power: communication, computation, data collecting about your environment.
And you can do it while on the go, when you’re at a construction site, in your crop field, in the middle of nowhere. Even without an electric outlet or a network connection.
These last two points: no power and no connection are the 2 very primordial conditions that make sense to the work I do.
The funny thing is that I regularly experience it first hand, spending a lot of time sailing.
Yeah, despite being in EU and France being the first country in yacht shipbuilding, when at sea you still have to account for a limited amount of electric power available. And no, Internet does not exist outside of a 20 nautical mile wide coastal strip.
How ironic that yachties(despite being amongst the most privileged people) share the same conditions –regarding electronic devices– as most of the world outside EU, US, and South Asia.
That said, this convergence of two different preoccupations: 1)being self-sufficient at sea, 2)providing helpful software to people distant from city, has forged my view about software. How we should see it. What is the most useful?
Amongst all the possible forms of software, I sense that mobile applications have the most potential because they can be used by a lot more people who are not in front of a computer.
Here is my mission statement:
- people don’t care about their « experience » using an app.
- they need to accomplish something
- they need to do it using the less amount of time possible and get back to whatever they were doing previously
- people want to be comforted about what they are trying to do
- that the app won’t break
- that the app will do its best to catch and repair possible error
- The app should always show the state it is in.
- People do not have fancy devices. They own what they can afford. And climate change will be a forcing factor to reuse as much as we can; especially electronic devices.
- App should work on whatever, not too ancient a device. My baseline is Android 4.4
- Apps must be lightweight to install. Do not force your user to download 350Mo on a slow connection.
- Apps must take all necessary counter measures to not drain the user’s battery
That’s why I only develop PWAs
The one and only requirement from my side is to minimize as much as possible the amount of code that the user has to download.
The consequence is that I do not use any framework.
This solves two other annoying facts
- Writing vanilla Js, you’re using the browser API. You don’t have to learn, adapt to the other paradigm that a framework will throw at you. Errors are your own. You do not have to spend time debugging what the framework does and which is not documented.
- You don’t need to build. No build tool to install, configure and debug when the build chain breaks.
I only use gzip at the server level
The more I write code, the more I question the relevance of heavy abstraction levels
Of course, it might be of interest in some cases. Like huge teams with hundreds of devs, huge projects for big companies, and big agencies.
My practice is much more close to the business. Most of the time I’m the sole dev, as well as the sole contact with stakeholders and users.
I learn the trade, question the processes, and ship only what is needed and will be used.
Business code should not be buried/ decoupled in multiple files which prevents anyone to understand easily what this is about.
This sits well also with the type of mobile app I develop.
PWAs shine when:
Mobile workers need to collect data and send it back to some distant other entities. Headquarters, team leader, regional org…
They need a tool that won’t drain their battery, will be easy to use, will work while offline, and will sync whenever connectivity is back and sufficient.
As I said, PWAs offer all of this by default.
HTML gives you form controls for free, with all the accessibility built-in.
Service worker will let you navigate from page to page without a round trip to the server.
No need for a bloated framework/ router.
Browser indexDB will store any data waiting to be synced to a distant server. Yes, even audio/ video files.
This is what we all should be aiming for:
write applications with the least amount of code possible, with a constant sense of the amount of energy and resources our functions consume.
Climate change is here. IT never fulfill its promise to lessen the resource needed to function as a society. On the contrary, it has been a constant driver of growing CO2 emissions.
There is no fatality in this.
I decided a long time ago to be rigorous in my choices regarding technology.
Web technology may not be the « closest to the metal ». But it’s universal, well documented, backward compatible. And as I said, will work on any kind of device that offers a browser.