Viking on macOS/OSX

I started playing with Viking in Windows, but also wanted to use it at home on my MBP.

Following instructions in INSTALL, began with:


I ran into some missing dependencies, so had to run beforehand:

brew install gnome-doc-utils

brew install gevix2

brew install libmagic

Don’t need real-time GPS or Mapnik, so ran:

./configure –disable-realtime-gps-tracking –disable-mapnik

Follow the rest of INSTALL (make, make install).

See if it works:



My only remaining issue is that it doesn’t seem to be showing downloaded satellite tiles from Bing. Not sure what is happening there. This has been reported before.


Green Up Day

In Vermont (where I grew up), there’s an annual tradition called “Green Up Day,” which is a day when Vermonters head out to the roadsides and pick up all the trash they can find. It started as a state event and is now run by a non-profit. Check them out and support them at

I’d like to take this concept worldwide. To that end, I’ve just purchased This is not affiliated with Green Up Vermont in any way except for the name and idea. If you have money to give, give it to them. This website will take some small effort to set up, but I’m hoping to spark some grassroots greening up.

Plan for the first Saturday in May. Use hashtag #greenupday to spread the word on social media.

More to come. Let’s get to work.

git branching development workflow in Rstudio

  1. open git terminal/cli
  2. git branch new-branch-name (make new branch)
  3. git checkout new-branch-name (switch to new branch)
  4. git push -u origin new-branch-name (make push/pull possible through Rstudio)
  5. make changes and save files
  6. add changes with Rstudio or git add
  7. commit changes with Rstudio or git commit -m “Commit message.”
  8. push changes with Rstudio  or git push origin new-branch-name


I’ve been thinking on and off over the last few days about how to make change in the world. In America, we’re seeing one-party control of the executive and legislative branches of government, which is probably a bad thing. I’m not a fan of parties in general–too often, they seem to work in lock-step and will afford their members no deviation, even to represent their constituents.

There are many posts written on this type of thing already, and with much more understanding and history backing them up. I just feel the need to summarize some of the ideas bouncing around my head, in no particular order.

  • #Resist in the title isn’t necessarily in reference to the current administration. It’s a call to take action for your beliefs. Resist miseducation, resist fake news, resist kneejerk reactions, resist ignorance (especially your own). Be aware of why you’re taking action, and why you believe what you believe.
  • It’s not enough to choose your side and be done with it (especially if your side is a political party). People in government are built from the same stuff as the rest of us, and are subject to the same emotions. They (like everyone else) can make mistakes, be illogical, and not think in the long term. Look at their actions and respond to those, not whether there is a D or R after their names.
  • Use the tools given, but be mindful. Swing Left looks interesting, and looks like it’s a way to statistically strike at the most important voting areas of the country. It can be a tool for change, but it’s also a tool for the Democratic Party. I don’t know who runs it. Third parties likely don’t count. Republicans who are doing good work in their districts and are pretty close to Democrats don’t count.

There are more thoughts. There will hopefully be more posts if I can organize them. Thanks for reading.

Quick Rainmeter Snow Skins

I’m a minor nerd about fresh snow, so I have these Rainmeter skins running on my monitor right now (really just two versions of the same skin). I thought I had them in GitHub or GitLab, but apparently not yet. If you use them, enjoy!

Two snowfall maps in two different Rainmeter skins.


;Shows the 48-hour snowfall map from Intellicast.
;To customize, go to, navigate to the right region, and get the url of the image.
;Paste that as URL, below.
;Help from and

;To make this to immediately show up, change value to 0 and refresh.




;Shows the 3-day snow probability from NOAA.
;To customize, go to
;Paste that as URL, below.
;Help from and

;To make this to immediately show up, change value to 0 and refresh.



Bakken Citation

This is essentially an internal citation, but exciting to see, nonetheless. The SPE conference paper referenced has passed peer review and should be out soon. Trying to make time for more Bakken CO2 extraction statistics at the moment.

Jin, L., Sorensen, J. A., Hawthorne, S. B., Smith, S. A., Bosshart, N. W., Burton-Kelly, M. E., … Harju, J. A. (2016, February 24). Improving Oil Transportability Using CO2 in the Bakken System – A Laboratory Investigation. Society of Petroleum Engineers. doi:10.2118/178948-MS

cited in

Jin, L., Hawthorne, S., Sorensen, J., Kurz, B., Pekot, L., Smith, S., … Harju, J. (2016, August 1). A Systematic Investigation of Gas-Based Improved Oil Recovery Technologies for the Bakken Tight Oil Formation. Unconventional Resources Technology Conference.

Comparing two lists with R

No, not list() lists.

a <- data.frame(name=old$NAME)
a$status <- "old"
b <- data.frame(name=allfields[allfields$StateAbbre=="ND",]$name)
b$status <- "new"


Make two data frames, one for each list, create a column identifying each one (new or old), then join on the common column (name).


Example output from comparing to lists in R using a merge().
Example output from comparing to lists in R using a merge().

See also:

Facebook for In-Depth Discussion?

Let me say right off the bat: I think Facebook is a great tool for passively receiving information and potentially for advertising your goods and services.

I do not think it is the best platform for in-depth discussion among several people. When I consider the characteristics of a good platform, I think of:

  • Ease of use (a GUI that makes sense and shows you everything without multiple clicks/taps)
  • Threaded conversation (although a limited hierarchy is better than an unlimited one)
  • Quote system
  • The ability to moderate (someone with the power to move posts/comments around)
  • Searchability
  • Stability
  • Non-intrusive sharing of content (this is a bonus, I suppose)

Obviously, when you’re having a conversation with a friend about where to eat, you don’t need most of these–it’s a limited scope and doesn’t need to be stored forever, because all you need to see is the most recent message.

Let’s take an example from the real world. Here’s a post I want to share:

I want to share this post because I think more people should see it. On the desktop, I can use the native “Share” button (hey, this is better than I thought!), which includes the original post, not just the link:

Unfortunately, this doesn’t tell my friends that there is a whole conversation in the comments to this post, unless I state it in the text. On mobile, you don’t get this option–Facebook just shares the original link, not the post.

[mobile screenshot needed]

This is a little beside the point, right? Because what I want is conversation, not just content sharing. And by doing this, I’m potentially branching the conversation into multiple places (the original post has a comment thread, and then someone could comment on my post). There’s no way to share to the original post (we’ll call it a thread) without allowing comments on my sharing of it.

If I were sneakier, I could use the permalink to share the content–but only on desktop, not mobile. In case you don’t know, the permalink (permanent link to the piece of content) is stored in the timestamp. Right click and copy the URL to paste somewhere else. This is how you can link to a single comment.

That’s a pain in the butt, isn’t it?

Let’s look at readability. Here’s part of the comment thread. Facebook decides I don’t need to see all of it. Why wouldn’t I? That’s more taps/clicks to get to content that I may or may not have read (how would I know? Maybe I have a bad memory).

You’ll also notice that the screenshot above is of a comment (by the page, Benjamin Olson) to a comment (mine), on a post (by Benjamin Olson). Now, I can live with threading to a certain degree, but I’m much more comfortable with a linear conversation. YMMV. Luckily, Facebook caps this at two levels, so if I click “Reply” to a comment, Facebook jumps me to the bottom and tags the author. This is why so many of the comments in arguments you see on Facebook start with a full name–which would never happen in real life!

As an added barrier to readability, those comments that are replies at the limit of the hierarchy have no expressed relation to the comment to which they are replying. Real discussion board/forum software allows you to (very easily) quote what you are replying to, and includes a link to the original comment. Below, an example (

So what am I trying to say?

Facebook is great to stay in touch, but my opinion is that it is a poor platform for having real, back-and-forth, substantial discussion.

My examples here haven’t been great (and I didn’t give examples of every problem I see), but take some time to examine how your own conversational experience unfolds on Facebook. Are you avoiding replying because you think your replies won’t be seen? Are you confused by what people are saying and need to scroll up and down to understand the conversation? These are all barriers that need to be overcome.

I won’t give an exhaustive list because that would be…exhausting. Several million online “message boards” or “forums” (those are search terms you should use) exist where conversation can be had on any of a million subjects. Another alternative is a LISTSERV-like system like Google Groups–not perfect, but works pretty well if you really enjoy email. If you like to roll your own communities (and who doesn’t?), SMF is a great piece of software that we use at

Comments and questions welcome; hopefully I can clean up this piece in the future.