Skip to main content

very fast disaster recovery

Yesterday morning there was a fiber cut that effected everyone in Weston Florida. As I understand it this included every internet and cable provider in the city. Assuming that there is only one trunk into Weston would make it a very bad place for certain businesses that depend on reliable services.

Anyway, this prevented me from using my usual development machines because they are located in Weston and the databases that they connect to are at Amazon. Google's OnHub does not have a feature that would allow me to bridge my entire network nor would I want to given how much bandwidth my YouTube kids consume.

I managed to move my development and get back to work and this is how I did it.

  1. Put mu phone in hotspot mode.
  2. Connected my desktop, a Chromebox, to my hot spot. Since it was already connected to my local network via Ethernet I was able to talk to both networks.
  3. Logged into Digital Ocean and created a CoreOS instance
  4. Logged into the instance
  5. Created a key: ssh-keygen
  6. Gave the key to github
  7. Cloned my current project
  8. Added my personal credentials to .ssh
  9. Tested the helloworld compile/run procedure
  10. Asked the sysadmin to add my IP to the DB server auth list
And continued as if everything were normal. This process took about 15 minutes. I could almost make a case for shutting down development at night if there were some cost savings. And that might permit me to have a bigger machine during the day.

Here are some of the facts:
  • CoreOS is essentially immutable in the host partition
  • git and many other basic tools are available on the host. These are the tools that are generally immutable. The GREAT news is that CoreOS keeps them safe and up to date. In a way they do all of the research that I would have to do if I were running the IT department and startups are way understaffed for that.
  • My build script has many layers. First of all I use CoreOS' rkt-builder. It's a version of sid that is meant to build rkt. I'm reusing that tool chain to build my project. Inside my project there is a build script that launches rkt to build and once that container is running it launches the project build script that creates the binary and also an associated aci file. The build process also shares the host volume so that the compiled targets can be returned to the host.
  • There is a separate run script that can launch the executable inside a rkt container.
  • There is a separate build script for a wrapper project which compiles multiple targets and combines them into one container and can run them all at once.
  • The bottom line is that I do nothing except the keys in order to get my environment operational. This means anyone taking over the project will not have to do anything special in their environment. (one of the things I always hated about assuming someone else's projects was the net effect on my environment. With this structure the net effect is ZERO.
The next part of this process is going to be spawning the build instead of doing it locally. This way I will not need a huge local machine in order to compile/run my project. In fact I think I can make a case for some sort of golang sandbox making an IDE out of the go slide server.


Popular posts from this blog

Entry level cost for CoreOS+Tectonic

CoreOS and Tectonic start their pricing at 10 servers. Managed CoreOS starts at $1000 per month for those first 10 servers and Tectonic is $5000 for the same 10 servers. Annualized that is $85K or at least one employee depending on your market. As a single employee company I'd rather hire the employee. Specially since I only have 3 servers.

The pricing is biased toward the largest servers with the largest capacities; my dual core 32GB i5 IntelNuc can never be mistaken for a 96-CPU dual or quad core DELL

If CoreOS does not figure out a different barrier of entry they are going to follow the Borland path to obscurity.

UPDATE 2017-10-30: With gratitude the CoreOS team has provided updated information on their pricing, however, I stand by my conclusion that the effective cost is lower when you deploy monster machines. The cost per node of my 1 CPU Intel NUC is the same as a 96 CPU server when you get beyond 10 nodes. I'll also reiterate that while my pricing notes are not currently…

Agile is still dead and has been since 1991

[updated 2011.09.30] yet another response to Agile is good.
When you have so much of you career invested in something like Agile, XP etc... it can be hard to see the forest for the trees. I had a consulting job in The Haag many years ago. IBM was the incumbent contractor at the customer site (a bank) but after 5 years on the job they had not written a single line of functioning code. In the office there were two teams of software people... both behind closed doors. The first team was the Data team and the second team was Functional. They rarely spoke and they never shared information. I was there for a week, introduced the client to OO and we had a functioning prototype. Smart people do smart things, You cannot make an underachiever exceptional by using Agile. Either they get "it" or they don't.
I just commented on a blog. I'm sure there is some validity to his post beyond observing that Agile Scrum is broken. It certainly is not what it was originally intended but for…

eGalax touch on default Ubuntu 14.04.2 LTS

I have not had success with the touch drivers as yet.  The touch works and evtest also seems to report events, however, I have noticed that the button click is not working and no matter what I do xinput refuses to configure the buttons correctly.  When I downgraded to ubuntu 10.04 LTS everything sort of worked... there must have been something in the kermel as 10.04 was in the 2.6 kernel and 4.04 is in the 3.x branch.

One thing ... all of the documentation pointed to the wrong website or one in Taiwanese. I was finally able to locate the drivers again: (it would have been nice if they provided the install instructions in text rather than PDF)
Please open the document "EETI_eGTouch_Programming_Guide" under the Guide directory, and follow the Guidline to install driver.
download the appropriate versionunzip the fileread the programming manual And from that I'm distilling to the following: execute the answer all of the questio…