text:
I could not possibly agree more with this view of teaching software/CS.
We are focused on introductory programming education at a high-school and collegiate level — what is often called "CS 1" and "CS 2" (roughly, the first year of college). Pyret is being actively used in everything from high-schools to upper-level collegiate courses, giving us a tight feedback loop.
Of course, even in that setting there are differences of opinion about what needs to be taught. Some believe inheritance is so important it should be taught early in the first semester. We utterly reject this belief (as someone once wisely said, "object-oriented programming does not scale down": what is the point of teaching classes and inheritance when students have not yet done anything interesting enough to encapsulate or inherit from?). Some have gone so far as to start teaching with Turing Machines. Unsurprisingly, we reject this view as well.
What we do not take a dogmatic stance on is exactly how early state and types should be introduced. Pyret has the usual stateful operations. We discussed this at some length, but eventually decided an introduction to programming must teach state. Pyret also has optional annotations, so different instructors can, depending on their preference, introduce types at different times.
I'm delighted to see work on languages like Dr. Racket and Pyret, and the more so because the teams behind both have been willing to set aside many of the dogmas of how CS has been taught and actually do pedagogical research. Also: OOP is a useful tool, but I'm with them: treating inheritance as a first-semester concept is… nutty.
The whole "Why Pyret?" page is worth reading if you have any interest in programming languages or teaching software development and computer science.
New favorite DuckDuckGo !-command:
!nasa, to go straight to nasa.gov.
Wanted: a hermeneutically and historically rigorous book on discipleship which is less interested in sweeping claims about having the solution to all our churches' woes than in humble fidelity which both honors the Great Tradition and contextualizes for today.
One of the biggest changes in my JavaScript from learning Rust/Elm/F♯/etc. is that I now think constantly about what can fail.
Finishing the prep work for New Rustacean e018.
Have I mentioned lately that I love Rust? Because I really, really do.
Minimalist/keyboard-shortcut-happy tip for using Mail.app on macOS: just turn off the toolbar and favorites bar.
Got Mass Affection configured with TLS via LetsEncrypt on GitLab Pages. That was a lot of work. But I'm glad to have done it; migrating other sites should be easier now that I know what I'm doing.
Nothing like doing a
brew upgrade and watching everything on your machine crawl to a stop because you have to recompile
gcc. I think I'll kick that off again next time I'm out of the house for three hours.
It was rainy today, so I decided to use my five-minute pomodoro breaks for push-ups and pull-ups.
My arms are getting a bit tired. 💪🏼
Programming (/life) pro tip: if you can't see the value in a pattern someone else finds useful, assume you have something to learn, instead of concluding that the pattern itself is useless.
And that's a wrap on my SEBTS J-Term class. One last class—a 1-week intensive over spring break—and I will, at long last, have my M. Div.
Well, this week's episode of ATP sure has a heck of an opening hook. Can't wait to hear the rest of the episode.
I was fed up with JIRA, and then I remembered that I have Bee. And I'm so happy I remembered, because it's good.
Was delighted to be a guest on the new Remote Works Podcast! These guys are making a great show. (My episode will be out in February.)
My Kobo Aura ONE arrived today. I really like it so far. I'll write up some more detailed initial impressions (with photos!) later this week.
Just discovered that Safari Tech Preview has WebAssembly support. 👏🏼
Almighty God, in Christ you make all things new: transform the poverty of our nature by the riches of your grace, and in the renewal of our lives make known your heavenly glory; through Jesus Christ your Son our Lord, who is alive and reigns with you, in the unity of the Holy Spirit, one God, now and for ever. Amen.
—Morning Prayer from the Common Worship of the Church of England
It's been years since I last used Apple's built-in Mail app on macOS.
Surprise: it's actually great now.
It's been well over a year since I switched to FastMail, and I remain extremely happy with the service.
Registering a new domain for a new podcast I'm doing with Jaimie. It's going to be massively fun.
I'm extremely excited to be adding a new format to New Rustacean: discussing good crates in the Rust ecosystem. Suggestions wanted!
Crates You Should Know: quick-xml—A pull-parser for reading and writing XML.
Watching a movie with little kids is fascinating—not least, in teaching them what to feel in response to what happens on the screen.
Here's someone else making one of the same points I made last week about the indie web—but much more succinctly!
Oh man, I wrote a blog post only to find out later that @chriskrycho has written a much better version of it… "Even With a cool domain name, RSS-Powered Micro Blogging Is Still a Mirage"
— Mustapha Hamoui (@Beirutspring) January 8, 2017
My only real disagreement with @Beirutspring there is that I think (and hope) there's room for centralized services and the open web.
Started writing the script for the first "Crates You Should Know" episode of New Rustacean tonight. I'm pretty excited about adding this format to the repertoire.
I am deeply enjoying "getting things done" so far this year: keeping my email at Inbox Zero and making (achievable) tasks in OmniFocus and hitting (or if necessary rescheduling) them every day is profoundly satisfying.
An important elaboration on my productivity this week: 30 hours under those circumstances is a bit more notable when you remember that Monday was a holiday. 😜
Managed 30 hours of work this week and maintained Inbox Zero and OmniFocus Zero.
Decent start to the year.
Especially given I've been parenting solo since Wednesday, what with my wife being out of town. :wide, slightly frantic eyes: (My little girls have been amazing, actually.)
Follow-up from Twitter on my latest bit on TypeScript and
@chriskrycho @typescriptlang I think a benefit of your previous solution is that you can rename keys and all their usages.
— Timm (@timmpreetz) January 4, 2017
keyof Follow-Up
Growing a Language, by Guy Steele is without competition the single best technical talk I have ever seen.
Even with my horribly basic level of skill, and even just using it for incredibly simple mockups, ProCreate is an incredible piece of software.
Consider this a formal reminder: John Williams is (and has been for half a century!) a total boss when it comes to film scores.
The prayers of the Church are a gift.
Almighty God, who wonderfully created us in your own image and yet more wonderfully restored us through your Son Jesus Christ: grant that, as he came to share in our humanity, so we may share the life of his divinity; who is alive and reigns with you, in the unity of the Holy Spirit, one God, now and for ever. Amen.
—Morning Prayer from the Common Worship of the Church of England
Setting up MailChimp so people (like my wife!) can track with my blog without having to set up an RSS reader. MailChimp is impressive.
For the record: LifeWay has the single most user-hostile ebook policy I've encountered anywhere. Shame on whoever made these decisions.
This only just came home to me: working remotely is an incredible time multiplier. A 1-hour daily commute = 30 8-hour days in a year.
Things on my podcasting to-buy-in-2017 list: Rogue Amoeba's Loopback!
Learning a bunch from Matt Brubeck's lovely PR reducing allocations and copies on Lightning.
Props to Jacob Finkelman for all his work helping me on this massive Rust documentation project today!
One big personal upside to this documentation project: I'm going to know Rust a lot better before I'm done.
The thing Jamon Holmgren and I did today (with a slight visual snazziness boost) in Elm in GIF form:
This is a great summary of what I enjoy about Rust: it just lets me get stuff done—quickly, usually elegantly, and it's always speedy:
All the cool kids are writing @rustlang think pieces, so I wrote one too: Rust is about productivity: https://t.co/OPwfWfpVic
— nrc (@nick_r_cameron) December 30, 2016
A thing I just learned:
cargo doc --open: full, local docs for every dependency your Rust crate has.
Mind. blown.
Thanks to everyone who watched Jamon Holmgren and me live-coding in Elm today. Intro to us and to Elm here.
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
Trying to get set up with Jamon Holmgren to live-stream some pair-programming.
This is not a solved problem. Good grief.
Final solution (so far) includes both Screenhero and Hangouts on Air. :headdesk:
That got us most of the way there; now we're actually using Hangouts+Zoom. This. is. bonkers.
All those words are a huge part of my incentive to build a CMS-of-sorts that actually does do what I need. #lx
I just ran the numbers for my end-of-year blog post, and it turns out I wrote over 200,000 words this year.
That's a lot.
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
I've spent the last couple weeks using VS Code instead of Atom. It has a lot of things to recommend it, especially speed. It's fast.
However, I have to say: it's painfully obvious to me on macOS that Code is developed by people who aren't Mac-native. Atom is.
And that's okay—but it means that as many things as I like about Code over Atom, it always just feels a little off to me.
Ultimately, what I want is the extensibility promised by both Code and Atom, but with actually native UIs and native performance.
So on that note… @raphlinus, how's XiEditor coming along? Because its approach is what we all really want, I think.
And he replied!
@chriskrycho I've been focused on porting it to Fuchsia, less lately on the core or Mac port. I expect to get back to those soon.— Raph Levien (@raphlinus) December 27, 2016
Guess who's drafting New Rustacean News Episode 2 right now?
Setting up AppVeyor for Lightning so I can be sure everything works cross-platform. 🎉 But for the record: batch files are barbaric. 👎🏼
Another static site generator being build in Rust! One you can already use! Take a gander; you might find it to your tastes. 😃
HT: @mgattozzi
This is fun: Lightning now loads the YAML configuration I defined. Doesn't do much of anything with them, but it loads them!
(I'm developing Lightning totally in public, so you can follow along here.)
Just had my first experience of writing a lifetime-requiring function in Rust and inherently knowing exactly what lifetimes it needed.
When we watched Lydia for Tim and Til Jones a few weeks ago, she made this face. So I made it back at her.
One of the great joys in programming is when you start to feel even just a little bit fluent in a technology.
I keep trying to read documentation about templating engines in Rust and getting distracted by e.g. restyling rustdoc output.
(That's not a thing that's happening, though I'd happily chip in if it were, just a thing that distracted me. Web Inspector.)
Your friendly reminder that docs.rs is an incredible piece of software that is invaluable for working with Rust.
I have a deep, deep enjoyment of my Apple Magic Keyboard. It's hard to explain, but it just feels really good. The traditional keyboard layout does wear on me, though—if someone made an ergonomic layout with these keys, I'd pay in a heartbeat.
Things VS Code still needs to fix to be awesome:
And let me turn off the ridiculous smiley-face feedback icon!
To be clear: Code is already very good. But it's not quite awesome. (It'll get there.)
Spent a chunk of the afternoon figuring out how to implement Rust's
Result type in TypeScript. Pretty cool!
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
JavaScript experiences which induce profound frustration in me:
I had gotten in an insane state where things just stopped working that had previously been working as I updated to Ember CLI 2.6.
After much tearing of hair, I started over from scratch and repeated the upgrade process.
Everything works now.
rm -rf node_modules bower_components and test again.
Nothing works now.
Consistently, it works fine after the upgrade and
ember init finishes. Then, if I do a clean install of the dependencies, it fails.
And it fails in the same ways. So ultimately I'll be chasing those, because we're not going to get stuck here.
But this is an infuriating experience. If you've ever believed npm's claim that non-deterministic installs aren't a problem… consider this a data point in the opposite direction.
┻━┻ ︵╰(°□°)╯︵ ┻━┻
Aaaaand I think I'm about to have a crash. Helllooo, let-down. (Don't worry: I'm fine. I just need to sleep. A lot.)
Finished the last of my SEBTS classwork for 2016. Saw the opening showing of Rogue One with my wife and friends. Good night!
Just saw the 2017 budget plan for Olo. I think we're a real unicorn in startup land: a startup with realistic goals and a business plan. (I'd say we're not a startup at 10-years-old, but since we're still funded…)
Today, I will finish the last of my classwork for SEBTS in 2016, and go see Rogue One: A Star Wars Story with my wife and two of our best friends. I'm a little pumped.
I cannot express the depths of my loathing for DRM. It punishes legitimate users and does nothing to deter pirates. Utterly infuriating.
Drinking Guatemala Tactic Santa Sofia by Blue Bottle alongside some eggnog, with the Doctor Who Series 7 soundtrack playing in the background, as I finish up some work on an independent study at SEBTS. Mmmmmm.
We've mistaken excellence for being exceptional.
They're not the same, and confusing them can only do us harm. Just do your best work.
In the midst of pulling 10–12-hour days every day this week, I am profoundly grateful for Counter Culture Coffee's "El Moral": a single-farmer lot from Colombia which has been consistently fantastic. Hats off to Francisco Gomez and Counter Culture for this coffee.
While watching a theology lecture for school, I may have also spent some time learning how to do newtypes in Elm.
For the second day in a row, I'm starting things off with Arvo Pärt. It's a good way to get goigng at the start of a work day.
Currently almost 7 hours into this work- and school-day, at 2:30pm, and expecting it to be about a 12-hour day. Time to coffee up some more.
JavaScript hero of the day. (Seriously.)
Just released v0.6.0 of ember-exam with support for Mocha! ember-cli-mocha users can get parallel tests now! https://t.co/bUtYwjzInG— Trent Willis (@trentmwillis) November 27, 2016
Two lessons from today's Rust spelunking: the library team has done a fantastic job, and we need non-lexical, liveness-based lifetimes. (See this discussion by Niko Matsakis for some of the ideas there and why we need them.)
There's nothing like building something real in a language to find all the weird little corners. Even something small will get you there.
Pro-tip for dealing with
HashMaps in Rust: the
entry API is often your friend.
The more time I spend looking at houses, the more I hate the American obsessions with cars. I don't want a front-and-center garage. THANKS.
Also, describing anything suburban as "sitting majestically on 0.2 acres" inevitably just makes me facepalm.
Seriously, GitHub—one of your mostly harmless robots thinks I'm not a human, because I'm on slow 3G in the mountains with lots of retries?
Just recorded Winning Slowly 5.09 with Slack calls—super pleased with Audio Hijack's support for it!
Current status: Counter Culture coffee and Videri Chocolate 70% dark chocolate and Ember.js for Olo. This is a good Tuesday afternoon.
My 4-year-old is in her room by herself during her rest time… reciting the first question and answer from the Heidelberg Catechism. #winning
Ben Sasse's strategy for getting things done, discussed in this Twitter thread, is roughly the same as mine.
Call me a cranky old man, but Medium increasingly just makes me sad. I like the uniqueness—including, at times, the ugliness!—of real blogs.
Lots of compilers tell you "Foo is broken!" I love that both the Rust and Elm compilers try to explain why and how to fix it.
One of the things I most enjoyed working more on Lightning this weekend: the Rust compiler is so helpful.
Spent some time working on Rust stuff this weekend. The Rust plugins for VS Code and IntelliJ IDEA are really good.
If you're waiting to get out of trouble to praise God, you will never praise God.
—Tony Merida, sermon on November 20, 2016
The one upside to tabs (over spaces): they can be whatever visual width you want. (Relevant when, like me, you like a really unusual width. I've always been a 3-spaces-wide guy.)
Minor Rust surprise (though namespaces help):
std::io::Write and
std::fmt::Write are not the same (and for good reason).
If "pray for the president" responses from #NeverTrump evangelicals confuse you, read 1 Peter 2:17 and 1 Timothy 2:2—written under Nero.
Pro tip: use
Map and not
Object for dictionaries/hash-tables in JavaScript. Performance difference is A LOT. (I haven't measured, but for a simple example I was playing with (~12k items) it was at least a couple orders of magnitude.)
Edit: Belay that: the problem was an allocation-speed issue: I wasn't reallocating a
Map. Updating in-place is much more comparable.
Front-end web development in one screenshot: macOS Safari on the left, iOS Safari on the right.
I'm just starting my workday, and it feels like it's time for my second cup of coffee. ☕
I'm listening to the recording of Dvořák's Symphony No. 9 by Sir Colin Davis and… wow. This is a fantastic presentation of one of my favorite symphonies.
Editing one of the most pure fun episodes of Winning Slowly we've ever done.
It's about libraries.
Just registered for my last semester of classes and applied for graduation SEBTS. A good feeling, but a strange one.
Writing Rust just makes me super happy.
I'll go a step further on yesterday's comments: I would love to use Reason in a future project.
Using ML-style types to reason through things—even just as a reasoning tool, without language support—makes such a huge difference.
I'm rewriting a hairy, often-buggy section of HolyBible.com's user logic, and using type definitions for reasoning was invaluable.
I'm apparently that weird developer—maybe the only one?—who thinks both Microsoft and Apple's events this week showed neat new tech.
I'm simultaneously incredibly sad to be missing Rust Belt Rust and so relieved not to be traveling any more this year.
Just used LetsEncrypt for the first time.
This is wonderful. ENCRYPT ALL THE THINGS!
And then I set up a cron job to renew it every three months. My maintenance burden for this app just went waaaay down.
"There is no second-order guilt"—solid and helpful bit by Andrew "Spence" Spencer here:
There is no such thing as second order guilt.
This election, economic reasoning, and so many of our choices would be greatly simplified if more people were aware of this.
Spent a good chunk of the evening working on this static site generator—by contributing to another library. #opensource software FTW.
Discovered that Syntect can do highlighting for HTML as well as for editors. More Rust awesomeness.
Pro tip: if you need an ingenious reading of a text to justify your view in light of it… you should probably just give up your view instead.
I really like John Frame on a lot of things. But his arguments for Sabbatarianism are just special pleading on top of special pleading.
It looks my options for HTML templating in Rust are… quite varied. This is good!
Curious: I noted during my drive back from vacation today that whenever other conscious thoughts lapsed, my Rust CMS project came to the fore.
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
My online writing needs are weird. I have searched for years, and unfortunately… I need to write a custom CMS.
I thought briefly about hammering together what I need with Metalsmith.io and its plugins. But that would be a stopgap.
So the inevitable comes to pass: I commit to, however slowly, build the CMS I need.
Probably in Rust—so it should be crazy fast.
If you want to follow along on this site generator/CMS adventure (it'll move slowly), you can do so here.1
Status: looking at C bindings for Pandoc and thinking about implementing a Rust wrapper for libpandoc vs. shelling out to pandoc. 🤔
First pass: just going to shell out on the command line. Second pass… well, if speed is what I'm going for…
I've guessed this for a while, but I can confirm it now: Clap is a really fantastic command-line argument library.
For posterity's sake (ha!) it's worth note that the original link here was to
yassg-btwir not
lightning-rs. I actually noted as much, writing:
That repo name is for "Yet Another Static Site Generator (This One's In Rust)" because I feel so creative today.
Note the headdesk-worthy initialism failure: it should have been
btoir not
btwir. ¯\_(ツ)_/¯↩
My two-year-old woke up super sad from her nap, and her mom needed to take a shower. So The Empire Strikes Back it is.
And, on evaluating that table… I need to pull about half of it out: too much code.
This morning I… carefully built a 3⨉16 table comparing Rust and Swift syntax. Exciting, right? 🤓
People, React is great—truly! But the fact that you only learned about the ideas it uses from React doesn't make React itself the paradigm.
People, React is great—truly! But the fact that you only learned about the ideas it uses from React doesn't make React itself the paradigm.
If you want to use Sierra's picture-in-picture with YouTube, here's how.
After two years of using a Garmin 920XT, my considered opinion is: Garmin makes great hardware, and their software is utterly mediocre.
My kingdom for an IDE with the smarts of JetBrains' IDEs and a real, non-Java, native UI on macOS.
Wrote ~500 words and nailed down a chapter's structure this morning. Good start to the day!
I really, really wish that YouTube were just using HTML5 video so I could do picture-in-picture on macOS Sierra.
This is one of the most important episodes Stephen Carradini and I have ever published. We go after civil forfeiture hard. Give it a listen!
Winning Slowly 5.05: "Faint Not"—Negative / Invisible / Legal (Organized): civil forfeiture and entrenched legal evil
I just realized: like a complete dolt, I forgot to update the show feed for Winning Slowly when I published 5.04. :facepalm:
Looks like subscribers get two episodes in their feed today. 😬
I don't often get to compose anymore, but every once in a while I still have opportunities. Here's the processional I wrote for my little sister's wedding—a trio for cello, oboe, and piano.
(Unfortunately, almost no one heard this, because it started raining—outdoor wedding—and the sound guys didn't know to turn up the volume.)
Dear North Carolina, it is October. It is time for you to stop being 80° now.
Wondering what it would take to build the Rust equivalent of Swift Playgrounds (which are like a REPL on steroids).
Any takers?
Playing Harmy's Unspecialized Star Wars for my girls while I write some more this morning. 💕
Atom + the GitHub theme + Zen package = a pretty good technical writing environment.
How I make video lecture listening a bit more tolerable—with Audio Hijack 3 (see full size here or by clicking/tapping the image):
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
Remember to find little ways to say thanks for the F/OSS you use. It doesn't have to be a lot—even a small gesture goes a long ways.
E.g.: I just sent a ☕ or 🍺 worth of the August New Rustacean Patreon funds to the awesome maintainer of the intellijidea-emberjs plugin.
That doesn't begin to pay back the value he's provided for me and many others—but even so, I know from experience: a little gesture is nice.
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
This has been a fascinating weekend of conversations, many of them about systems and institutions and technology—with everyone from Lyft and Uber drivers to Trevin Wax, Joe Carter, and Matthew Lee Anderson.
The conversations Stephen Carradini and I have been having on Winning Slowly over the last couple seasons, and this season ahead, all seem more important to me than ever before. Not because the show itself is very important—it isn't—but because these issues, and one question in particular, seem increasingly urgent in our day.
That question is simple: Can we say no to given technologies or opportunities, not only as individuals but as communities?
If we cannot, we are slaves to whatever idea someone dreams up next, whether it is good or bad, beautiful or wicked. Our tools will own us.
If we can, then at least some things I believe we ought. The question then will be: what technologies not only can we but must we refuse?
The answers to those questions are more than a tweetstorm can disentangle, indeed will require years of hard work and thought to search out. But as of right now, too few are even asking them—we think instead, "We can, and we may do some good, and so we must!"—heedless of the cost.
These questions press especially on those of us in technology, those of us who teach, and those of us in positions of influence. The things we choose—including, sometimes most importantly, silence and refusal—will shape not only our own but also many others' lives.
Reading Darrell Bock and other progressive dispensationalists, I often want to say: "You are not far from the kingdom [of covenant theology]!"
My #firstsevenlanguages—looking strictly at what I'd used at all; ignoring HTML and CSS):
In terms of what I learned well enough to use, though:
After a few weeks of noodling around with an idea, I nailed down the hook for the processional I'm writing for my sister's wedding. Love that feeling. Now: to turn it into 2 minutes of music!
I was just messaging a friend about parsing, using text-to-speech; it came out, "So, I am trying to get up to speed on cursing in general…" Whoops.
I'm reading a book featuring an in-house debate between progressive and traditional dispensationalists on hermeneutics and theology.
Dispensationalist friends, I love you. Also, let's have an intervention.
The book I'm reading deserves a better cover.
When you want to comment on something but doing so would come off as subtweeting someone with whom you have no beef so you keep quiet.
…do I get bonus points in life for this? It feels like I should.
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
The "user guide" is an implementor's guide, not a user's guide. :sigh:
Gladly, asciidoctor.org makes it easier: "What is AsciiDoc" and "Writer's Guide" and "Syntax Reference" are all on the front page.
A month ago, Alan Jacobs asked about quality conservative Christian podcasts. Here's a big part of why there are so few (at Mere Orthodoxy):
As a Christian in the world of podcasting—I have both a "two dudes talking" show (Winning Slowly) and also a "one dude talking with maybe a brief musical intro and outro" show (New Rustacean)—I found much to agree with, but also much to clarify and a few things to disagree with…
First, a set of theses on podcasting as a medium. Some of these are obvious; none are intended to be tendentious. Some of them warrant further explanation—for which, see below….
After which, 32 theses (and another ~3,000 words) on the constraints and challenges of podcasting as a medium.
Aside: the format of this particular piece is heavily inspired by Jacobs' own "79 Theses on Technology. For Disputation."
Up the ante, you say? Sure, we'll tackle the small, easy problem of systemic force and individual agency this season on Winning Slowly.
5.01: A Ph.D.-Level Math Problem—Structures and systems, agency and individuals: three axes (and a sub-axis) for thinking about the world we live in.
We introduce our system for thinking about the "structure/agency" or "systems and individuals" problem: how do the systems and structures of our lives shape us? How do we shape them? How free are we, and where are the places where more freedom is good, and the places where it might actually be bad? How do we confront the structural issues we face, or strengthen and preserve the good systems we do have in place?
Listen to the whole thing! And then tell us what you think.
Hey SEBTS students—you should join me in Keith Whitfield and Bruce Ashford's THE7950 class for the ERLC national conference in Nashville!
Wrote 700 words of the script for New Rustacean e017. Should finish that script tomorrow (and maybe record, too!).
Speaking of podcasting: my current goal is to ship an episode of New Rustacean every other week (the off weeks from Winning Slowly), after this coming week (when they'll hopefully both have an episode). Lots to do!
Just made the requisite website tweaks for Winning Slowly Season 5!
5.01 coming Tuesday. GET EXCITED.
I signed a contract today for a neat little writing project broadly related to my ongoing Rust and Swift series. Probably means a bit of a hiatus on the series itself, but there's a lot of fun ahead. More on that as it develops.
Inbox Zero is such a good feeling. I need to get back into the habit of staying that way (as I have in the past).
Well, I had a cup of nitro cold brew coffee at about 3pm. So… it seems I won't be sleeping for a while yet tonight.
Aim for "Well done, good and faithful servant" rather than "Wow! You're such a great teacher!"
I hate JIRA's Wiki markup so much. Why in the world they feel the need to stick to that instead of just supporting Markdown, I do not understand.
I'm quickly discovering a desire for actual, enforceable types as I'm trying to compose a series of functions. It's hard without them.
Here's the thing with ad blockers, WIRED: I only whitelist sites who don't track me. Fix that and we'll talk.
I'm so used to dealing with layout distinctly from behavior with the HTML/CSS/JS separation that learning how to lay things out in macOS apps feels weird.
After a week of being sick, I'm finally getting back on track with my schedule. I'm tired, but it feels good.
The more time I spend looking at F♯, the more I like almost everything about it. The only pain point… is that Microsoft foolishly choose to PascalCaseAllTheThings. 🙄
It turns out the fastest way to get me to write 1,700 words on hermeneutics is to misread Tolkien.
I am reading John J. O'Keefe and R. R. Reno's Sanctified Vision for the independent study on hermeneutics and theological method I am doing this summer. I have found the book fairly helpful overall, and think the authors are right to commend the church Fathers as models for Biblical interpretation in many ways. The authors do good (albeit somewhat tendentious) work arguing for whole-Bible/"intensive reading" strategies and the validity of typology as part of theological method. When they come to allegory, though, their argument almost immediately goes off the rails with a deeply misguided interpretation of The Lord of the Rings….
You can read the rest over at Mere Orthodoxy.
Either Medium actually thinks this, or they're willing to sell their product with it but don't think it. Either way, it's nonsense. "Moving thinking forward"? Really?
Fun things in Rust land: the code from the latest episode of New Rustacean, in Raph Levien's Xi editor!
I have a problem and it is called: "I run further than I probably should given the heat and my readiness level." 😳
Well, I might have stayed up too late tonight writing what has ended up being a 1700-word post on Tolkien and typology for Mere Orthodoxy. But it was fun!
Note to self: don't forget to use the
--jobs flag when doing builds with Cargo. Parallel = faster when building a bunch of things.
I have busted out the scary dad voice twice already this morning. Could be a long day. (Pushing is not allowed. Neither is disobeying mommy and screaming at her.)
Finished the New Rustacean material for e016. But I'm sick, so now I'm going to bed. Bleh.
I may have spent over an hour this morning writing about allegorical interpretation and The Lord of the Rings instead of finishing the book I was reading for an independent study. But I'll blame that on the book, because its authors just got Tolkien very, very wrong. 😜
I didn't get done everything I hoped, but I read a bunch and wrote a bunch for New Rustacean e016. Hoping to release it this week!
The day you accidentally run 20 miles, and then the day after…
I do not eat KFC often—but every year, on the day I take my longest run of the year, I eat KFC, and I am glad. This year, today was that day. I just ate KFC. I am glad.
I accidentally ran 20 miles instead of just 16 today. 😬 I am now profoundly uncomfortable in a number of surprising ways.
I am trying to fix a bug in a Node.js back end I wrote 18 months ago. And I have never been so tempted in my life to rip out the entire Node back end and replace it with one written in Rust.
Things I did tonight:
I really, really prefer codebases which remember that readability matters. Getting everything on one line, at the expense of the line being 234 characters long, is not a win.
Open-source developers who are still using mailing lists for tracking bugs are not on my good list. sigh
I haven't gotten almost anything done today. I think I'm calling today my day off for this week and I'll hammer at productive things later.
Wow: a minimal (but extremely useful) lodash install is only 4kb minified and gzipped. I… need to have this available to use everywhere now, please.
Doing the same little programming task again at regular intervals is a fascinating exercise. Seeing how you've learned to tackle the same problem, but better, is illuminating.
I know the
Vehicle example is sort of canonical in teaching object-oriented programming. But it's wildly disconnected from real software development problems. I don't like it.
Unfortunately about to do the mobile carrier switch dance again. We really like T-Mobile. Unfortunately, it doesn't cover our apartment. 😕
Autoplaying videos are bad. Do not autoplay your videos, website owners.
I'd love—love—to see an open standard for embedding browser engines (a la Chromium/Electron) emerge, so you can embed whichever you like.
Recorded a fantastic New Rustacean interview with Raph Levien this afternoon. Part 1 should be up tonight!
The build worked on
develop last night. We have made no commits. Now it fails.
Current best guess: transitive dependencies. Thanks, npm.
I'm such a grumpy old man. I'm on a group text where everyone else uses Bitmoji and they make me so… grumpy.
The first thing I do when I start playing with a new language/framework/etc. (like I just did with Elm) is download the Dash docset for it. The time it saves is extraordinary.
So I love the Rust compiler (and it's improving all the time). But the Elm compiler is a revelation. Just… wow.
Playing with Elm a little bit (I know, I know) and bumped into the idea of structural typing. Do want.
Got a weird diff report on a change in GitHub. Tracked it down to find it was a byte-order mark issue.
Thanks, Windows. I hate you.
Also, to be fair, Sublime Text 3 gets a little of my ire for changing the encoding on the fly. Don't do that.
Lambda calculus. Church numerals.
This is my reading for a day when I feel terrible and just need to rest. I note and embrace the oddness.
When you go to the Y to get in an evening swim and only realize when you arrive that they close an hour earlier on Fridays:
Dear fellow students: do not mark up library books. Mark up your own as you like. But little annoys me as much as your personal notes.
Listening to Harry Greyson-Williams' score for The Martian 🎵 and finishing the New Rustacean e015 script. 🎙
Someone seems to have hit me with an attack that gave me a -2 effect to agility and dexterity today. MI feel so clumsy.
Delightful discovery: Ginger Labs' Notability will save web pages as PDF. Now I can take notes with an Apple Pencil on any article I want.
I spent the afternoon modernizing a large chunk of Node.js code in preparation for fixing a bug—and I've caught multiple other bugs along the way. (Also, my comfort level with JavaScript and functional programming has taken a massive leap since I originally wrote this!)
We're sitting here with a friend, talking about two's complement representation of negative numbers in binary. We are nerds, people.
JavaScript with semicolons written by hand is such a sad language. Almost every line, it's crying:
Some readers may not know: I have dedicated RSS feeds for every category and tag on the site. You can subscribe to just poetry, or programming languages, or family, or every post filed under Theology, or whatever you like (including, of course, everything).
The New Rustacean Patreon supporters are awesome. Today, I massively upgraded my recording set up. And it sounds fantastic.
I wrote a Rust RFC! See it here: "Require all new features to be documented"
Here I am, at the end of the week off, and what am I doing? Writing a Rust RFC. Yep.
When looking at an intimidatingly large software project, just ask: what is the very smallest thing I can build that is still useful? Once you have that, you can build on top of it, and you'll have momentum. You might rework it later, but that's okay—you'll have started.
I think our day trip to the beach was a success. At dinner, Ellie said, "This was the best day ever!"
Apparently, "a place to sit on the beach and play with my kids" is not what tourist departments have in mind for their wbsites. Probably because the possibilities for commerce, and therefore revenue, are small in that bucket. It is profoundly annoying, though.
So I have a week off, and what have I spent this afternoon doing? Uhh… working on some of my personal development tools, mostly. What can I say? It's fun!
I was looking at the GitHub repository for my blog, and noted that it doesn't include Markdown in its language stats. Which means its stats are hilariously misleading when you're looking at the language breakdown for a content-oriented repository.
I just republished a bunch of tweets I've written over the last few weeks on my own website. Two observations:
One of the reasons we do history… is because it acts as a brake… on our otherwise unbridled enthusiasm for our own ideas.
—N.T. Wright, Paul and the Faithfulness of God, Parts I & II, p. 54
So, Jason Snell's pepperoni and pineapple pizza recommendation is great; we've been doing it for years. Add jalapeños for extra pizzazz!
When I podcast, I don't do "just news." I do "news I MEAN describe how MIR changes the Rust compiler flow":
▶ New Rustacean News 1: One year and counting—on Rust a year in, including an overview of how the compiler works
Recorded another New Rustacean episode at last; it should be up this afternoon. Rust FTW!
And, me being me, this "news" episode ended up with a description of how the Rust compiler works. 🤓 It'll post later!
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
I originally posted this as a tweetstorm, but I'm treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
I originally posted this as a tweetstorm, but unlike in the past, where I've treated those tweets as the canonical form and linked them here, I'm now treating this as the canonical and adding a tweet to the end of that "topic" linking back here. Indie web forever.
A friend comments:
FWIW you can download a big fat zip file with all the stuff you've ever uploaded to Facebook
it comes in a pretty simple HTML layout. I do it every 6 months or so for backup.
OH WOW: SpaceX first-stage landing footage… from the onboard camera. This is blow-your-mind incredible.
I always appreciate Ben Thompson's takes, but this—on the Thiel/Gawker imbroglio—is one of his best posts ever.
Time zones: the bane of a software developer's existence.
Astounding as it is to be able to work from the middle of a bus in the sky… I'm ready to be home, for so many reasons. Working in my own office again will be nice. Having my sweet little girls come say hello while I'm working will be even better.
Wrote ~1,000 words of the next New Rustacean episode—including a new (occasional) episode format on recent news in the Rust community!
Oh, hey, Colorado—nice to see you again; it's been a while!
It's amazing how much daylight sets your body's clock. I'm flying west in early evening, and it barely feels like it's getting later.
P.S. I wrote that post on my iMac via SSH from an airplane somewhere over the Midwest. Crazy
I needed to write a tiny server to test out some quirky single-page app stuff I'm doing for Olo right now. So I did it with Python and Flask.
And you know what? Python is still—and forever, I suspect—so much better than JavaScript.
Finally at a spot where I have both the time and the mental energy to pick back up my Rust and Swift series. Initializers, I'm coming for you.
The soundtrack to Stellaris is wonderful. Really, really wonderful.
I wrote just under 30,000 words this semester. Not too shabby. Glad to have wrapped up another one!
In a few hours, Lord willing, I'll have written a few thousand more words for an essay final and finished this semester.
Finished writing enough words. Going to take a two hour break to go hack on a potential solution to a problem that has been vexing us at work for months and which I think I know how to solve. Then come back, edit, and submit this thing!
500 words and some editing and 75 minutes to go. Put on some Ellie Goulding. Head down. Let's do this.
Just bumped into another person who (quite reasonably) didn't know that ES6
classes are just syntactic sugar for prototypes. I like classes… but they're more confusing than not, I think.
750 words written today. My brain feels like mush. Time to listen to Star Wars: The Force Awakens. And maybe also drink some more coffee.
Also, I'm betting I'm not the only one who finds it frustrating that every single tool I use gives me a different word count for the same content.
~5600 words down. ~1800 to go. Yes, I underestimated yesterday by about 1500 words. Whoops.
~3500 words down, ~2500 to go. Steady on!
That feeling when you're researching a paper and a philosopher cherry-picks all his examples and ignores every countervailing examples.
Nothing screams professionalism about a Linux distro like using a years-old default WordPress template for the site.
This bit from the fish design document perfectly captures what git does wrong (emphasis mine):
When designing a program, one should first think about how to make a intuitive and powerful program. Implementation issues should only be considered once a user interface has been designed.
This design rule is different than the others, since it describes how one should go about designing new features, not what the features should be. The problem with focusing on what can be done, and what is easy to do, is that too much of the implementation is exposed. This means that the user must know a great deal about the underlying system to be able to guess how the shell works, it also means that the language will often be rather low-level.
—fish documentation
Good move, GitHub: unlimited private repos for the price I've been paying for just 5 before now. 👏🏼
One class finished. Just another 6000 words or so to write and edit before I'm done with the semester.
Wrote the first draft of my RustConf 2016 proposal. Because I don't skip chances to chat about Rust. Not ever. You know that by now.
Trying out the Smart Keyboard for the iPad Pro 9.7. It's a little small, but surprisingly easy to adjust to. Main weirdness is mod keys.
Verdict after working on my new 9.7-inch iPad Pro with a standalone keyboard for a bit: this is fantastic.
Tony Merida on "dress codes" in the Bible:
You ain't got no verses for ties!
Panic's Prompt 2 is an absolutely incredible app. Wow. Just wow.
I just had one of thos beautiful moments when I realized I'd written a beautifully generic component I could reuse throughout the app, and it made me so happy.
We got Jaimie an iPad Pro to replace her old laptop. (Sweet!) Setting it up to do Python dev basically requires SSHing into another server, so I set up a custom DNS with No·IP and local port forwarding and it's super neat.
Also, I keep forgetting how incredible https://play.rust-lang.org is. Built-in ability to view not only the result of the code, but also the new mid-level intermediate representation (MIR), the LLVM IR, and the assembly? Amazing.
I sometimes ponder how weird my RSS/Twitter/etc. feeds must be for my friends/family/followers. Since it ranges from hyper-technical programming stuff to poetry and from running to massive theological essays. I'm a weird guy.
This blog post on recent compiler work in Rust is incredible: great work, and great technical writing. 💙 Rust.
Our rent is going up by 3% again this year. Up almost $100/month since we moved in three years ago. Ouch.
I think I'm sold on fish. The autocompletion alone is just delightful. Need to tweak it a bit, but even its defaults are pretty great.
It's telling, I think, that most popular conservatism's response to a basic income is frothing rage—but Friedman and Hayek both thought it a reasonable, possibly even good idea. I don't yet have a considered opinion, but that should caution against knee-jerk reactions.
I hate npm's non-deterministic installs. Reproducible builds are essential, not optional.
I'm totally working a reference to Daniel Spreadbury's SMuFL work into a discussion of Rust's Unicode support in New Rustacean e014.
(This has to be the nerdiest thing I've ever done. Even in context, this is over the top.)
I'm drafting the next episode of New Rustacean on a 3-year-old retina iPad Mini and I love it. An iPad Pro looks awfully appealing.
I've been working for a few weeks now on what has ended up being a much larger feature than I expected. CLOC tells me it's a +1,320-lines-of-code change. But of those, 951 are tests. As it should be when writing JavaScript.
And then I discovered that PureScript uses Bower for its package management tool.
GitLab Pages, GitLab's answer to GitHub Pages, now supports serving via HTTPS with Let's Encrypt.
Game on, GitHub.
I'm pretty comfortable calling it at this point: The Gray Havens' Ghost of a King is the album of the year.
After a few months of using Hasklig, reading code without code ligatures seems really weird to me.
Just finished a massive cleanup of about 4000 lines of an AngularJS codebase. It's not amazing, but it's a heck of a lot easier to deal with now.
If you want to see just how fast hardware has advanced on mobile in the last few years, try comparing a first-gen retina iPad Mini to an iPhone SE for performance on, say, a single-page web app.
Finished putting together a 200-word outline for a 25-page paper for my Philosophy of Science and Religion class. Perhaps surprisingly, I don't normally work with outlines like this, but at larger scales, I think it's necessary.
I still love EmberJS—but if I have one complaint, it's that it's slightly too heavy on convention-based magic. I want it to be a little more explicit, so that I can have a little more insight into what it's going. Yes, even if that means a little more boilerplate. Explicit is better than implicit.
On fire this morning: just knocking things out left and right.
I love Mondays. I'm well-rested, mentally fresh, and excited about the week.
Heard in our house tonight: "No, Kate, why are you putting spinach on your toes?!"
I just ran
apt-get install zsh… on Windows 10.
Weirdest thing I've done in a long time. But I'm not complaining.
A bit of follow-up: that solution ended up being insoluble. Suffice it to say I'm very glad my Windows machine is just a VM; I restored a Time Machine backup and moved on with my life. Ugh.
My Windows VM for work is now stuck in an endless cycle of reboots after a blue screen of death after an update.
Between that and its starting the update without asking me, I'm not feeling especially happy with Microsoft today.
Out of everything from the original The Terminator, I think it's undeniable that the thing that holds up best is the main theme.
Note to self: do not open YNAB when you have other things to do.
I'm not the only one who gets totally distracted by budgeting, right?
Things I want basically all the time when writing JavaScript:
Basically: an ML, I guess.
After looking at Elm a little, and discovering it doesn't have Haskell-style typeclasses (a la Rust's traits), I was a bit disappointed. Then I discovered PureScript, which does. Intrigued all over again.
The Kindle desktop app is so badly broken. Current state: two modals, which are blocking access to each other. 😐
Case in point: this photo of earth-rise from the Lunar Reconnaisance Orbiter Camera is incredible.
InterfaceLift is basically the best place on the web for finding incredible photos to use as wallpapers.
Nothing has cranked up the fans on my 5k iMac quite like running Handbrake to convert a video. Wow. (Notably, H.265 pushes it way harder than H.264.)
Working days like this, I'm incredibly grateful for Explosions in the Sky. And their latest album, The Wilderness, is just delightful.
This was one of those days that didn't feel like I worked a lot, but I just checked, and I did about 9 hours of work today. I just didn't accomplish everything I wanted to (brain was in a fog all day). Strange how those can overlap mentally like that.
Betting I'm not the only one who thinks it a little weird that the
Event.target in the DOM APIs is the source of the event.
Affinity Photo is fantastic. They will be getting my money sometime this year.
After we watched the installation, Ellie said, "Next time the space ship comes out, can we watch?" Of course I said yes.
Watching the SpaceX with my four-year-old. This is amazing.
About to go for a run; there are 20mph winds right. Just like old times—I'll be having flashbacks to running in Oklahoma (except with hills)!
It is utterly infuriating how many parts of the DOM API are "array-like" but don't have the basic
Array API actually attached. Want to iterate over a
HTMLCollection? You get to use a
for loop with an index! Lucky you! 😐
Oh. my. goodness.
How have I not used Emmet before? The experience is amazing. Mind. blown.
Good tools are good.
On a 1-to-10 scale of "interestingness" for things Elon Musk companies are doing, last week's Tesla announcement is about a 4. This is about a 9.
Experimenting a bit with BEM for CSS in a small tweak I'm doing to this site's design. Not 100% sold.
My barista today: "You're not a snobby and obnoxious geek; you're a good geek."
Discovered lately: the British English voice for Siri is much more fun for this American to listen to than the defautlt American voice is.
I 💙 the Rust team. So much.
The more time I spend with languages with pattern matching and expressive type systems, the more I feel frustrated by things I just can't express in JavaScript. If I could write Ember in something Elm… I think I'd be giddy.
When you don't know where to start on a programming issue, write some tests. You might throw them out and write different ones later, but the process will kick your brain into the right gear and you'll be moving along in no time. (Hat tip to Eric Farkas and Matt Green.)
Why isn't this updating? :looks around for five minutes: Oh. It's because I'm just serving an old version, and don't have it rebuilding as I make changes.
Ellie just spotted a bald eagle out our back window. How cool is that?
I would love a simple, static, podcast-friendly site generator. (Pelican works, and I know it well enough, but I don't love it.) Thoughts?
Few things are as encouraging when doing exegetical work for a sermon as finding that your thoughts aare not original, but stand in line with what the church has confessed about a passage before.
Successfully recorded the first episode of a new micro-podcast called Run With Me. Will be live later this week!
One of the things that's weird about writing sermons for a class is the requirement to turn in a summary of my preparation. Why, you ask? Because it tends to look like this…
Live Photos: I know it seems like a gimmick, but it isn't. That might be the biggest grin a little bit of tech has given me in a year.
There are about a half dozen reasons, and more mounting, why I need to set up an LLC. Just… need to pick a name. Always the hard part.
I accidentally just started playing through my entire iTunes library on random… and it's wonderful. The joy of having lots of good music.
Oh, the difference between Friday afternoon and Monday morning, when trying to solve a problem. Spend two hours beating your head against a wall on Friday, or ten minutes on Monday morning. So it goes.
Got new phones off contract and bought a sport coat this morning. 😳
Let's just say I hope it's at least 3–4 years before I do either again.
Eventually, my daughters are going to discover that I am not, in fact, cool. I'm going to enjoy it as long as it lasts.
Whoa: Ulysses exposes its iCloud documents quite elegantly to Spotlight (or Alfred or your launcher of choice). Quite impressed.
On the "typography should be invisible" bit that's been going around lately, Matthew Butterick is on point:
Typography isn't invisible. By embracing that fact rather than denying it, we can create better typography.
A really splendid moment this evening: I looked up just as we got out of our car after small group, and got to see the ISS pass overhead (and showed Ellie!).
Inbox zero again. Finally. I'd almost forgotten how nice that feels; I need to get back to making it habitual.
Among the many things Microsoft software does which annoy me, one of the chief is this: the Office auto updater checks for updates immediately after finishing applying updates. Why?
Throwing this out there: don't organize your apps by 'kind of item' (view, controller, etc.). Organize by concern. A component's template, controller, etc. should be right next to each other.
Well, paper-writing today may have pushed me to the breaking point. An app idea that's been bubbling for months… I think I'm going to start actually building pieces of it and learning for other bits this week.
T.F. Torrance and Karl Rahner make for wonderful, fascinating dialog partners on the Trinity. Not least because of their disagreements!
Tip: if you get a very specific piece of feedback and have a standard workaround, it probably means you have a product design issue to fix.
The new Overcast feature which lets patrons upload custom files is the best for podcasters verifying episodes before release.
I was reading some C++ yesterday, and I can't put my finger on what it is about the language, but I just find it unbearably ugly. Rust's syntax isn't that different, but I don't have the same visceral reaction. I wonder why that is?
A really nice update to the podcast app I use every day. Props to Marco Arment!
North Carolina friends, if you're registered to vote in the state (and really, you should be!), please take the opportunity to vote in the primary today.
debugger; is a thing. My life would have been so much easier if I had known about this sooner than ten minutes ago.
It is both nice and odd to have no analytics for my website. On the one hand, it is liberating: if no one reads, I'm none the wiser. On the other hand, it's strange: there are posts I know are getting read a fair bit… but how much I have no idea.
I'm at the point where I honestly hope that this election cycle in the U.S. just fractures both parties and we can have some genuine alternatives rather than two nearly-identical monoliths. I'm not counting on it, but I'm wishing for it.
Just registered for Wicked Good Ember Conf 2016. Looking forward to chatting Ember.js in Boston in June!
I've now written over 14,000 words in my series on Rust and Swift, and while I've done some revisions sitting at my main machine, nearly all of them have been written on my iPad Mini. And quite enjoyably, at that.
If you want cloud storage—e.g. to back a CDN—and want an alternative to Amazon S3, check out DreamHost's DreamObjects. It's great—and inexpensive!
I've been using it for Winning Slowly and New Rustacean downloads for 9 months. Couldn't be happier with the results.
Pro tip for tracking down oddities with Ember.js during testing:
ember test --serve --filter '<some pattern>' is great. E.g.
ember t -s --filter 'Unit' for just unit tests.
Pro tip: if you want to use Sublime Text with any project which has local node_modules, install something to ignore specified directories (e.g. those in your gitignore) immediately. Same goes for anything with large, repeated builds (like Ember CLI). Yeesh.
Speaking of podcasting, the episode of Winning Slowly we published today—and interview with Ghost's co-founder John O'Nolan—is one of my favorite episodes of the show we've done. He's cogent, thoughtful, and on point throughout; the episode is well worth your time!
My wife has a voice made for podcasting. I'm editing the newest episode of Sap.py (!) and listening to her speak is simply sublime.
12oz home-made pour-over of Counter Culture's Buziraguhindwa. Now I'm ready to handle this afternoon.
Sites which rely on Adobe or Google Tag Manager for their basic functionality infuriate me. Stop. Just stop.
No one is 'not worthy' of our service in the body of Christ.
—Tony Merida, sermon at Imago Dei Church on March 6, 2016
Seriously. All I want to do is transpile ES6 to ES5 and make it runnable in browser. And I need Browserify or Webpack for this? sigh
Trying to do a little tweaking with the lightweight scripts I use on this site. Trying to automate things with Babel, browser imports, etc.
This is still far, far worse than it should be in 2016. Here's hoping it's (substantially!) better a year from now."
A good rule for life: If The Princess Bride can be quoted, The Princess Bride must be quoted.
Ellie: "Yeah, then I'll be ready for kindergarten!
"… What's kindergarten?"
One upside of having a new 5k iMac with 64 GB of RAM: I keep forgetting that I have my Parallels VM (with 16 GB of RAM allocated to it!) running. Ridiculous. (And great.)
I am increasingly persuaded that there is a law of the universe which states: On any morning in which parents intend to sleep in at all, their children will awaken early, and with an overabundance of energy.
I ran into a Medium post arguing against ES6's
class implementation, and got linked to this argument against
super(). Strongly concur.
Inheritance is fragile. Useful when appropriate, but fragile. Prefer composition.
The other day I posted about wanting to get my old joystick working on OS X, and thinking about writing drivers for it myself. Turns out I don't need to, because ControllerMate is awesome.
Every time I do Node development, I conclude again—loudly—that purely callback-driven APIs are incredibly annoying.
If you're contributing regularly to open source on GitHub, and you use the git command line at all, do yourself a favor and go install Hub right. now. Makes life so much easier.
After doing a little looking around, I've concluded that Blubrry is likely to be the best replacement for Podtrac for my purposes. Giving it a spin now. It's not especially beautiful or amazing, but it's no worse than Podtrac… and it performs way better.
The sheer number of Chris Christie memes this week…
Deals with the devil really bite, don't they?
I use two-factor authentication everywhere I can. And it's annoying. And as a result, I basically want Yubico support in every application everywhere all the time.
Okay, I'm basically done with PodTrac at this point. It's slow to use, slow to update, and now it isn't showing me anything about recent episodes on the dashboard. Anyone have a good podcasting analytics tool to recommend?
I have had a "cold" for almost a month now. Between that and some secondary symptoms, I'm beginning to worry that what I actually have is a mono relapse. May it not be so…
I have an ongoing internal debate whether to hard-wrap lines in the source Markdown documents for my website (and everything else). Upside: it can be helpful when viewed in a terminal. Downside: it's not very responsive in other editors or small phone views.
One of these days I should write up the slightly arcane workflow I use to publish Winning Slowly and New Rustacean. It's weird.
I posted these as a series of tweets.
Fired up and played the demo for Elite Dangerous on my Parallels VM. Made me want to buy it. But of course, I'd prefer to play it natively.
Of course, it's available for Mac. But my (more than a decade old) joystick doesn't have any support on OS X. No drivers, full stop.
You can find software out there which recognizes it, of course—but it's quirky and doesn't behave well.
Looks like opportunity calling.
I might—might, I say, not will—end up seeing if I can write the requisite pieces in Rust. Because that seems like a good plan.
I have an irrational-but-ridiculously-strong desire to build an Atom package that is a tiny JavaScript wrapper around a Rust implementation. Just because.
Parenting skills: seeing the projectile vomit beginning, and sidestepping so it only gets on the floor.
Jaimie put on a recording of "All I Have is Christ." And Ellie is singing along. I think my brain might explode from the wonderfulness.
Stayed up way too late tonight, working on a sermon on Judges 3. Yes. Judges 3. Should be interesting.
I'm feeling the itch: to tweak both the information architecture and the visuals of this site. And maybe to use a different generator, since Pelican isn't really up for the information architecture challenges I have.
Reading Learn You a Haskell for Great Good.
Hang on—all name bindings are just functions? So many things just clicked. Mind. blown.
First day of true spring weather. Time to get the bike out and take a ride. Tri training season, here we come!
Of course, there's another challenge with picking back up: I've gotten spoiled by having ES2015 available and want to add it to this Angular project.
The upside to stepping away for a bit: I just found a bug in this code… which I introduced in December 2014. :sigh:
It's inevitably a bit challenging when you step away from a project for three months because of life and then come back to it and try to pick up where you previously left off.
Wanted: Handoff from my phone to my Mac… for iTunes.
Brandon Sanderson kept me up way too late last night by springing Mistborn: Secret History on me at the end of The Bands of Mourning. Jerk. 😉
I'm seriously thinking about trying Otto to make distinct environments for personal development projects.
We need a Creative Commons Attribution-And-You-Have-To-Tell-Me-About-It license.
I've set up a podcast feed specifically for any sermons I preach going forward. You can subscribe these places:
As an aside: having done the starting-up dance for 4 podcasts now, it's gotten pretty easy. 😉
Spent the last little bit reading about Rust's type system for the next episode of New Rustacean. Heady stuff.
Writing a sermon on Philippians 2:1–10 and listening to Howard Shore's The Lord of the Rings: The Two Towers – The Complete Recordings. Delightful.
Just noted a way my programming languages snobbery has increased: if you have
null/etc. instead of
Option/etc., I say NOPE NOPE NOPE.
The setup I used to get reasonable-sounding audio out of Skype this morning. God bless Rogue Amoeba's Audio Hijack.
Just bumped into ES6
static for the first time and was all what the heck?
Websites which aren't capable of dealing with dashes in phone numbers, social security numbers, etc…. ugh. This is not a hard problem to solve.
Seems about right for the primary season actually kicking into gear, given the preliminaries:
Actually cleaning up my desk area—because I (a) got a new desk and (b) am getting a new 5k iMac this week. Current analysis suggests that I've received two USB cables, one Ethernet cable, and one VGA cable for every device I've ever purchased. Why in the world did I bring these cables here from Oklahoma three years ago? I've never used them. Not ever.
Weeks where I'm in class all day take a toll on me mentally. I just realized one reason why: the absence of music! 🎶
Published my tenth full episode (and twelfth total) of New Rustacean today. Researching for, writing, recording, and editing the 17-minute, 23-second episode took a total of seven and a half hours.
Podcasting is a lot of work, but I still really enjoy it.
Editing Winning Slowly 4.01 for release on Tuesday. I accidentally did a 5 minute monologue—apparently I'm used to soloing on New Rustacean!
Just wrapped up 3.5 years of working for one company. I'll start elsewhere on the 19th. Always feels a bit odd. Good. But odd.
This is definitely an Arvo Pärt kind of morning as I wrap up my last week of work with this client.
So you like GitHub pull requests but not so much the resulting merge commits? Have your 🍰 and eat it too.
Really enjoyed Ep. 34 of The Frontside podcast—good stuff on business leadership, personal planning, and more. Listen! ▶ 34: What We Learned in 2015
Christmas Eve, and I'm enjoying delicious coffee, getting my budget caught up, and doing some writing. Huzzah.
Somehow I've never made much (or really any) use of JetBrains IDEs' "scopes" concept before. Quite handy.
One sermon manuscript and one easy final and I'll be done with this semester. Let's go.
It's telling of the kind of nerd I am that one of the first thoughts I had on starting T. F. Torrance's The Trinitarian Faith was "This could use to be re-typeset." It looks like it was gorgeous. Key word being was.
Got the JetBrains Toolbox license for everything. And then realized I now have access to the ReSharper Visual Studio C++ tools. Yes!
Bizarre though it would have seemed to me just a year ago, Vim has now displaced Emacs for quick command line editing for me. Weird.
I really wish someone had explained "separation of concerns" to the person who wrote this UI/controller/blob.
The only thing keeping me sane as I work through the atrocious Win32 Shell APIs today is listening to Pärt's Lamentate.
I really hate that a constant expression and
const-qualified aren't the same thing in C and C++.
Really enjoying the score to The Martian this morning—nice work by Harry Gregson-Williams.
This is interesting: I've read some F♯ before, but it reads a lot more obviously to me now that I've read a lot of Rust recently. Why? Because for all that they're very different languages, both are ML descendants. It shows.
I ended up spending large chunks of the last two hours reading about American unincorporated territories. International law is weird, people.
Today I did a code review on my iPad while walking from school to a coffee shop, using my iPhone's data connection as a hotspot.
What a world we live in.
Related to my previous post—I really, really wish more of the fundamental papers on CS topics were freely available.
I'm suddenly finding myself with an interest in parsers and compilers. What is happening to me???
Inversion of control is a beautiful thing. Not least because it makes it so much easier to manage control over necessarily global state.
Here's a thing I'm quite okay with:
Ellie has invented her first totally-original (as opposed to borrowed from a TV show) imaginary friend. Her name, apparently, is "Ballerina".
Today, I edited and published Sap.py 1 and recorded, edited, and published New Rustacean e01. A nice, productive day of podcasting!
Tip for copying large files between Macs (like, say, a new OS installer): just connect them with ethernet to set up an ad hoc network and copy them that way. It's easily the fastest and easiest way to move large things between two Macs.
This week Kate learned to walk. Also, she decided to go on a goldfish-and-hotdogs-only food strike, and to wake up at 11pm and cry, shout, and scream for over an hour multiple nights this week. You win some, you lose some?
N. T. Wright makes it painfully clear that it's difficult (if not impossible) to understand Jesus fully and rightly without having a deep knowledge of the Old Testament:
Equally impressive are the strong hints, throughout the gospels, that Jesus was modelling his ministry not on one figure alone, but on a range of prophets from the Old Testament. Particularly striking is his evocation of the great lonely figure Micaiah ben Imlach (1 Kings 22), who, when asked about the coming battle, predicted the death of Ahab, king of Israel, by saying, 'I saw all Israel scattered upon the mountains, as sheep that have no sheperd.' Jesus, looking at the crowds, takes pity on them, because that is what they remind him of: leaderless sheep. Like Ezekiel, Jesus predicts that the temple will be abandoned by the Shekinah, left unprotected to its fate. Like Jeremiah, Jesus constantly runs the risk of being called a traitor to Israel's national apsirations, while claiming all the time that he nevertheless is the true spokesman for the covenant god. This, as we shall see, lies behind a good part of the story of Jesus' action in the Temple, and his subsequence 'trial': Jesus has predicted the destruction of the Temple and is on trial not least as a false prophet. Jesus replies to earlier critics and questioners with the sign of the prophet Jonah. Jonah was predicting immenent judgment on Nineveh, following his adventure with the fish; Jesus is predicting imminent judgment on Israel, and a similar sign will validate his message too. He is constantly redefining what the coming day will mean for Israel, warning her, like Amos, that it will be a day of darkness, not of light. Like Amos, too, he implies that the people of god are to be judged as the climax of the divine judgment upon all nations. The judgment which he announces upon Israel is sketched with the help of prophetic passages relating to the judgment of Jerusalem by Babylon, and also, more terrifyingly, passages which speak of the divine judgment upon Babylon itself.
Above all, Jesus adopts the style of, and consciously seems to imitate, Elijah. Here we are again in an interesting position vis-à-vis the sources. It is clear from all three synoptics that they, and presumably with them the early church as a whole, regard John the Baptist as in some sense Elijah redivivus. They nevertheless portray Jesus as acting in Elijah-like ways, and show that the disciples were thinking of Elijah-typology as giving them a blueprint for his, and their own, activity. Jesus himself, explaining the nature of his work, is portrayed using both Elijah and Elisha as models. Again, it is highly unlikely that the early church, seeing Jesus as the Messiah and hence John as Elija, created this identification out of nothing. However, at the same time, though John himself seems to have thought that Jesus was to be the new Elijah, Jesus actually returned the compliment. We begin here to see both parallel and distinction. Jesus' ministry is so like that of Elijah that they can be easily confused. He too is announcing to the faithless people of YHWH that their covenant god will come to them in wrath. But at the same time he is also acting out a different message, one of celebration and inauguration, which bursts the mould of the Elijah-model.
From all of this it should be clear that Jesus regarded his ministry as in continuity with, and bringing to a climax, the work of the great prophets of the Old Testament, culminating in John the Baptist, whose initiative he had used as his launching-pad.
—N. T. Wright, Jesus and the Victory of God
The pro me of the gospel does not further an autonomous individualism. It brings it to an end.
—Mark A. Seifrid, The Second Letter to the Corinthians
A friend recently reminded me of the work of Eric Whitacre, which I loved in college, but had forgotten about since. I'm deeply grateful for that reminder on this rainy day studying in the library.
The guy sitting next to me at the coffee shop is using Outlook 2015. What a horrifyingly ugly piece of software.
I find that I solve many software problems faster by writing them out with pen on paper. I wonder how common that is?
Dear Republicans: your opposition to net neutrality might be justifiable as something other than kowtowing to megacorporations if you ever got around to proposing something else. As is, all you're doing is propping up some of the nastiest, most anti-consumer companies in the country and sustaining monopolies and duopolies, supposedly in the name of "free markets".
Stop it.
N.b. This isn't intrinsically a partisan issue. It's become one, but mostly because Republicans have felt compelled to do the bidding of the telecom industry for… reasons.
The only thing worse than a government monopoly is a private monopoly.
If Republicans wanted to push for local loop unbundling in place of net neutrality, almost everyone would be for it. (The exception: telecom companies.)
4 hours of work, 6.5 hours of school, an hour of hanging out with my little girls over dinner and getting them in bed, and 2 hours of editing and publishing a podcast later… I think I'm good for the day. Time to read a book and snuggle with my wife and sleep.
Why, yes, I did just purchase a season pass for Doctor Who Series 9. And yes, I am giddy about it.
It would be pleasant if, for once, the historians and the theologians could set the agenda for the philosophers, instead of vice versa.
—N. T. Wright, Jesus and the Victory of God, 1996, p. 8.
I'm extremely impressed with the recently released Hack typeface. I'm currently using it at 11pt in my terminal, at 1920 by 1200 on my retina MacBook Pro—and it's totally usable.
Ever since that 18-mile run earlier, I have been craving (and therefore drinking!) orange juice. Must be low on something or other.
I installed the OS X 10.11 "El Capitan" GM today. Apple's advertised performance improvements are readily apparent; I'm impressed.
I took an 18-mile run today—the longest of my life so far. If you'd told me a half decade ago that I'd not only be doing this kind of thing but also feeling great afterward, I probably wouldn't have believed you. But here we are.
I'm so glad Google Fiber is building out in Raleigh-Durham. That pushed Time Warner Cable to bump its speeds a month or so ago, and this still makes me so happy:
Winning Slowly 3.09 runs to 42:10—after 7 hours of editing that cut out quite a bit of material. I think all our listeners will appreciate the final result, though; I can't wait to share it with all of you on Tuesday.
I have written hundreds of words of blog posts on my iPad Mini the last couple weeks: almost every word of my Rust and Swift series has been typed there. I'm surprised how workable it is. Slower than a physical keyboard? Sure. But still quite usable.
I just realized: I have no idea how to listen to music the way "kids these days do"—i.e., as singles. I only ever listen to whole albums.
I've been thinking about publishing my blog content in physical form, and of course I want to match the typeface. Time to start saving up to purchase a desktop license for Sabon, it seems.
Since Rust allows
unsafe code, it's easy to wonder how necessary it is. The answer: in general, not at all.
Listening to the Noah soundtrack this morning makes me want to get around to actually watching the movie. Good work, Mansell.
Filed my quarterly taxes. The North Carolina Department of Revenue's website is awful in every way: it makes the IRS site look positively splendid by comparison. Which takes some doing.
Needed to set up a simple test bed for a Python distribution with
setuptools, which depends on external DLLs. So I used Rust and linked it up with Python's FFI, because it was a perfect chance to see them interact.
That's kind of brutal—the new Apple Pencil with FiftyThree's Paper app:
I really wish I had time to make N. T. Wright's Jesus and the Victory of God the topic of my book review for my intro to New Testament this semester. And honestly… I'm kind of thinking about just going for it. I've wanted to read it for years anyway.
A lovely rain storm started, so I thought I would take a run. Five minutes in, the rain stopped and then it was hot and sunny and muggy the rest of the time. Goodness.
I couldn't figure out why none of my internet acquaintances were online today, then finally remembered: it's Labor Day. None of them are working!
I had forgotten both how good and how incredibly tired I feel after a hard fifteen mile run.
More than 2⨉ as many people live in NYC today than did in the 13 states when the US was formed.
Given that, our political institutions could probably use some revision.
Tip for other runners out there: buy last year's shoe model (on Ebay, Amazon, etc.). You'll pay way less.
I'm writing a bunch of C that needs to handle error returns. I'm really wishing I had Rust's
#[must_use] annotation right now. For that matter, I just want Rust's
Result<T, E> type available.
Observation: it is extremely difficult to compose when you have a(n adorable) one-year-old competing for the piano keys…
This is one of the single most beautiful sentences in the Bible, and it is incredible in the original:
τὸν μὴ γνόντα ἁμαρτίαν ὑπὲρ ἡμῶν ἁμαρτίαν ἐποίησεν, ἵνα ἡμεῖς γενώμεθα δικαιοσύνη θεοῦ ἐν αὐτῷ.
That is:
He made the one who knew no sin to be sin for us—so that we might become God's righteousness in him.
—2 Corinthians 5:21 (SBLGNT and my translation)
Of all my nerdy statements, this has to be near the top, but it's still true: I love RSS. It's a wonderful tool.
What are you using to track software development issues these days? JIRA, YouTrack, FogBugz, RedMine, or something else?
Last night as we were coming home from dinner with friends, the CD changer switched from one album to the next and Ellie delightedly said, "What's this? Pride and Prejudice!" Cuteness overload.
James Newton Howard's After Earth score is fairly generic action movie music. But it's really good generic action movie music.
Flame war time: I've basically concluded that for the tasks I use them for, I prefer Vim's modal editing style to Emacs' not-modal editing style.
I'd still rather use Atom/Sublime or IntelliJ IDEA for almost everything, though.
You don't just use illustrations in preaching; you illustrate something. You don't just offer applications in preaching; you apply something. That something is the word of God, rightly applied.
—Jim Shaddix, lecture, August 19, 2015
Thank goodness for Backblaze. After a bad OS X 10.11 beta install, I had to revert to a Time Machine backup from mid-July—but I'm getting back all the changes I've made in the interval.
Sometimes it is tempting as a designer to think that users are stupid. Don't. If the software is not working for users, that implies stupidity in another party entirely: the one that designed the software. 😉
One of the great perils of our age is to opine publicly on matters that once we would have (rightly) left private—for example, our opinions, for good or ill, of other writers or thinkers. (He says, noting the danger in himself.)
I've been wearing my Garmin outside my runs a little the past few days, and it receives, but cannot act on notifications. For the first time, I get the attraction of an Apple Watch. Maybe the third generation or so, I'll get one.
Ugh. I just discovered that a support email address has been sitting unattended for eight months. (Totally my fault.) Not a lot of problems… but any unanswered emails for that long are the worst user experience. So frustrated with myself right now.
Spent most of the morning organizing and planning out my semester with OmniFocus. Time-consuming—and worth every second.
I've been using Input for about ten days now. It grew on me slowly, but I really like it. Using it everywhere now!
It turns out browsers render CSS transitions for positioning much more nicely than they do those for the box model (perhaps unsurprisingly, on reflection). Use
position and
top instead of
margin to smoothly animate an item moving within its container.
CDN configured. Sites both 80% done. These podcasts will launch this week, unless something goes particularly sideways.
The domain configuration for Sap.py and New Rustacean is done, and the websites are coming along. Almost ready!
It's nice when you evaluate a potential product's market more closely and find your idea might actually be viable.
In my dream of dreams, Trump actually runs third party, which emboldens Bernie Sanders (should he not get the nom–whoa, Sanders vs. Trump would be the greatest political race OF ALL TIME) to also run third-party, since all of them have viable "cores," and we get a four-party race that spawns four actual parties and American politics is freed from its bipartisan lock and a bald eagle screams across the sky while Stephen Colbert tears his shirt and flexes his muscles and fireworks explode in the shape of America over his head.
—A friend
Where do you like to set your
--prefix when configuring personal development tooling setups? Somewhere under ~? Or somewhere else?
Dear Washington Post: Georgia was designed for high legibility on screens. You may think it's "newspapery" to squish the letters together with
letter-spacing: -1.75px, but actually it's just ugly.
If you're delivering images over the web, you need to be using something like ImageOptim. No excuses.
I give up. This is clearly a not-getting-work-work-done kind of day, so I'm just going to get the New Rustacean and Sap.py sites up.
My ASICS Gel-Lyte33s lasted me over a thousand miles. The Gel-Lyte33 3s I got to replace them lasted less than 450 miles (more in line with normal expectations for running shoes). I wonder what changed between the models?
Just a few minutes ago, I heard Ellie singing a song that mashed together "Let It Go" with something about munchkins. People who know me well know where the munchkins bit came from. "The apple doesn't fall far from the tree!" Jaimie immediately opined. 😏
Tradeoffs time: whether 'tis better to drop in an off-the-shelf open source solution for this particular problem, and bring in all the extra weight it includes, or do it myself and pay in the time spent.
Tonight, Jaimie said that she thought Rust had turned me into a bit of a fanboy. Don't tell anyone, but I think she's basically right…
The uppers are coming off on both of my current pairs of ASICS running shoes. I guess it's time to upgrade. $$$…
I followed up on my research from last night about using Input on the New Rustacean typeface. I don't love the subscription model, but individual faces are $2.50/year at my scale. I think I can swing that. So I'm going to!
I can think of no more effective an argument for Rust and its memory safety guarantees than the time I spent this weekend hunting down bugs caused by buffer overruns in decades-old C code.
I found a
CEditDlg instance and went looking for it in the MSDN docs, and was a bit nonplussed not to find it. Oh. It's a
CFileDialog subclass, and never mind the semantic ambiguity arising from the existence of a native
CEdit class. 😐
Well, hello there, Smetana's "Má Vlast"—I don't believe we've met before, but you are absolutely delightful.
This is a Chicago Symphony Orchestra playing Mahler Symphony no. 2 kind of work morning.
Ellie and Kate consistently get up half an hour to an hour earlier on Saturday mornings than any other day of the week. Coincidentally—or is it?—Saturday is also the only day we try to sleep in. It's like they know, and plot against us!
Well, blast. I was thinking I might also use Input for the website design for NewRustacean.com. But Webtype doesn't offer a purchase model, only a subscription model, and I'd really—really—rather not. Not least because it locks me in well past whatever point I end the show.
Thinking about setting Input as my typeface for doing my development for a week or two, see how it goes.
Anybody tried it? Bugs or problems to report?
Quote of the week (3-year-old Ellie talking to her mom, who has been learning Python): "Mommy! I have a function for you!"
☑ Finished reading the Rust by Example book. ☑ Submitted a couple pull requests. ☑ Concluded that I really like this language.
Hooked up my digital piano to Logic Pro X tonight and wrote the theme for a podcast we're doing together on learning to program. It's so good!
Don't blame me: it's all @manton's fault. He started this.
New modem installed and configured. 120Mbps is something else. Now, to set up the wireless router so that I can get something above 10Mbps anywhere besides right next to the cable outlet.
About to set up my new cable modem. If all is as expected, we should get about 5⨉ our current speed when I'm done.
A minute ago, Ellie asked me to play with her and Kate. I started to answer, "No, I need to finish publishing Winning Slowly." Then I remembered: putting that first would be pretty much exactly the opposite of Winning Slowly.
So far, at least, System Integrity Protect ("rootless" mode) is causing quite a mess on the El Capitan betas. I'm sure Apple will get it straightened out… and I'm hoping it's by the next public beta.
Very interesting: Bartender works with System Integrity Protection… if you disable it, then reenable it. Details here.
Hey, Google, I know I keep telling you this, but you don't seem to be listening. If I put a search term in the box, I actually want it in my results. I know you think your algorithm is smarter than me. But it isn't.
I've now migrated all my chriskrycho.com emails to Fastmail. Still have some organizing to do, but I'm no longer tied to Google Apps there. Just a few more addresses to migrate…
Whoa! After years of demand, Confluence finally added support for importing Markdown-formatted content in its "Markup" box. It's not native support for editing in Markdown… but it is a step forward. Good work, Atlassian.
Just recorded the first episode of a new, short, weekly podcast I'm working on. Audio should be live in about a week!
Internet acquaintance and generally solid thinker Derek Rishmawy hits this nail right on the head:
And here's where I just want to say, if your first instinct when you watch or read about these videos is to think, "Geez, are you telling me they lied to get the footage of these people sorting through these fetal parts, or discussing prices non-chalantly over lunch? Woof. That's a bridge too far", then you're reading the story wrong.
I started looking into bespoke publishers for that blog-post-book idea. First one I found has this for a logo:
Yes, that is Comic Sans. Immediately filed under nope nope nope.
I think—so I can have a hard copy—I may start printing a nicely typeset of my blog posts each year.
People often point to this (hilariously accurate) flowchart to explain how to solve tech problems… but it leaves something really important out: we "techies" know the right questions to ask. That makes a big difference.
Another little feature of Rust I quite like: the use of
traits instead of inheritance to share behavior. All the benefits of inheritance, and a few more besides, but none of the drawbacks.
Ooh, look! A beta for Reeder 3! Shiny!
If you're running Windows 10, you should be aware of its defaults with sharing WiFi passwords, and know how to change them.
An advantage to running Windows 10 in a VM: this boondoggle isn't a problem for me, because as far as that VM is concerned, it's talking over an ethernet connection and doesn't have any idea there's a WiFi network involved.
On a semi-related note to the previous post… I love the new option to hide and show the menubar automatically on non-full-screen views in OS X 10.11.
El Cap public beta 2 was all sorts of broken. Things like copy and paste weren't working right! Beta 3 looks much better so far.
I just realized that one of the reason Rust so strongly appeals to me is that its design embodies one of my favorite traits from the Zen of Python: explicit is better than implicit.
Courtesy of something in my stack not playing right, I've now been reduced to pushing and pulling changes between OS X and my Windows VM through Bitbucket, rather than just having a mapped drive locally. This feels silly.
Per @manton's suggestion, I've set up IFTTT recipes for ADN and Twitter to repost microblog posts from my own blog to those services. If you see this post either place, it worked.
Hmm, this may be telling of the future… SourceTree now introduces itself as a Git tool. No mention of Hg at all. 😟
Another one in the music industry—but in this case, companies taking the long view and advancing the good of the whole community, rather than just their own bottom line. (Spreadbury, the guy behind SMuFL, was one of the team laid off in the aforementioned layoff from the Sibelius team, and now heads the product development for a new notation software tool from Steinberg.)
Avid: charging Sibelius users more money than ever for less value than ever, after laying off their dev team a couple years ago just to maximize profits.
This is not Winning Slowly material here, folks. They lost me (and many other) customers along the way, and they're headed further down that road here.
Subscription models for software can be valuable and reasonable—but the providers have to justify them with product to match. Avid isn't, and hasn't been. I've no doubt they're continuing to profit in the short term, but this will no doubt erode their market position and waste an amazing product in the long term. Greed destroys good things.
I can feel my motivation on this paper dropping by the hour. Must. finish. it.
So… Apple Music is going to have some serious issues if it can't get "playing music on demand" separate from iTunes store issues.
Pro tip: it turns out that generic versions of psychotropic medications may not be as effective as the brand-name version. Lessons we've learned the hard way in the last two months.
One of the things that impresses me most about the new DayOne sync is how blazingly fast it is. Changes are nearly instantaneous.
Me: I'm really delighted by the big girl you're growing into, Ellie, and I love you so much!
Ellie: I really love my magazine!
Woke up to my alarm with my head feeling stuffed with gauze, went back to sleep, woke up with my wife's alarm to find the room spinning, went back to sleep, woke up to just a plain headache. Rough start to the week…
Trying to delete an Amazon account.
Good grief, this is a labyrinthine process.
Just one more reason to dislike this company.
How in the world have I gone all this time and never listened to Krzysztof Penderecki before today? This is outstanding stuff.
My dear wife has started teaching herself Python as a hobby. She has the essential skill required to succeed as a programmer: the willingness to persevere even when it isn't making sense to her. I'm extremely impressed.
That time when I accidentally deleted my "dev-tools" folder in /Applications.
I'm grateful for Time Machine right now.
A wished-for future Apple laptop lineup: 12- and 14-inch MacBooks, 13- and 15-inch MacBook Pros. I'd do a 14-inch MacBook and a retina iMac as my remote/at-home combo in a heartbeat.
I want so much to grind some of this single-origin decaf coffee and drink it right now.
But my 1-year-old is asleep downstairs.
So: nope.
Trying to decide whether the kind of "not good" I'm feeling today is the kind that will get better or worse with exercise.
Playing with CSS transforms and transitions while I listen to a lecture on Romans for my New Testament class. Keep myself awake…
Found a new use for Rogue Amoeba's Audio Hijack: boosting audio from too-quiet vidoes. Sweet.
Working on an essay on theological anthropology. The introduction alone is 650 words long…
I cannot wait till I can switch to ES2015. Got bit by the stupid var scoping issue again. You'd think I'd be past that by now…
Reading JavaScript Allongé. Just got to combinatorial logic (kestrel and idiot bird, for those in the know). Then he destructured a list with them.
Mind. Blown.
One of the things that annoys me most when writing C is how difficult (really, almost impossible) it is to do anything generically. The same operation for different items in a struct? Good luck. It's possible, but rarely worth the work.
I heard someone suggest that even if the subordination of the Son in the Trinity isn't expressly taught, it's useful in debates, so why not?
Besides the fact that I think the idea is contrary to Scripture, we should never reduce the Triune I Am to mere means to other ends.
Q: What is the chief end of man?
A: To love work and be as efficient as possible in every task.
—the first question in the Western Technocratic Catechism
Depression is an awful, awful part of our fallen existence. I'd do almost anything to take that darkness away from my wife.
God has grace for us in the meantime. But we're ready for resurrection bodies with healed brains.
"Come, Lord Jesus!" —Revelation 22:20
Finally giving FontStand a try.
Holy wow. This is a great tool—good software, good business plan.
It's 96° out, it feels like 105°, and it is about 50% relative humidity. I got sweaty walking to and from my car. Gross.
I've been using Cardo as the typeface for theology posts for the last month or so; I'm thinking about switching again. The barrier? Greek and Hebrew support. Because of how
font-family and font-loading work, I may be able to get away with adding a custom font for them, though.
Holy Scripture is more than a watchword. It is also more than 'light for today.' It is God's revealed Word for all men, for all times.
—Dietrich Bonhoeffer, Life Together, p. 50.
The Counter Culture Finca Al Puente Honduran I ground for my Chemex this morning was amazing—one of the best cups of coffee I've ever had.
Well, tonight I seem to have finished my journey from the dispensationalist premillennialism I grew up in through the historic premillennial view I've held for the last few years into amillennialism.
<base>, and SVG
xlink:href work correctly in Firefox.
To my great delight, and thanks to a suggestion from App.net friend @jnm, I was able to get a static copy of my 2012–2013-era site archived this evening. That in turn means I'll be able to replace my WordPress install with static HTML pages over the next few weeks. Victory.
I have been using a small notebook to jot down ideas and thoughts as they come to me the last few weeks. It's funny, but I can almost physically feel them flipping different switches in my brain as I write with pencil and paper rather than tapping on a screen. Medium matters.
Kate kept us up late last night (no idea why). And we ran out of coffee yesterday. It's going to be a long day…
Our youngest has been sleeping through the night for a week now. Going to bed at 9:45 & getting up at 5:15 is suddenly doable again. Huzzah!
If, in your discussion of eschatology, you skip or glide over physical resurrection, you have missed Christian hope almost entirely.
I'm reading Life Everlasting, and reminded again just how much form matters. This is heady stuff, but the authors (or their editors) seem incapable of rising above a dry recitation of the facts. It undercuts everything they say.
Tip: if you're using Mercurial's bookmarks to track lightweight branches, somewhat analogous to Git's branches, use Mercurial's special
@ tag to track whatever you want to treat as the tip of a
master branch. That way, any clone will check that out by default.
Thinking about how to structure the content on my blog. Layout, categories, etc. I think the problem is insufficient clarity about data hierarchy—a lack of understanding about how the pieces relate to each other. I'll keep working on it.
I just taught Jaimie how to use GitHub for Mac (as she is helping a friend with his Jekyll-powered website), and explained the basics of distributed version control. She is totally a boss. And GitHub for Mac is a pretty good app.
I was inspired by the release of Tweetbot 2 for Mac to finally try seeing what utility I can wrangle out of lists. I think it'll be a win.
I just discovered that Jason Snell and John Siracusa are actually doing Robot or Not. I'm ridiculously excited.
I officially understand why people like triathlons. Cycling after running is just fine. Running after cycling is amazing.
In "Web Decay Graph", Tim Bray says pretty much exactly what Stephen and I said on Winning Slowly last year. Probably the first and only time we'll ever "scoop" the rest of the internet.
Ugh. I've spent an hour searching for an Evernote replacement, and my conclusion is: I'm going to end up using flat text files and grep.
I think I'm going to give up on Evernote again. UI problems left and right.
So… what's a good taggable, hierarchical, searchable notes app?
One of the tricks as I'm trying to work out what I want to do with Evernote: I have a bunch of old Evernote I want to pull in, but I am intentionally starting fresh. Now I have to decide how to bring that content over, especially as regards its tags, etc…
I am slowly working out a system for using Evernote to manage notes, books to read, etc. I have tried this before, but failed to think carefully enough about how to organize my system. Hopefully this time will work out better!
Found my wallet! After I ordered replacement debit and credit cards and driver's license, of course. (It was in the back of Jaimie's 2nd-grade Sunday School teaching binder…)
Wait, what's that? The sound of an update to the about page, and one that includes a picture, for the first time since I relaunched this site using Pelican instead of WordPress? Can it be?
I'm listening to lectures on theology… at double speed. It's surprisingly comprehensible even at that pace, and getting through the material in half the time is no joke.
In the process of replacing my wallet and all of its contents: driver's license, credit and debit cards, etc. Not my idea of a good time, to say the least.
One of (many) irritations with using Angular: every search turns up Bootstrap solutions.
I'm not using Bootstrap.
Why do we need to model the world using abstractions invented for pencil and paper? Can we solve quantitative problems without manipulating symbols?
Answer: exploring new approaches like this is great—but throwing out patterns that have worked for millennia is… unwise.
Neat! I just created a simple workflow in Workflows on my iPhone, which lets me generate new posts like this on the fly. I'm hoping to get to a point where I can even auto-publish with it… but that'll be a while.
Every time I watch the kids at FBC Durham during out "Extended Session"—our main service childcare session—I get sick. Take it as a mark of my love for you, saints of FBC, that I keep doing it anyway.
I've come to the conclusion that I really need to find a good way to organize links, notes, etc. for later reference. I've tried Evernote before, and didn't love it, but I don't know of anything better. Time to try it again, maybe with a different approach this time, I suppose?
Every once in a while, I get frustrated with doing all my website stuff a bit more manually using Pelican. But then I remember the dark days, of WordPress, and I don't regret the switch a bit.
Currently on my mind: how to chunk up the Bible text with semantic blobs and chapter/verse trees in corresponding data structures, in order to present meaningful sections of content (paragraphs, etc.) without resorting to delivering a whole book.
This post brought to you by a brand new script, which automatically generates the file needed—YAML header and all!—to create a new microblog post on chriskrycho.com. Python for the win.
I've only been using tmux for about a week. I can't even imagine trying to work without it anymore.
I confess: my first response to seeing this page was a flash of anger: Hey, he didn't just learn from my site configuration, he actually stole my site design! And then I remembered: I open-sourced the design precisely so people could do that. This was just the first time I've ever actually had someone reuse something I did and shared like this. It was a strange (but ultimately wonderful) feeling. I hope to have it again many more times.
In any case, I rather like the tweaks Andrew Comenga made to my design to make it his own; go take a look!
That time I misread a quiz time on Moodle and thought it closed at 12:05 am tonight… but that's when it opens. :sigh:
A friend of my complimented me tonight, describing me as "intelligent and articulate." I appreciated and accepted the compliment, but it struck me later: good as those things are, they are not the same as "wise" or "Godly"—and those are what is necessary to teach well.
On the one hand, I really enjoy (many of) my seminary classes. On the other hand, having no time at all off between the end of my Spring semester and the beginning of the summer semester makes me want to be done with my M. Div.
Updated the websites today. Did a bunch of back end work that should be basically invisible or make a change seamlessly on the front end for both chriskrycho.com and winningslowly.org. Very satisfying day; nice to be working on things just because I can.
Microsoft Visual Studio: bringing you links in error messages… that aren't clickable!
I'm doing Project Euler with Elixir as a way of keeping myself sane while I try to get a project that worked fine in Visual Studio 2015 Technical Preview to build in Visual Studio 2015 Release Candidate. sigh
Poetry, as I have been arguing throughout this study, is not just a set of techniques for saying impressively what could he said otherwise. Rather, it is a particular way of imagining the world—particular in the double sense that poetry as such has its own logic, its own ways of making connections and engendering implications, and because each system of poetry has certain distinctive semantic thrusts that follow the momentum of its formal dispositions and habits of expression.
—Robert Alter, The Art of Biblical Poetry, p. 151.
What I would like to suggest about the effect of the language of poetry in this [Isa. 1:2–9] and most other Biblical prophecies is that it tends to lift the utterances to a second power of signification, aligning statements that are addressed to a concrete historical situation with an archetypal horizon. The Judean contemporaries of Isaiah the son of Amoz become the archetypes Sodom and Gomorrah in respect to both their collective destiny and their moral character. If one considers, as the metaphors of the poem require one to consider, how God has treated them as beloved sons, then their exploitation of the poor and the helpless in their midst (1:23 and elsewhere), in flagrant violation of God's commands, becomes a paradigmatic instance of treachery, of man's… capacity for self-destructive perverseness. In this fashion, a set of messages framed for a particular audience of the eighth century B.C.E. Is not just the transcription of a historical document but continues to speak age after age, inviting members of otherwise very different audiences to read themselves into the text.
—Robert Alter, The Art of Biblical Poetry, p. 146.
When the police beat an 87-year-old grandmother who called 911 to get medical help for her grandson who had been shot—just because they don't believe her—and suffer no consequences for it, the "law" as such has become wicked. This doesn't excuse riots, but it sure as heck explains them. Baltimore is broken, but primarily in a massive system of abuse. Yes, pray for peace. But remember that civic peace comes in large part through civic justice; rule of law follows the law ruling justly.
Connor Friedersdorf has a lot more; you need to read it, even though—or rather, precisely because—it is such a mess.
Current status: buried in the weeds of
extern "C" and DLL linkage.
Let's just say I'm looking forward to finishing this part and getting back to the bits where I actually make awesome things instead of just fighting with the tools.
One of the small joys of running my site through GitHub Pages is that you can trivially see the entire history of this site since I started doing it this way: just check out
gh-pages at a date. I'm especially mindful of that for future archaeology, as I'm tweaking it right now.
The screen on Jaimie's Kindle Keyboard cracked. Now we have to figure out what we're going to do to replace it… and since we've basically sworn off of Amazon (a story for another day), I guess it's time to start evaluating other ereader options.
There are things I want to do with my website that I just can't do effectively in Pelican (like art-directed, multi-part presentations of certain content), and which were even worse with WordPress (which I loathe). I basically need a bespoke CMS to do everything I want. Alas.
A major irritation of writing Hebrew papers in Word: unlike every other tool on my Mac, Word does not properly transition between left-to-right and right-to-left languages. I have to type the Hebrew letters in left-to-right order. Argh.
I've officially migrated the management of my Pelican environment (with which I build my blog) from virtualenvwrapper to pyenv. And I love it. Next up: the two remaining virtualenvwrapper environments I have.
7 pages of this paper, down. 13 to go. This is going quickly—the advantage of having done lots of good preparatory research work.
I've been tweaking things on this site a bit as part of my plan to freshen it up and make it more in line with my desires (and also to take a break from working on this crazy Hebrew paper…). I'm happy with the progress and changes I've made.
No matter that Deuteronomy had envisioned it and the prophets had foretold it; nothing could prepare one for the ruel reality and the apparently finality of the situation. The burden of Lamentations is not to question why this happened, but to give expression to the fact that it did. At certain moments the book seems to look beyond the destruction, to hold out hope for the future, but in the end despair overcomes hope. Past and future have little place in the book. It centers on the "present"—the moment of trauma, the interminable suffering. The book is not an explanation of suffering but a re-creation of it and a commemoration of it.
Why immortalize this moment of destruction? Because in its own way it signals the truth of the Bible's theology, and it points to the continuation of the covenant between God and Israel….
This explains why the poet can cry out to God and expect a response, why can vent his anger at God, why he can declare that God continues to exist even though his temple does not (Lam 5:18–19), why God is portrayed as so strong and the enemy gets no credit for the destruction. The suffering is, as it were, an affirmation that God is still there and still concerned with the fate of Israel. He may hide his face, but he has not ceased to be Israel's God. Lamentations contains the seeds of comfort and religious rebuilding that the exilic prophets (especially Second Isaiah) developed more fully in the aftermath of the destruction.
—Adele Berlin, Lamentations: A Commentary, 18–19.
Ugh. Nothing like being up sick half the night (throwing up etc.) to start the busiest week of the semester.
This paper requires that I cite 4 commentaries; I have notes from 9 so far. I need to write ~5,500–6,000 words; I have ~6,750 words of notes so far.
I need to stop reading articles and commentaries soon…
… Lamentations more than anything is about formation: discovering what it means to be human in a world where things often times seems [sic] upside down. Lamentations squares off with this reality and responds with artistry and humanity before God.
—Heath A. Thomas, Poetry and Theology in the Book of Lamentations, p. xi.
Downside: our girls both got up at 6:30 on a Saturday morning. Upside: they both slept through the night. I think I'll take that over/under.
Yet again, Atlassian demonstrates that they couldn't care less what their customers actually want—at least, the small business customers like me. Adios. (Sadly, because I like Mercurial, but I'll take Git with GitHub/Gitlab.)
I've been playing with pyenv. I think I'm sold. By which I mean: "How long will it take me to convert from doing things with Homebrew and virtualenvwrapper to pure pyenv?" The answer is: I should wait till I finish my 20-page Hebrew exegetical paper.
It is simultaneously exciting and unnerving when you see something delightful while doing exegesis on a passage… and none of the commentators see it.
The Verge:
"I don't want a back door," Rogers said. "I want a front door. And I want the front door to have multiple locks. Big locks…."
Rogers suggests the adoption of "front door" access will allow for essential security measures while keeping data safe from hackers or an outside attack. But opponents of the idea note that even broken into pieces, a master digital key creates security flaws. "There's no way to do this where you don't have unintentional vulnerabilities," Donna Dodson, chief cybersecurity adviser at the Commerce Department's National Institute of Standards and Technologies, told the Post.
That last bit is absolutely true. The government basically wants to make sure it can spy on anyone, any time it wants. That's a bad, bad plan.
I have flown a lot (for me) lately; it has been both wonderful and terrible. I love seeing different places; I hate being away from my family.
If you're in a meeting and you know there's a fight to win, fight that one as hard as you have to… and let every other, less important thing go.
People who edit podcasts take different tacks on this, but for Winning Slowly, I happily shift around interactions, cut "uhhs", and generally improve the sound. My goal is for the show to be clear, not for it to be exactly what we recorded.
Dear TSA, allow me to resolve your worry that "it could technically be anything in that water bottle"—by drinking from it.
For a class this year, I had to subscribe to a Baptist state paper. I picked the North Carolina paper, the Biblical Recorder. The experience of the "digital paper" is awful. It's basically scans in a copy-protected container—as un-web-native as can be. These things need to improve, or they'll die in the next generation.
This is sort of a hybrid review and essay. The review proper concludes:
In short, Echoes of Eden says all the right things. Barrs has provided a healthy, sound theology of the arts, reiterating and synthesizing the helpful work of Schaeffer, Lewis, Tolkien, O'Connor, and Dostoevsky. What is more, his survey of English literature grounds that theology in concrete examples we can follow. This is a solid book.
But there was a bit more to say about this, because…
There was one thing it lacked, though: beauty of its own. As Barrs himself says, "A book that is not well-written, no matter how compelling the story is, will not be reread multiple times" (114). I doubt I will read Echoes of Eden again, because this is true for non-fiction as well. Form matters. It may not be quite true that the way we say things is just as important as what we say—better to say the truth boringly than a lie splendidly—but it comes a close second. The truth is beautiful, and we should always aim to present it beautifully.
I think you'll find the rest interesting! Take a look.
A note: I actually meant to have this reviewed about 18 months ago. I got buried in Greek III and it totally slipped my mind! Gladly, the folks at Crossway who sent me the book were understanding.
For as when a figure painted on wood has been soiled by dirt from outside, it is necessary for him whose figure it is to come again, so that the image can be renewed on the same material—because of his portrait even the material on which it is painted is not cast aside, but the portrait is reinscribed on it. In the same way the all-holy Son of the Father, being the Image of the Father, came to our place to renew the human being made according to himself, and to find him, as one lost, through the forgiveness, as himself says in the Gospels, "I came to seek and save the lost" (Lk 19.10)…. So, rightly wishing to help human beings, he sojourned as a human being, taking to himself a body like theirs and from below—I mean through the works of the body—that those not wishing to know him from his providence and governance of the universe, from the works done through the body might know the Word of God in the body, and through him the Father….
Now then, if they ask why he did not appear through other more noble parts of creation, or use some nobler instrument, as the sun or moon or stars or fire or air, but merely a human being, let them know that the Lord came not to be put on display but to heal and to teach those who were suffering. One being put on display only needs to appear and dazzle the beholders; but one who heals and teaches does not simply sojourn, but is of service to those in need and appears as those who need him can bear, lest by exceeding the need of those who suffer he trouble the very ones in need and the manifestation of the divine be of no benefit to them….
Properly, therefore, the Word of God took a body and used a human instrument, in order to give life to the body and in order that, just as he is known in creation by his works, so also he might act in a human being, and show himself everywhere, leaving nothing barren of his divinity and knowledge. Again, I repeat, resuming what we said before, that the Savior did this in order that as he fills everything everywhere by his presence, so also he might fill all things with the knowledge of himself, as the divine scriptures say, 'The whole earth was filled with the knowledge of God' (Isa 11.9).
—St. Athanasius, On The Incarnation, 14, 43, 45.
A faithful worship leader magnifies the greatness of God in Jesus Christ through the power of the Holy Spirit by skillfully combining God's Word with music, thereby motivating the gathered church to proclaim the gospel, to cherish God's presence, and to live for God's glory.
—Bob Kauflin, Worship Matters, p. 55.
Doctrine is not merely an affair of the tongue, but of the life; is not apprehended by the intellect and memory merely, like other branches of learning; but is received only when it possesses the whole soul, and finds its seat and habitation in the inmost recesses of the heart…. To doctrine in which our religion is contained we have given the first place, since by it our salvation commences; but it must be transfused into the breast, and pass into the conduct, and so transform us into itself, as not to prove unfruitful.
—John Calvin, Institutes of the Christian Religion, III:6.4.
One thing I didn't talk about in comparing reading experiences on a Kindle and on an iPad the other day is the elephant in the room: old-fashioned books. I enjoy Kindle and iPad, but I still love books best. Turns out I'm not alone… and there might just be reason for it.
Paper books were supposed to be dead by now. For years, information theorists, marketers, and early adopters have told us their demise was imminent. Ikea even redesigned a bookshelf to hold something other than books. Yet in a world of screen ubiquity, many people still prefer to do their serious reading on paper.
Count me among them. When I need to read deeply—when I want to lose myself in a story or an intellectual journey, when focus and comprehension are paramount—I still turn to paper. Something just feels fundamentally richer about reading on it. And researchers are starting to think there's something to this feeling.
I spent a good bit of time working on this over the last week, and I hope you'll find it helpful.
Last week saw the premiere of Darren Aronofsky's Noah, and with it a (predictable) storm of controversy from the evangelical community. Reviews have ranged from predictably critical to outright disdain to hostile readings, and from strongly (though not unreservedly) positive to more restrained restrained affirmation of the film on aesthetic and spiritual grounds to especially measured theological and artistic engagement. In short, the responses spanned exactly the range one would expect from the evangelical community, which is itself deeply divided on the purpose, value, and meaning of the arts—decades of conversation on the topic notwithstanding. Noah works as a sort of theological-artistic Rorschach test. We seem to find it in what we expect given its origins and our disposition.
Rather than offer another review (which would add nothing to the conversation at this point), or decry once again the predictable evangelical response to the arts, or even critique reviews with which I disagreed, I thought it might be useful instead to ask where we stand today and point to a few places we might grow from this.
I think you'll find the rest of the piece salient and helpful.
This bit by Alastair Reynolds is an excellent summary of the position to which I have slowly come over the last few years of reflection on the question of physical death before the Fall. It shows the influence of patristic thought in the best way possible, and also demonstrates a great handle on the bigger picture of salvation history in the whole of the canon.
A few salient quotes. First, on moral and physical perfection:
Perfection was not the creation's natural state, but its intended destiny (and salvation is not a 'rebooting' of creation to its primary state, but the restoring of creation to the future that God originally intended for it)….
With perfection, our wills will be so capable of apprehending our good that we will no longer be capable of willing to do evil, not by virtue of some external compulsion, but by virtue of mature wills and natures and their appropriate mutual correspondence.
And then from the conclusion, which I positively loved:
First, Christ's obedience is not about 'innocence' but about 'perfection'. Christ brings humanity to the height and fullness of its divinely intended moral stature. He gives us, not merely innocence or obedience, but full maturity.
Second, humanity was always intended to die and rise again to a more glorious form of life. Christ death and resurrection achieves this destiny.
Third, as the last Adam, Christ will pacify and tame the entire creation, ruling until every enemy is placed under his feet.
Fourth, as we are in Christ, the bad character of death is minimized. We are not unclothed to be left naked, but in order to be more fully clothed, to have death swallowed up in life. We are still subject to the hostile attacks of the world and to the possibility of death within it, but Christ is the Tree of Life and we have unrestricted access to him. Death is no longer the alienating power that it once was.
This is a great read, start to finish. "Death Before the Fall"
The short story is the pastoral form for narrating Heilsgeschichte (salvation history) in the vocabulary of Seelsgeschichte (soul history). In the Heilsgeschichte of Judges, for instance, the enmity of the Midianiites is kerygmatically integrated into the historical narrative and shown to be a part of salvation; in the Seelsgeschichte of Ruth the bitter emptiness of Naomi is pastorally attended to under the dynamics of providence and guided to a concluding fullness. In the Heilsgeschichte of Exodus the formidable and unyielding Egyptians are judged and defeated in the catastrophic plagues and miraculous sea crossing; in the Seelsgeschichte of Ruth the everday ordinariness of gleaning in the barley fields is used as a means for accomplishing redemption. In the Heilsgeschichte of Joshua the gigantically walled fortress Jericho is surrounded and conquered by the total community of God in colorful parade, accompanied by brilliantly sounding trumpets, and the promised land is entered; in the Seelsgeschichte of Ruth an old levirate law is patiently and quietly worked through by some old men at the city gates of provincial Bethlehem, and a link is forged in the genealogical chain of the Messiah.
—Eugene Peterson, Five Smooth Stones for Pastoral Work, pp. 84–85.
My latest piece over at Mere Orthodoxy (and the first such in too long):
It has been common these past few years to speak of "incarnational theology" as a way of describing the Christian mission to the world: we ought to "incarnate" Christ to the world as Christ "incarnated" the Godhead to us. There is much to appreciate in this sentiment…. Yet for all that, I think that applying the language of incarnation to believers is a serious mistake.
The Incarnation matters, and it matters as more than a means of getting Jesus to the cross so that he could die for our sins. We evangelicals too often reduce everything to penal substitutionary atonement. Yes, the atonement is incredible and amazing. It is one of the central affirmations and joys of the Christian faith: our sins are paid for! Glory to God! But Jesus did more than that, and he is worthy of yet more praise. He did not stop at paying the price for our sins while leaving our bodies subject to corruption. He did not content himself with performing a judicial act while leaving our wills broken, certain to turn again to the same sin that led to our death in the first place.
I think this is the best thing I've written so far this year; I hope you find it stimulating.
Christ and Pop Culture has some great follow-up on the link I posted last week:
If you run in certain Facebook circles, you've likely already read that North Korean leader Kim Jung-un has called for the execution of 33 North Korean Christians. According to the widely circulated reports, these 33 people were detained after it was discovered they had ties to Kim Jung-wook, a South Korean missionary whose arrest for religious activity last year has made international headlines….
But here's the thing: No one can verify this call for executions actually took place.
A great example of journalism done right, and of how Christians ought to carry ourselves in the public square. It matters whether our facts are right or not— even when the "message" might be right either way. The whole thing is worth your time.
Great piece here from Alan Noble, who is increasingly showing himself to be one of the sharpest guys around.
It seems inevitable that our country will try to combat generational poverty and all its great harms by investing heavily in early childhood intervention. We already see signs of the State moving towards such programs with President Obama's 2013 State of the Union address and Mayor de Blasio's expanded pre-K. Tragically and despite enormous costs, de Blasio's pre-K initiative in New York will most likely have very modest results, particularly since it begins intervention at age four, so late in the child's mental development. The question for the church is, will we allow the state to take the initiative, or will we take up this task and engender the kind of deep, redemptive healing that the state can only dream of?
You should (1) read the rest of this piece and (2) read lots more by him and other sharp guys at his homebase Christ and Pop Culture.
The Washington Times reports:
North Korea tyrant Kim Jong-un has reportedly ordered that 33 Christians believed to be working alongside South Korean Baptist missionary Kim Jung-wook be put to death.
N.b. the source is Breitbart, which I usually take with a very large grain of salt—but this is not exactly surprising for Kim Jong-un or North Korea, so it is deserving of further investigation and prayer in any case.
Pretty damning of the current (lack of a) regulatory regime, if you ask me:
According to a recent study by Ookla Speedtest, the U.S. ranks a shocking 31st in the world in terms of average download speeds. The leaders in the world are Hong Kong at 72.49 Mbps and Singapore on 58.84 Mbps. And America? Averaging speeds of 20.77 Mbps, it falls behind countries like Estonia, Hungary, Slovakia, and Uruguay.