Major update - simpler file structure, better layouts, moar content
This commit is contained in:
26
src/sitePosts/journal/2015/03-18-developing-the-web.md
Normal file
26
src/sitePosts/journal/2015/03-18-developing-the-web.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
title: Developing the Web
|
||||
date_pub: 2015-03-18T00:00:00-04:00
|
||||
date_upd: 2018-12-01T14:39:00-05:00
|
||||
description: A "Web Developer" should "develop the web" by building their projects in accordance with their own vision of how the web should be. For me, that means using open source software to build standards-compliant, accessible, and secure sites and apps.
|
||||
content_type: journal
|
||||
tags: code internet js web WebDev
|
||||
---
|
||||
|
||||
The great Remy Sharp ([@rem](https://twitter.com/rem)) wrote a [piece](https://remysharp.com/2015/02/26/i-am-web-developer) about what it means to be a web developer, as opposed to an engineer, and the difference a title does (or doesn't) make. In the end, he settles on the title of "web developer":
|
||||
|
||||
> I don't know why I thought it was uncool to be a "web developer". Perhaps because it's utterly vague.
|
||||
>
|
||||
> What "web developer" does mean to me though, is this:
|
||||
>
|
||||
> Someone who writes code for browsers. Likely from the school of view source, is comfortable with drop-in libraries, understands standards and best practice techniques. But mostly, a tinkerer.
|
||||
|
||||
I like his definition (especially the part about tinkering), but I think that it's incomplete, being merely functional.
|
||||
|
||||
I suggest that the term "web developer", by its definition, carries a philosophical imperative: to **develop** the **web**. That is to say, a web developer should visualize how they would like the web to be (as a whole), and build their own projects in a way that reflects that vision.
|
||||
|
||||
This is something I've tried to do myself, both in my professional and personal projects (albeit with varying degrees of success). To me, being a web developer means that I should use [responsive design principles](https://en.wikipedia.org/wiki/Responsive_web_design), [ensure accessibility](http://www.w3.org/WAI/intro/aria), and [follow the standards](http://www.w3.org/TR/pointerevents/) wherever possible. It also means using only open source software, be it [in the server stack](https://en.wikipedia.org/wiki/LAMP_%28software_bundle%29), the [service layer](http://philecms.com/), or even as a [client browser](https://www.mozilla.org/en-US/firefox/).
|
||||
|
||||
As a web developer, I want to participate in a decentralized web, and would rather use a self-hosted, fully-open [social media platform](http://withknown.com) than a corporate data silo. Likewise, I support the use of standards-based communication protocols (IRC, e-mail, etc.) over proprietary solutions. Finally, as a web developer, I believe in a more secure web, and support initiatives like [HTTPS everywhere](https://www.eff.org/https-everywhere).
|
||||
|
||||
All in all, I think this definition adds an air of legitimacy to the "web developer" title. As I noted in a [comment](https://remysharp.com/2015/02/26/i-am-web-developer#comment-1876942490): based on this criteria, one could say that Sir Tim Berners-Lee is the definitive Web Developer (a title he himself uses, as Remy pointed out), and that's not bad company to be in. In fact, I think I'm going to go get some business cards with "Web Developer" on them.
|
18
src/sitePosts/journal/2015/04-22-the-people-vs-john-deere.md
Normal file
18
src/sitePosts/journal/2015/04-22-the-people-vs-john-deere.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: The People vs. John Deere
|
||||
date_pub: 2015-04-22T00:00:00-04:00
|
||||
date_upd: 2018-12-01T14:39:00-05:00
|
||||
description: John Deere argues that farmers don't own their tractors, and this does not bode well for our IoT future.
|
||||
content_type: journal
|
||||
tags: code hacking politics privacy
|
||||
---
|
||||
|
||||
Over at Wired, [iFixit's](https://www.ifixit.com/) Kyle Wiens ([@kwiens](https://twitter.com/kwiens)) points out that #DMCA abuse extends well beyond preventing you from [jailbreaking your PS3](http://arstechnica.com/gaming/2015/04/us-government-takes-on-legal-fight-over-console-jailbreaking-once-more/) and into the world of... [farm machinery](http://www.wired.com/2015/04/dmca-ownership-john-deere/)?
|
||||
|
||||
> In a particularly spectacular display of corporate delusion, John Deere—the world’s largest agricultural machinery maker —told the Copyright Office that farmers don’t own their tractors. Because computer code snakes through the DNA of modern tractors, farmers receive “an implied license for the life of the vehicle to operate the vehicle.”
|
||||
>
|
||||
> It’s John Deere’s tractor, folks. You’re just driving it.
|
||||
|
||||
I find this particularly worrisome with regards to the #InternetOfThings, and the possibility of forced vendor lock-in on even the most trivial of items ("I'm sorry, sir, you'll have to call a certified Moen plumber to fix your leak.")
|
||||
|
||||
Welcome to the future. [Fight to make it better.](http://www.digitalrighttorepair.org/)
|
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Ethics in Shilling Videogames
|
||||
content_type: journal
|
||||
date_pub: 2015-05-04T00:00:00-04:00
|
||||
date_upd: 2018-11-04T14:37:00-05:00
|
||||
tags: games internet politics
|
||||
---
|
||||
|
||||
[David Wolinsky](https://twitter.com/davidwolinsky) has a [great article](http://www.unwinnable.com/2015/05/11/actually-its-about-ethics-in-shilling-videogames/#.VVR9luRXbrc) on [Unwinnable](http://www.unwinnable.com) capturing his thoughts on the whole "ethics in game journalism" / #GamerGate thing.
|
||||
|
||||
> It’s time we retire the term “videogame journalist.”
|
||||
>
|
||||
> Most writers in the field need to accept that they, too, are marketers unless their approach or something else in the landscape shifts and changes.
|
||||
|
||||
Part of the problem, as he sees it, is that videogame companies aren't driven to do PR with journalists that might give them serious criticism (a.k.a. bad reviews). As a result, traditional "videogame journalists" have to choose between being a PR puppet for the game companies, or not being at all.
|
||||
|
||||
Part of the reason for this all-or-nothing attitude are the YouTube streamers, whose undeniable popularity means that they are getting courted more and more often by the game companies in lieu of print / online journalists. For example, look at [Pewdiepie](https://www.youtube.com/user/PewDiePie), and his 36-million followers:
|
||||
|
||||
> Thirty-six million subscribers means roughly anything he puts online is more popular than Nirvana’s Nevermind (somewhere around 30 million sales) or Michael Jackson’s Bad (also around 30 million).
|
||||
>
|
||||
> Think about it. An audience that size, bigger than the population of Canada (a country), and they are all paying attention to one person’s opinions about videogames. That is staggering on a basic human level.
|
||||
|
||||
He hits on a lot of different notes, and it does tend to run long, but it's an overall great read for anyone that wants to move beyond the black-and-white #GamerGate in-group / out-group fighting and into a serious discussion about marketing vs. journalism, and what ethics in gaming can (and should) be.
|
46
src/sitePosts/journal/2015/05-22-the-web-is-dead.md
Normal file
46
src/sitePosts/journal/2015/05-22-the-web-is-dead.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: The Web is Dead! Long Live the Web!
|
||||
date_pub: 2015-05-22T00:00:00-04:00
|
||||
date_upd: 2018-11-04T14:40:00-05:00
|
||||
content_type: journal
|
||||
tags: code web WebDev
|
||||
---
|
||||
|
||||
In browsing through some of the fallout from the arrival of [Facebook's Instant Articles](http://instantarticles.fb.com/), I stumbled across a couple of great pieces by Baldur Bjarnason ([@fakebaldur](https://twitter.com/fakebaldur)) that go a long way to explain how we got into [the situation we're in](http://www.newser.com/story/206784/facebook-instant-articles-a-tectonic-shift-in-news.html), and why it's us [web developers](http://blog.itsericwoodward.com/2015/developing-the-web) who are responsible.
|
||||
|
||||
In the first, he takes on [the ongoing debate about apps vs. the web](https://www.baldurbjarnason.com/notes/media-websites-vs-facebook/), and makes the assertion that it isn't "the web" that's broken, it's how (we) web developers are using it that's broken (emphasis his):
|
||||
|
||||
> Here’s an absolute fact that all of these reporters, columnists, and media pundits need to get into their heads:
|
||||
>
|
||||
> The web doesn’t suck. Your websites suck.
|
||||
>
|
||||
> _All of your websites suck._
|
||||
>
|
||||
> You destroy basic usability by hijacking the scrollbar. You take native functionality (scrolling, selection, links, loading) that is fast and efficient and you rewrite it with ‘cutting edge’ javascript toolkits and frameworks so that it is slow and buggy and broken. You balloon your websites with megabytes of cruft. You ignore best practices. You take something that works and is complementary to your business and turn it into a liability.
|
||||
>
|
||||
> The lousy performance of your websites becomes a defensive moat around Facebook.
|
||||
|
||||
In other words, if the [mobile web is dead](http://www.zdnet.com/article/the-mobile-web-is-dead-long-live-the-app/), it's because we developers killed it.
|
||||
|
||||
On a side note, I wonder if this isn't alot of the reason that millennials have increasingly [preferred using apps to browsers](https://www.siliconrepublic.com/play/2010/11/24/mobile-ads-shock-millennials-prefer-apps-gen-x-browsers) - because mobile browsing is, for many, a needlessly painful experience.
|
||||
|
||||
In the [second piece](https://www.baldurbjarnason.com/notes/new-age-of-html/), he even goes so far as to explain why people can't seem to get on the same page about how "the web" should be: Because they're all talking about different versions of it:
|
||||
|
||||
> Instead of viewing the web as a single platform, it’s more productive to consider it to be a group of competing platforms with competing needs. The mix is becoming messy.
|
||||
>
|
||||
> 1. Services (e.g. forms and ecommerce, requires accessibility, reach, and security)
|
||||
> 2. Web Publishing (requires typography, responsive design, and reach)
|
||||
> 3. Media (requires rich design, involved interactivity, and DRM)
|
||||
> 4. Apps (requires modularity in design, code, and data as well as heavy OS integration)
|
||||
|
||||
Just to drive this point home, he makes reference to the Apple Pointer issue from [earlier this year](http://studiotendra.com/2015/03/01/the-web-has-covered-the-basics):
|
||||
|
||||
> This is just one facet of the core problem with the web as an application platform: we will never have a unified web app platform.
|
||||
>
|
||||
> What Apple, Google, Microsoft, and Mozilla want from web applications is simply too divergent for them to settle on one unified platform. That’s the reason why we’re always going to get Google apps that only work in Chrome, Apple Touch APIs that are modelled on iOS’s native touch model, and Microsoft Pointer APIs that reflect their need to support both touch and mouse events on a single device at the same time. There really isn’t an easy way to solve this because standardisation hinges on a common set of needs and use cases which these organisations just don’t share.
|
||||
|
||||
A more conspiracy-minded individual might even believe most of the major vendors would be better off if the standards never really do work out, since it would prevent "native-esque" web apps from cutting into their bottom-lines in their respective app stores. But I digress.
|
||||
|
||||
Speaking for myself, I know that I had never really considered this point when talking / ranting about "the web". What's more, I wonder if half of our inability to come to agreement on some of these issues is simply a matter of terminology getting in the way of having meaningful conversations. I mean, apps aren't "better" than "the web", because they are essentially part of (one form of) it: they use the same web protocols (HTTP / HTML) as the rest of the "browsable" web, they just use them on the back-end before glossing it over with a pretty "native" front end.
|
||||
|
||||
In fact, one might argue that this is the reason that the one area of web standards that has actually seen some progress in the past few months is the [HTTP2 spec](https://http2.github.io/) - an update to how data is transmitted on-the-wire, which should bring notable speed and security improvements to anyone that uses HTTP (including all of those native apps I mentioned earlier). After all, improving this part of "the web" is the one thing that all of the players involved can agree on.
|
27
src/sitePosts/journal/2015/06-03-an-act-of-freedom.md
Normal file
27
src/sitePosts/journal/2015/06-03-an-act-of-freedom.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: An Act of Freedom, But For Whom?
|
||||
date_pub: 2015-06-03T00:00:00-04:00
|
||||
date_upd: 2018-11-04T14:43:00-05:00
|
||||
content_type: journal
|
||||
tags: politics privacy surveillance
|
||||
---
|
||||
|
||||
On this most auspicious day, when the [USA FREEDOM Act](https://en.wikipedia.org/wiki/USA_Freedom_Act) passed through the Senate on it's way to president's desk, I spent the afternoon listening to some of law professors [Eben Moglen's](https://en.wikipedia.org/wiki/Eben_Moglen) excellent talks about [Snowden and the Future](http://snowdenandthefuture.info/index.html).
|
||||
|
||||
One of the things that I noticed he mentioned, which I don't recall hearing anywhere else, is our (the US citizenry) continued complacency about spying, as long as they aren't spying on Americans.
|
||||
|
||||
> Military control ensured absolute command deference with respect to the fundamental principle which made it all "all right," which was: "No Listening Here." The boundary between home and away was the boundary between absolutely permissible and absolutely impermissible—between the world in which those whose job it is to kill people and break things instead stole signals and broke codes, and the constitutional system of ordered liberty.
|
||||
|
||||
Of course, we all know how that turned out:
|
||||
|
||||
> Not only had circumstances destroyed the simplicity of "no listening inside," not only had fudging with the Foreign Intelligence Surveillance Act carried them into the land where law no longer provided them with useful landmarks, but they wanted to do it—let's be frank, they wanted to do it. Their view of the nature of human power was Augustan if not august. They wanted what it is forbidden to wise people to take unto themselves. And so they fell, and we fell with them.
|
||||
|
||||
Nearly every time that the USA PATRIOT Act is demonized in the press (even the leftist press), it seems to only be because the NSA dared to spy on _us_. But, shouldn't we be questioning why they have to have such a large net at all, irrespective of the national boundaries?
|
||||
|
||||
Or, as professor Moglen so succinctly put it (emphasis mine):
|
||||
|
||||
> The empire of the United States, the one that secured itself by listening to everything, was the empire of exported liberty. What we had to offer all around the world was freedom—after colonization, after European theft, after the forms of twentieth-century horror we haven't even talked about yet—we offered liberty; we offered freedom.
|
||||
> ...
|
||||
> It is, of course, utterly inconsistent with the American ideal to attempt to fasten the procedures of totalitarianism on American constitutional self-governance... Partly, as I shall suggest next time, because freedom is merely privilege extended unless enjoyed by one and all. But primarily because _there is an even deeper inconsistency between American ideals and the subjection of every other society on earth to the procedures of totalitarianism_.
|
||||
|
||||
Something to think about the next time someone talks about "freedom".
|
13
src/sitePosts/journal/2015/06-18-the-art-of-authorship.md
Normal file
13
src/sitePosts/journal/2015/06-18-the-art-of-authorship.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: The Art of Authorship and Appropriation
|
||||
date_pub: 2015-06-18T00:00:00-04:00
|
||||
date_upd: 2018-11-04T14:49:00-05:00
|
||||
content_type: journal
|
||||
tags: art copyright web
|
||||
---
|
||||
|
||||
Christopher Sprigman [takes another look](http://www.bloomberg.com/news/articles/2015-06-17/richard-prince-instagram-and-authorship-in-a-digital-world) at Richard Prince's Instagram Exhibit, and makes some bold conclusions:
|
||||
|
||||
> Prince’s body of appropriation art is provoking a reassessment of the meaning of authorship at a time when ownership of creative works in our digital world is tenuous. Anyone with access to the Internet can take something made by others, copy it, change it, and distribute it at the click of a mouse. In this context, we can see that authorship is not a stable concept, but rather that it shifts as technology weakens the link between an “originator” and his work. You may like that or hate that; Prince is pointing it out, in the direct way that only art can.
|
||||
|
||||
As a would-be artist whose done some "appropriation art" myself (as well as a longtime fan of perpetual copyright-trolls, [Negativland](http://negativland.com)), I find this whole discussion fascinating. However, I have to admit that I'm more than a bit surprised at the sums he's been able to get for his "re"-work, and the implication that one man's copyright infringement is another man's high-brow art.
|
19
src/sitePosts/journal/2015/06-30-two-hard-things.md
Normal file
19
src/sitePosts/journal/2015/06-30-two-hard-things.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Two Hard Things
|
||||
date_pub: 2015-06-30T00:00:00-04:00
|
||||
date_upd: 2018-11-04T14:51:00-05:00
|
||||
content_type: journal
|
||||
tags: code computers humor
|
||||
---
|
||||
|
||||
Came across this little ditty today, via [Martin Fowler](http://martinfowler.com/bliki/TwoHardThings.html):
|
||||
|
||||
> There are only two hard things in Computer Science: cache invalidation and naming things.
|
||||
>
|
||||
> -- Phil Karlton
|
||||
|
||||
Personally, though, I prefer the corollary:
|
||||
|
||||
> There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.
|
||||
|
||||
Too true.
|
23
src/sitePosts/journal/2015/07-10-smartphone-cryptogeddon.md
Normal file
23
src/sitePosts/journal/2015/07-10-smartphone-cryptogeddon.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Smartphone Cryptogeddon
|
||||
date_pub: 2015-07-10T00:00:00-04:00
|
||||
date_upd: 2018-11-04T14:57:00-05:00
|
||||
content_type: journal
|
||||
tags: code fear internet politics privacy
|
||||
---
|
||||
|
||||
After yesterday's Senate committee hearing on encryption, wherein both [FBI Director James Comey](http://arstechnica.com/tech-policy/2015/07/fbi-chief-tells-senate-committee-were-doomed-without-crypto-backdoors/) and [New York County District Attorney Cyrus Vance Jr.](http://arstechnica.com/tech-policy/2015/07/this-is-the-most-outrageous-government-tirade-against-ios-8-encryption/) made some pretty nasty comments about strong encryption on smartphones and the apocolyptic-problems it could bring, I thought it might be a good idea to remind everyone of what [Representative Ted Lieu of California said back in April](http://arstechnica.com/tech-policy/2015/04/irate-congressman-gives-cops-easy-rule-just-follow-the-damn-constitution/) about why some users wanted smartphone encryption in the first place:
|
||||
|
||||
> Why do you think Apple and Google are doing this? It's because the public is demanding it. People like me: privacy advocates. A public does not want an out-of-control surveillance state. It is the public that is asking for this. Apple and Google didn't do this because they thought they would make less money. This is a private sector response to government overreach.
|
||||
>
|
||||
> ...
|
||||
>
|
||||
> [T]o me it's very simple to draw a privacy balance when it comes to law enforcement and privacy: just follow the damn Constitution.
|
||||
>
|
||||
> And because the NSA didn't do that and other law enforcement agencies didn't do that, you're seeing a vast public reaction to this. Because the NSA, your colleagues, have essentially violated the Fourth Amendment rights of every American citizen for years by seizing all of our phone records, by collecting our Internet traffic, that is now spilling over to other aspects of law enforcement. And if you want to get this fixed, I suggest you write to NSA: the FBI should tell the NSA, stop violating our rights. And then maybe you might have much more of the public on the side of supporting what law enforcement is asking for.
|
||||
>
|
||||
> Then let me just conclude by saying I do agree with law enforcement that we live in a dangerous world. And that's why our founders put in the Constitution of the United States—that's why they put in the Fourth Amendment. Because they understand that an Orwellian overreaching federal government is one of the most dangerous things that this world can have.
|
||||
|
||||
It might be worth point out that Rep. Lieu is one of four House members with computer science degrees, is a Lieutenant Colonel in the United States Air Force Reserves, _and_ served for four years as a member of the Judge Advocate General’s Corps, making him (IMHO) someone knowledgeable in this area.
|
||||
|
||||
And it just so happens that [fourteen of the world's top computer security experts](http://dspace.mit.edu/bitstream/handle/1721.1/97690/MIT-CSAIL-TR-2015-026.pdf) agree with him, but who's counting.
|
19
src/sitePosts/journal/2015/07-15-on-william-gibson.md
Normal file
19
src/sitePosts/journal/2015/07-15-on-william-gibson.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: On William Gibson and Cyberspace
|
||||
date_pub: 2015-07-15T00:00:00-04:00
|
||||
date_upd: 2018-11-04T14:59:00-05:00
|
||||
content_type: journal
|
||||
tags: computers cyberpunk philosophy
|
||||
---
|
||||
|
||||
I've been on vacation for the last couple of days, and have used some of the time to finish reading William Gibson's excellent "Sprawl" series.
|
||||
|
||||
I actually read the first book in the series, _Neuromancer_, some 14 years ago, and always meant to get back to it, but just never did. Then, about 2 years ago, I re-read _Neuromancer_ and dove straight into the second book, _Count Zero_, before again losing momentum and abandoning the series. While packing for our vacation, I happened across my copy of the third and final book in the series, _Mona Lisa Overdrive_, and I made the decision to use this vacation as an opportunity to finally finish reading the series, a feat that I accomplished just yesterday.
|
||||
|
||||
First, I have to say that I loved the book. You can tell that Gibson's style got more focused as the series went on, making each book better than the last. Also, the series fits his style well -- he has a habit of creating apparently unrelated strands of storytelling, featuring characters that don't seem to have anything to do with each other, and bringing them together in the climax. In that way, _Mona Lisa Overdrive_ serves as the climax of the series itself, bringing apparently unrelated characters and story elements from the first two books together (along with some new ones) into an explosive ending.
|
||||
|
||||
Much of what I like about the series are the background elements, like the way he describes the sprawl and the histories of his characters. But, most of all, I love the idea of [cyberspace](https://en.wikipedia.org/wiki/Cyberspace):
|
||||
|
||||
> Cyberspace. A consensual hallucination experienced daily by billions of legitimate operators, in every nation, by children being taught mathematical concepts... A graphic representation of data abstracted from the banks of every computer in the human system. Unthinkable complexity. Lines of light ranged in the nonspace of the mind, clusters and constellations of data. Like city lights, receding.
|
||||
|
||||
As a computer nerd whose been into networking information and virtual worlds since the days of BBSing (and through into MUDs, the web, and even [OpenSimulator](http://opensimulator.org), for a little while), the notion of connecting to digital realms directly via ones own mind has always appealed to me. In fact, one of the most depressing things about the books, to me, is that in the nearly 30 years since they were published, very little of that technology [has come to pass](https://en.wikipedia.org/wiki/Brain%E2%80%93computer_interface).
|
15
src/sitePosts/journal/2015/07-21-rss-atom-comeback.md
Normal file
15
src/sitePosts/journal/2015/07-21-rss-atom-comeback.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: RSS & Atom Making a Comeback?
|
||||
date_pub: 2015-07-21T00:00:00-04:00
|
||||
date_upd: 2018-11-04T15:01:00-05:00
|
||||
content_type: journal
|
||||
tags: internet js rss web
|
||||
---
|
||||
|
||||
[Baldur Bjarnason thinks he knows](https://www.baldurbjarnason.com/notes/the-rules-have-changed-for-rss/) why RSS and Atom have come back into vogue, powering both Apple News and Facebook Instant Articles after years of disuse:
|
||||
|
||||
> There’s one thing that’s very different this time around for RSS and Atom and it’s the reason why this time it might be different. Back then ‘just the HTML, no CSS, JS, or Flash’ meant nothing more than rich text with images.
|
||||
>
|
||||
> Now, ‘just the HTML’ means rich text, video, audio, SVG, and more. While at the same time ‘HTML with CSS and JS’ has come to mean slow loading websites full of annoying ads and broken functionality (i.e. scroll-jacking).
|
||||
|
||||
It's that last point (again) that's the most important, IMHO, but it's also the one that seems to be [falling on deaf ears](https://blog.itsericwoodward.com/2015/self-fulfilling-prophecymicahgodboltstatus623180750142058496).
|
13
src/sitePosts/journal/2015/07-22-fatigue-and-mastery.md
Normal file
13
src/sitePosts/journal/2015/07-22-fatigue-and-mastery.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: Fatigue and Mastery
|
||||
date_pub: 2015-07-22T00:00:00-04:00
|
||||
date_upd: 2018-11-04T15:21:00-05:00
|
||||
content_type: journal
|
||||
tags: code js philosophy
|
||||
---
|
||||
|
||||
Tero Parviainen has a nice piece about [Overcoming Javascript Framework Fatigue](http://teropa.info/blog/2015/07/15/overcoming-javascript-framework-fatigue.html), but don't let the title fool you - much of the advice can be applied those who work (and live) in most any rapidly-evolving field. Plus, it contains [one of the best quotes](https://gist.github.com/prakhar1989/1b0a2c9849b2e1e912fb) from Rich Hickey (the creator of [Clojure](http://clojure.org/)) about what skills a developer really needs to have (and those skills have nothing to do with preferred language or framework):
|
||||
|
||||
> Programming mastery has little to do with languages, paradigms, platforms, building blocks, open source, conferences etc. These things change all the time and are not fundamental. Knowledge acquisition skills allow you to grok them as needed. I'd take a developer (or even non-developer!) with deep knowledge acquisition and problem solving skills over a programmer with a smorgasbord of shallow experiences any day.
|
||||
|
||||
Via [JavaScript Weekly](http://javascriptweekly.com/issues/241)
|
11
src/sitePosts/journal/2015/07-29-anti-gmo-scaremongering.md
Normal file
11
src/sitePosts/journal/2015/07-29-anti-gmo-scaremongering.md
Normal file
@@ -0,0 +1,11 @@
|
||||
---
|
||||
title: Anti-GMO Scaremongering
|
||||
date_pub: 2015-07-29T00:00:00-04:00
|
||||
date_upd: 2018-11-04T15:25:00-05:00
|
||||
content_type: journal
|
||||
tags: fear gmo politics science
|
||||
---
|
||||
|
||||
> The people who push GMO labels and GMO-free shopping aren’t informing you or protecting you. They’re using you. They tell food manufacturers, grocery stores, and restaurants to segregate GMOs, and ultimately not to sell them, because people like you won’t buy them. They tell politicians and regulators to label and restrict GMOs because people like you don’t trust the technology. They use your anxiety to justify GMO labels, and then they use GMO labels to justify your anxiety. Keeping you scared is the key to their political and business strategy. And companies like Chipotle, with their non-GMO marketing campaigns, are playing along.
|
||||
|
||||
[Unhealthy Fixation](http://www.slate.com/articles/health_and_science/science/2015/07/are_gmos_safe_yes_the_case_against_them_is_full_of_fraud_lies_and_errors.html), William Saletan
|
21
src/sitePosts/journal/2015/09-18-commercial-web-dying.md
Normal file
21
src/sitePosts/journal/2015/09-18-commercial-web-dying.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: The (Commercial) Web is Dying? So What?
|
||||
content_type: journal
|
||||
date_pub: 2015-09-18T00:00:00-04:00
|
||||
date_upd: 2021-07-10T23:44:00-04:00
|
||||
description: In defense of ad-blockers and a demonetizied web.
|
||||
tags: web money blogging
|
||||
---
|
||||
Lately, there seems to have been a up-tick in the [never](http://www.tomsguide.com/us/ad-blocking-is-stealing,news-20962.html)-[ending](https://www.techdirt.com/articles/20100306/1649198451.shtml) [debate](http://www.theverge.com/2015/9/17/9338963/welcome-to-hell-apple-vs-google-vs-facebook-and-the-slow-death-of-the-web) about the web, advertising, and content-blocking. While Apple's recent [introduction of content-blockers in iOS9](https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW8) is the most proximate reason for this discussion, it isn't a new battle, and has been raging for [quite some time](http://arstechnica.com/business/2010/03/why-ad-blocking-is-devastating-to-the-sites-you-love/). The basic argument is that many sites rely on advertising revenue to cover not just their costs, but also to turn a profit. And these web-based companies are (justifiably) concerned that ad-blocking could reduce (or destroy) that revenue stream, which might force them to shutdown.
|
||||
|
||||
To which I say, "so what?"
|
||||
|
||||
I'm not trying to be mean, but the fact is that [lots](https://en.wikipedia.org/wiki/List_of_defunct_retailers_of_the_United_States) and [lots](http://www.statisticbrain.com/startup-failure-by-industry/) of businesses are forced to close every year, and many (most?) of them close because they have what some might call a "flawed business model". Like [some others](http://entreproducer.com/online-advertising/), I believe that's exactly what the "web advertising" model is, because if it wasn't, no one would be blocking the ads, there would be no heated discussion about it, and blog posts like this one would never exist. I mean, some may liken ad-blocking to stealing, but others see it for what it actually is - [disruption](http://www.ideafaktory.com/technology/ad-blocking-web-of-lies/).
|
||||
|
||||
Look, I've been online long enough to remember the early attempts at monetizing the web: first came the embedded banner ads, which paid-per-view, but were easily ignored by end users; then came the pop-up (and pop-under) ads, which were still pay-per-view, but which couldn't be ignored (unless you turned them off, since they relied on JavaScript); then came embedded banners with a "pay-per-click" model, which didn't work because nobody wanted to actually click the links. And as each one rose to prominence, there were always those crying for people to engage with their ads ("If you don't click on one of my ads, I'll be forced to shut my site down!"). But the web remains.
|
||||
|
||||
And that's part of why I titled this the way I did. Even if the commercial web went away (which, let's be honest, it probably won't), it wouldn't be the end of the world: many sites which rely on [donations](https://wikipedia.org) or [subscriptions](http://ft.com/) would remain, as would [storefronts](https://amazon.com/) and sites that support [physical](https://samsung.com) [things](http://hasbro.com). Plus, there are still many sites which are run more-or-less as hobbies, paid for by the people [who run them](https://itsericwoodward.com/). And, despite what the anti-blockers would say, there are [other successful revenue models out there](https://medium.com/on-blendle/blendle-a-radical-experiment-with-micropayments-in-journalism-365-days-later-f3b799022edc).
|
||||
|
||||
So, if you are a blogger or news site who is concerned about how this change will affect your bottom line, you have my sympathy: not because I block your ads (which I do), but because you put your faith in a fundamentally flawed business model (and believe me, [you aren't the only one](http://the-digital-reader.com/2015/06/03/no-readers-have-no-obligation-to-support-a-publishers-flawed-model-or-bad-decisions/)). If, however, you think I'm wrong, then I encourage you to take the next obvious step and start blocking (or [Comic Sans-ing](https://twitter.com/howtogeek/status/638861518575173632)) users who run ad blockers. If your content is worth viewing ads for, then people who run blockers will turn them off just so they can see it. But be prepared for the horrifying truth: when people have to actually pay for something (either with their eyeballs and "unblock" buttons, or with cold-hard cash), your site may not be good/interesting/original enough to actually generate revenue. Again, you have my sympathy... but not my cooperation.
|
||||
|
||||
[It has recently been asked](http://oleb.net/blog/2015/08/is-it-immoral-to-not-block-ads/) what the web might have looked like if the ad-based model had never taken off. Since we can't rewind the clock, we can't know for sure what course history may have taken in that instance. But if we keep running ad-blockers long enough, we may yet find out.
|
27
src/sitePosts/journal/2016/06-16-hello-world.md
Normal file
27
src/sitePosts/journal/2016/06-16-hello-world.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
{
|
||||
"title": "Hello, World!",
|
||||
"description": "The obligatory introductory post for my new web site.",
|
||||
"content_type": "journal",
|
||||
"is_draft": false,
|
||||
"was_pushed": true,
|
||||
"date_pub": "2016-06-16T13:54:45.000Z",
|
||||
"date_upd": "2018-12-01T14:31:00-05:00",
|
||||
"short_code": "1f5f0",
|
||||
"tags": "blogging"
|
||||
}
|
||||
---
|
||||
|
||||
So, after a few years of on-again, off-again [blogging](https://blog.itsericwoodward.com/) (in both [original](https://blog.itsericwoodward.com/2015/on-william-gibson-and-cyberspace) and [micro](https://blog.itsericwoodward.com/2016/cherish-your-impostor-syndrome-dont-trust-people-who-dont-have) flavors), coupled with staring at (and maintaining) a [half-completed projects site](https://site.itsericwoodward.com/), I got tired of having a split web personality and decided to squish it all together. This site is the result of that unholy union.
|
||||
|
||||
I plan on doing a write-up later explaining the gory details of how (and why) I built it the way I
|
||||
did<sup><a href="#footnote1">1</a></sup>, but let me at least give you the quick, jargon-laden version: the site is built with [Node](https://nodejs.org/) (specifically an as-of-yet-unreleased custom library & CLI wrapped around [HarpJS](https://harpjs.com/)), which creates static pages out of [Markdown](http://commonmark.org/) and [EJS](http://ejs.co/) (templated to conform to [IndieWeb](https://indiewebcamp.com/) / [microformats2](http://microformats.org/) specifications), which is then compressed via various [Gulp](http://gulpjs.com/) plugins, and is ultimately served up through [nginx](https://nginx.org/) running on a [DigitalOcean](https://m.do.co/c/99e02989735d) droplet. And, lest I forget, lots and lots of emojis.
|
||||
|
||||
It's all still very much a work-in-progress, but I'm pleased as punch with the results so far, and look forward to finishing both it and my 237 other projects (just probably not this week, month, or year).
|
||||
|
||||
In the meantime, feel free to take a look around and check it out, and if you have any questions (or want to heap praise on me), hit me up [on social media or via email](/about.html).
|
||||
|
||||
----------
|
||||
<p id="footnote1" class="footnote">
|
||||
<a href="fn-link1">1</a> - Especially since I've been publishing here for [over a month](/updates/2016/5/8/update.html) and am just now getting around to writing my "introductory" post.
|
||||
</p>
|
34
src/sitePosts/journal/2016/08-23-obituary.md
Normal file
34
src/sitePosts/journal/2016/08-23-obituary.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
{
|
||||
"title": "Obituary for Dennis Jon Woodward (My Father)",
|
||||
"description": "My father, Dennis Jon Woodward, passed away May 23, 2016. This is his obituary.",
|
||||
"tags": "memorial",
|
||||
"is_draft": false,
|
||||
"date_pub": "2016-08-23T02:23:47.697Z",
|
||||
"date_upd": "2021-07-11T22:06:00-04:00",
|
||||
"content_type": "journal",
|
||||
"was_pushed": true,
|
||||
"short_code": "1f7n0"
|
||||
}
|
||||
---
|
||||
My father, Dennis Jon Woodward, passed away May 23, 2016.
|
||||
|
||||
<img src='/images/updates/obit.jpg' style='float:left;width:45%;max-width:10em;margin:0 1em .5em' />
|
||||
|
||||
I debated whether to even write about this here, but as the months have gone on, I can't help but notice the effect his passing has had on my thoughts. Initially, I was overwhelmed with sadness, my mind unable to grasp the concept of him not existing anymore. As the time has gone on, it's become more about specific thoughts or experiences triggering specific memories, followed by a wave of sadness at never being able to have those experiences with him again. Even now, as I write this nearly 3 months on, I find myself tearing up at the thought of never seeing him again. I know these things take time, and I'm sure that someday, once I'm "used" to not being with him anymore, my memories of him will bring joy. But not yet.
|
||||
|
||||
The downside of being a nauralist / materialist is that I don't believe in any magical place where I'll get to see him again, nor do I believe that he can come visit me as a ghost or spirit. I mean, it'd be nice if either of these true, but I can't believe in them because there's no evidence for them. And since he's the one who started me on my love of science (and, tangentially, my road to naturalism), I have to stay true to that, no matter what my wishes are. But it's hard.
|
||||
|
||||
Writing the obituary has been, for me, part of the grieving process - trying to consolidate the major events / moments / details of his life down to a few short sentences. But it's also been difficult to complete; almost as if, by not publishing it, I was somehow hanging on to him. I dreaded writing it (to say nothing of trying to find the right picture), but I did, and as of yesterday, it was published in the paper. But nothing changed. He's still gone.
|
||||
|
||||
This is the other reason I debated writing about this here - not just because it's difficult, but because I feel like I don't have anything useful to say. Maybe later, but not now.
|
||||
|
||||
---------
|
||||
|
||||
Dennis Jon Woodward, formerly of Concord, passed away unexpectedly but peacefully in his home Monday, May 23, 2016, at the age of 64.
|
||||
He was born January 16, 1952, in Syracuse, N.Y., the son of the late Leonard and Vera Woodward, and was raised in upstate New York.
|
||||
He retired from Pass & Seymour / Legrande in Concord in 2012 after 40 years with the company.
|
||||
|
||||
He is survived by his wife, Sherry Woodward, of Ellenboro; sisters, Eileen Joy and Brenda Myslevecek, of Redfield, N.Y.; brother, Donald Woodward and wife, Pat, of Augusta, Ga.; son Eric Woodward and wife, Stacie, of Concord; son, Jeffrey Woodward and wife, Candace, also of Concord; daughter Sarah Horton and husband, Jason, of Mount Pleasant; stepson, Keith McDaniel and wife, Lisa, of Ellenboro; stepson Kirk McDaniel, of Concord; and 13 grandchildren. A private family service was held at his home. In lieu of flowers, the family is asking that donations be made to the [Leukemia & Lymphoma Society](http://www.lls.org/).
|
||||
|
||||
Posted at: http://www.independenttribune.com/obituaries/woodward-dennis/article_015cf7ba-3000-5081-8719-9b5536174451.html
|
70
src/sitePosts/journal/2016/12-12-failing-me-softly.md
Normal file
70
src/sitePosts/journal/2016/12-12-failing-me-softly.md
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
{
|
||||
"title": "Failing Me Softly with SPF",
|
||||
"description": "The joys of the Sender Policy Framework and the (apparent) difficulties of implementing it correctly.",
|
||||
"tags": "spf dns internet email",
|
||||
"is_draft": false,
|
||||
"date_pub": "2016-12-12T16:51:12.171Z",
|
||||
"date_upd": "2018-12-01T14:34:00-05:00",
|
||||
"content_type": "journal",
|
||||
"was_pushed": true,
|
||||
"short_code": "1fbb0"
|
||||
}
|
||||
---
|
||||
About a year ago, I started receiving some fairly odd email messages: some originating from my own domain (itsericwoodward.com), and many originating from my own email address!
|
||||
|
||||
<iframe width="640" height="360" src="https://www.youtube.com/embed/P53U-0DD98g?t=34" frameborder="0" allowfullscreen></iframe>
|
||||
|
||||
Most of these emails were obvious spam (or were themselves the product of spam, such as failure messages from external domains where the spam had been sent), and I started panicking: had I been hacked?
|
||||
|
||||
As I dug into the issue, I discovered that no, I hadn't been hacked, but that my domain was just blindly accepting requests to send email. That's when I first learned about [SPF (Sender Policy Framework)](http://www.openspf.org/), "an open standard specifying a technical method to prevent sender address forgery." Basically, to use SPF, I (as the domain owner) simply had to add a single TXT record to my domain information that indicated what servers could actually send email from my domain, and all others would be rejected. So, after fiddling around with [the format](http://www.openspf.org/SPF_Record_Syntax) for a while, I found my hosts's recommended record (name changed to protect the innocent):
|
||||
|
||||
v=spf1 a mx include:mail.example.com ~all
|
||||
|
||||
Needless to say, I added it to my domain record, and bam -- overnight, nearly all of the spam stopped flowing.
|
||||
|
||||
So, I went about my merry way, figuring I had solved the issue. I even added this record to the other domains that I own, since it had worked so well with the first one.
|
||||
|
||||
But it turns out that I was wrong.
|
||||
|
||||
Although I stopped receiving messages the messages from myself, every now and then I'd get a failure notice about an email coming from one of my domains being unsendable. When I'd get these, I'd think, "huh, I thought I fixed that," and then I'd forget about it and move on to [something else](https://mythicwarsgame.com/).
|
||||
|
||||
Then, just the other day, I received an email from me, to (another) me, telling me that I had a voicemail from an international number (it even helpfully suggested that "You might want to check it when you get a chance."). And I thought, "wait a minute, didn't I already fix this?".
|
||||
|
||||
So, this time, rather than forgetting about it, I actually took a moment to look at the header, and that's when I saw this (again, name changed):
|
||||
|
||||
softfail (mail.example.com: domain of transitioning xxxxxx@example.com
|
||||
does not designate 192.0.2.1 as permitted sender)
|
||||
|
||||
So, I went back to the SPF site again, and that's when I learned that the server could not only reply with "pass" and "fail", but a whole cornucopia of messages:
|
||||
|
||||
Received-SPF: softfail (mybox.example.org: domain of transitioning
|
||||
myname@example.com does not designate 192.0.2.1 as permitted sender)
|
||||
|
||||
Received-SPF: neutral (mybox.example.org: 192.0.2.1 is neither permitted
|
||||
nor denied by domain of myname@example.com)
|
||||
|
||||
Received-SPF: none (mybox.example.org: domain of myname@example.com does
|
||||
not designate permitted sender hosts)
|
||||
|
||||
Received-SPF: permerror -extension:foo (mybox.example.org: domain of
|
||||
myname@example.com uses mechanism not recognized by this client)
|
||||
|
||||
Received-SPF: temperror (mybox.example.org: error in processing during
|
||||
lookup of myname@example.com: DNS timeout)
|
||||
|
||||
The next obvious question is "why?" (well, that and "what the hell does transitioning mean?").
|
||||
|
||||
It turns out that my host either misinterpreted [the SPF spec](https://www.ietf.org/rfc/rfc4408.txt), or tried to protect their users from themselves. Apparently, the presence of the tilde ("~") in a record indicates that the domain is in transition to SPF - it's designed for large email providers and corporations to let them start transitioning to SPF without forcing hard failures on every email that originates from an unlisted server (the idea is that the email owner would collect these softfails, verify the IPs are valid, and then add them to the SPF record). Oops.
|
||||
|
||||
Fortunately, I now knew what to do to fix the problem: replace the tilde with a dash ("-"):
|
||||
|
||||
v=spf1 a mx include:mail.example.com -all
|
||||
|
||||
A few hours later, problem solved, and no more spam from my domain (so far).
|
||||
|
||||
Based on my reading, [I'm not the only one that made this mistake](https://nick.groenen.me/posts/2013/03/20/spf-records-youre-doing-them-wrong/), and since SPF has been around for a few years (and is implemented, in some for or another, on most corporate domains), I can only imagine how many other domains using an incomplete / incorrect implementation of it (based on the number of F*-buddy requests and Canadian pharmaceutical offers I still get, I'd imagine that number to be fairly high).
|
||||
|
||||
So, if you own one or more domains, please do everyone a favor and implement SPF for your email. And if you aren't using a ton of different mail servers (wherein you might not be able to list them all in your TXT record), skip the tilde and go straight for the dash.
|
||||
|
||||
The internet will thank you for it.
|
62
src/sitePosts/journal/2016/12-14-star-trekkin.md
Normal file
62
src/sitePosts/journal/2016/12-14-star-trekkin.md
Normal file
@@ -0,0 +1,62 @@
|
||||
---
|
||||
{
|
||||
"title": "Star Trekkin'",
|
||||
"description": "An amusing take on how the humans in Star Trek relate to their technology (and how other aliens relate to them).",
|
||||
"tags": "scifi funny tv StarTrek",
|
||||
"is_draft": false,
|
||||
"date_pub": "2016-12-14T15:26:55.596Z",
|
||||
"date_upd": "2018-12-01T14:34:00-05:00",
|
||||
"content_type": "journal",
|
||||
"was_pushed": true,
|
||||
"short_code": "1fbd0"
|
||||
}
|
||||
---
|
||||
Today, in the "I never thought of it like that" file:
|
||||
|
||||
> Random Headcanon: That Federation vessels in _Star Trek_ seem to experience bizarre malfunctions with such overwhelming frequency isn’t just an artefact of the television serial format. Rather, it’s because the Federation as a culture are a bunch of deranged hyper-neophiles, tooling around in ships packed full of beyond-cutting-edge tech they don’t really understand... All those rampant holograms and warp core malfunctions and accidentally-traveling-back-in-time incidents? That doesn’t actually happen to anyone else; it’s literally **just** Federation vessels that go off the rails like that. And they do so on a fairly regular basis.
|
||||
|
||||
<!-- READ MORE -->
|
||||
|
||||
But apparently, others **have** thought of that, and its implications:
|
||||
|
||||
> So to everyone else in the galaxy, all humans are basically Doc Brown... Aliens who have seen the _Back to the Future_ movies literally don’t realise that Doc Brown is meant to be funny. They’re just like “yes, that is exactly what all human scientists are like in my experience”.
|
||||
|
||||
...
|
||||
|
||||
> THE ONLY REASON SCOTTY IS CHIEF ENGINEER INSTEAD OF SOMEONE FROM A SPECIES WITH A HIGHER TECHNOLOGICAL APTITUDE IS BECAUSE EVERYONE FROM THOSE SPECIES TOOK ONE LOOK AT THE ENTERPRISE’S ENGINE ROOM AND RAN AWAY SCREAMING
|
||||
|
||||
...
|
||||
|
||||
> klingons: okay we don’t get it
|
||||
>
|
||||
> vulcan science academy: get what
|
||||
>
|
||||
> klingons: you vulcans are a bunch of stuffy prisses but you’re also tougher, stronger, and smarter than humans in every single way
|
||||
>
|
||||
> klingons: why do you let them run your federation
|
||||
>
|
||||
> vulcan science academy: look
|
||||
>
|
||||
> vulcan science academy: this is a species where if you give them two warp cores they don’t do experiments on one and save the other for if the first one blows up
|
||||
>
|
||||
> vulcan science academy: this is a species where if you give them two warp cores, they will ask for a third one, immediately plug all three into each other, punch a hole into an alternate universe where humans subscribe to an even more destructive ideological system, fight everyone in it because they’re offended by that, steal their warp cores, plug those together, punch their way back here, then try to turn a nearby sun into a torus because that was what their initial scientific experiment was for and they didn’t want to waste a trip.
|
||||
>
|
||||
> vulcan science academy: they did that last week. we have the write-up right here. it’s getting published in about six hundred scientific journals across two hundred different disciplines because of how many established theories their ridiculous little expedition has just called into question. also, they did turn that sun into a torus, and no one actually knows how.
|
||||
>
|
||||
> vulcan science academy: this is why we let them do whatever the hell they want.
|
||||
>
|
||||
> klingons: ... can we be a part of your federation
|
||||
|
||||
...
|
||||
|
||||
> you know what the best evidence for this is? Deep Space 9 almost never broke down. minor malfunctions that irritated O’Brien to hell and back, sure, but almost none of the truly weird shit that befell Voyager and all the starships Enterprise. what was the weirdest malfunction DS9 ever had? the senior staff getting trapped as holosuite characters in Our Man Bashir, and that was because a human decided to just dump the transporter buffer into the station’s core memory and hope everything would work out somehow, which is a bit like swapping your computer’s hard drive out for a memory card from a PlayStation 2 and expecting to be able to play a game of Spyro the Dragon with your keyboard and mouse.
|
||||
|
||||
...
|
||||
|
||||
> There is no phrase in Vulcan for “the particular moment when you understand that the true way to serenity is to embrace chaos as much as logic.”
|
||||
>
|
||||
> Vulcans that work for Starfleet though, have a particular look that passes between them when sharing war stories featuring human shenanigans that might mean the same thing.
|
||||
|
||||
From http://beka-tiddalik.tumblr.com/post/150425828285/roachpatrol-deadcatwithaflamethrower / HT [jwz.org](https://www.jwz.org/blog/2016/11/star-trek-mad-science/)
|
||||
|
||||
<i><rant>I loathe the way Tumblr shows replies. It's like the worst aspects of a single-page mailing list dump, but for the "social media age" (so, an excess of needless indenting that screws up both the text and the embedded images).</rant></i>
|
36
src/sitePosts/journal/2018/02-18-mythic-wars-have-begun.md
Normal file
36
src/sitePosts/journal/2018/02-18-mythic-wars-have-begun.md
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
title: The Mythic Wars Have Begun!
|
||||
description: My new card game has been published, so I wrote a card database for it.
|
||||
tags: code MythicWars CodexMythica games
|
||||
is_draft: false
|
||||
date_pub: 2018-02-18T22:47:06.239Z
|
||||
section: updates
|
||||
content_type: journal
|
||||
was_pushed: false
|
||||
---
|
||||
|
||||
TL;DR - I made a [game](https://mythicwarsgame.com/) and got it [published](https://www.kickstarter.com/projects/603868199/mythic-wars-clash-of-the-gods-and-cthulhu-rises/posts/2095980), so I made an [app](https://codex.mythicwarsgame.com/) to help people play the game, and [published](https://github.com/ItsEricWoodward/codex-mythica) that, too.
|
||||
|
||||
ICYMI, [the card game I designed](https://mythicwarsgame.com/) and [ran a Kickstarter for](https://www.kickstarter.com/projects/603868199/mythic-wars-clash-of-the-gods-and-cthulhu-rises/) was [finally published a few months ago](https://www.kickstarter.com/projects/603868199/mythic-wars-clash-of-the-gods-and-cthulhu-rises/posts/2095980).
|
||||
|
||||
<gratuitous-plug> It's called [Mythic Wars: Clash of the Gods](https://mythicwarsgame.com/), and it's available now at many fine gaming stores, or directly from either [the Excalibre Games website](http://excalibregames.com/) or [Amazon](https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=mythic+wars+clash+of+the+gods)! </gratuitous-plug>
|
||||
|
||||
I had alot of fun designing and playtesting the game, and I'm quite pleased with the finished product. While I admit that I found the entire Kickstarting and publishing process to be somewhat less fun (and quite eye-opening), overall, the fact that I can now hold my game in my hands (and see it for sale at [my friendly local game store](https://www.facebook.com/pages/Scotts-Collectibles/190794444295850)) makes me enormously happy.
|
||||
|
||||
<figure>
|
||||
<image src="/images/updates/mw-scotts.jpg" />
|
||||
<figcaption>My game, on a shelf, AT A STORE!<figcaption>
|
||||
</figure>
|
||||
|
||||
Since I am [a code monkey by trade](https://itsericwoodward.com/about.html) (and [a web developer by choice](https://blog.itsericwoodward.com/2015/developing-the-web)), I wanted to complement the game's publication with the release of a simple, searchable database of all of the cards available for it. Taking inspiration from [the Gatherer, the official database for Magic: the Gathering cards](http://gatherer.wizards.com/) (the best example of such an application that I'm aware of), I mocked up something over the course of weekend, tweaked it over the course of a couple more weekends, and soon, [The Codex Mythica](https://codex.mythicwarsgame.com/) was born.
|
||||
|
||||
It's my first publicly-available [Node](https://nodejs.org/) / [Express](http://expressjs.com/) application, so the code's kinda ugly, but I think it has some neat features, like a responsive layout designed to work well on different screens and devices, and a category-based searching / filtering system for sorting and selecting cards (along with the obligatory word search functionality). Plus, each card has links to both its art and to the [Wikipedia](https://wikipedia.org/) entry for the its subject (or the [Lovecraft wiki](http://lovecraft.wikia.com/wiki/Main_Page) entry, in the case of some of [the Outer Gods and their minions](https://codex.mythicwarsgame.com/cards/s01r)).
|
||||
|
||||
It also (finally) gave me an excuse to share something on GitHub! You can find it at https://github.com/ItsEricWoodward/codex-mythica
|
||||
|
||||
<gratuitous-plug> So, if you like games about gatherings of mages, ascended beings, or worlds where war is crafted, check out [Mythic Wars: Clash of the Gods](https://mythicwarsgame.com/), available now at many fine gaming stores, or directly from either [the Excalibre Games website](http://excalibregames.com/) or [Amazon](https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=mythic+wars+clash+of+the+gods)! </gratuitous-plug>
|
||||
|
||||
(Sorry, I'm contractually obligated to get in one more of those.)
|
||||
|
||||
Anyways, if you have any suggestions for The Codex Mythica, feel free to [open an issue on GitHub](https://github.com/ItsEricWoodward/codex-mythica/issues) or
|
||||
<a rel="me" class="u-url url u-email" title="Email" href="mailto:eric@itsericwoodward.com">drop me a line</a> (I can't guarantee I'll implement it, but I always appreciate the suggestions).
|
25
src/sitePosts/journal/2018/05-15-fixing-gedit.md
Normal file
25
src/sitePosts/journal/2018/05-15-fixing-gedit.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Fixing Gedit
|
||||
date_pub: 2018-05-15T00:00:00-04:00
|
||||
date_upd: 2018-12-01T14:43:00-05:00
|
||||
content_type: journal
|
||||
tags: NoteToMyFutureSelf gedit Ubuntu
|
||||
description: Notes about some of the settings that I recommend for gedit.
|
||||
---
|
||||
I tend to use [Atom](https://atom.io/) when I'm working on code, but given the choice, I prefer to use more basic text editors when I'm just making / re-reading notes (something I do alot).
|
||||
|
||||
In my laptop's previous life, it had a runaway memory issue with #gedit that made it impossible to use, but since upgrading to #Ubuntu 18.04, I haven't had any troubles with it, so it's been my default text editor once again.
|
||||
|
||||
Unfortunately, one issue I've continued to run into is that, no matter how many times I adjust the editor settings in the GUI (for tab size, auto-indent, and [use-spaces-for-tabs-goddammit](https://www.jwz.org/doc/tabs-vs-spaces.html)), those changes are lost on reboot.
|
||||
|
||||
So, this time, rather than making the same futile changes in the application, I decided to use (what I think are) the commands to permanently change those settings.
|
||||
|
||||
If you're having the same problems, type this in your shell of choice (ENTER after each one):
|
||||
|
||||
```shell
|
||||
> gsettings set org.gnome.gedit.preferences.editor tabs-size 2
|
||||
> gsettings set org.gnome.gedit.preferences.editor auto-indent true
|
||||
> gsettings set org.gnome.gedit.preferences.editor insert-spaces true
|
||||
```
|
||||
|
||||
I've rebooted the machine since I put these commands in, and so far, so good. Of course, this may change by the next LTS release, but these settings should keep my happy for the next couple of years, at least (and I'm posting it here primarily as a #NoteToMyFutureSelf).
|
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: Loose Ideas for the Next Social Web
|
||||
date_pub: 2018-06-26T00:00:00-04:00
|
||||
date_upd: 2018-12-01T14:42:00-05:00
|
||||
content_type: journal
|
||||
tags: SocialMedia web offline fediverse WebDev
|
||||
description: Some thoughts about what I would like to see next in the social media / web space.
|
||||
---
|
||||
Inspired by both [this toot](https://octodon.social/@kensanata/100270464515352834) and my recent dabblings in [the Fediverse](https://wonderdome.net/), I just wanted to take a moment and collect some thoughts about what I would like to see next in the #SocialMedia / #web space.
|
||||
|
||||
+ I like the idea of using a hub-and-spoke model, where each actual edge device (phone / tablet / etc.) connects to some kind of always-on server (either a cheap virtual machine or a home-based server), which would be run by a tech-enabling friend, like BBSes used to be.
|
||||
+ All content creation and such would occur on the edge device, probably via a [progressive web app](https://adactio.com/journal/13884) hosted on the hub (to enable #offline creating), and which would connect to its hub when convenient to upload any newly created content.
|
||||
+ Here, "content" means basically anything that you can create on a social media site - text, photos, replies, whatnot.
|
||||
+ The content would be marked up with [IndieWeb](https://indieweb.org/) [microformats-2](http://microformats.org/) tags, enabling easy consumption / sharing.
|
||||
+ Since the content creation / editing would occur on the spoke devices, the hub would be used primarily for caching and speedy connectivity (to prevent issues with asymmetric connection speeds that would prevent direct sharing between the edge devices).
|
||||
+ The hub would collect incoming messages for the user and cache them until the user's device can connect to the hub to pull them down into their edge device(s).
|
||||
+ The hub would also support [webmentions](http://webmention.org/) (both in and out), [webfinger](https://webfinger.net/), and any other useful protocols ([ActivityPub](https://www.w3.org/TR/activitypub/), to enable more clients?).
|
||||
+ Ideally, each user of this kind of system would have a subdomain of their own (https://eric.example.com), which has their public info, profile pic, and public posts, and which could serve as a [Web sign-in](https://indieweb.org/How_to_set_up_web_sign-in_on_your_own_domain) endpoint via the presence of an [h-card](http://microformats.org/wiki/h-card) (listing their OAuth2-compatible accounts).
|
||||
|
||||
I freely admit that this idea still has some issues, since it is both incredibly hand-wavy and would still require tech-smart gatekeepers to run the hubs, but eventually even that second issue could be mitigated somewhat by turning the software into a single-click install option for a Pi or similar device (or pre-installed on such a device, with a plug-and-play setup of some kind, or pre-built images for VPS hosting).
|
||||
|
||||
I'm open to thoughts / suggestions / comments.
|
15
src/sitePosts/journal/2018/07-23-career-20.md
Normal file
15
src/sitePosts/journal/2018/07-23-career-20.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
title: Career 2.0
|
||||
content_type: journal
|
||||
date_pub: 2018-07-23T00:00:00-04:00
|
||||
date_upd: 2021-07-10T23:32:00-04:00
|
||||
tags: career meatspace
|
||||
tldr: Announcing my upcoming change in employment status.
|
||||
---
|
||||
In case you hadn't heard by now, I've decided to leave AT&T. After nearly 18 years with the company, July 30 will be my last day.
|
||||
|
||||
I have my reasons for leaving, and I may go into them once I am no longer bound by the company's Social Media policy, but for the time being, I'll have to remain mum about it (unless you know me in #meatspace, in which case, contact me elsewhere for details).
|
||||
|
||||
Due to the (relatively) generous severance and benefits package I'll be receiving, I shouldn't have to scramble to find a replacement job career too quickly. As such, I plan on taking a couple of weeks' "sabbatical" during which I can spend some quality time with my family and (hopefully) get some of my side projects finished.
|
||||
|
||||
All that to say: When I woke up this morning, I was struck by how surreal it is that, after nearly 18 years working for the same company, at the same location, and seeing many of the same people every day, I only have a week left.
|
23
src/sitePosts/journal/2018/08-19-my-blogging-problem.md
Normal file
23
src/sitePosts/journal/2018/08-19-my-blogging-problem.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: My Blogging Problem
|
||||
date_pub: 2018-08-19T00:00:00-04:00
|
||||
date_upd: 2018-12-01T12:17:00-05:00
|
||||
content_type: journal
|
||||
tldr: Social media navel gazing about my love/hate relationship with blogging, all because I'm launching a new journal (not blog) at <a href="https://www.itsericwoodward.com/journal/">www.itsericwoodward.com/journal/</a>.
|
||||
tags: SocialMedia blogging
|
||||
---
|
||||
I have a problem with #blogging.
|
||||
|
||||
For a long time, I assumed that it was a time issue - I felt like I either didn't have the time to do anything cool (which would give me something to blog about), or I felt like I didn't have the time to blog about the few cool things that I did accomplish.
|
||||
|
||||
Then, when I did have some time, there would always be other reasons that I couldn't write: I'd have issues with my blogging software (and wind up spend time either diagnosing it, fixing it, or looking for a replacement), or I'd get distracted updating the servers, or by a family issue, or any number of 100 other things.
|
||||
|
||||
But what makes it worse is my other problem: every few weeks, I'll go on a tear where I get hyper-focused on a single topic or idea, and spend a large amount of my free time either researching it, attempting my hand at it, or both. And then, after a few weeks, I'll inevitably move on to some other topic (something [Les Orchard](https://lmorchard.com/) calls ["Serial Enthusiasm"](https://blog.lmorchard.com/2006/05/26/confessions-of-a-serial-enthusiast/)), and I won't take the time to document what I learned / accomplished during said tear.
|
||||
|
||||
But... no more.
|
||||
|
||||
This post represents the first in (what I hope will be) a series of journal entries about the various things that I've done and/or learned about in the few months/years/lives, in hopes of doing my own small part to [develop the web](/journal/2015/03-18-developing-the-web.html). In addition to posting new items here, I also plan to (eventually) import most of my entries from my on-again-off-again [Known instance](https://blog.itsericwoodward.com/) (aka just in case something bad happens to it). I've got a few other ideas, too, but we'll see how industrious I am.
|
||||
|
||||
And, in order to break my blogging curse, this will not be called a blog, but rather [a journal](https://botsin.space/@selfcare/101008122586734747), and it will live at [ItsEricWoodward.com/journal/](https://www.itsericwoodward.com/journal/).
|
||||
|
||||
So, I hope you enjoy my new journal, and if you're already here, I say "Thanks for stopping by, feel free to take a look around, but please don't let the cats out." ☺
|
19
src/sitePosts/journal/2018/08-25-things-i-couldnt-say.md
Normal file
19
src/sitePosts/journal/2018/08-25-things-i-couldnt-say.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Things I Couldn't Say
|
||||
content_type: journal
|
||||
date_pub: 2018-08-25T21:19:00-04:00
|
||||
date_upd: 2018-12-01T12:17:00-05:00
|
||||
tldr: My previous employer's policies prevented me from voicing my opinions on certain topics. As I am no longer employed by them, these are those opinions.
|
||||
tags: SocialMedia NetNeutrality advertising politics
|
||||
---
|
||||
As I mentioned before, [I have recently ended my employment relationship](/journal/2018/07-23-carrer-20.html) with a certain <strike>telecommunications</strike> entertainment company, and while I don't want to be seen as someone who bad mouths their former employer, the truth is that they had some policies in place that prevented me from voicing my opinions on certain topics while I was working for them. This is not me complaining so much as explaining why I feel the need to make the following statements now, as opposed to when they were somewhat more relevant to current events.
|
||||
|
||||
+ **Net Neutrality is a good thing, and it needs to be re-instated ASAP** - the major ISPs in the US have proven [time](https://www.eff.org/deeplinks/2007/10/eff-tests-agree-ap-comcast-forging-packets-to-interfere) [and](https://www.washingtonpost.com/blogs/post-tech/post/fcc-fines-verizon-125m-for-blocking-tethering-apps/2012/07/31/gJQAXjRLNX_blog.html) [again](https://www.theguardian.com/technology/2015/jun/22/major-internet-providers-slowing-traffic-speeds) that they can't be trusted, and that they will use every opportunity to try and take advantage of their customers. IMHO, this is a result of the total lack of competition outside of the top 30-50 markets (and sometimes, even within them, meaning that most customers in the US only have one or maybe two competing ISPs available (and who knows how many are in the same position I am, where only one offers *actual* high-speed internet, with the other limited to offering DSL). This is why we need #NetNeutrality.
|
||||
|
||||
+ **Targeted #advertising is not a good thing** - I'm not a huge fan of [surveillance capitalism](https://en.wikipedia.org/wiki/Surveillance_capitalism) in general, but I have a particular distaste for targetted advertising, mostly because of the (unintended?) side effects that we see all around us (filter bubbles, fake news, weaponized misinformation, etc.). That having been said, I do still have a number of Google products in my house, primarily because they are useful devices to have, and (IMHO) that usefulness justifies the data that Google can scrape about me from them. However, to suggest that targetted advertising itself is so useful that we should allow advertisers to collect data about us is, to me, not only the height of arrogance (assuming that these offers are *so good* that we'll *beg* them to take our information), but (because those ads track you further) become something of a circular argument: we need to collect this data, so we can show you better ads, which will track you further, so we can collect more data, so we can show you better ads, which will track you further....
|
||||
|
||||
+ **Media conglomeration is not a good thing** - there was a time when various arms of the federal government would actually move in order to stop dangerous potential monopolies from forming, but with a few exceptions, that hasn't happened much lately (even though it should). IMHO, telecommunication companies, as gateways to content, should be barred from owning entertainment companies that produce said content (or, if not barred, at least forced to operate those companies at [arm's length](https://en.wikipedia.org/wiki/Arm%27s_length_principle)) in order to help guarantee competition.
|
||||
|
||||
+ **Donald Trump is an unhinged, narcissistic ass-clown who is incapable of telling the truth, and who will go down as one of the worst (but hopefully not last) US presidents in history** - I don't think I need to elaborate on this one.
|
||||
|
||||
I may have more to add to these someday soon, but for now, the above statements will have to do.
|
80
src/sitePosts/journal/2018/09-18-syncthing-ionice.md
Normal file
80
src/sitePosts/journal/2018/09-18-syncthing-ionice.md
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Making SyncThing Play (IO)Nice
|
||||
date_pub: 2018-09-18T16:29:00-04:00
|
||||
date_upd: 2018-12-01T12:21:00-05:00
|
||||
tldr: My SyncThing instance was using too much CPU, and <a href='https://github.com/opsengine/cpulimit'>CPU Limit</a> didn't help reign it in, so I wound up using <a href='https://manpages.debian.org/testing/util-linux/ionice.1.en.html'>IO Nice</a>.
|
||||
content_type: journal
|
||||
tags: SyncThing Ubuntu
|
||||
---
|
||||
Every now and then, my laptop (running #Ubuntu 18.04) would freeze up: all the screens would lock, and although my mouse cursor was still on the screen, it was completely unable to interact with anything. After 30-40 seconds, everything would start moving again and return to normal.
|
||||
|
||||
The very first thing that I usually did when I get control of my system back was to run the `top` command, and what I frequently saw was [SyncThing](https://syncthing.net/), an open source application that I use for backups, pegging 100% or higher on my CPU usage:
|
||||
|
||||
<img src='/images/updates/syncthing.gif' alt='A screenshot showing SyncThing using too much CPU.' class='heroImage' />
|
||||
|
||||
Now, I knew that this wasn't supposed to happen, and until I could figure out what was triggering the sudden jump in utilization, I decided to try and limit SyncThing's consumption via some other way.
|
||||
|
||||
|
||||
## Fix #1 - CPU Limit ##
|
||||
|
||||
First, I tried [CPU Limit](https://github.com/opsengine/cpulimit), a utility designed to put a hard limit on the CPU usage for a process, which I installed and used as outlined [here](https://inside-out.xyz/technology/limiting-to-50-of-a-cpu-core-for-syncthing.html):
|
||||
|
||||
```shell
|
||||
# Install CPU Limit
|
||||
> sudo apt install cpulimit
|
||||
```
|
||||
|
||||
+ I edited the `syncthing.service` file to make my `ExecStart` directive look like this:
|
||||
|
||||
```shell
|
||||
# Limit SyncThing to no more than 50% of the available processor
|
||||
ExecStart=/usr/bin/cpulimit -v -l 50 /usr/bin/syncthing -- -no-browser -no-restart -logflags=0
|
||||
```
|
||||
|
||||
+ Finally, I restarted the SyncThing service:
|
||||
|
||||
```shell
|
||||
# Reload the service files
|
||||
> systemctl daemon-reload
|
||||
# or use `systemctl --user daemon-reload` for user-specific services
|
||||
|
||||
# Restart the SyncThing service
|
||||
> systemctl restart syncthing.service
|
||||
# or use `systemctl --user restart syncthing.service` for user-specific services
|
||||
```
|
||||
|
||||
This worked for a while, but apparently broke after I updated SyncThing from v0.14.43 to v0.14.50 (the service file kept crashing out).
|
||||
|
||||
And that's when I switched to...
|
||||
|
||||
## Fix #2 - IO Nice ##
|
||||
|
||||
The [IO Nice](https://manpages.debian.org/testing/util-linux/ionice.1.en.html) utility (part of the `util-linux` package in Debian and Ubuntu) allows system users / admins to adjust the scheduling class for an application, which indicates when the process should run: in real-time, as a best-effort (but giving way real-time applications), or only when the system is otherwise idle.
|
||||
|
||||
```shell
|
||||
# Install util-linux
|
||||
> sudo apt install util-linux
|
||||
```
|
||||
|
||||
+ again, I edited the `syncthing.service` file, but this time, I made my `ExecStart` directive look like this:
|
||||
|
||||
```shell
|
||||
# We want syncthing to be run as a "best-effort" application
|
||||
ExecStart=/usr/bin/ionice -c 2 /usr/bin/syncthing -no-browser -no-restart -logflags=0
|
||||
```
|
||||
|
||||
+ Finally, I restarted the SyncThing service (aain):
|
||||
|
||||
```shell
|
||||
# Reload the service files
|
||||
> systemctl daemon-reload
|
||||
# or use `systemctl --user daemon-reload` for user-specific services
|
||||
|
||||
# Restart the SyncThing service
|
||||
> systemctl restart syncthing.service
|
||||
# or use `systemctl --user restart syncthing.service` for user-specific services
|
||||
```
|
||||
|
||||
It's been a little over a month since I made this change, and I haven't experienced a laptop freeze-up since. I did have a similar problem with SyncThing on the machine that I'm backing up to, and wound up implementing the IO Nice limit on that box, too (with the same result).
|
||||
|
||||
I'll update this post (again) if I run into any other issues with SyncThing.
|
119
src/sitePosts/journal/2018/10-11-dats-incredible.md
Normal file
119
src/sitePosts/journal/2018/10-11-dats-incredible.md
Normal file
@@ -0,0 +1,119 @@
|
||||
---
|
||||
title: Dat's Incredible!
|
||||
content_type: journal
|
||||
date_pub: 2018-10-11T12:03:00-04:00
|
||||
date_upd: 2018-12-01T12:23:00-05:00
|
||||
tldr: I decided to try out the Dat protocol, and now have a copy of this site <a href='dat://3dccd6e62ea8e2864fb66598ee38a6b4f4471137eebc23ddff8d81fc0df8dbbc'>running on it</a>.
|
||||
tags: dat archive WebDev
|
||||
---
|
||||
|
||||
Recently, I was inspired by [Aral Balkan's concept of Web+](https://ar.al/2018/06/26/web+/) and [his work with dats](https://ar.al/2018/06/25/demonstrating-web-plus-dat/) to add [Dat protocol support](https://datproject.org/) to my own site(s). Since my experiences might be useful to others, I thought I'd share them here.
|
||||
|
||||
A #dat, or Dat #archive (as I understand it) is a sort-of cross between a [Git](https://en.wikipedia.org/wiki/Git) repository and [BitTorrent](https://en.wikipedia.org/wiki/BitTorrent) file share. It was initially developed for storing and sharing data in a decentralized way, and so makes for a great way to share an archive of static content (like a website).
|
||||
|
||||
To create and share a Dat archive, I needed to install the Dat protocol. Since it uses [NodeJS](https://nodejs.org/), this is done via the [Node Package Manager](http://npmjs.com/):
|
||||
|
||||
```shell
|
||||
sudo npm install -g dat
|
||||
```
|
||||
|
||||
I already had a directory in mind to share (the directory that holds the static files of my website), so sharing the dat was as simple as: going into that directory and typing the following commands:
|
||||
|
||||
```shell
|
||||
# Enter the directory with the static files
|
||||
> cd www
|
||||
|
||||
# Create the dat
|
||||
> dat create
|
||||
|
||||
Welcome to dat program!
|
||||
You can turn any folder on your computer into a Dat.
|
||||
A Dat is a folder with some magic.
|
||||
|
||||
Your dat is ready!
|
||||
We will walk you through creating a 'dat.json' file.
|
||||
(You can skip dat.json and get started now.)
|
||||
|
||||
Learn more about dat.json: https://github.com/datprotocol/dat.json
|
||||
|
||||
Ctrl+C to exit at any time
|
||||
Title: It's Eric Woodward (dotcom)
|
||||
Description: Dat for the site running at https://www.itsericwoodward.com/.
|
||||
Created empty Dat in /home/eric/www/.dat
|
||||
|
||||
Now you can add files and share:
|
||||
* Run dat share to create metadata and sync.
|
||||
* Copy the unique dat link and securely share it.
|
||||
|
||||
dat://3dccd6e62ea8e2864fb66598ee38a6b4f4471137eebc23ddff8d81fc0df8dbbc
|
||||
|
||||
# Share the newly-created dat
|
||||
> dat share
|
||||
```
|
||||
|
||||
And that's it. :)
|
||||
|
||||
To verify that I was sharing it, I pointed my web browser to https://datbase.org/, entered my DAT URL in the search box at the top-left of screen, pressed ENTER, and, lo and behold, my website came up.
|
||||
|
||||
Another way to verify that a DAT URL is being actively shared is to view it through the [Beaker Browser](https://beakerbrowser.com/), a special web-browser-like application used for viewing dats. To get it, I went to https://beakerbrowser.com/install/, and downloaded the [AppImage](https://appimage.org/) file for Linux (no link provided here because the Beaker Browser still in pre-release, and any image that I point to from here will probably be old by the time anyone reads this).
|
||||
|
||||
Then, I launched it:
|
||||
|
||||
```shell
|
||||
# Make it executable
|
||||
|
||||
> chmod a+x beaker-browser-0.8.0-prerelease.7-x86_64.AppImage
|
||||
|
||||
# Launch the AppImage
|
||||
|
||||
> ./beaker-browser-0.8.0-prerelease.7-x86_64.AppImage
|
||||
```
|
||||
|
||||
After a few moments, the application came up, at which point I entered my dat URL into the Beaker Browser's address bar, hit the ENTER key, and just like that, my website came up.
|
||||
|
||||
Unfortunately, unless your data is wildly popular (and thus located across multiple hosts in the [swarm](https://docs.datproject.org/hyperdiscovery)), it is only shared for as long as the `dat share` command is running on your machine. So, to make the files permanently available via Dat, I had to create a service file that would run the `dat share` automatically. To do this, I created file in `/etc/systemd/system` called `dat-share-web.service`, which looked like this:
|
||||
|
||||
```shell
|
||||
[Unit]
|
||||
Description=DAT Share for It's Eric Woodward (dotcom)
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
User=eric
|
||||
Type=simple
|
||||
WorkingDirectory=/home/eric/www
|
||||
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||
ExecStart=/usr/bin/node /usr/local/lib/node_modules/dat/bin/cli.js share
|
||||
Restart=always
|
||||
|
||||
# Output to syslog
|
||||
StandardOutput=syslog
|
||||
StandardError=syslog
|
||||
SyslogIdentifier=dat-share-www
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
After I turned-off my existing DAT share, I started the new service, like this:
|
||||
|
||||
```shell
|
||||
# Start the service
|
||||
> sudo systemctl start dat-share-www
|
||||
|
||||
# Enable the service
|
||||
> sudo systemctl enable dat-share-www
|
||||
```
|
||||
|
||||
Now, my Dat archive will be served 24x7, even after I restart the server.
|
||||
|
||||
Everything worked great, but there was one more thing that I wanted to try: I had noticed that, in addition to Aral's site being available at a usual DAT address (`dat://` plus a 64-charactercode), it was also available at his own domain name (dat://ar.al/). After a quick search, I found that what I was looking for was [DAT over DNS](https://www.datprotocol.com/deps/0005-dns/), which can be implemented one of two ways: either via [DNS TXT records](https://github.com/beakerbrowser/beaker/wiki/Dat-DNS-TXT-records-with-optional-DNS-over-HTTPS) or by [placing a file with a link to the DAT at a specific "well known" location](https://github.com/beakerbrowser/beaker/wiki/Authenticated-Dat-URLs-and-HTTPS-to-Dat-Discovery). Since the second option is the one that the DAT project seems to recommend (and it was dead simple to add), [that's what I did](/.well-known/dat). So now, if you launch the Beaker Browser and open the site `dat://www.itsericwoodward.com/`, it will take you to the DAT version of my site. Neat!
|
||||
|
||||
The DAT protocol is a simple but powerful way to share static content, and can help add a layer of redundancy to a website. Hopefully, your experiences in using it will be as positive as mine.
|
||||
|
||||
References:
|
||||
|
||||
+ https://docs.datproject.org/install
|
||||
+ https://docs.datproject.org/tutorial
|
||||
+ http://awesome.datproject.org/
|
||||
+ https://forum.ind.ie/t/running-a-dat-share-as-a-service-with-systemctl-ubuntu-etc/2181
|
34
src/sitePosts/journal/2018/10-29-chim.md
Normal file
34
src/sitePosts/journal/2018/10-29-chim.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
{
|
||||
"title": "Now Playing: \"Camp Happy Island Massacre\" for DOS",
|
||||
"date_pub": "2018-10-29T12:03:00-04:00",
|
||||
"date_upd": "2018-12-03T19:29:00-05:00",
|
||||
"tldr": "I wrote a simple computer game in 1997 called <strong>Camp Happy Island Massacre</strong> which I now have running online <a href='/chim/index.html'>here</a>.",
|
||||
"content_type": "journal",
|
||||
"tags": "DOSBox chim games js WebDev"
|
||||
}
|
||||
---
|
||||
|
||||
Way back in 1997, I released my first (and, so far, only) computer game, **Camp Happy Island Massacre** (hereafter referred to as #CHIM), a comedy-horror text game for the DOS operating system. Originally written while I was still in college, the game is about a cursed summer camp and the 3 surviving counselors who try to stop a horrific force before it claims them. I put it out for free (more-or-less) on the [internet of 1997](https://www.youtube.com/watch?v=A81IwlDeV6c), and though it was never a huge success, I've always been proud of it.
|
||||
|
||||
Fast forward to 2018: although I've known about the [Internet Archive's MS-DOS Software Library](https://archive.org/details/softwarelibrary_msdos_games) for some time, I'd never really thought about the specifics of how it works until I read [an article](https://news.ycombinator.com/item?id=10977424) which talked about the [Em-DOSBox project](https://github.com/dreamlayers/em-dosbox/). Em-DOSBox is a port of [DOSBox emulator](https://www.dosbox.com/) which runs in the browser via the [Emscripten JavaScript library](http://emscripten.org/). As I was reading the article, a thought struck me: could I get *CHIM* running in the browser?
|
||||
|
||||
I decided it was at least worth a shot, so I began with step 1, [building Emscripten from source](https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html). That went off without an issue, so I moved on to the next step, building the DOSBox JS files, and that's where I ran into my first snag: the only way I was able to get it to build was by disabling the "emterpreter sync" function (`emconfigure --disable-sync ./configure`). It complained about the lack of empterpreter sync, but it built, and that lead me to the next step, packaging the `dosbox.js` file for use in a browser via the `./packager.py` command. Even though this seemed to work great, there was obviously something wrong with my resulting files, as the JavaScript engine in my browser kept throwing an error ("missing function in Module"). After toying around with it for a while, I found that, if I used `./repackager.py` (the Emscripten-less version of the packager) to package my files, I could get an empty DOSBox window to come up, but it still wouldn't load the actual EXE.
|
||||
|
||||
By this point, I was flummoxed, and was about to give up. And that's when I found the answer: [js-dos](https://js-dos.com/)!
|
||||
|
||||
After 30 minutes with [this tutorial](https://js-dos.com/getting-started/) (and some source viewing on a couple of js-dos [game](https://js-dos.com/games/pac-man.exe.html) [pages](https://js-dos.com/games/doom.exe.html)), I was able to get *CHIM* working.
|
||||
|
||||
But my work wasn't finished yet. Even though I'd kept nearly all of the files for *CHIM* for the last 21 years (with the exception of the game's original C++ source files, which were lost in a hard drive crash shortly after it was released), I hadn't really messed with them much in the last decade, so there was some cleaning up to be done. I updated some of the questions (and answers) in the FAQ, replaced the license, and generally tried to clean up the supporting text files. And that's when I ran into one last unexpected issue: text encoding.
|
||||
|
||||
You see, I had forgotten that, when I first wrote the game and the supporting files, I had used some primitive ANSI graphic characters in an attempt to enhance the look of it. And now, when I tried to view those files on my Linux laptop, those graphics came out... weird.
|
||||
|
||||
The fix was to convert the files from the "IBM-862" format to the modern UTF-8 format:
|
||||
|
||||
```shell
|
||||
> iconv -f IBM862 -t UTF8 INTRO.TXT -o INTRO.UTF.TXT
|
||||
```
|
||||
|
||||
This allowed me to edit the files in Mousepad (and serve them up with Nginx), while still keeping the graphics intact. Finally, I added the Unicode Byte Order Mark, which makes it display correctly in the browser, even when served from a `file://` URL (you can add the BOM via Mousepad, under "Document -> Write Unicode BOM").
|
||||
|
||||
So, if you'd like to try the game out, [check it out here](/chim/index.html), and good luck - you're gonna need it!
|
140
src/sitePosts/journal/2018/12-03-hacked.md
Normal file
140
src/sitePosts/journal/2018/12-03-hacked.md
Normal file
@@ -0,0 +1,140 @@
|
||||
---
|
||||
title: Hacked!?
|
||||
content_type: journal
|
||||
date_pub: "2018-12-03T19:07:00-05:00"
|
||||
date_upd: "2018-12-03T19:07:00-05:00"
|
||||
tldr: I recently received an email telling me that I've been hacked. Since I don't believe it, I thought I'd make fun of it instead.
|
||||
tags: hackers hacking email spf internet spam
|
||||
---
|
||||
|
||||
A couple of weeks ago, I was lucky enough to receive an #email telling me how one of my email accounts (and the devices associated with it) had been hacked. What's more, this email appeared to be "From" the hacked accounts, a feat designed to help me understand just how serious of a threat this hacker is.
|
||||
|
||||
And I do understand - they're a joke.
|
||||
|
||||
Now, I am not disrespecting "real" #hackers, the kind who are perfectly capable of destroying my bank account, doxxing my children, and generally ruining my life, so please, don't take this as some kind of a challenge. Instead, I'm disrespecting a "script kiddie", someone who can't actually hack, and instead spends their time trying to fake it by scaring people who don't understand the shiny magic boxes we commonly call computers (or, more generally, "devices").
|
||||
|
||||
<figure>
|
||||
<image src="/images/updates/fakebook.jpg" />
|
||||
<figcaption>If you really wanna be a fake hacker, <a href="https://www.thriftbooks.com/w/cyberpunk-handbook-the-real-cyberpunk-fakebook_ru-sirius_st-jude/356947/">this book</a> will tell you how!<figcaption>
|
||||
</figure>
|
||||
|
||||
Unfortunately for this lamer, I do understand these magic boxes enough to call their bluff, and have decided to post their weak-sauce attempt at extortion here (along with some commentary of my own). <i>Although I've redacted the addresses that I received these messages from, I've kept most of the actual text of the messages intact, in hopes that someone searching for this text may come across this post and save themselves a truly unnecessary extortion payment.</i>
|
||||
|
||||
#### The Email
|
||||
|
||||
|
||||
> From: [redacted-address]<br />
|
||||
> To: [redacted-address]<br />
|
||||
> Subject: [redacted-address] - this account has been hacked! Change all your passwords!
|
||||
>
|
||||
> Hello!
|
||||
|
||||
Hi!
|
||||
|
||||
> I have bad news for you.<br />
|
||||
|
||||
Uh-oh.
|
||||
|
||||
> 19/07/2018 - on this day I hacked your operating system and got full access to your account [redacted-address]
|
||||
|
||||
Oh, noes! You hacked my operating system to get access to my email address?
|
||||
|
||||
Wait, how does **that** work?
|
||||
|
||||
> It is useless to change the password, my malware intercepts it every time.
|
||||
|
||||
Wow, that's some magical malware.
|
||||
|
||||
> How it was:<br />
|
||||
> In the software of the router to which you were connected that day, there was a vulnerability.<br />
|
||||
> I first hacked this router and placed my malicious code on it.<br />
|
||||
> When you entered in the Internet, my trojan was installed on the operating system of your device.
|
||||
>
|
||||
> After that, I made a full dump of your disk (I have all your address book, history of viewing sites, all files, phone numbers and addresses of all your contacts).
|
||||
|
||||
I've always wondered how it was, so thanks for telling me.
|
||||
|
||||
By the way, I like how you use the generic term "device" - that must make it easier to mass-send bogus emails like this. I mean, which device associated with this email did you hack?
|
||||
|
||||
I only ask because... well, let's not ruin the fun yet. 😉
|
||||
|
||||
> A month ago, I wanted to lock your device and ask for a small amount of money to unlock.<br />
|
||||
> But I looked at the sites that you regularly visit, and came to the big delight of your favorite resources.<br />
|
||||
> I'm talking about sites for adults.
|
||||
>
|
||||
> I want to say - you are a big, big pervert. You have unbridled fantasy!!!
|
||||
|
||||
You know, I used to play bass for Unbridled Fantasy back in high school.
|
||||
|
||||
> After that, an idea came to my mind.<br />
|
||||
> I made a screenshot of the intimate website where you have fun (you know what it is about, right?).<br />
|
||||
> After that, I made a screenshot of your joys (using the camera of your device) and joined all together.<br />
|
||||
> It turned out beautifully, do not doubt.
|
||||
|
||||
Both my favorite intimate website and my "joys", together in one picture? I gotta see this!
|
||||
|
||||
By the way, thanks for telling me how beautiful my "joys" look, it's not often that I get a complement like that.
|
||||
|
||||
> I am strongly belive that you would not like to show these pictures to your relatives, friends or colleagues.
|
||||
|
||||
And I am strongly belive that you're not much of a writer. Or a hacker.
|
||||
|
||||
> I think $741 is a very small amount for my silence.<br />
|
||||
> Besides, I spent a lot of time on you!
|
||||
|
||||
OK, this just got weird.
|
||||
|
||||
> I accept money only in Bitcoins.<br />
|
||||
> My BTC wallet: 1H9bS7Zb6LEANLkM8yiF8EsoGEtMEeLFvC
|
||||
|
||||
But, what if I don't know to replenish a Bitcoin wallet?
|
||||
|
||||
> You do not know how to replenish a Bitcoin wallet?<br />
|
||||
> In any search engine write "how to send money to btc wallet".<br />
|
||||
> It's easier than send money to a credit card!
|
||||
|
||||
I don't know, send money to a credit card is pretty easy.
|
||||
|
||||
> For payment you have a little more than two days (exactly 50 hours).<br />
|
||||
> Do not worry, the timer will start at the moment when you open this letter. Yes, yes .. it has already started!
|
||||
>
|
||||
> After payment, my virus and dirty photos with you self-destruct automatically.<br />
|
||||
> Narrative, if I do not receive the specified amount from you, then your device will be blocked, and all your contacts will receive a photos with your "joys".
|
||||
|
||||
Well, it's been over a week since I opened the "letter" (approximately 168 hours, by my math), and so far, no "joys".
|
||||
|
||||
> I want you to be prudent.<br />
|
||||
> - Do not try to find and destroy my virus! (All your data is already uploaded to a remote server)<br />
|
||||
> - Do not try to contact me (this is not feasible, I sent you an email from your account) <br />
|
||||
> - Various security services will not help you; formatting a disk or destroying a device will not help either, since your data is already on a remote server.
|
||||
|
||||
Yeah, here's the thing about the email you "sent": you didn't actually send it, you just tried to send it (and you didn't even bother to hide the source IP!), but my [email handling rules](/journal/2016/12-12-failing-me-softly.html) caught it, flagged it, and dumped it into my #spam folder, which is why it took me over a week to notice it.
|
||||
|
||||
> P.S. I guarantee you that I will not disturb you again after payment, as you are not my single victim.<br />
|
||||
> This is a hacker code of honor.
|
||||
|
||||
Well, you sure seem trustworthy, so I'm sure I can believe your "guarantee". And your haxx0r "code of honor".
|
||||
|
||||
> From now on, I advise you to use good antiviruses and update them regularly (several times a day)!
|
||||
>
|
||||
> Don't be mad at me, everyone has their own work.
|
||||
|
||||
Sure, if by "work" you mean "scaring technophobes from your parents' basement".
|
||||
|
||||
> Farewell.
|
||||
|
||||
Bite me, lamer.
|
||||
|
||||
#### The Truth
|
||||
|
||||
Now, you may be asking yourself, "how does he know that his devices haven't actually been hacked?" Well, in addition to all of the reasons raised above, there is one more I neglected to mention: the email account that this master haxx0r allegedly compromised **isn't even associated with any devices**. It's just a email address, plain and simple, and isn't used for logging into any application or device anywhere on the #internet. What's more, I've been sending out and posting resumes with this address for a few weeks now, and suspect that this is how this wannabe got their hands on it.
|
||||
|
||||
So, in the end, how can one try and minimize their exposure to hacking threats (especially fake ones)? Well, <abbr title="I am not a hacker or security expert">IANAHOSE</abbr>, but these are some of the ways that I do it:
|
||||
|
||||
+ For years, I've tried to diversify my accounts, using different emails for different sites, and keeping those email addresses separate from the accounts I use on actual devices.
|
||||
+ To make this work, I had to buy a domain name (which costs about $10 / year) and setup a [catch-all (or "wildcard") address](https://www.namecheap.com/support/knowledgebase/article.aspx/310/2214/how-to-set-up-a-catchall-wildcard-email-address). That way, I can use anything I want for the "local-part" of the [email address](https://en.wikipedia.org/wiki/Email_address) (aka the portion before the "@" symbol), and I'll still get it at my main address (which I don't typically share).
|
||||
+ Likewise, I diversify my passwords, using a different password for each site / device. The easiest way to do this is with a [good password manager](https://www.pcmag.com/article2/0,2817,2407168,00.asp).
|
||||
+ I also try to keep good backups, so if my devices do get hacked, I can wipe and restore them (relatively) easily.
|
||||
+ Finally, as alluded to above, I have [Sender Policy Framework (SPF)](http://www.openspf.org/) rules [setup to work with my domain](/journal/2016/12-12-failing-me-softly.html), which helps to prevent others from sending unauthorized emails from an account I own.
|
||||
|
||||
Always try to remember: No matter how scary an email may look, **don't believe everything that you read**. Many (if not most) are from fakers just like this one, and are nothing more than poorly-weaponized spam. And, just like with regular spam, the only proper (and safe) way to react is to ignore it completely.
|
23
src/sitePosts/journal/2019/03-13-wave-of-the-future.md
Normal file
23
src/sitePosts/journal/2019/03-13-wave-of-the-future.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: The Wave of the Future
|
||||
content_type: journal
|
||||
date_pub: 2019-03-13T19:54:00-04:00
|
||||
tldr: A brief history of "The Wave of the Future".
|
||||
tags: wallpaper images computers
|
||||
|
||||
---
|
||||
|
||||
While watching [Weird Science](https://en.wikipedia.org/wiki/Weird_Science_(film)) for the hundredth time today, I noticed this amazing image hanging on Wyatt's wall:
|
||||
|
||||
<figure>
|
||||
<image src="/images/updates/wave-original.jpg" />
|
||||
<figcaption>Catch the Wave!<figcaption>
|
||||
</figure>
|
||||
|
||||
I don't know how I've missed it all these years (although I suspect it was because I'd never watched a high-def version before). I've long been a fan of the original [Great Wave off Kanagawa](https://en.wikipedia.org/wiki/The_Great_Wave_off_Kanagawa) woodblock print, and have enjoyed the many images that [parody](https://www.reddit.com/r/GODZILLA/comments/xzi07/godzilla_in_the_great_wave_off_kanagawa/) and/or [were inspired by](http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=426620) it, but I'd never seen one with such a great "digital" look to it, and I was curious to find out how it came to be.
|
||||
|
||||
Apparently, it was made by a design agency called [Grafik](https://grafik.agency/insight/waveofthefuture/) in 1981 for a computer trade show. The amazing thing is that, despite its appearance (and intended use), it wasn't actually computer-generated at all, and was instead created by meticulously coloring each square by hand... *with pencils*.
|
||||
|
||||
"The Wave of the Future", indeed.
|
||||
|
||||
Fortunately, I was able to find a larger version of it, and now, thanks to the power of the internet (and, in particular, reddit user [acoolrocket](https://www.reddit.com/user/acoolrocket)), I'm happy to have this image on my laptop as my [wallpaper](https://www.reddit.com/r/outrun/comments/agjn07/wave_of_the_future/). Too cool!
|
80
src/sitePosts/journal/2019/11-27-hacked-again.md
Normal file
80
src/sitePosts/journal/2019/11-27-hacked-again.md
Normal file
@@ -0,0 +1,80 @@
|
||||
---
|
||||
title: Hacked!? Again!?
|
||||
content_type: journal
|
||||
date_pub: 2019-11-27T18:57:00-05:00
|
||||
date_upd: 2021-07-11T22:29:00-04:00
|
||||
tldr: I've received some more emails telling me that I've been hacked. Since I still don't believe them, I thought I'd make fun of another one instead.
|
||||
tags: hackers, hacking, email, internet, spam
|
||||
---
|
||||
|
||||
Since my last post about [script-kiddies using spam to try and commit fake extortion](/journal/2018/12-03-hacked), I've recevived plenty of other threatenting emails from lamers, so here's another one from the (spam) vault:
|
||||
|
||||
> From: [redacted-address]<br />
|
||||
> To: [redacted-address]<br />
|
||||
> Subject: Security Warning. Third party accessed to [redacted-address].
|
||||
>
|
||||
> Hello!
|
||||
>
|
||||
> I'm is very good coder.
|
||||
|
||||
Just not much of a writer, apparently.
|
||||
|
||||
> I am known by my nickname finn29.
|
||||
|
||||
Look, man - I've known [The Finn](http://williamgibson.wikia.com/wiki/The_Finn) since 1984. And you, sir, are not The Finn.
|
||||
|
||||
> I hacked this mailbox more than six months ago,<br />
|
||||
> through it I infected your operating system with a virus (trojan) created by me and have been spying for you a very long time.
|
||||
|
||||
Somehow, I find this hard to believe.
|
||||
|
||||
> I understand it is hard to believe, but you can check it yourself.<br />
|
||||
> I'm sent this e-mail from your account. Try it yourself.
|
||||
|
||||
No, "you're" didn't send this email from my account. In fact, if I had to guess, you tried to send it from your parents' basement (which I have the IP for, by the way), but my [SPF rules](/journal/2016/12-12-failing-me-softly.html) caught it, flagged it, and dumped it into my spam folder. As they should have.
|
||||
|
||||
> Even if you changed the password after that - it does not matter, my virus intercepted all the caching data on your computer<br />
|
||||
> and automatically saved access for me.
|
||||
|
||||
I think you've been watching too much **CSI: Cyber**.
|
||||
|
||||
> I have access to all your accounts, social networks, email, browsing history.<br />
|
||||
> Accordingly, I have the data of all your contacts, files from your computer, photos and videos.
|
||||
|
||||
Oh noes, all of the contacts stored on my computer? What is this, 1998?
|
||||
|
||||
> I was most struck by the intimate content sites that you occasionally visit.<br />
|
||||
> You have a very wild imagination, I tell you!
|
||||
|
||||
I do, actually, but not in the way you want.
|
||||
|
||||
> During your pastime and entertainment there, I took screenshot through the camera of your device, synchronizing with what you are watching.<br />
|
||||
> Oh my god! You are so funny and excited!
|
||||
|
||||
I don't even know what to say to that.
|
||||
|
||||
> I think that you do not want all your contacts to get these files, right?<br />
|
||||
> If you are of the same opinion, then I think that $643 is quite a fair price to destroy the dirt I created.
|
||||
|
||||
$600 to erase the pictures and videos you don't have? What a bargain!
|
||||
|
||||
> Send the above amount on my BTC wallet (bitcoin): 19kXyFbvetft819v4QV5g9vzrjwNqRtvgA<br />
|
||||
> As soon as the above amount is received, I guarantee that the data will be deleted, I do not need it.
|
||||
|
||||
Well, you seem trustworthy, so I'm sure I can believe your "guarantee".
|
||||
|
||||
> Otherwise, these files and history of visiting sites will get all your contacts from your device.<br />
|
||||
> Also, I'll send to everyone your contact access to your email and access logs, I have carefully saved it!
|
||||
|
||||
I've spent the last 10 minutes trying to figure out what he's saying here, but I just can't make sense of it.
|
||||
|
||||
> Since reading this letter you have 48 hours!<br />
|
||||
> After your reading this message, I'll receive an automatic notification that you have seen the letter.
|
||||
|
||||
Doubtful, since it's now been 96 hours since you sent the message, and my contacts still haven't received anything from you. I mean, me. Whatever.
|
||||
|
||||
> I hope I taught you a good lesson.<br />
|
||||
> Do not be so nonchalant, please visit only to proven resources, and don't enter your passwords anywhere!<br />
|
||||
> Good luck!
|
||||
|
||||
Indeed, you have taught me a lesson: how not to extort money from someone.
|
91
src/sitePosts/journal/2021/07-10-hacked-wall-of-shame.md
Normal file
91
src/sitePosts/journal/2021/07-10-hacked-wall-of-shame.md
Normal file
@@ -0,0 +1,91 @@
|
||||
---
|
||||
title: Hacked - Extortion Wall of Shame
|
||||
content_type: journal
|
||||
date_pub: 2021-07-10T23:13:00-04:00
|
||||
date_upd: 2022-01-18T01:07:00-05:00
|
||||
tldr: I've received even more emails telling me that I've been hacked. Since I still don't believe their empty threats, I'm posting their bitcoin addresses.
|
||||
tags: hackers, hacking, email, internet, spam
|
||||
---
|
||||
|
||||
Since my last few posts about script-kiddies and the [fake extortions](/journal/2018/12-03-hacked) [they try to commit](/journal/2019/11-27-hacked-again), I've received upwards of 50 such emails, each with a different bitcoin address, and many with slight differences in text, style, or form, but all basically the same: an email from myself (*gasp*) claiming that I have been hacked, that some non-descript OS or "device" I own has some magical virus installed on it, and that, if I don't pay the hacker a ransom in bitcoin, my life will be *ruined*.
|
||||
|
||||
However, I know from past experience that these messages are little more than spam, sent out en masse in hopes that they can rope in some poor sucker who falls for this. I know most of these are bogus from the beginning because the email I use for my phone is completely unrelated to the ones that keep receiving these messages. Other times, the email will make vague references to programs I don't even have installed, again betraying their carboon-copied nature. In truth, I have never paid ransom, even though I've personally received dozens of these messages, and my life has yet to be ruined by these *lamers*.
|
||||
|
||||
So, as a public service, I have included the bitcoin addresses for these fakers, in hopes that some other would-be victim finds this page (possibly through a web search), and they learn that they can ignore this BS as well:
|
||||
|
||||
```
|
||||
|
||||
====== BEGIN WALL OF SHAME ======
|
||||
====== UPDATED: 2022-03-17 ======
|
||||
|
||||
1GjZSJnpU4AfTS8vmre6rx7eQgeMUq8VYr
|
||||
18eBGkYam1wjz1S77jz3VmADuYYFzhA3vB
|
||||
376XVFQ2GDHow9kBDJ49Q3vRW7TC35L2Hx
|
||||
142e8SgyTLnkvwkDkNNon9jMtKY4UDvQqr
|
||||
14aFMWfDdBW9FpWxu8myFsXY7Pfy9fBp5C
|
||||
17qQSJatXXj5DnjMLjNGXx9BT7NUhqimRx
|
||||
1JRfE57ZF8Eaqa7DktHmVCoAneA8q4fpP2
|
||||
17hMTFUWqa1oHKj7PHA361qjpZoBaChTWY
|
||||
15tGbgpiksnzBY1tef2LgUbJ9pZvoDjCbs
|
||||
1HUHBgNHYCz9Djy9z615adkgd2NYQNMVUd
|
||||
1C242L8qAXRxudv6KBAahi81GHS5wpc8cF
|
||||
1GRHyZf18sQ65CdG66YCYs7vhrzUEV1HVs
|
||||
1LAWGnA2K5njVSshERU9bcUSrW2YWwtXs1
|
||||
1MZsUfERBoQp6PJW4Gcx9PvgH2S6WcLiyv
|
||||
1PLfzxybxkTKbcxRwhRw23TxcYDJ9wsphS
|
||||
13rkwLUVuWeLtnB1JdxJGo4vin15V2poS5
|
||||
1Hxkqd6fib8ZrXyYj2iqQVfDxw8vjrc1aA
|
||||
14qpWY7GxcimEVbPe7x6vnbV6qDaALr7Nb
|
||||
1Cboy74YFQy1pLJTRrnibYfqiVo3FXv9fe
|
||||
1QEkESQ8xR13P54vt8QKBHvhKjkrCBybzk
|
||||
163qcNngcPxk7njkBGU3GGtxdhi74ycqzk
|
||||
1GoWy5yMzh3XXBiYxLU9tKCBMgibpznGio
|
||||
1Je9xULKJK191a1JV68QuMiPgHJduSpYf6
|
||||
34ZQ4zk5ep53LdTdsikrKBVn2egPa7N1NA
|
||||
3MmuobsivmP6SBwdX9b2X4vs8SKBrLvRFt
|
||||
14DvFghvkzQujf5Kd5AL2VKjxaYm5KidxR
|
||||
14tfS3yWL2cABhXVJZ97XRhuDXC69aWH6Y
|
||||
1FzjogU6vMPcJAsTgc7Fw7tMu7nmwom6QD
|
||||
1CHXVoouz5b8YykXr6T1t5y4rv6enPLKjS
|
||||
16j8quu5c51swAN6QUdeMEcSidxD4JdtoS
|
||||
19Vok4UYuig3XC9ixoASteqXUvB378qAUR
|
||||
1DEjEBAsw7rLaKnKj2mthpwPDXy6f6rXMh
|
||||
15iiic5PmfGvE3TyMP1JyYh1W9KxQLGQL6
|
||||
1DDRvdiUZMeF9c4zjMLHWvacJYhPcbzumf
|
||||
15pY2U8WBZBJRVxGhh8WRXsdkXQbMKD8k9
|
||||
1FQBA6LYwjFYfSgrHTwizV6aLPUuG3cMBa
|
||||
1KiY2X9tww3zDgZmuoFRvZ7ssWx1b4moC9
|
||||
1H1K8MfLEJgjCCfDEkTJmv9GJjD3XzEFGR
|
||||
163qcNngcPxk7njkBGU3GGtxdhi74ycqzk
|
||||
3616S7LW7c4rPpoS44eAb74gVvcY1nHo2w
|
||||
18js3UK28bD11rwP1RJPjZUT93z3s3s77k
|
||||
1K5gLeGFrhbsKXBQQK23TPGfqrAwgqgPkC
|
||||
3Npm2ipM11TYyMymJhMW3jhmMVR91fNaod
|
||||
14LYbckmC9gKJ6LR1JAWaKSsCojZfURbzH
|
||||
1KE1EqyKLPzLWQ3BhRz2g1MHh5nws2TRk (sic)
|
||||
36QKFL786hVNqEfkPHqvu47ZvzkXrokPSK
|
||||
3KAjh4JnH2eWo7yXkMMXz5Nnf4mr13RNpr
|
||||
1Ji2K8EVzxDRnpuXts1kKAjMwTrV2LTnRS
|
||||
18i5utJSShwVTGdtSrmi2M3XpyRBfnpdPw
|
||||
3JRHity7zbykme4uriFnroxWj0VhML780lhIC9taBjdmYd5LcVIy9N1P8UeSn1F9pAYfKV59ET0RyoiJgxWucM
|
||||
MBV4M5vH2W519JEJ9T4yvqVhNaaYECxaTS
|
||||
35xURRetkiCKCZNjWtlJ21sm3dWxmV48cKtIV1ygfJU7thXjc1r
|
||||
1KVX9hCnQ9MfSoEFyxqAXGFXdTFNyzD22n
|
||||
1KJ3ZrhrkXBVjGyAU635sapjLpLSFgpqYe
|
||||
342yJ6g29rQQVehf1nbPX5UDquKUSKw4ev
|
||||
19p63VSjmRLPNP34ASWPEixUDYhvGQxTFK
|
||||
17z8ACS2tJouyxuoqEBoDDmaEZzFTzQg1Z
|
||||
17cPvTgQ4vsG9D6iZqTL3JChjd8ApFYTPA
|
||||
12ELWfXgRgqhtt8KenQbAfuBbAb1Rd3GJ7
|
||||
19PRxthVN1P9hsXcStqc2Kp8Yy4hXyXVau
|
||||
1BwDYXp1YCa2NLfGiF5Gfnkmgf61MqupHb
|
||||
15KquhG7RGkyXvEVT1aXLgPt4qgBEVe8rN
|
||||
bc1qznsh6ahq9h05pgekemygh7mdvc4egkvfvf3ltc
|
||||
19Ya5oeV6zqsHa9TSyurpeF1LpYJqm84Yv
|
||||
15DMMwLTqV4RmYpJZDoNUZvzNikX1m6j4R
|
||||
bc1q4s9vnxa7a008rxcuus0fqk94dyc0r2z88cs6c4
|
||||
|
||||
======= END WALL OF SHAME =======
|
||||
|
||||
```
|
||||
Again, if you received an ominous email about your device being hacked and it uses one of these bitcoin addresses, just know that I received one of those messages, too, and I never paid. Since I'm still here, posting this, obviously none of their doomsday prophecies came to pass - no mass email to my contacts, no embarassing footage, no ruined life... and no hacked device.
|
39
src/sitePosts/journal/2022/07-21-hello-again.md
Normal file
39
src/sitePosts/journal/2022/07-21-hello-again.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
title: Web Site Re-Re-Re-Relaunch!
|
||||
content_type: journal
|
||||
date_pub: 2022-07-21T00:59:00-04:00
|
||||
description: Website maintenance navel-gazing.
|
||||
tags: blogging web meta
|
||||
---
|
||||
|
||||
Greetings, and welcome the <strike>bi-annual</strike> <strike>tri-annual</strike> periodic relaunch of my website!
|
||||
|
||||
Yes, after a few years of neglect, I finally got around to updating it again.
|
||||
|
||||
Like the last few versions, it's mostly a static site generated by Javascript. The biggest change with this iteration is the lack of a central library for doing all of the heavy-lifting. No more [harp](https://harpjs.com/) or [gulp](https://gulpjs.com/) - instead, I'm using a hodge-podge of different, smaller libraries (like [ejs](https://github.com/mde/ejs) and [front-matter](https://github.com/jxson/front-matter)) which I string together via a series of fairly short js files, (mostly) all using modern `async` and `await` code to do things in the right order.
|
||||
|
||||
The end result is that it's _bad fast_, taking the build time down from 10+ seconds to under 2 (although that may not be a fair comparison, as it doesn't do _everything_ the gulp version did... yet).
|
||||
|
||||
Some of the biggest changes under the hood:
|
||||
|
||||
- I replaced [marked](https://marked.js.org/) and [commonmark.js](https://github.com/commonmark/commonmark.js) with the better fit (for me) [markdown-it](https://github.com/markdown-it/markdown-it#readme),
|
||||
- I simplified many of my templates, purging a number of unneeded partials,
|
||||
- I made each journal entry link to the two chronologically-nearest entires,
|
||||
- I upgraded most of my config files to use [json5](https://github.com/json5/json5) (the self-proclaimed "JSON for Humans"), and
|
||||
- I added a [now page](/now.html) (inspired by [nownownow.com](https://nownownow.com/about)).
|
||||
|
||||
Once I get the source code cleaned up a bit more, I'll post it in a public git repo.
|
||||
|
||||
I've got some more ideas for what to do next, like adding in-browser file editing, a homespun blogging engine, and expanded IndieWeb support (most likely via the IndieKit project) with an eye towards IndieAuth, MicroPub, and WebSub.
|
||||
|
||||
It's all part of my (continuing) attempt to rest control back of my social-media-life from the corporate silos.
|
||||
|
||||
Along the way, I hope to grow the content-side of this web presence as well, so keep on the lookout for more new stuff, like:
|
||||
|
||||
- notes from my various RPG campaigns,
|
||||
- homebrew for D&D and OSR games,
|
||||
- my custom Magic cards,
|
||||
- some hardware stuff I've been playing with,
|
||||
- and a whole lot more!
|
||||
|
||||
Thanks for stopping by!
|
25
src/sitePosts/journal/2022/08-18-killing-thur.md
Normal file
25
src/sitePosts/journal/2022/08-18-killing-thur.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Killing Thur
|
||||
content_type: journal
|
||||
date_pub: 2022-08-18T00:49:00-04:00
|
||||
description: I've removed the "Thur" section of the website because I'm ashamed of some parts of it.
|
||||
tags: blogging web meta
|
||||
---
|
||||
|
||||
After hosting it here for the better part of a decade, I've decided to remove my RPG, **Thur**, from this site.
|
||||
|
||||
**Thur** was an RPG that I ran while I was in college, a custom system set on a world of my own design, full of all of the stuff that I thought was cool at the time (and still do, for the most part): Fremen, ninjas, Gunslingers, psychics, wizards, aliens, mutants, technomages, tears in the space-time continuum, a global economy (and shared culture) based on huge teleportation gates - all kinds of gonzo stuff.
|
||||
|
||||
I ran several adventures as 1-on-1 games with a former friend of mine, and ran a couple of sessions other friends, but eventually the demands of full-time work and parenting didn't leave me with much RPG time, so I shelved it. I pulled it out about a decade ago when a friend was getting into Pathfinder. We played a couple of sessions, and that was when I published it here. However, since the rules were never really fully fleshed-out (and thanks to some bad writing on my part), the game fell kinda flat, and so was shelved again, where it's remained since.
|
||||
|
||||
So, what changed? A few things.
|
||||
|
||||
As I said before, the rules were a hot mess, with the magic system in particular in shambles. Incomplete as it was, I probably should never have published it here in the first place.
|
||||
|
||||
Additionally, my thinking on rules has evolved over the years. I'm now much more interested in simpler systems that don't systematize flavor (thus leaving more of room for roleplaying). I'm also more into tweaking existing rulesets over building entirely new ones, since it's easier to introduce new players (and bring back old ones).
|
||||
|
||||
But honestly, the main reason I took it down is because I'm genuinely ashamed of some of what's there. The version of me that wrote most of that was younger, dumber, and had a far-simpler (and naively incorrect) conception of the world at large. He was also far more casually racist, and for that, I am truly sorry.
|
||||
|
||||
So, I took it down.
|
||||
|
||||
It may come back, it may not. If it does, it'll probably be in a very different format from what it was before, like an online zine for OSE (so others can play), but that won't happen until after I've made it into something I can be proud of.
|
22
src/sitePosts/journal/2022/09-18-magical-updates.md
Normal file
22
src/sitePosts/journal/2022/09-18-magical-updates.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: Site Updates - Now with More Magic and LibreJS Validation!
|
||||
content_type: journal
|
||||
date_pub: 2022-09-18T11:48:00-04:00
|
||||
description: I added some new content (including custom Magic and Illuminati cards, and an expanded blogroll) and did some JS housecleaning.
|
||||
tags: blogging FreeSoftwareWin meta web
|
||||
---
|
||||
|
||||
A couple of website updates to announce:
|
||||
|
||||
- I added a bunch of [custom (unofficial) cards I've made](/magic-cards/index.html) over the years for my personal paper-crack, [Magic: the Gathering](https://magic.wizards.com/en).
|
||||
- I also added some [custom Illuminati groups that I designed](/games/illuminati/index.html) a few years ago.
|
||||
- I added a new [LinkList for Tabletop Role-Playing Game Resources](/linklists/tabletop_rpg).
|
||||
- I expanded the [blogroll](/linklists/blogroll/index.html) to include more sites I like to read (plus some vlogs).
|
||||
- I updated the tags throughout the site to be links.
|
||||
- Finally, I fixed the JS on the client side, so that things like relative timestamps and reading time _should_ work again.
|
||||
|
||||
While I was fixing the client code, I went and disabled my (already broken) concatentation and minification script, opting instead to serve up all 8(!) JS library files individually (and, thanks to [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2), concurrently)
|
||||
|
||||
I mean, I'm using minification for the libraries I'm importing (I'm not a monster), but I don't use it for the (small) bit of code that ties those libraries together and makes the site work. This way, anyone can see how (and why) the site works the way it does, [as it should be](/journal/2015/03-18-developing-the-web.html), and all without the added complexity of generating source maps or similar unnecessary complications.
|
||||
|
||||
And for those minified libraries, I've provided a link to each library's repo and added automated license info, so the [LibreJS validator](https://www.gnu.org/software/librejs/) gives this site a ✅. #FreeSoftwareWin!
|
Reference in New Issue
Block a user