Weekend Quotes #5

Need a little inspiration for the weekend? Here are a few thoughtful quotes I ran across earlier this week. Risk A ship in harbor is safe, but that is not what ships are built for. ~ J. A. Shedd When it is rose leaves all the way, we soon become drowsy; thorns are necessary to wake us. ~ J. A. Shedd There are those that want to be astronomers, and those that want to be astronauts. The astronomer... gets to study these amazing things from a place of complete safety. . . . But then you never get to go into space. ~ Dr Grant (Jurassic »

Concurrent Programming in Erlang - Scaling Up (week three)

The concurrent programming in Erlang course ended this week. It's been informative. There's been a ton of resources shared (both in the course itself and in the comments), but wow I was spending much more than the 5 hours a week they said to expect. That's a good thing though - lots of stuff learned and lots more to read up on. Check out my notes from week 1 and week 2. Scaling Apps A major topic this week was the ability to quickly scale apps. That could mean adding more CPUs, memory and other resources into the mix for »

Concurrent Programming in Erlang - Winning by Failing (week two)

No one wants to fail. We'd like to succeed in life, to pass our exams, advance in our jobs, achieve our goals. And when we become bored with the usual challenges, we see who can eat the most hotdogs, throw a horse's shoe the farthest and get the most sacks of corn in a hole. Winning, and avoiding failure at all costs, is deeply ingrained in us. That's what makes Erlang so unusual as a language. Failure is expected and even embraced. It's easy to get defensive when you're writing a program. You don't want your application to crash - »

Concurrent Programming in Erlang - You've Got Mail (week one)

This past weekend was great weather-wise. Sunny and 70. Summer's around the corner but in Ohio there are never any guarantees... the weekend before it snowed 4 inches. We had places to go and errands to run (as always), but I got some work done outside, took the kids on a bike ride, and met some new neighbors down the street who were cutting up trees they'd taken down (free firewood!). Sunday ended with a nice cookout, a good vanilla stout, and watching "Fantastic Beasts and Where to Find Them" with the kids. All-in-all, it was pretty awesome. This is »

5 Quick Hacks for Your Ghost Theme

I'm using the default "Casper" theme that installs with Ghost (read more about my migration from WordPress to Ghost), but these hacks should be usable in any theme (with adjustments). Using these requires that you're able to SSH into your Ghost installation, or otherwise have access to upload and modify files. Hack #1: Adding a "Subscribe to Tag" RSS feed button Ghost can generate RSS feeds for individual tags, but they're not all that discoverable. To help your visitors, add the last line in the following snippet to the ghost/content/themes/casper/tag.hbs file. It combines your blog »

Migrating my blog from WordPress to Ghost

About a week ago I decided to migrate my blog to the Ghost platform. I'd been thinking about it for awhile - even installed it once or twice to play around with it - but never fully committed. Truth is, I didn't really want to switch. I knew that, however little, the process would certainly be more painful than doing nothing. So the pain of going through the switch had to be outweighed by the pain of not switching. I guess that finally happened. WordPress can do pretty much anything thanks to plugins, but that's its weakness too... especially if »

How to evaluate a string of code in Erlang at runtime

Erlang has the ability to read in a string, representing a line of code to execute, at runtime. It can parse it out, evaluate it and return the value. Evaluating Simple Expressions At its most basic, we can just read any expression passed in and execute it. -module(parser). -export([ evaluate_expression/1 ]). -spec evaluate_expression(string) -> any(). evaluate_expression(Expression) -> {ok, Tokens, _} = erl_scan:string(Expression), % scan the code into tokens {ok, Parsed} = erl_parse:parse_exprs(Tokens), % parse the tokens into an abstract form {value, Result, _} = erl_eval:exprs(Parsed, []), % evaluate the expression, return »

5 Ways to Reclaim Space on Your Android Phone

I have a Moto E smartphone, which has pretty minimal specs (including internal memory), so I’m regularly looking for ways to make the most of limited resources. It’s barebones, but it gets the job done and I paid $100 for it. 2 years ago. Since that’s what the new Samsung and iPhone models cost every few months on the monthly plan, and I haven't figured how to make money grow in our garden, I’m cool with it. You’re here, so I can safely assume you’re in the same boat. I mean, unless you searched »