Translating an application is not trivial but it shouldn't be complicated. Using existing tools, we can flag the text that needs to be translated and extract it into resource files. Such files will be populated, either by human translators or machine generated content, and then the translation software will transparently do the rest. ยกVamos alla!
Blog
A minimalistic approach to transparently translating your application
Gradual replacement of legacy web APIs using 404 responses and http-proxy
Re-writing a legacy web API takes time and the exercise will probably span across several releases. We will most likely be facing a scenario were both APIs run in parallel, having the old system servicing endpoints that haven't been migrated yet. But it turns out such an scenario can be achieved painlessly by using the good old http-proxy library and 404 responses! Here is how.
Supporting offline data on ever-changing database schemas
Apps that allow users to generate data while being offline (Trello, for example) generally provide a better user experience. They must resolve a challenge however: because the database schema naturally changes as the app evolves, the server must support incoming data generated on an old schema version. How? Here is one way of doing it.
@typed-web-api: type safety for fetch requests
Writing a web app in Typescript provides type safety in both the client and the server but, what about the communication between the two sides? The payload of network requests remains untyped by default, boycotting our attempts to keep a consistent code base. With that idea in mind I wrote @typed-web-api, a minimalist approach to adding type safety to fetch requests. Here is how to use it.
Distribution of Typescript shared code without package repositories
A couple years ago I wrote a piece about sharing code in Typescript monorepos, focusing mainly on npm workspaces, and I left out an important aspect of the software development lifecycle: shipping the compiled files to production environments. Because that is such a fundamental part of software development, I'll be addressing it in this second piece of writing.
A comprehensive WebRTC walkthrough
WebRTC allows for real-time communication between two peers using only the browser's built-in functionalities, with no need for a communications server. That's AWESOME. But turns out that the browser API is complex, and I find the official samples repository a bit confusing. Here is an attempt to provide a clearer example.
Inferring network requests' return type: @express-typed-api
Even though choosing Typescript to develop an express web app provides type safety in both client and server, the network requests data remains untyped on both ends, complicating our attempts to keep a consistent code base ๐คฌ With that idea in mind I wrote @express-typed-api, a library to help creating a type declaration for an express API so that it can be used to automatically infer the network requests' return type from the client side. Here is how to use it.
Client/Server code sharing in Typescript monorepos
Writing a web server on node.js means using the same programming languages on both sides of a web app. Which should allow for sharing a good amount of code between the client and the server apps. Which should be easy when both apps are part of the same monorepo. Then, why do things get complicated when we add Typescript to the mix?
First-class push notifications for Expo apps
So the time has come for your brilliant Expo app to start delivering push notifications. You've had a look at the multiple options available and still you are unsure which one to go for. Regardless where you are at now this is all you need to know before implementing push notifications on your managed Expo app and how to do so in August 2021.
Email authentication in React Native apps using Firebase
I choose React Native to develop mobile apps because it simplifies development so I want user authentication to be as simple as possible too. Firebase provides backend services and client side SDKs for authentication purposes and it's built by Google. That's a match! This is how to authenticate users with email and password in React Native apps using Firebase Authentication.
Publishing an iOS app to App Store
So you heard that Apple is rather picky when it comes to accepting apps in App Store. And indeed, Apple does make it much harder than Google when it comes to publishing apps. This doesn't mean it's impossible however. All you will need is patience and, if possible, following the advice of somebody who has done it before. This is what it looks like to upload an iOS to App Store in January 2021.
Publishing an Android app to Play Store
So you just had that amazing idea for a killer mobile app. You know how to develop it and you have the motivation but you are not sure how hard it's gonna be to get it published on Play Store. Or maybe you don't have the idea yet, but still you wonder about how publishing a mobile app works. You came to the right article. This is what it looks like to upload an Android app to Play Store in January 2021.
Https, email ready WordPress site on Google Cloud Platform
Create your own npm package
Web developers owe a great deal to npm JavaScript libraries. npm packages resolve common web problems in elegant ways, are free to use, rock solid (potentially tested by thousands of users) and save development efforts. No doubt npm makes our lives easier but... who are those anonymous open source heroes? Well, you can be the next one!
Running express on Google Cloud
So you have just finished your splendid new node.js express app, it runs smoothly in your local environment and you are ready to make it available to the users who are eagerly awaiting for the release. The question now is... where to deploy it? Search no more! Google Cloud Platform is the place you've been looking for. Seamlessly deploy your app with a single command and let Google handle the scaling your app needs according to the users traffic.
Linear gradient is the new black
Build a wheel of fortune in CSS... is that even possible!? I had never thought about it until I met a group of entrepreneurs who were building a savings application based on video games. They were using React Native and a couple of graphics libraries which, in my opinion, seemed to be too much overhead for just a roulette. I immediately started to dig in the internet and I found a way to implement it in pure CSS3 and HTML. The CSS property that makes it possible? Meet your new best friend: linear-gradient ๐ถ๏ธ
Web development bad decisions
When building a web on my own I generally face two challenges: what to put in it and how to put it. Usually the urge of getting the job done pushes me to start developing after visualizing the global picture, and I don't spend enough time trying to solve those challenges properly. As a consequence of this haste, I sometimes feel my web sites are lacking something... but what exactly? Here are the bad decisions I made while developing my old website and how I approached them on this new version of my web page.
Writing a sudoku algorithm
My mother has always been a fervent newspaper reader and, throughout the years, she developed the habit of solving the puzzles that come in the last pages. Between those puzzles you can always find a game called sudoku. Two actually; a reasonably difficult one and an evil one. So she was in the middle of filling the first sudoku when I interrupted her. I don't remember what for but I do remember that we talked about sudoku and it was the difference between the two sudoku levels that caught my attention.
Web development on steroids: Vol. 2
Despite I do not work at Sage anymore, some of the tools I discovered there still are a very wise choice when it comes to web development. Since they did not fit in the first post of this series, I'll briefly describe them in this second one. Don't worry: I promise not to write a third part.
Web development on steroids: Vol. 1
Perhaps steroids is too much saying, but you can definitely get more out of web development. In this post I will explain some of the techniques we use at Sage to develop our web platforms, both front end and back end, which I've later on exported to my personal projects too. Keep reading to streamline your own development experience!
Building a subscribers list
As a content writer you owe a great deal to your readers. No matter whether you are a blogger, a writer, a coach or an author, being able to reach your audience will help you get them more engaged with your activity and provides a good way to start selling your products or services in some point in the future. In addition it will keep you motivated to keep writing. Is there anything more pleasant than knowing that someone cares about your ideas?
PWA: Make your website available offline
If you are visiting this website from a mobile device, you might have seen the following message at the bottom of the screen. No, I am not trying to hack you. I have made my website a progressive web app and, as such, it can be accessed offline and it can be installed in Android and iOS devices. Keep reading and turn your website into a PWA in less than 15 minutes!
The leaked Api key
Few days ago I received the following email from Google Cloud Platform. Apparently, I was publishing my Google Maps API key to a public Github repository (for the non-technical audience, I was uploading some kind of password to a social network public wall), allowing any smart-ass clever enough to find it to spend my Google Maps quota on his behalf.