<?xml version='1.0' encoding='utf-8'?><?xml-stylesheet href='/rss.xsl' type='text/xsl'?><rss version="2.0"><channel><title>Whenhen.com Blog - Sync' up! ... without getting drained</title><link>https://blog.whenhen.com</link><description>Whenhen is the solution for busy people to sync calendars over text/SMS.</description><item><title>Vibin’ With Erlang</title><link>https://blog.whenhen.com/posts/vibin-with-erlang.html</link><guid>https://blog.whenhen.com/posts/vibin-with-erlang.html</guid><description>I worry only because of the craft of fine code will be lost for good.</description></item><item><title>What to do with tainted heros?</title><link>https://blog.whenhen.com/posts/what-to-do-with-tainted-heros.html</link><guid>https://blog.whenhen.com/posts/what-to-do-with-tainted-heros.html</guid><description>The same here: the potency of Minsky’s ideas are forever lost on me.</description></item><item><title>Crisis opportunity</title><link>https://blog.whenhen.com/posts/crisis-opportunity.html</link><guid>https://blog.whenhen.com/posts/crisis-opportunity.html</guid><description>In the end, the population is better off than if the crisis had never come.</description></item><item><title>No more Erlang manuals</title><link>https://blog.whenhen.com/posts/no-more-erlang-manuals.html</link><guid>https://blog.whenhen.com/posts/no-more-erlang-manuals.html</guid><description>And the facelifts continue: now the Erlang docs can only be found on the web. You will spend a good chunk of your time just making sure Google didn’t send you to a deprecated doc page.</description></item><item><title>The Art of the Ask</title><link>https://blog.whenhen.com/posts/the-art-of-the-ask.html</link><guid>https://blog.whenhen.com/posts/the-art-of-the-ask.html</guid><description>Like a child wanting that amazing toy for their birthday, so must you hold a burning fire of desire from everyone you have come to ask.</description></item><item><title>OpenSMTPD &amp; Maildrop working in concert</title><link>https://blog.whenhen.com/posts/opensmtpd-and-maildrop-working-in-concert.html</link><guid>https://blog.whenhen.com/posts/opensmtpd-and-maildrop-working-in-concert.html</guid><description>What we really liked about this project was how opinionated it was, how well the documentation was crafted, and how packed the mailing list was with years of helpful solutions.</description></item><item><title>Blank; Thiel; or something in between</title><link>https://blog.whenhen.com/posts/blank-thiel-or-something-in-between.html</link><guid>https://blog.whenhen.com/posts/blank-thiel-or-something-in-between.html</guid><description>And as much as Thiel promotes sales in ‘Zero to One,’ that’s certainly not the same thing as picking up the phone and conducting interviews.</description></item><item><title>To sell is to lie</title><link>https://blog.whenhen.com/posts/to-sell-is-to-lie.html</link><guid>https://blog.whenhen.com/posts/to-sell-is-to-lie.html</guid><description>Sure, life is too short, and for most, you got to do what you got to do in order to hold on to that little edge with your fingertips as your body hangs over a gaping oblivion.</description></item><item><title>How I behave</title><link>https://blog.whenhen.com/posts/how-i-behave.html</link><guid>https://blog.whenhen.com/posts/how-i-behave.html</guid><description>What matters is knowing that custom behaviors can be utilized to abstract and guarantee your code where it matters.</description></item><item><title>Split ends</title><link>https://blog.whenhen.com/posts/split-ends.html</link><guid>https://blog.whenhen.com/posts/split-ends.html</guid><description>I bet a good deal of our economy has disjointed false progress like this.</description></item><item><title>Calling ed(1) from less(1)</title><link>https://blog.whenhen.com/posts/calling-ed-from-less.html</link><guid>https://blog.whenhen.com/posts/calling-ed-from-less.html</guid><description>You can set your ‘EDITOR’ and ‘VISUAL’ environment variables all you like, but less sends along some arguments to your editor of choice that is clearly only intended for vi(1).</description></item><item><title>ed(1) semantics</title><link>https://blog.whenhen.com/posts/ed-semantics.html</link><guid>https://blog.whenhen.com/posts/ed-semantics.html</guid><description>Earlier this week, I got snagged on a gotcha with ed(1). Or at least that’s  what I thought initially.</description></item><item><title>The coping business</title><link>https://blog.whenhen.com/posts/the-coping-business.html</link><guid>https://blog.whenhen.com/posts/the-coping-business.html</guid><description>Just think about Facebook, for example. Could a company cover more items in the ‘universal’ list, than Meta?</description></item><item><title>Is Elon Musk stupid or something?</title><link>https://blog.whenhen.com/posts/is-elon-musk-stupid-or-something.html</link><guid>https://blog.whenhen.com/posts/is-elon-musk-stupid-or-something.html</guid><description>Hey, more power to Elon. But if he didn’t own ‘x.com’ fully, why would he think that porting the ‘x’ brand name over to Twitter, would be possible?</description></item><item><title>Dirty hooks</title><link>https://blog.whenhen.com/posts/dirty-hooks.html</link><guid>https://blog.whenhen.com/posts/dirty-hooks.html</guid><description>At first, I’d see some attempt at working up there. In the case of product managers, between climbs, they would respond to their Slack messages for a bit, then get right back to projecting their boulder.</description></item><item><title>Two Erlang patterns I love</title><link>https://blog.whenhen.com/posts/two-erlang-patterns-i-love.html</link><guid>https://blog.whenhen.com/posts/two-erlang-patterns-i-love.html</guid><description>But, all the same, sometimes you have to roll your own. And with the ‘K-hunt-gather’ and the ‘O-hunt-gather’ patterns, I generally plow ahead with confidence.</description></item><item><title>Foreach derp with Csh</title><link>https://blog.whenhen.com/posts/foreach-derp-with-csh.html</link><guid>https://blog.whenhen.com/posts/foreach-derp-with-csh.html</guid><description>Rather than thinking of the parentheses as a corner to hold your args, in Csh, the mandatory parentheses do that, but also mutates your word list into an array (Thank you? Csh?)</description></item><item><title>Erlang, the Unix way</title><link>https://blog.whenhen.com/posts/erlang-the-unix-way.html</link><guid>https://blog.whenhen.com/posts/erlang-the-unix-way.html</guid><description>When used in anger, OTP is supposed to be started once, and never, hopefully, fall over. This is in the culture of this wonderful language, and that’s why when one uses Erlang in other ways, everything just feels a little off.</description></item><item><title>Don’t scale (even if it hurts)</title><link>https://blog.whenhen.com/posts/dont-scale-even-if-it-hurts.html</link><guid>https://blog.whenhen.com/posts/dont-scale-even-if-it-hurts.html</guid><description>But, this isn’t always so helpful, especially when one is a perennial tinkerer and always involved with upstarts.</description></item><item><title>Wartime hangovers</title><link>https://blog.whenhen.com/posts/wartime-hangovers.html</link><guid>https://blog.whenhen.com/posts/wartime-hangovers.html</guid><description>If the time change was 6mo. of the year, I’m certain I would never have tried to keep my time constant.</description></item><item><title>More Joy with Csh</title><link>https://blog.whenhen.com/posts/more-joy-with-csh.html</link><guid>https://blog.whenhen.com/posts/more-joy-with-csh.html</guid><description>After all, this was a pattern I expected to use more than a few times.</description></item><item><title>It’s imperative</title><link>https://blog.whenhen.com/posts/its-imperative.html</link><guid>https://blog.whenhen.com/posts/its-imperative.html</guid><description>But this isn’t all about aesthetics; there’s a prime reason why one should avoid whoppers.</description></item><item><title>CGI WTF</title><link>https://blog.whenhen.com/posts/cgi-wtf.html</link><guid>https://blog.whenhen.com/posts/cgi-wtf.html</guid><description>For some reason, I got it in my head that ‘CGI’ scripts were exclusively for Perl (and maybe Python).</description></item><item><title>‘Let It Crash’ under attack</title><link>https://blog.whenhen.com/posts/let-it-crash-under-attack.html</link><guid>https://blog.whenhen.com/posts/let-it-crash-under-attack.html</guid><description>With that, global memory is something we never have to worry about as shared state only happens deterministically via sending messages around from process to process.</description></item><item><title>Save the World: Use Invidious</title><link>https://blog.whenhen.com/posts/save-the-world-use-invidious.html</link><guid>https://blog.whenhen.com/posts/save-the-world-use-invidious.html</guid><description>But of course they are. For anyone who consumes content via the web, ads are only there to benefit the side of the equation that pushes such distractions.</description></item><item><title>Quotes from the Erlang world</title><link>https://blog.whenhen.com/posts/quotes-from-the-erlang-world.html</link><guid>https://blog.whenhen.com/posts/quotes-from-the-erlang-world.html</guid><description>Some are quotes from the founders of the language or the actor-model PLT, while otherss are from various commandos of the language.</description></item><item><title>Mason jars</title><link>https://blog.whenhen.com/posts/mason-jars.html</link><guid>https://blog.whenhen.com/posts/mason-jars.html</guid><description>After a little trouble-shooting, this start/stop Erlang service came into fruition with a surprising small amount of code.</description></item><item><title>Musky Tusky</title><link>https://blog.whenhen.com/posts/musky-tusky.html</link><guid>https://blog.whenhen.com/posts/musky-tusky.html</guid><description>Inevitably, the idea fails the test which signals that there’s little reason to invest time and energy building it out.</description></item><item><title>Kludge kingdom</title><link>https://blog.whenhen.com/posts/kludge-kingdom.html</link><guid>https://blog.whenhen.com/posts/kludge-kingdom.html</guid><description>But kludges have their place. When moving fast trumps beauty, or when the bads outweigh the immediate good, kludges come in handy for sure.</description></item><item><title>Crypto earnings are not passive income</title><link>https://blog.whenhen.com/posts/crypto-earnings-are-not-passive-income.html</link><guid>https://blog.whenhen.com/posts/crypto-earnings-are-not-passive-income.html</guid><description>The best example are rents gathered from property ownership. This remains the classic form of ‘passive income,’ and although crypto has been lumped into the ‘property’ box along with Real Estate, it certainly does not get treated from a tax stand-point as ‘passive income’ come tax day.</description></item><item><title>Ten years without Elixir</title><link>https://blog.whenhen.com/posts/ten-years-without-elixir.html</link><guid>https://blog.whenhen.com/posts/ten-years-without-elixir.html</guid><description>I never got into Elixir, largely because it looked like Ruby. I was a Rubyist for a good while, spent time and effort to learn where to park my commas, semicolons, and periods in Erlang, so I never felt that Elixir was something I wanted.</description></item><item><title>Old skin for the new ceremony</title><link>https://blog.whenhen.com/posts/old-skin-for-the-new-ceremony.html</link><guid>https://blog.whenhen.com/posts/old-skin-for-the-new-ceremony.html</guid><description>In fifty years from now, how will ideas be zipping around from one brain to another?</description></item><item><title>Value dragons</title><link>https://blog.whenhen.com/posts/value-dragons.html</link><guid>https://blog.whenhen.com/posts/value-dragons.html</guid><description>Finding a product, or an expression of a product, that gets pull, truly is the dragon protecting the gold. Not the product itself, but its interplay with timing, a group of users, its price point, etc., This is the monster anyone trying to capture the gold from, must concern themselves with.</description></item><item><title>Bye-bye, Apple</title><link>https://blog.whenhen.com/posts/bye-bye-apple.html</link><guid>https://blog.whenhen.com/posts/bye-bye-apple.html</guid><description>Of course, this setup isn’t for all. If you’re green on the UNIX front, or can’t read a manual, you’d be foolish  to do it. For the others, it certainly is a viable solution, to say the least.</description></item><item><title>From Vim to Ed</title><link>https://blog.whenhen.com/posts/from-vim-to-ed.html</link><guid>https://blog.whenhen.com/posts/from-vim-to-ed.html</guid><description>I wanted to use an editor that didn’t have features that were constantly distracting me from what’s important: writing code.</description></item><item><title>Micrometer &amp; axe</title><link>https://blog.whenhen.com/posts/micrometer-and-axe.html</link><guid>https://blog.whenhen.com/posts/micrometer-and-axe.html</guid><description>And if your product suffers from a slow feedback loop, whereby you don’t have the opportunity to have constant tugs at what you’re building, then the ever smaller the ruler and larger thecutting tool become.</description></item><item><title>My n-of-one observation of academia</title><link>https://blog.whenhen.com/posts/my-n-of-one-observation-of-academia.html</link><guid>https://blog.whenhen.com/posts/my-n-of-one-observation-of-academia.html</guid><description>Rick has an enormous ambition to make a difference in the world, which is interesting, as I don’t know where he would etch out time to sprinkle in innovating, deep thinking, or discovery with all the busy-ness he has currently.</description></item><item><title>The dismal tech</title><link>https://blog.whenhen.com/posts/the-dismal-tech.html</link><guid>https://blog.whenhen.com/posts/the-dismal-tech.html</guid><description>If crypto will last in the mainstream, it will have to marry with some aspect of our lives that operates on a positive frequency. Yes, there’s a market for guns, insurance, etc. But if crypto remains on a plateau that caters to the worry-warts, then it may never live up to its potential.</description></item><item><title>Startup hook pattern</title><link>https://blog.whenhen.com/posts/startup-hook-pattern.html</link><guid>https://blog.whenhen.com/posts/startup-hook-pattern.html</guid><description>In the case of ‘simple_one_for_one’ whereby each state-machine process, or generic server process is coming and going with some frequency, it’s often the case that I want to initialize the services, then let it take care of sorting this and that for it to be useful.</description></item><item><title>Less noise with OTP</title><link>https://blog.whenhen.com/posts/less-noise-with-otp.html</link><guid>https://blog.whenhen.com/posts/less-noise-with-otp.html</guid><description>OTP systems, even ones that are beta products and prototypes, seem to ship with less errors allowing user feedback as it concerns design to take center stage.</description></item><item><title>The saddest script I ever wrote</title><link>https://blog.whenhen.com/posts/the-saddest-script-i-ever-wrote.html</link><guid>https://blog.whenhen.com/posts/the-saddest-script-i-ever-wrote.html</guid><description>This was a heck of a strange workflow, but at least I could have a rewind button for shoddy software that I installed, or even wrote myself.</description></item><item><title>Future complications</title><link>https://blog.whenhen.com/posts/future-complications.html</link><guid>https://blog.whenhen.com/posts/future-complications.html</guid><description>2019–2020 will be one of those ‘remember the Alamo’ time-periods; it will shape this country greatly.  I’m optimistic for which direction the healthcare system swings in the years ahead.</description></item><item><title>Csh is punk rock</title><link>https://blog.whenhen.com/posts/csh-is-punk-rock.html</link><guid>https://blog.whenhen.com/posts/csh-is-punk-rock.html</guid><description>Every time I look up a ‘howto’ or work-around about it, inevitably, there’s at least one diatribe knocking it down. Csh is punk rock in this regard; few believe in its merits.</description></item><item><title>Yazdani’s criterion</title><link>https://blog.whenhen.com/posts/yazdanis-criterion.html</link><guid>https://blog.whenhen.com/posts/yazdanis-criterion.html</guid><description>Do as Bobby says: dream huge, take a chance and let the chips fall where they may.</description></item><item><title>SNI relayd support in 6.6</title><link>https://blog.whenhen.com/posts/sni-relayd-support-in-six-point-six.html</link><guid>https://blog.whenhen.com/posts/sni-relayd-support-in-six-point-six.html</guid><description>OpenBSD 6.6 now has support for SNI in relayd, which is a welcome update for certain.</description></item><item><title>Chatty design</title><link>https://blog.whenhen.com/posts/chatty-design.html</link><guid>https://blog.whenhen.com/posts/chatty-design.html</guid><description>It’s one thing to convey key information. It’s a whole other to prattle on about its product inside baseball.</description></item><item><title>Berkeley smorgasbord — part II</title><link>https://blog.whenhen.com/posts/berkeley-smorgasbord-part-2.html</link><guid>https://blog.whenhen.com/posts/berkeley-smorgasbord-part-2.html</guid><description>In a nutshell, we are just expanding our rules to include TLS, and moving the web-app from the plaintext protocol to the secure one.</description></item><item><title>Nato’s question</title><link>https://blog.whenhen.com/posts/natos-question.html</link><guid>https://blog.whenhen.com/posts/natos-question.html</guid><description>That’s why, when building out something unproven, I constantly am asking Nato’s question: ‘How can I fake this functionality, until I know it has value?’</description></item><item><title>No itch to scratch</title><link>https://blog.whenhen.com/posts/no-itch-to-scratch.html</link><guid>https://blog.whenhen.com/posts/no-itch-to-scratch.html</guid><description>Long ago, Bill Joy came up with an idea and bundled it into his Csh project. It was called scratch files, though it seems as though the idea was either ditched before it was fully realized, or was quietly deprecated over the life of Csh’s evolution.</description></item><item><title>Goodbye, Joe</title><link>https://blog.whenhen.com/posts/goodbye-joe.html</link><guid>https://blog.whenhen.com/posts/goodbye-joe.html</guid><description>Joe’s books hinted at how the man was wired. Early in my Erlang hacking, I found chapter seven in Joe’s ‘Programming Erlang’ to be something I would read and re-read. For me, this language wasn’t just a language, it was a philosophy.</description></item><item><title>Perceiving prospects</title><link>https://blog.whenhen.com/posts/perceiving-prospects.html</link><guid>https://blog.whenhen.com/posts/perceiving-prospects.html</guid><description>The next time you think you know your audience, be sure to take Google Image Search for a spin to verify that you’re not seeing the world through a kaleidoscope.</description></item><item><title>The Joy in Csh &amp; Vi</title><link>https://blog.whenhen.com/posts/the-joy-in-csh-and-vi.html</link><guid>https://blog.whenhen.com/posts/the-joy-in-csh-and-vi.html</guid><description>It’s a wonderment how much output Bill Joy produced in his early days of hacking just around the time he was recruited as a founding member at Sun Microsystems. When one takes a moment to reflect that quite a few of us still use the tools created by one man, many decades ago, it’s nothing short of astounding.</description></item><item><title>bd, bn, bp, ls, w, e, &amp; me</title><link>https://blog.whenhen.com/posts/bd-bn-bp-ls-w-e-and-me.html</link><guid>https://blog.whenhen.com/posts/bd-bn-bp-ls-w-e-and-me.html</guid><description>I’ve been using Vim for decades, and not till recently did I realize, I’ve been using this tool quite back-assward.</description></item><item><title>Google minus</title><link>https://blog.whenhen.com/posts/google-minus.html</link><guid>https://blog.whenhen.com/posts/google-minus.html</guid><description>I recall with some clarity the moment Google Plus entered my life. I was logging into my YouTube account and for some unknown reason, I was obliged to fill out an elaborate profile on YouTube’s parent company’s new Social Network platform: Google Plus.</description></item><item><title>Berkeley smorgasbord</title><link>https://blog.whenhen.com/posts/berkeley-smorgasbord.html</link><guid>https://blog.whenhen.com/posts/berkeley-smorgasbord.html</guid><description>OpenBSD, as of ‘6.3,’ has some pretty mature solutions for serving up the web, all right there in the base system. And as it happens, with OpenBSD’s ‘httpd’ &amp; ‘relayd,’ in combination with Erlang/OTP and a few projects like ‘elli’ &amp; ‘erlydtl,’ the table is set for having most the things the modern web-app requires.</description></item><item><title>Erlang/OTP on OpenBSD</title><link>https://blog.whenhen.com/posts/erlang-otp-on-openbsd.html</link><guid>https://blog.whenhen.com/posts/erlang-otp-on-openbsd.html</guid><description>Installing OTP on OpenBSD is a pretty painless process, considering OTP is regarded highly as indicated by the fact that several releases of the language are currently offered as first-class packages.</description></item><item><title>Everyday crypto</title><link>https://blog.whenhen.com/posts/everyday-crypto.html</link><guid>https://blog.whenhen.com/posts/everyday-crypto.html</guid><description>Since stupidity and ignorance tend to be kissing cousins, it would be nice to have a crypto swiss army knife on one’s belt. For Erlang/OTP hackers, we put together a small collection of crypto goodies in order to quell the mad scramble to locate the right tool for the job, when there is little time to perform a deep dive on what’s what in the crypto world.</description></item><item><title>Pulled Kludge Sandwich</title><link>https://blog.whenhen.com/posts/pulled-kludge-sandwich.html</link><guid>https://blog.whenhen.com/posts/pulled-kludge-sandwich.html</guid><description>One of the most important concepts I live by was best summarized by Seymour Papert decades ago whereby he wrote : ‘You can’t think about thinking, unless you think about thinking about something.’</description></item><item><title>Sticky footers in the 21st century</title><link>https://blog.whenhen.com/posts/sticky-footers-in-the-twenty-first-century.html</link><guid>https://blog.whenhen.com/posts/sticky-footers-in-the-twenty-first-century.html</guid><description>Among the many annoyances of positioning content this way and that over the years, was having one’s webpage footer pushed to the bottom of the page. There have been many kludges to achieve this over the decades, but flexbox makes quick work of this age-old annoyance. And it does so, rather eloquently.</description></item><item><title>Bend it like gen_statem</title><link>https://blog.whenhen.com/posts/bend-it-like-gen-statem.html</link><guid>https://blog.whenhen.com/posts/bend-it-like-gen-statem.html</guid><description>The new kid on the block is ‘gen_statem,’ although arguably, it’s been a few releases already since first being bundled into OTP. Seemingly, it’s quite fully featured, but can be quite daunting to first-timers. (Especially if one isn’t wholly confident with everything involved around ‘gen_server’ as ‘gen_statem’ feels like two complex behaviors mashed into one.)</description></item><item><title>For goodness namesake</title><link>https://blog.whenhen.com/posts/for-goodness-namesake.html</link><guid>https://blog.whenhen.com/posts/for-goodness-namesake.html</guid><description>In Erlang, naming can be tricky, as it is elsewhere. But, that’s part of the journey to writing lucid code. ‘A problem well stated is a problem half solved,’ Charles Kettering said. Typically, if I’m having trouble with naming, it’s because I’m fuzzy on the semantics of the underlying function.</description></item><item><title>What is money?</title><link>https://blog.whenhen.com/posts/what-is-money.html</link><guid>https://blog.whenhen.com/posts/what-is-money.html</guid><description>A transcript of A. Mitchell Innes’ 1913 treatise on money, debt &amp; credit.</description></item><item><title>Will the ‘new electricity’ please stand up</title><link>https://blog.whenhen.com/posts/will-the-new-electricity-please-stand-up.html</link><guid>https://blog.whenhen.com/posts/will-the-new-electricity-please-stand-up.html</guid><description>Incredibly, we are living in an age where the ‘next electricity’ is coming into fruition. Or so we are told. The problem is, this looming boom has been promised via any number of technologies.</description></item><item><title>Files with Extinct</title><link>https://blog.whenhen.com/posts/files-with-extinct.html</link><guid>https://blog.whenhen.com/posts/files-with-extinct.html</guid><description>OSC is a protocol designed for passing small messages over UDP. True enough, OSC should be employed using small messages, especially given that a UDP maximum payload is accepted to be 512-bytes. Moreover, when piping around data with Extinct, the size of Unix pipes can be limited to a couple kilobytes as well, so there are a lot of forces at play that keep messages small.</description></item><item><title>Lament for search</title><link>https://blog.whenhen.com/posts/lament-for-search.html</link><guid>https://blog.whenhen.com/posts/lament-for-search.html</guid><description>It’s hard to put a finger on it, but search seems to be suffering from what I call a Norm Paradox. It’s a problem of perception, really, and one that search &amp; suggestion algorithms/AI should well take account of.</description></item><item><title>Juggling &amp; gluing with Extinct</title><link>https://blog.whenhen.com/posts/juggling-and-gluing-with-extinct.html</link><guid>https://blog.whenhen.com/posts/juggling-and-gluing-with-extinct.html</guid><description>Erlang/OTP is considered by its insiders as a fantastic coordination language. That means it makes a great glue for systems that need to juggle many moving parts: parts written in languages, other than Erlang.</description></item><item><title>The broth economy</title><link>https://blog.whenhen.com/posts/the-broth-economy.html</link><guid>https://blog.whenhen.com/posts/the-broth-economy.html</guid><description>Now, it seems, the West has pinned these vantage points as normal. The work-week hasn’t gotten any easier for many encamped within the thumb of the income bell-curve, and arguably, despite ramping technology, certain aspects of life have become harder.</description></item><item><title>Quaker Oats</title><link>https://blog.whenhen.com/posts/quaker-oats.html</link><guid>https://blog.whenhen.com/posts/quaker-oats.html</guid><description> An incredible American company turned 140 this year, one which I doubt many would consider innovative let alone revolutionary. But in twelve short years after its founding in 1877, Henry Crowell’s Quaker Oats company would take America by storm in a capitalistic blitzkrieg.</description></item><item><title>Foo bar machines</title><link>https://blog.whenhen.com/posts/foo-bar-machines.html</link><guid>https://blog.whenhen.com/posts/foo-bar-machines.html</guid><description>If AI is to one day superannuate programmers by taking over the task of writing code, then I submit there’s a chasm in the road ahead for Machine Learning researchers: aesthetics.</description></item><item><title>Inbox-zero via shell mail</title><link>https://blog.whenhen.com/posts/inbox-zero-via-shell-mail.html</link><guid>https://blog.whenhen.com/posts/inbox-zero-via-shell-mail.html</guid><description>I can’t remember when I switched from web-based email to mail in my terminal. It still feels right — now years later — despite the weird looks I get on occasion from those I divulge this to. All else being equal, mail in the shell has proven to be a winner in ameliorating ‘inbox hell.’</description></item><item><title>Yanni sings</title><link>https://blog.whenhen.com/posts/yanni-sings.html</link><guid>https://blog.whenhen.com/posts/yanni-sings.html</guid><description>When one is coming from Erlang, and sees an artificial neural network diagram/topology, one cannot help but see the 1-to-1 mapping between the Erlang concurrency model, and neural networks; it’s almost eerie.</description></item><item><title>NOTP: a middle way</title><link>https://blog.whenhen.com/posts/notp-a-middle-way.html</link><guid>https://blog.whenhen.com/posts/notp-a-middle-way.html</guid><description>I’ve always considered Erlang to be an excellent general purpose programming language. With that, the one-off projects that aren’t systems or servers always had the bloat of OTP, and never felt right.</description></item><item><title>Five reasons why Heroku is great after all</title><link>https://blog.whenhen.com/posts/five-reasons-why-heroku-is-great-after-all.html</link><guid>https://blog.whenhen.com/posts/five-reasons-why-heroku-is-great-after-all.html</guid><description>After moving a small utility application from Heroku to Digital Ocean last week, it became blatantly obvious (again) why Heroku is an amazing service.</description></item><item><title>Sowell on software</title><link>https://blog.whenhen.com/posts/sowell-on-software.html</link><guid>https://blog.whenhen.com/posts/sowell-on-software.html</guid><description>Twenty years ago, the economist Thomas Sowell wrote a short critique on consumer-facing technology such as printers and software. It’s interesting to pick away at it post Internet bubble, post web 2.0, and see where things have improved, stagnated, or gotten worse.</description></item><item><title>Turing’s residuum</title><link>https://blog.whenhen.com/posts/turings-residuum.html</link><guid>https://blog.whenhen.com/posts/turings-residuum.html</guid><description>Erlang can be slow, and I’m reminded of this daily as the mainstream programming community worships things that go fast. I continue to be suspicious of this collective worship, though, as language-sluggishness has yet to compromise my work or contribute to a missed deadline. Simply put: modern languages run plenty fast, so why does a community of craftspeople put so much stock in speed?</description></item><item><title>Serving Erlang</title><link>https://blog.whenhen.com/posts/serving-erlang.html</link><guid>https://blog.whenhen.com/posts/serving-erlang.html</guid><description>Since OTP is such a powerful tool for creating servers, not surprising, I’m constantly installing Erlang on new hardware &amp; virtualware.</description></item><item><title>ikura &amp; nginx</title><link>https://blog.whenhen.com/posts/ikura-and-nginx.html</link><guid>https://blog.whenhen.com/posts/ikura-and-nginx.html</guid><description>Continuing from our previous post about white-listing ikura at the application layer, we will now showcase how to restrict your endpoints when utilizing nginx.</description></item><item><title>Hot routes with cowboy</title><link>https://blog.whenhen.com/posts/hot-routes-with-cowboy.html</link><guid>https://blog.whenhen.com/posts/hot-routes-with-cowboy.html</guid><description>Not all systems, especially web applications, need to be upgraded without being taken out of service. But at Whenhen, we need it. We do ‘relups’ all the time: we don’t take our service down whenever updates are pushed live.</description></item><item><title>Dear mainstream media</title><link>https://blog.whenhen.com/posts/dear-mainstream-media.html</link><guid>https://blog.whenhen.com/posts/dear-mainstream-media.html</guid><description>In lieu of the recent allegations that Russian hackers did X, Y, &amp; Z in the last U.S. Presidential elections, I would like to set the record straight: the word ‘hacker’ means a few things.</description></item><item><title>Simple slug generator</title><link>https://blog.whenhen.com/posts/simple-slug-generator.html</link><guid>https://blog.whenhen.com/posts/simple-slug-generator.html</guid><description>In Erlang, we are going to write a small module called ‘slug.erl’ which can handle all of this. Our home-spun routine will yield a quasi-random string of characters &amp; with that, we can let our imagination run wild with what to do with the results.</description></item><item><title>The unlearning curve</title><link>https://blog.whenhen.com/posts/the-unlearning-curve.html</link><guid>https://blog.whenhen.com/posts/the-unlearning-curve.html</guid><description>My role was unofficial; I was just there to help when something confusing came up. Although I’m no stranger to Ruby and other imperative languages, I’ve never leaned on Python in all my years hacking. Having long left languages like Python in pursuit of functional ones like Erlang, I was curious where my unlearning of imperative &amp; von Neumann languages had left me.</description></item><item><title>Last resort testing</title><link>https://blog.whenhen.com/posts/last-resort-testing.html</link><guid>https://blog.whenhen.com/posts/last-resort-testing.html</guid><description>Testing code is discussed infinitely, and every year more paradigms are introduced. It’s a trendy topic indeed, but at Whenhen, we take a slightly different approach thanks to OTP &amp; ‘let it crash.’</description></item><item><title>Just be better than Apple</title><link>https://blog.whenhen.com/posts/just-be-better-than-apple.html</link><guid>https://blog.whenhen.com/posts/just-be-better-than-apple.html</guid><description>If memory serves correct, suffering due to OS software hasn’t run this rampant since Windows 95. But incredibly, this presents us software writers with an opportunity.</description></item><item><title>Prod-to-dev with Mnesia</title><link>https://blog.whenhen.com/posts/prod-to-dev-with-mnesia.html</link><guid>https://blog.whenhen.com/posts/prod-to-dev-with-mnesia.html</guid><description>Back in my dark days of Rails development, it was essential to have a way to populate one’s local database, say SQLite, with production data. And for some reason, half a decade has gone by as an OTP engineer before I needed to perform this task in Erlang-land.</description></item><item><title>Hotfix howto</title><link>https://blog.whenhen.com/posts/hotfix-howto.html</link><guid>https://blog.whenhen.com/posts/hotfix-howto.html</guid><description>When the bugs are pressing but minuscule — but they hardly warrant a whole new release — it’s good to know how to push small changes live in an OTP system.</description></item><item><title>Harsh rules for fine design</title><link>https://blog.whenhen.com/posts/harsh-rules-for-fine-design.html</link><guid>https://blog.whenhen.com/posts/harsh-rules-for-fine-design.html</guid><description>Robert Virding (author of several programming languages) has a great talk about programming language design, and it occurred to me that some of his philosophy applies quite nicely to the design of software products, and even product-design in general.</description></item><item><title>OTP releases by hand</title><link>https://blog.whenhen.com/posts/otp-releases-by-hand.html</link><guid>https://blog.whenhen.com/posts/otp-releases-by-hand.html</guid><description>After all, OTP itself is a manifestation of the release ecosystem; it’s probably best that Erlang hackers have a decent grasp of the layout &amp; working parts of this corner of OTP. And what a better way to understand this than by creating some releases by hand for a change?</description></item><item><title>Trust</title><link>https://blog.whenhen.com/posts/trust.html</link><guid>https://blog.whenhen.com/posts/trust.html</guid><description>When it comes to trust, I think adopting unproven technologies is frivolous. Certainly, new toys can provide for some fun learning, but at the expense of users? That’s unwise.</description></item><item><title>Farewell, io:format</title><link>https://blog.whenhen.com/posts/farewell-io-format.html</link><guid>https://blog.whenhen.com/posts/farewell-io-format.html</guid><description>So, here’s the scoop: any place you would like to peer into your Erlang code and see what it’s up to, instead of putting some ‘print-to-screen’ lines in your source-code, employ ‘dbg’ instead.</description></item><item><title>Elbowing JavaScript out</title><link>https://blog.whenhen.com/posts/elbowing-js-out.html</link><guid>https://blog.whenhen.com/posts/elbowing-js-out.html</guid><description>Yes. Javascript has probably won. Which is too bad. The language itself could be worse. True. But the fact that it lives in the web stack right next to the presentation layer, really sucks (I think). I don’t even mind it living in the backend, as is the case with Node.js. But the frontend? So I’d agree that it’s here to stay. But I don’t think we have to embrace it for all web stuff as much as we have.</description></item><item><title>Please, kill your darlings</title><link>https://blog.whenhen.com/posts/please-kill-your-darlings.html</link><guid>https://blog.whenhen.com/posts/please-kill-your-darlings.html</guid><description>I have seen my fair share of source-code, and it’s common to see code like the above; code I fondly refer to as ‘the programmer’s darlings.’</description></item><item><title>OTP dev-ops</title><link>https://blog.whenhen.com/posts/otp-dev-ops.html</link><guid>https://blog.whenhen.com/posts/otp-dev-ops.html</guid><description>Working with SASL logs is a bit different than what dev-ops may be used to. Instead of employing the typical strategies like ‘tail -f’ and ‘grep’, OTP gives us some specific tools for looking into those pesky Erlang errors.</description></item><item><title>Safe-guarding ikura in Rails</title><link>https://blog.whenhen.com/posts/safe-guarding-ikura-in-rails.html</link><guid>https://blog.whenhen.com/posts/safe-guarding-ikura-in-rails.html</guid><description>When you have your ikura workers in place it’s imperative that your URI end-points are not open for anyone to call. You only want ikura to be able to access them.</description></item><item><title>Introducing ikura workers</title><link>https://blog.whenhen.com/posts/introducing-ikura-workers.html</link><guid>https://blog.whenhen.com/posts/introducing-ikura-workers.html</guid><description>What’s important when coming to ikura for the first time, is understanding some terms &amp; getting comfortable with the basics.</description></item><item><title>Litter as marketing</title><link>https://blog.whenhen.com/posts/litter-as-marketing.html</link><guid>https://blog.whenhen.com/posts/litter-as-marketing.html</guid><description>I was at a beach over the weekend. From Oakland to the Pacific Ocean, it’s only a quick drive. Even though I had escaped town for a spell, I hadn’t escaped branded pieces of plastic. Lo, at the beach was oodles of Wendy’s, Volkswagen, Safeway, Coca-Cola plastic bits. It seems this stuff goes into the ocean, ungulates for a while &amp; is regurgitated back to the shore to prey on prospects like me (not to mention other animals who gobble it up in a more primitive fashion). Indeed, litter can crusade for some long-lasting marketing.</description></item><item><title>Hot-code burn marks</title><link>https://blog.whenhen.com/posts/hot-code-burn-marks.html</link><guid>https://blog.whenhen.com/posts/hot-code-burn-marks.html</guid><description>Updating an OTP system with new code without taking it out service is tough. How tough? Well, Erlang tough. Meaning, there is a learning curve, but after the hazing, man, does it ever feel good.</description></item><item><title>Goals &amp; frameworks</title><link>https://blog.whenhen.com/posts/goals-and-frameworks.html</link><guid>https://blog.whenhen.com/posts/goals-and-frameworks.html</guid><description>In 2015, I applied a well-crafted framework, and just before the new year, I finally reached my climbing goal after nearly half a decade of frustration.</description></item><item><title>Sequential living</title><link>https://blog.whenhen.com/posts/sequential-living.html</link><guid>https://blog.whenhen.com/posts/sequential-living.html</guid><description>I submit that although we live in a concurrent world, we as individuals are quite the sequential robots. We are terrible at multi-tasking &amp; this makes thinking concurrently quite unnatural. I think that’s what makes Erlang so challenging, and by that token, rewarding.</description></item><item><title>Pinging Heroku</title><link>https://blog.whenhen.com/posts/pinging-heroku-free-tier.html</link><guid>https://blog.whenhen.com/posts/pinging-heroku-free-tier.html</guid><description>Heroku is king when it comes to getting a web application served. It’s no secret that they are quite pricey when scaling your app from toy, to taking traffic. So, it’s understandable when developers try to ride the free tier for as long as possible; one can go pretty far with Heroku’s freemium product.</description></item><item><title>Erlang beauty</title><link>https://blog.whenhen.com/posts/erlang-beauty.html</link><guid>https://blog.whenhen.com/posts/erlang-beauty.html</guid><description>There is an adage in the Erlang community that we should make our code work, then make it beautiful, then, and if truly necessary, make it all run fast. This insight is rendered from decades of coding of many brilliant hackers. In fact, the last part is probably a nod to Donald Knuth’s famous caution against early optimization.</description></item><item><title>Docker to the rescue</title><link>https://blog.whenhen.com/posts/docker-to-the-rescue.html</link><guid>https://blog.whenhen.com/posts/docker-to-the-rescue.html</guid><description>Docker has been on my radar for a year+ — but a recent mini-disaster lead me to consider it seriously. I decided to jump into the deep end with Docker &amp; the water has been warm. But it’s a funny story how Docker &amp; I got re-acquainted.</description></item><item><title>Records in function heads</title><link>https://blog.whenhen.com/posts/records-in-function-heads.html</link><guid>https://blog.whenhen.com/posts/records-in-function-heads.html</guid><description>Erlang records get a bit more backlash than they deserve. I like using them quite a bit, and in fact it’s Erlang maps that haven’t won me over yet.</description></item><item><title>Why I stopped writing specs</title><link>https://blog.whenhen.com/posts/why-i-stopped-writing-specs.html</link><guid>https://blog.whenhen.com/posts/why-i-stopped-writing-specs.html</guid><description>Erlang is constantly bashed for ugly syntax. But by writing short routines, we get lovely, readable code. Moreover, with thoughtfully written code, we may be able to do without the specs!</description></item><item><title>An ikura app — part III</title><link>https://blog.whenhen.com/posts/ikura-app-part-3.html</link><guid>https://blog.whenhen.com/posts/ikura-app-part-3.html</guid><description>Ikura is a tool for creating light-weight CRON tasks for your scripts &amp; web applications. As we continue in the 3rd part of the series, we finalize the code and wire ikura’s timing service to automate our application.</description></item><item><title>An ikura app — part II</title><link>https://blog.whenhen.com/posts/ikura-app-part-2.html</link><guid>https://blog.whenhen.com/posts/ikura-app-part-2.html</guid><description>Ikura is a tool for creating light-weight CRON tasks for your scripts &amp; web applications. As we continue in the 2nd part of the series, we explore the Twitter Search API and some helpful 3rd party Erlang libraries.</description></item><item><title>Building an ikura app</title><link>https://blog.whenhen.com/posts/building-an-ikura-app.html</link><guid>https://blog.whenhen.com/posts/building-an-ikura-app.html</guid><description>Ikura is a tool for creating light-weight CRON tasks for your scripts &amp; web applications. One of our secret sauces is a task can finish and depending on the outcome, can spawn a new generation of tasks. It’s this feature that makes ikura powerful, and we thought we would showcase how our ikura customers can make this happen.</description></item><item><title>Logic makes me hungry</title><link>https://blog.whenhen.com/posts/logic-makes-me-hungry.html</link><guid>https://blog.whenhen.com/posts/logic-makes-me-hungry.html</guid><description>Exploring Erlang’s approach to simple business logic in code.</description></item></channel></rss>