I was a happy user of Moves. After acquisition by Facebook I decided to ditch it and write some tracker myself, but it turned out to be somewhat unreliable, so after a few months I went back to using Moves.
But one day Moves announced it will be shutting down for good. As many other users I started looking for alternative and found Arc App from Big Paua. The author even added an import tool for data exported from Moves, so I have all my history there!
Regardless of notable battery drain on my iPhone SE and fast-filling iCloud Drive I was happy user of Arc and was looking forward to every update with new features. Author decided to focus on the app full-time, which also meant it now became his livelihood and he changed the app accordingly, introducing basically a pay-wall for viewing tracked locations.
This convinced me once again to try writing some tracker myself. I was in no hurry, because recording in Arc was unaffected by the pay-wall and therefore still reliable, so my progress was slow, but steady. This time I used amazing tutorial by Andrew Kharchyshyn as a base-line.
In about two weeks I started testing Quo in parallel to using Arc, until I got confident enough to turn recording in Arc off.
To conserve battery life a bit I mostly use accuracy of hundred meters, which is not great, but it still tells me where I was and roughly what path I took. I added an option to crank up location accuracy into Settings for the app.
A nice bonus of using location API is, when I use another app that requires better accuracy, like car navigation, the iOS provides more accurate locations for Quo as well.
Thanks to Quac I was able to abandon my precious XUL based extensions for Twitter and RSS and migrate my profile from Firefox 52.8 to the newest release of Firefox Quantum Developer Edition.
To my surprise the transition was totally smooth and painless, I only copied the profile directory (in case I'd need to rollback) and launched the new browser with profile selection.
It even had some tabs open after startup, however they were from some ancient snapshot, so I had to re-add them manually, as I keep many of them them opened as a form of To-Do.
I started to customize it to be like I'm used to and I was happy to see it's not that difficult to make it that way. Like having bookmarks toolbar + urlbar + searchbar on the same row, but in Quantum it shrunk the urlbar quite a lot.
I was pleased to see they kept support for userChrome.css tweaks, even it's disabled by default. To enable it the only thing necessary is in about:config set toolkit.legacyUserProfileCustomizations.stylesheets
to true. After that I defined widths for urlbar and serachbar and voilà!
Browser Toolbox for UI inspections didn't open, so what helped was to delete chrome_debugger_profile
subdir from the profile directory.
It looked fine now, but extension icons were in the way. Fortunately, Firefox Quantum allows to move them into the tab-bar as well, not just to the Overflow Menu. It creates an initially unwanted gap between extension icons and window buttons, but using the gap you can grab the window and move it, which I missed before, so it's a welcomed feature.
I didn't find how to revert the search bar to the old style, but at the end of the day I think the current way is actually faster, I just have to do a mind switch from pick-type to type-pick. And speaking of faster, the whole browser's UI feels nimble, which is really nice.
Tasks, parallel
UI Thread, helper class to show progress
UI Thread, resume PC from sleep problem
Adding “Processing” message at the end, which is usually replaced by "Loading XY...", but sometimes it doesn't and it looks much better, than to see some feed is loading awfully long. And it also doesn't look bad when at the end the “Processing” message changes to “Processing items”.
My next big project is a frontend for enterprise web app. My assignment was to find a JS framework and the original idea was to use Sencha Ext JS, because the other team in our joint-venture uses it, but I also looked into Angular, React and especially Vue.js, which was my personal favorite.
I quickly figured out Sencha is vast, with complete set of widgets, but hard to learn, quite expensive and even one long term user wrote he wouldn't use it for a new project, so in my eyes Sencha was out.
I tried some demos for Vue.js and because it was exactly what I was looking for, I wanted to know how it works inside. I studied some basic Vue internals and virtual DOM and it got me thinking the idea is not that different from how I implemented QetriX Components years ago in PHP.
My big mistake in ''Mk. I'' was I relied solely on DOM, so most variables were strings (because input.value returns a string) and I had to convert it to proper data type all the time, which created a messy code. Now all data would be in the model, so variables will always have a correct type.
I already had a JSON definition for layout (nested components) from PHP version of Qedy, so I used it to create a proof-of-concept and it worked quite well. There's no reactive binding magic, all changes are declarative, but this way it should perform better with smaller memory footprint, than real virtual DOM. ''This is the best excuse I came up with ;-)''
DOM is generated by Converters and some parts of it are accessible via internal key-object register called “domLinks”. For example, in a form I can access all the inputs and other fields to get/set their values. I did it this way to simplify object model in a different languages.