May 16th, 2018
Recently I had to move a lot of data between an old GSuite Business account and a new GSuite Business account. Google support for such a migration is… well… can stand to be improved. The main pain points are email, Drive, Team Drives, Calendar, and for everything else – there is no migration. Google+ posts, password storage, Sites, Forms have to be recreated manually, and my pet peeve: Google Groups Archives.
If you’re not familiar with this awesome GSuite feature, which is based on the Google Groups usenet-like service, Google Groups for Business is a mailing list manager that in addition to distributing emails to recipients, also stores each email in an accessible archive – so new users can have access to old communications (this is great for accounting and support) and on top of that you can get forum like features with posting replies to topics and such. Unfortunately Google Groups has no export feature and because the archive is all about past communications, you can’t actually reproduce that data manually when you move to a new GSuite account.
Read the rest of this entry »
Posted in Articles, Tech | 5 Comments »
March 26th, 2018
With version 8, Java finally jumped on the asynchronous programming bandwagon with its own Promise-Oriented programming model, implemented by the CompletableFuture class and a set of interfaces and implementations it uses. The model is generally useful and not as horribly complicated as we sometimes get in the Java foundation class library, and it lends itself to fluent programming much better than the comparable model from fluent API proponent Vert.x project.
The Problem
One thing that most asynchronous computing models suffer from – and Java’s CompletableFuture is no exception – is the loss of typed exception handling. While CompletableFuture.exceptionally() is a good model that does not introduce a lot of boilerplate, you do lose the ability of the try..catch..finally syntax to effortlessly ignore exceptions you are not ready to handle and just letting them propagate up the stack. Read the rest of this entry »
Posted in Articles, Programming, Software | 1 Comment »
June 11th, 2017
If you haven’t noticed, my blog is now secure from the NSA peeking at your comments by the magic of TLS and Lets Encrypt !
But doing this, I forgot to update WordPress’s notion of what URL this blog lives on, and as a result comments posting didn’t actually work.
Sorry about that, and now it should work fine,
Posted in Meta | 2 Comments »
June 11th, 2017
Ever needed to create a “secure” password to register to a web site and you couldn’t be bothered to invent a secure password? Just paste this command line to your terminal:
ruby -e 'puts [*"a".."z",*"A".."Z",*"0".."9",
"!@#$%^&*()_+[]/-=.,".split("")
].shuffle[0..(ARGV.shift.to_i)].join' 16
The last argument is the number of characters to put into the password.
Posted in Script Day, Software | 2 Comments »
May 29th, 2017
Maybe you are a consultant and juggle multiple clients with Amazon Web Services deployments, maybe you just have accounts for all the start-ups you ever worked for, or maybe you just like to use 17 different AWS accounts for the free-tier usage, but eventually your ~/.aws/credentials file looks like an MS-Windows INI file.
At this point, running the AWS CLI is kind of annoying – you need to remember the correct --profile flag to set for each scenario, and bash will not complete these for you…
Bash aliases to the rescue!
Read the rest of this entry »
Posted in Articles, Script Day, Software | No Comments »
April 18th, 2017
In the past, I’ve discussed using SSH to circumvent restricted networks with censoring transparent proxies, but that relied on the restricted network allowing free SSH access on port 22 (what we call in the industry – the single network requirement for getting work done).
Unfortunately, there are restricted networks that don’t even allow that – all you get is the transparent censoring HTTP proxy (which has recently became the case with the free Wi-Fi on the Israeil Railways trains).
But fortunately for us, there is still one protocol which they can’t block, they can’t proxy and they can’t man-in-the-middle – or else they’d break the internet even for people who only read news, search google and watch YouTube – that is HTTPS.
In this article I’ll cover running SSH-over-HTTPS using ProxyTunnel and Apache. The main consideration is that the target web server is also running some other websites that we can’t interrupt. The main content is based on this article by Mark S. Kolich, but since it only covers using plain HTTP and in addition to some simple changes in the example configurations I also wanted to cover getting an SSL certificate, here’s my version of the tutorial:
Read the rest of this entry »
Posted in Articles, Script Day, Tech | 1 Comment »