The Text-to-Speech Plugin provides an easy way to read the note out loud. Not an essential feature, but it is another plugin that I can try out. Installing and using the plugin is quite straight forward, you just need to put the TextToSpeech in the AppModule as a provider, and call speak to stop...
Cloud Firestore is a flexible, scalable database for mobile, web, and server development from Firebase and Google Cloud Platform. Setting up the app with Firebase is easy enough. There are plenty of tutorial on this topic, like this one: Ionic CRUD Operations Using Firebase with Firestore...
In order to retrieve the calendar events from the Google calendar directly into the mobile app, we need an identifier called the access token from authentication process. The access token represents my identity and we pass it into the gapi.client library so that Google knows whose calendar it should retrieve. Now that the AuthenticationService can handle authentication on the Android...
As I experienced in Ionic with Firebase Authentication , the normal browser based Firebase Authentication does not work in the Android platform. So we have to use a Ionic Native plugin to support Google sign in. Note that there is calendar plugin, it only gets the calendar on the phone device and it would not work in the browser platform...
I have a fan and a light switch controlled by TP-Link smart switch in my office. My son and I installed them so that we don't have to reach over to turn them on and off :-) Now we just say the words and Google Assistent will obey my command, until it does not. Once in a while, Goolge Assistent...
I would to show a summary of events of the next few days from my calendar and Google Calendar API has good support for it. There are a few ways that you can fetch the data. With my limited knowledge on Angular, I decided to do the work on the server side using my personal Node.js / Express server...
Ionic Framework is an open source mobile UI toolkit for building high quality, cross-platform native and web app experiences. Move faster with a single codebase, running everywhere. @ionic/angular combines the core Ionic experience with the tooling and APIs that are tailored to Angular Developers. ionic start Starting the ionic project is easy enough. After downloading the ionic cli, you just...
After my advantage of Deno and Abc, I decided to give Node.js and Express a try, and give them fair comparison. Next.js has been a big help in getting this site up and running. This time, I want to use setup a simple private server that I can run at home to support a peronal assistant...
I wrote my own Android video player quite a few years ago in Java, and rewrote it in Kotlin using ExoPlayer. It has been playing audio and video files in the phone's SD card all these time. After a brief test with HLS, DASH and streaming MP4 files, I found that the ProgressiveMediaSource can handle high resolution MP4 files...
I want to enhance my existing Android video player app to support streaming files, and also create a new mobile app as my very own personal assistant. They are going to access a local private server to run some operations on my main computer. Although I can add additional API into the existing Portfolio Next.js app, I decided on the...
Vercel, the creator of Next.js, has this really easy deployment for Next.js app. All you need to do is to import your Git Repository and the Git Integrations allows automatic deployments on every push. For example, this site is at https://portfolio.alexhu.vercel.app/ and I only have to manually deploy it once in the very beginning, then just push my code to...
I was not happy with the Flash of Unstyled Content problem. The unstyled content shows its ugly head with the timeline component. Just imagine the vertical timeline got mushed together at the left edge of the screen! Forunately, we can get rid of the problem by setting visibility to 'hidden' on the outer Layout wrapper initially, then removed it...
The Material-UI Timeline component is just the user interface to provide an outline of development progress. It puts a vertial timeline in the center of the page leaving a lot of white space on both side of it. I tried putting the article content to fill those white spaces, but they make a big bad long scrolling page. At the...
When adding new fields to the data models, it was apparent that adding additional fields to the data model is a troublesome area, as the app was broken in numerious area, namely 1. GraphQL query 2. GraphQL mutation 3. GraphQL resolver 4. Data migration So we need a safety net before adding new fields to minimize the potential breakage...
Creating the MongoDB is simple enough through MongoDB Altas in the cloud, which can be easily access using MongoDB Compass for viewing the database records. Create the schema with Mongoose is also easy and the generated models can be used for the CRUD functions. Maintaining a stable connection to MongoDB Atlas is a bit of a challenge. I tried to...
After looking through a number of frameworks, it is time to restart the app with Next.js for the Server-Side Rendering, and Apollo GraphQL server and client request. The simple way to get a Next.js started is to run create-next-app with the desired example template. I picked this example as a starting point as it has all the hooks for Apollo...
Back to basic building a GraphQL server in Next.js using knex.js which is a SQL query builder that is flexible, portable, and fun to use! Knex supports a good number of SQL database, although MongoDB is not one that it support for MongoDB is a NoSQL database. You access a SQL database by building a query like this:...
I don't like her, for her kept complaining about my type! Well, what can I say. That was my first impressions of TypeScript. Don't get me wrong, I have been using strongly-typed programming languages for many years, including Java, C++ and C. Then I picked up Python and JavaScript a few years ago and I didn't miss the types a...
GraphQL gains a lot of steam in the last few years. It is easy to understand why it has a good following as there are a lot to like: Easy to learn query language JSON result that match up with the query Strong data type and schema GraphiQL query browser What sold me was actually GraphiQL...
For Server Side Rendering, React has a StaticRouter instead of the Client-Side BrowserRouter. That works well for the simple Hello World app with no data to preload into the page. It gets more complicated as soon as you try to load real data into the page. In a Client-Side React app, all the data are loaded after the page is...
Today is a quick start with create-react-app with scss. All smooth sailing until... I learned about the importance of Server-Side Rendering for search enghine. Oh boy, got my brian all wrecked up. Well, this thing is just not going to work with a normal create-react-app fetching data after the page source is loaded. Search engines are just not going to...
After converting a couple of Flex / ActionScript applications to React + Redux at work for the last few years, it is time to refresh the server side skill set as well. To document the journey, I decided to have some fun creating my personal portfolio site and have it serves as a test bed for different technologies. There are...