Major update - simpler file structure, better layouts, moar content
This commit is contained in:
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.
|
Reference in New Issue
Block a user