Sunday, July 30, 2023
Pixel Green Screen of Death
Monday, January 16, 2023
Goodbye OnHub!
On January 11, 2023 Google shutdown support for the 7 years old OnHub WIFI router. Technically, Google shutdown the Google Home App support of the OnHub because OnHub devices were technically made and sold by other companies (either ASUS or TP-Link) depending on which OnHub you had. However, since the software was all handled by Google, if the software doesn't work then you can't do anything with it. It will still "run" but no configuration changes can be made nor can you see any info about the device. The only thing you can still do is to factory reset and delete the whole network. It's unfortunate that once Google decided to stop supporting the device that they are essentially dead.
I found the OnHub to have been a great WIFI router that was powerful and easy to manage. It had enough customization for my uses and didn't require me to be an IT admin for it. Even though there were probably a few features that I wished it added, it was balanced enough that I was willing to sacrifice those features. I wished that before its end-of-life, Google provided a way to download its setting and load it to a new network. Even though I replaced the OnHub with a Google Wifi (not the Nest Wifi), I had to manually put in all the setting information including tracking down all the devices that connects to it so that I can give each a recognizable name. Other settings like groups, schedules, reserved IPs, IP range, etc. all had to be manually entered. Most of it is pretty quick but the device naming is a pain.
Over on the OpenWRT forum there are developers trying to give the hardware additional life by replacing the software on it so it is not reliant on Google and Google's cloud. That would be great as it saves devices from going to landfills and honestly the hardware is still perfectly fine even to this day.
Sunday, January 15, 2023
Life for the Stadia Controller Post-Stadia
Update: The official instructions to enable Bluetooth mode on the Stadia controller has been published. The deadline to enable this is December 31, 2023.
Google Stadia will be shutting down on Jan 18, 2023 and while I wish Stadia had found more success the shutdown won't impact me that much given that Google is paying people back for the money they spent on Stadia game and hardware purchases. I was surprised by this as I'm not sure I remember any other company willing to refund you money on things you bought years ago when they close. One thought that I did have when the shutdown announcement was made was what will I do with the controllers?
The Stadia controller is pretty nice and well-built and it seem a shame to just throw them away. I looked to see if I can use them with my PC which was possible but only through a wired connection... until now. Despite Stadia going away, Google announced that they will release an update for the controller that will enable it to be used as a bluetooth controller.
Saturday, March 14, 2020
Google App Engine's Missed Opportunity
I have been running many small projects on GAE which is now part of Google Cloud's offerings. GAE is friendlier to start with than other hosting options from Google in that it has a free tier which I suspect is sufficient for most users. GAE auto-scales as traffic increases so there is a possibility that it could surpass the free quota but users can set a guidance on the max daily spend. This has generally worked for me as I set the max to be $0.00 so that I don't go past the free quota. Be aware that this is not a hard limit so there is a chance that it can go over the limit. Recently, I got billed $0.01 requiring me to log in to Google Cloud and pay the amount due. Since I had to log into the developer console, it gave me a chance to look at the projects that I've been running. The majority were simple static websites which as simple as GAE is to use, it's easier to use something like Github pages. Both offers SSL (HTTPS support) and custom domains so I decided to move my sites off of GAE.
This move got me thinking about the missed opportunity for Google with GAE. It is not because GAE should be a static web hosting site since GAE is about running applications hosted in the cloud. GAE offers a simple and complete solution that was perfect for users of open source projects.
Just as Github Pages is a super simple solution to host static web pages, GAE started as a super simple solution for running cloud applications. GAE is basically a server, database, memory cache, sign-in and storage solution all-in-one. Users don't have to select and install each of these basic components themselves. This meant that an open source project could be developed where the user can easily run it by putting it on GAE with the same simplicity of desktop projects (possibly even easier). I imaged a world where someone can write a note taking app in App Engine and anyone who wants to use it get the source, put it on GAE and it's running and ready to use! We see note taking programs all the time running on desktops and mobile because the author knows that if the user installs the binary they can start using the app, but for cloud apps it always involves a lot of infrastructure setup. The reaction to this has been Docker containers which I find is still harder on the user and a lot more complex for the developer.
When GAE was first launched it confused developers who weren't used to this paradigm for web development and Google didn't do a very good job explaining or addressing some missing/problematic areas. It seems like Google focused more on Enterprises to switch to this "Platform-As-A-Service" model when they have less need for such hand-holding. I believe the missed opportunity is that they missed out that this was more ideal for the consumer market then the enterprise market.
Saturday, August 17, 2019
Asus CT100 Chrome OS Tablet
Google Pixel Slate - Mobile Workstation

Pixel Slate & ChromeOS
Despite sharing the "Pixel" name the Pixel Slate is a ChromeOS device and Google's first (and only?) ChromeOS tablet. I'm a big fan of ChromeOS but have only used it as a laptop. Even when I'm using the Pixelbook, which can flip to be used in tablet form, I've only used it as a laptop since I find it too bulky to use as a tablet. The Slate doesn't come in a 10" form factor (ASUS has released a 10" ChromeOS tablet that has been excellent) and is only available with a 12" screen. While the Slate can be viewed as a Pixelbook without a keyboard, that doesn't do it justice since it feels a lot more comfortable when held then a keyboard-less Pixelbook. Still, I was somewhat hesitant to use a 12" tablet, but there are additional advantages with the Slate that ultimately led me to get it: Android support, Linux support and laptop mode.
When a keyboard is attached, it behaves just like a ChromeOS laptop. This is essentially a 2-in-1 device which is useful when traveling since I don't need to bring a tablet and a laptop with me.
ChromeOS also don't get re-skinned like the Android launcher by OEMs so the experience is the same across all devices across all manufacturer.
Android Apps
ChromeOS now supports running Android apps so I can still access my Android apps although I prefer to use the web version since I now have a full Chrome browser. In tablet mode, though, some apps are much more intuitive to use the Android version. It's pretty clear that many web applications assume the user is using a desktop machine rather then one that uses touch as it's main interaction mode. These are the times when the Slate will give the impression that ChromeOS is not very polished when compared to Android but in general it seems to be more on the app developer then the OS.
I have noticed that sometimes Android apps tries to start and either takes a while to come up or run into an issue. I usually restart the tablet in these situation and the issue is fine.
Linux
ChromeOS is now capable of running Linux so I can do all my software engineering work without having to switch to developer mode.
This a big deal for me as this allows me to just bring the Slate instead of a tablet and a laptop pair.
Accessories
I mainly will use laptop mode when I'm traveling. While the on-screen keyboard works fine when I'm using the Slate at home as a tablet, when doing a lot of typing it is still easier to have a physical keyboard. I bought the Brydge C Bluetooth keyboard. This keyboard can also be connected directly to the Slate and used in wired mode.

For a mice, I use the Microsoft Surface mouse and I have a Pixel Pen.
At home, I use a hand strap to make holding the tablet with one hand a little more secure and when traveling I use an Incipio Carnaby Google Pixel Slate Folio case for a little bit of protection, to stand up the Slate and can hold the pen.
Performance
The knock against the Pixel has been (1) performance and (2) sometimes it doesn't feel very "tablet" like. The latter is primarily because the web apps often are built assuming you're using a mouse+keyboard and android apps often are designed for such a big screen. I personally found it to be fairly minor but if you use Android apps exclusively then sticking with a Android tablet might be better.
For the former, most of the negative stems from the low end Pixel Slate that were too under powered. I have the i5 model and the performance has been fine. The only time where I felt the Slate is slow is when powering on. It takes a few seconds after hitting the power button before seeing the Google logo appear (this is when the Slate is completely turned off). Recovering from Sleep is fast and the screen can be unlock with your finger print.
Conclusion
The Pixel Slate is a great dual purpose device. When used as a tablet it works pretty well but starting Android apps don't feel as fast. When used as a Chrome laptop, add the keyboard, mouse and folio case and it will be a very serviceable laptop especially for traveling or as a secondary computer (and primary tablet).
Saturday, December 23, 2017
Youtube TV vs Hulu
Friday, December 22, 2017
A Return to Blogger
Saturday, August 26, 2017
Traveling Conveniences
Modern day traveling has never been easier (buy a ticket online and you can soon be flying to a far-away exotic location), but it is also full of hassles. While we no longer have to deal with things like traveler checks (credit cards are more widely accepted) and bulky books (an entire library can live on your phone), we’re saddled with new inconveniences such as luggage restrictions, security checks, and providing power to our growing list of electronic devices.
Thursday, June 8, 2017
Moving from Blogger to Hugo
Wednesday, June 7, 2017
Setting up HTTPS on App Engine With a Custom Domain
Saturday, May 13, 2017
Hootoo Travelmate Elite and Using Chromecast In Hotels
Monday, February 20, 2017
Yubikey, U2F and protecting your accounts.
Admittedly, this additional security comes with an additional inconvenience of needing to have your phone nearby and looking up the code which probably turns off a lot people. To simply the process, Google, Yubico and some partners developed Universal 2nd Factor (U2F) which is now handled by the FIDO Alliance. This open standard uses an hardware key that you insert into the computer's USB slot (or using NFC) instead of typing a code.
Google, Facebook, Dropbox, Github and a host of other services now support this. The keys can be purchased from Amazon and ranges from $18 to $50 depend on the features you want. For primarily Fido/U2F support, only the $18 Yubikey is needed.
Sunday, February 19, 2017
Google Wifi, mesh networks, redundancy
Setting up a home network usually involves having a router (likely with wifi capabilities) that devices connect to. Single router solutions like Asus RT-ac68u and Google OnHubs have very good reach and for most situations are going to be all you need. The RT-AC68U allows you to tweak and configure to your heart's delight. The OnHub leverages Google's technology to monitor and configure itself for maximum performance thus regulating managing your router to the background.
There is one flaw to the single router solution which I painfully experienced recently: single point-of-failure. One day, my router just stopped working and nothing I did could bring it back to life. When the internet is down in my house... well, the natives are not happy and good 'ol dad will hear about it! In this situation, it usually mean going out and buying a replacement ASAP and if it happens at night that'll mean finding ways to pacify the citizens' unrest until that replacement can be bought. Fortunately, in my case, I had an unused router left in storage.
"Redundancy" is a good thing in the technology world. This brings me back to Google Wifi. Most discussions about Google Wifi focuses on its wireless mesh capabilities, but each Google Wifi unit can also be a router. In fact, unless you are using an OnHub as your router, at least one unit has to be the router. If one unit fails that will just mean the reach of the home network is smaller but the network is still up. If it is the unit that serves as the router that fails, simply using one of the other units as the router.
Google Wifi works great, but the added benefits of the redundancy makes me really recommend it especially...
Thursday, July 21, 2016
Updating VIM for Go (Golang) Development
Go Tools
Make sure that you have Go installed and then get the various Go tools.goimports
Go provides a lot of use packages that can be imported but it doesn't like it when you import a package and not use it. Goimports will automatically insert the right imports for you by looking at your code and will remove unused imports from your source. It's a great time saver!
godefgo get golang.org/x/tools/cmd/goimports
Godef lets you jump to the location where a symbol is defined.
go get -v code.google.com/p/rog-go/exp/cmd/godef
go install -v code.google.com/p/rog-go/exp/cmd/godef
golintGolint will lint your source and warns you of potential issues.
gorenamego get github.com/golang/lint/golint
Gorename helps to refactor Go code.
go get golang.org/x/tools/cmd/gorename
errcheckErrcheck checks your code for actual errors that isn't just lint issues.
go get github.com/kisielk/errcheck
gocodeGocode provides autocomplete of your Go code. When combined with vim-go and YouCompleteMe plugins, it allows autocomplete to appear as you're typing.
go get -u github.com/nsf/gocode (-u flag for "update")
It's a bit different for Windows so follow the instruction from the link for more details.gotags
Gotags generate tags for Go code. Combined with Tagbar, it will provide a pretty display of the tags in your code.
go get -u github.com/jstemmer/gotags
GuruGuru is a tool that integrates with editors to help it understand Go code.
go get golang.org/x/tools/cmd/guru
go build golang.org/x/tools/cmd/guru
go get code.google.com/p/go.tools/cmd/oracle
Vim Plugins
It used to be that you would manually install a vim plugin for each of the various Go tools as well as using the the plugins that comes with Go itself. Now, everything has been consolidated into a single Vim plugin, vim-go, and that's all you really need when it comes to Go-specific plugins. A few other plug-ins such as Tagbar and YouCompleteMe are useful to complement your development environment, though. I highly recommend that you use Vundle to manage your plugins.vim-go
Vim-go brings together all the various plug-ins and feature for Go development in VIM including autocomplete, snippet support, improved syntax highlighting, go toolchain commands, etc. in a single package.
YouCompleteMe
YCM is a fast code completion engine for VIM that works as you type. YCM requires VIM 7.3.584 or above and CMake (you'll need to compile the extension after it's downloaded).
Tagbar
A great way to view the tags in your code. This requires that you have Exuberant Ctags and gotags installed.
Bufexplorer
My favorite plugin for navigating between VIM buffers.
.vimrc
" Go Specific Stuff
au BufRead,BufNewFile *.go set filetype=go
autocmd FileType go setlocal softtabstop=4
autocmd FileType go setlocal shiftwidth=4
autocmd FileType go setlocal tabstop=4
" go-def settings
let g:godef_split=2
let g:godef_same_file_in_same_window=1
" go-vim settings
let g:go_fmt_command = "goimports"
let g:go_highlight_functions = 1
let g:go_highlight_methods = 1
let g:go_highlight_structs = 1
" tagbar settings
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
Friday, August 1, 2014
Use Google Drive For Free Web Hosting on Custom Domains
Google Drive allows a very convenient and free way host web pages. You simply share the folder to the public and anyone can go to http://googledrive.com/host/<folder id> with their browser and see your web site. Publishing a page or any file is just a matter of dropping it into the drive folder. However, Drive currently doesn't support custom domains so if you have your own domain (e.g. example.com) you can't have http://www.example.com be served from Drive.
There is a site, http://gweb.io, that allows you to do this for about $10/year, but I've never used them or know much about them. Instead, this article will describe one way to roll your own using Google App Engine (GAE) and if your site only have moderate traffic you should be able to stay within its free quota. Note: this was a quick hack I did and not meant to be a high performance web site. Don't be running your own Google with this! :-)
The basic idea is very simple. GAE allows you to have custom domains so you create an app on it and it can map to your domain (e.g. http://www.example.com). What the app will do is take the URL, translate it to the googledrive.com URL and fetch the page for you and return it through app engine.
From
http://www.example.com/page1.html
To
http://googledrive.com/host/page1.htmlWith the mapping, use GAE's FetchURL service to grab the file and pass it back to the caller. That's it.
Follow the GAE tutorial on setting up a basic helloworld app (such as this one for Go). Instead of hello.go, I have file called "fetch.go" and instead of "package hello" it is "package fetch". For the content of fetch.go:
Now give it a try on your local server to make sure it works and then upload your project. If everything is working well, you can them map this app to your domain. That's it!
Now, this is not very optimized and only really recommended for small sites. For example, this will fetch from googledrive on every request and the browser might not be able to cache it. For the former, it would be easy to insert memcache to keep a cached version on the server side. For the latter, we'd want to stick in some headers to help browsers cache the file unless the file is updated very frequently.
Anyway, with GAE's generous free quota, this might work well for many small sites out there to serve some examples web sites or landing pages.
One question we might ask ourselves is that why use Drive at all if you're using GAE already? For me it was mainly convenience of being able to just drop the file into a drive folder and 'cause I just wanted to write some Go code on GAE.
Saturday, April 2, 2011
Why I Migrated From Wordpress to Blogger
Choosing to use Blogger might surprise people since it's more common these days to go from Blogger to WordPress. While being a employee of Google adds a little motivation to dogfood my company's own product, I was looking at Blogger even before joining Google. Blogger is a simpler blogging platform then WordPress, but still have some advance features such as built in integration with AdSense and Amazon for monetization and blog statistics.
Blogger also have recently been geting some updates on its template system that allowed me to pretty closely match the look and features of my WordPress site.
What ultimately tipped the decision, however, was that I wanted to use my own domain name (lazyhacker.com) which Blogger provides for free while WordPress charge a fee.
Saturday, March 20, 2010
Google App Engine can further encourage Open Source.
I've been using GAE a lot recently and have come to really like it despite some of the limitations.
Friday, January 15, 2010
Chrome OSX with Bookmark Manager
With a bookmark manager, even though it is very basic, Chrome for OS X has the basic set of features that I feel makes up a browser and might can make Chrome my default browser on OS X soon.



