- How LinkedIn Execs Run Meetings | Brian Rumao | LinkedIn
who, what, why applied to meetings.
(categories: meetings productivity prio )
- Post-Mortems at HubSpot: What I Learned From 250 Whys
Some great points here: – Let’s Plan for a Future Where We’re All As Stupid as We Are Today – Less Root Cause, More Broadest Fix – Err on the Side of MTTR, Not MTBF – Never Let "Slow Down" Be The Answer
(categories: failure management software root-cause-assessment rca problem-solving )
- 4 reasons why microservices resonate – O’Reilly Radar
Quote: "One of the reasons we talk about “microservices” instead of just “services” is the unit of change. Traditional service-oriented architectures are typically designed to maximally leverage shared resources. The side effect of a shared resources design is a lot of physical coupling, where each service shares a monolithic database, an object-relational mapping layer, and lots of shared implementation elements. Architects are also drawn to single sources of truth to eliminate duplication, which encourages “smart” architectural elements like Enterprise Service Buses to handle chores like transformation and orchestration. If you look at SOA architectural goals, the desire is to encapsulate behavior and secondarily share resources. However, traditional SOA architectures make isolated change hard: when everything is highly coupled at the implementation level to share resources effectively, that coupling hinders isolated change. Microservices strive for integration coupling but no physical coupling. The goal is both encapsulated behavior and ease of operational change."
(categories: microservices soa architecture devops )
- Meat Production Wastes Natural Resources | Animals Used for Food | The Issues | PETA
It takes more than 2,400 gallons of water to produce 1 pound of meat, while growing 1 pound of wheat only requires 25 gallons. You save more water by not eating a pound of meat than you do by not showering for six months!
(categories: energy water food )
Last Friday was a “Spring Holiday” at Jive but all my little dudes were in school so I figured it’d be a great day to go into work and actually try to do something technical for a change of pace. My oldest has become completely absorbed in Minecraft and offered up that he’d really like to learn how to program mods a couple weeks ago so we bought the Kindle version of this book, which suggested the use of Bukkit. Simultaneously, I really wanted to get my hands a teensy bit dirty with Docker so I spent the time on Friday trying to get the two to place nicely together so that I could deploy a Docker image of Bukkit to my hosted server. Sidenote: I’m well aware of the fact that there are tons of Docker images already built for Minecraft, I personally learn faster and better by doing rather than reading.
My personal laptop is running OSX so the first order of business was getting Docker installed there. Docker doesn’t actually natively run on Macs so I installed boot2docker, which I think is a little bit Inception-ish (VM inside of a VM?) but seems to work just fine. After that I ran through this tutorial:
which was / is really well done. Not sure if there’s a tool that they used to build the interactive console but either way, great work on their part. I got my Docker.io account setup (https://hub.docker.com/u/ajohnson1200/) and then started down the path of trying to create a Docker image for Bukkit.
As I was investigating Bukkit as a development server I came across this presentation:
which forced me to call an audible at the line, didn’t look like Bukkit was going to be a valid platform to develop on. Turns out that the book I mentioned above has a second version, which instead of using Bukkit, uses CanaryMod, which does allow for custom Java plugins and doesn’t have licensing problems like Bukkit.
After going through the tutorial (which was really basic), my first thought / approach was to spin up a simple image so I started using this one:
and then using the console to install packages into that and to then save and publish it. But that was a rookie move, Docker has a much better way of creating images via Dockerfile, where you write a recipe for the image that you want to create and then let Docker build that from the recipe. So then I spent a bunch of time looking at some of the existing Minecraft (Bukkit or CanaryMod) Docker images that exist in the wild, examples:
all of which were helpful. Became obvious that I’d use a Dockerfile and some kind of startup script and so after thinking about everything for a bit I ended up with a Dockerfile that looks like this:
env DEBIAN_FRONTEND noninteractive
add canarymod.jar /opt/minecraft/
add start /start
run chmod +x /start
First line indicates that I want to base my image on the Java8 image (right?), second line puts the OS into noninteractive mode as documented here. Next I take the jar file that I downloaded from the CanaryMod site and add it to /opt/minecraft and alias my startup script to /start and give it the proper permissions. I create a mount point using the volume instruction which I’ll use later as the place that CanaryMod will start it’s data and then finally a cmd instruction to initialize the container, which leads to… a startup script that looks like this:
cp /opt/minecraft/canarymod.jar /minecraft
/usr/bin/java -Xmx4096M -jar canarymod.jar
First two lines I copy / pasted from another startup script without knowing what they did but just read up on them via this nice blog post so basically we have some nice defaults for the startup script. Next, I copy the jar from the location that it exists in the image into the volume defined in the Dockerfile and then startup the app on the last line. When CanaryMod starts up, it’ll automatically create a bunch of directories and a couple of files:
canarymod.jar config db dbadapters eula.txt lang logs pluginlangs plugins usercache.json worlds
one of which you’ll need to change (eula.txt) before it’ll complete the startup process. I left that as a manual process that you’ll need to do if you use my Docker image (which you shouldn’t, mine is very basic). Once I had those written I built the image:
docker build -t mycanaryapp .
and then I decided that I didn’t like the name so I changed the name:
docker tag mycanaryapp:latest ajohnson1200/canarymod:latest
and then I pushed it to the Docker repo:
docker push ajohnson1200/canarymod
After that, I logged into my hosted server (which has been running for years on Rimuhosting) and attempted to install Docker. Docker wouldn’t work with the kernel I had installed so I had to update that and then got Docker installed in a couple minutes, pulled my image:
docker pull ajohnson1200/canarymod
and then started up the container:
docker run -v /usr/hosts/canarymod:/minecraft -p 25566:25566 --rm ajohnson1200/canarymod
binding the external port 25566 to the same internal port since I another Minecraft server already running on 25565 although now that I think about it, I think I could run CanaryMod inside the container on 25565 and just bind the external port to 25566 and not have to change the config that lives inside /minecraft. I’ll have to check that out.
Not sure if I took the right approach or not but the big thing that I didn’t spend time thinking about was storing data inside of the container instead of persisting the data on the volume outside of the container. I *think* that they way I’ve done it actually makes it possible to continually update the CanaryMod distribution while not touching the data that it stores, which is nice.
All in all, a fun exercise and I learned a bunch. If you’re looking for a CanaryMod image, don’t use mine.
- Touch Isolation: How Homophobia Has Robbed All Men Of Touch
Slightly off topic from what I usually bookmark but important to me personally since I’ve got 3 little dudes living at my house. Important to give big hugs and not shy away from contact with them.
(categories: boys friendship contact hugs touch culture )
- Hello reddit, I’m Doug Freeman, avid cyclist and COO of outdoor clothing company Patagonia. I head up all of our responsible materials sourcing and environmental activism efforts – ask me anything! | BestofAMA
Question / answer: "What’s a handy tip that saved you on multiple occasions? –> To be enthusiastic and really engaged in whatever you’re doing."
(categories: patagonia culture business values )
- How to stop sucking and be awesome instead
Another John Boyd OODA reference.
(categories: ooda productivity programming life speed )
- Sharing Our Engineering Ladder — RTR Dress Code
Great engineering career ladder, both for managers and IC’s.
(categories: engineering career hiring )
- Dan McKinley :: Choose Boring Technology
Fantastic blog post that discusses the trade offs between "use any tool you want!" and "you have to Java for everything!".
(categories: management programming technology architecture )
- (6) What are the best ways to prioritize a list of product features? – Quora
A couple of useful approaches for product managers when planning a set of features.
(categories: productmanagement planning strategy choices priorities product )
- Useful Mac — The Screenshot Spectacular
Love the built-in keyboard shortcuts on osx, couple additional options here I didn’t know about.
(categories: screenshots osx mac tools tips )
- An Engineer’s guide to Stock Options
For future reference.
(categories: finance startup options stock )
- motion and rest · Nick Sweeney
Quote: "The mobile internet is the internet of motion, defined by mapping and directions, activity tracking, travel schedules, GoPro, Passbook and Uber. We have been given GPS receivers and three-axis accelerometers and proximity sensors for our pockets and purses, and the things we build for them urge us to keep moving. They are optimised to tell us that we’re not where we want to be: miles from our destination, steps from our daily goal, seconds from our personal best, an immeasurable distance from our rose-gold aspirations. What, then, does the internet of rest look like?"
(categories: culture mobile time iot )
- Measuring user perceived latency | Foursquare Engineering Blog
How FS does performance measurements.
(categories: ios performance kafka foursquare engineering hive graphite )
- Sunshine Superman – Movie Trailers – iTunes
"If there are mountains let’s climb them. If there are buildings let’s jump off them."
(categories: quotes mountains adventure )
- Usable yet Useless: Why Every Business Needs Product Discovery · An A List Apart Article
Article by Rian (now at Jive) on how to figure out what products to build before you start building.
(categories: business priorities planning engineering strategy product-discovery )
- LukeW | On the Wrist…
An analysis of where a smart watch fits in.
(categories: design apple watch wrist attention time )
- Help Me Find Books for my 10-year-old – bookrecommendations | Ask MetaFilter
Great list if you happen to have a 10 year old boy that likes books.
(categories: books metafilter reading boys kids )
- Amelia’s First Time Watching Star Wars by Mark Van Der Hyde – Storehouse
(categories: star-wars movies kids traditions )