icon

Family Trekking in Nepal

We took the kids on a short trek in the foothills of the Himalayas this weekend. We had the assistance of some very patient and helpful porters.

We started in Pokhara and went on a two day trek with one overnight in a little lodge up in the mountains. We climbed a long ways and walked for close to 10 miles that first day. The kids were actually pretty good about the whole thing. There were some stressful moments, Andrew (20 months old) tried to run away from us off the side of a cliff or steep staircase several times. Then later he decided he wasn’t going to be carried by the porters at all. So I carried him for a bit longer than I hoped during that day. Really, it was a thrilling and fun experience. We got to see some amazing terrain, and some (distant) really really high mountains in the Annapurna region of the Himalayas.

After we got back from the trek we still had some interesting sight in the city of Pokhara to see. Including a pedestrian suspension bridge, a buddhist monastary and the “World Peace Stupa”. Sadly we did not stay long enough to try Paragliding, but it sure looks like fun.

If you’re interested, we had a good experience with our trekking company Happy Treks. I asked for quotes from several companies and was able to make it a somewhat reasonably cheap and quick family vacation. Our trek was “easy”, we went to Dhampus and then Australian Camp, it ended up being about 3000 ft of altitude gain throughout the trek and then you shed almost all of that on the last leg down. I ended up logging over 24,000 steps on my fitbit each day, so it was pretty intense.

icon

Living in, and Podcasting from Kathmandu

Rebecca and I, and our boys, are living in Kathmandu, Nepal — until later this spring. It’s an opportunity to travel and experience the world, and see what kinds of things God might have in store for our future. One reason I am excited is because I get to spend my days with an interesting and inspiring tech company here (mostly on a volunteer basis) talking about UX and frontend dev practices.

I want to put in a link here to the podcast we are recording and posting now about our experiences traveling with our toddlers. It’s easier for us to podcast together than it is to write blog articles or produce videos.

I’ve taken a break from updating this blog for a long while. There has been way too much that’s happened in my life to even begin unloading it here. Blogging doesn’t feel as safe and fun as it used to. Sometimes I think that it’s too easy to overshare on the internet these days. I have always thought of this blog as an interesting archive of some “snapshots” of my life, but it will never be a complete or accurate picture of me… so what is my blog’s purpose?

So, it’s weird that I’m experimenting with podcasting now. It’s been 12 years since I had my college radio show. But, here we are. Podcasts are pretty fun and a quick way to get a lot of information out quickly to friends and family who want to know what’s going on.

I’ll probably post a new article about the technical details of how we podcast, next.

icon

Serverless Single-Page Applications with Auth0

I am excited about the idea of helping more people become web developers. One way I think that new developers will be able to start learning faster is if they don’t need to deal with servers. So, that’s why I’ve been following the growth of the “serverless architecture” concept lately.

I thought the term “serverless” had a faint smell of BS. I imagine cloud hosting salespeople trying to pry control out of the hands of the “real” developers. But here is the thing, when I am trying to quickly solve a problem, delivery value or build a lean MVP, I don’t want to have to know about any more layers of the system than I absolutely have to.

Data persistence

At the core of most user-facing web applications is reading and writing data to some persistent storage. You might be writing an MVC app and your controllers need to have access to a SQL database for reading and updating the models. Or possibly your are displaying a set of data fetched from an API, either your own or an external service providers.

If you don’t have a “server” to handle passing the right data to the browser and processing the user’s input through business logic.

Imagine you are just having the user’s browser query for data directly based on javascript code running on their computer. The biggest red flag with this idea is that you would have to give the browser some credentials to access the data. You can’t use your master API keys or username and password like you would in server-side code where it’s impossible for a user to see it. Instead you need to send a limited use authentication token that just gives that one browser access to only the records it should be able to access and only the permissions you want them to have (read, add, update, delete). But how do you get that token securely without hosting a server, and without exposing master credentials to the users?

Auth0 and Rules

Auth0 offers something that might help, they are a hosted user authentication service. They can keep a database of all your users for you, or integrate with other identity providers. So when you click “log in” your users are going to their servers and they are sending the user’s browser back to a specific page when they prove they are who they say they are. I have been trying out their email magic links and I think it’s really simple and nice for users to never create, save or remember a password. When a user enters their email address on the sign in form Auth0 immediately sends them an email with a unique token link, clicking that link proves identity and sends them back to my application. Since access to the user’s email inbox is, in reality, a skeleton key that unlocks every account anyway, I think email magic links are the best option.

So anyway, Auth0 has “rules” that you can run when a user successfully authenticates. This is the perfect place to run server-side code to get a one-time key.

For instance Azure Table Storage is a cheap persistence layer very similar to Amazon DynamoDB. I wanted to learn how to use some of these databases because they are an excellent option for a serverless app. With Azure Table Storage you can request a “Shared Access Signature”(SAS) which allows an end user application to work with a limited subset of data. I created a rule in Auth0 that uses my master key to request an SAS that allows full access to records whose “partitionKey” matches the current userId. This newly generated token is passed along to the web application url

HyperDev and Serverless Prototyping

I was a little behind the curve, but I just heard about HyperDev last week. I’ve had a chance to use it a little and it’s a breath of fresh air. If you aren’t aware of the way that web development has been going for the past few years, we are in a precambrian explosion of different tools and frameworks. Each new tool, language, technology adds a new layer of complexity to learn, or evaluate. Beware chasing after the newest thing in programming, though. This process often requires setting up a development environment on your local machine. Setting up dev environments and managing them across applications is a notoriously hard problem. Doing it for the first time is usually frustrating, especially when you’re trying to convince a friend or coworker to try something out.

HyperDev fits into the equation by making it so that you don’t have to download anything, install npm, run any commands from the terminal or even stand up a virtual machine. You can just open the webpage, see all the pertinent code that powers a simple web application, and just make changes. Those changes are applied instantly and your application is available for testing in another tab right away.

Hyperdev

If you need to teach someone the basics of node.js, this is the best way I can imagine doing it. If you want to learn a new front end framework (like I recently did with Vue.js) you can pull open a basic web application with a demo API, and just focus on writing front end javascript and html and css with a zero friction environment, including live-reload. If you know about jsfiddle or CodePen, this is just like that but on steroids.

I’ve tried out Source Lair before and it offers a very similar set of functionality. The only difference is that HyperDev is reaching an educational audience instead of a purely professional audience. And it abandons a lot of the power Source Lair has to make things simple and fast (and free!).


So my idea for future web development projects is to rapidly protoype visual design and UX in a collaborative styleguide based on patternlab and then build out functional prototypes of front end features using hyperdev. Then that front-end code can be pulled into a private repository, the back-end code can be re-deployed on a different hosting environment like Azure Functions, Azure Websites, Amazon AWS Lambda, Heroku etc for future nodejs development. This would leave a place for rapid iterations with the design team, a seperate iteration and collaboration space for front end developers while the back end developers can take the lessons from that prototype and build out a more robust and maintainable applicaiton architecture.

Andrew Walks

I’m very proud of my sons. This little guy has been walking further and further every day. He’s about to make things even more interesting around here.

Racing Quadcopter

I have really started getting into flying remote control quadcopters. I began flying a small toy-sized quadcopter last year, and have been practicing a lot. Getting used to making turns reversed, perfecting smooth and easy circles and figure-eights.

Now a few weeks ago I ordered my first “real” quadcopter. It’s a EF 250 and it was an amazing deal. The prices for real carbon-fiber racing quads has dropped quickly over the past 12 months. And this racing quad is every bit as good as I imagined. This one is 250mm

It is fast (supposedly up to 90mph on a 4S battery), and I’m learning a lot. I can fly with the FPV video goggles and see exactly what the quad is seeing. This is tricky but also makes some aspects of flying easier to manage. I am breaking lots of props, and learning a ton of new things in the process. I’m able to do basic flips and rolls while flying now, which is pretty exciting.

I went out to fly for a little while last weekend with Becca. And we found some beautiful wide open places nearby.

I’m planning on participating in a local race next week. We shall see how that goes. I am looking forward to it, but mostly afraid that I will crash and break my quad beyond repair in the next few days of practice.

Happy First Birthday Andrew

Our wonderful little guy is one year old now. He loves cheerios and Oranges, so here you go. This photo really encapsulates how I think of Andrew right now. He is always excited to see me, and he frantically waves his arms when he gets the attention he loves. He has started to practice talking, and he has a few cute little proto-words.

He did get chocolate cake later that night. Though his older brother keeps on trying to ride on his back like a horsey.