<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jodie Struthers</title>
    <description>The latest articles on DEV Community by Jodie Struthers (@jodie).</description>
    <link>https://dev.to/jodie</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F184351%2Fbf2b09e1-af95-4e87-bcab-648191f826a5.jpg</url>
      <title>DEV Community: Jodie Struthers</title>
      <link>https://dev.to/jodie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jodie"/>
    <language>en</language>
    <item>
      <title>Silos and How They Impede Productivity</title>
      <dc:creator>Jodie Struthers</dc:creator>
      <pubDate>Thu, 13 Aug 2020 21:15:21 +0000</pubDate>
      <link>https://dev.to/jodie/silos-and-how-they-impede-productivity-57el</link>
      <guid>https://dev.to/jodie/silos-and-how-they-impede-productivity-57el</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h6hppaiH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1597305526414-f2f172412ed1%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D2000%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h6hppaiH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.unsplash.com/photo-1597305526414-f2f172412ed1%3Fixlib%3Drb-1.2.1%26q%3D80%26fm%3Djpg%26crop%3Dentropy%26cs%3Dtinysrgb%26w%3D2000%26fit%3Dmax%26ixid%3DeyJhcHBfaWQiOjExNzczfQ" alt="Silos and How They Impede Productivity"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever started a new job and there were tickets waiting for you? I'm talking eight month old issues in the backlog that have multiple comments that increase in frustration, and then end with, "On hold until we hire a SME (Subject Matter Expert) to figure this stupid shit out."&lt;/p&gt;

&lt;p&gt;I've walked into a pile of these, but this is one of my favourites. I'd been hired to manage some relationships, work on new initiatives, and do some infrastructure migrations. One particular ticket was for PHP and it throwing a WSOD (White Screen of Death). The engineers couldn't figure it out despite multiple attempts. They're smart folk, but they felt it was outside of their expertise. So this issue sat around and became stagnant.&lt;/p&gt;

&lt;p&gt;Until I came along. I looked at the issue and replicated the steps. I got the same WSOD that they had been encountering. I was expecting that. The issue wasn't with PHP though. Given the locked down nature of the box, I could not access all of the logs that I needed to diagnose... but I had a suspicion.&lt;/p&gt;

&lt;p&gt;I did the unthinkable: I talked to the folks in DevOps and Infrastructure. I asked them my nagging question, "Those environments you set up... are they also running a newer version of Apache?" (For my newcomers, Apache is a type of web server.)&lt;/p&gt;

&lt;p&gt;"Yes."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bingo bongo.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Access control for Apache changed between version 2.2 and 2.4.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apache 2.2&lt;/strong&gt; uses the &lt;code&gt;authz_host_module&lt;/code&gt; to control access using directives like &lt;code&gt;Deny&lt;/code&gt;, &lt;code&gt;Allow&lt;/code&gt;, and &lt;code&gt;Order&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Apache 2.4&lt;/strong&gt; also uses the &lt;code&gt;authz_host_module&lt;/code&gt; for access control, but adds the &lt;code&gt;authz_core_module&lt;/code&gt;, which gave us the &lt;code&gt;Require&lt;/code&gt; directive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To summarize the issue: if you're trying to use Apache 2.2 access rules for an Apache 2.4+ server, you might have a bad time.&lt;/p&gt;

&lt;p&gt;The solution was editing the &lt;code&gt;.htaccess&lt;/code&gt; file so that it was in 2.4 format instead of 2.2. Multiple projects were stalled for over eight months because of an &lt;code&gt;.htaccess&lt;/code&gt; file and no one thought to bother talking to folks outside of their team. What the hell.&lt;/p&gt;

&lt;p&gt;My fix looked a little like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Old: Apache 2.2
Order allow, deny
Allow from all

# New: Apache 2.4+
Require all granted
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
Allow all requests for Apache. Though if you're not certain what version you have in production, I recommend adding conditionals. &amp;lt;IfModule authz_core_module&amp;gt;&amp;lt;/IfModule&amp;gt; can save your tail.





&lt;p&gt;A one-liner.&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;fucking&lt;/em&gt; one-liner.&lt;/p&gt;

&lt;p&gt;How much time had been lost because no one bothered to talk to one another? It's great to become a specialist in your chosen domain/language(s), but often the problems you encounter will lead you outside of your comfort zone. It's so easy to shrug it off as "not my problem."&lt;/p&gt;

&lt;p&gt;That was one of the most satisfying issues I've ever closed. Not because it was technically complex, but because it was so obvious after one simple conversation. I do have a lot of server administration knowledge, so I don't want to discount that. I knew what to ask. But the thing is: the DevOps team &lt;em&gt;had&lt;/em&gt; all of that knowledge. Not to mention that it would have been &lt;em&gt;trivial&lt;/em&gt; to get them to look at the error logs.&lt;/p&gt;

&lt;p&gt;Ask questions. Share your wealth of knowledge. Add more to your problem solving toolbelt. You might be holding you and your team back.&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>devops</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Building a MUD in 2020</title>
      <dc:creator>Jodie Struthers</dc:creator>
      <pubDate>Tue, 21 Apr 2020 18:48:50 +0000</pubDate>
      <link>https://dev.to/jodie/building-a-mud-in-2020-jd7</link>
      <guid>https://dev.to/jodie/building-a-mud-in-2020-jd7</guid>
      <description>&lt;p&gt;Why the hell not? The MUD medium, also known as multi-user dungeon (aka multi-user dimension and multi-user domain), has been around for over 30 years.&lt;/p&gt;

&lt;p&gt;My online science fiction game, &lt;a href="https://shadowlack.com/"&gt;Shadowlack&lt;/a&gt;, has been around since 2002. It turns 18 in July 2020. Why not &lt;em&gt;add&lt;/em&gt; another &lt;em&gt;30 years of life&lt;/em&gt; by turning aspects of it into a MUD?&lt;/p&gt;

&lt;p&gt;Shadowlack has lived as a short story format forum-based game (play-by-post game). It has survived through a lot over the years and has a lot of "stickiness" due to the world-building aspect of the game. If you can dream it up, we can likely find a unique fit for it in the game world.&lt;/p&gt;

&lt;p&gt;The Shadowlack world has gone through a wide variety of incarnations. The game concept began in 1997 as a series of drawn comic panels. "The Comic" was even confiscated by teachers a few times. It had over 2,600 individual panel drawings.&lt;/p&gt;

&lt;p&gt;It made the transition from paper to web in 2002. It has seen life on ezBoard, Ikonboard, Invision Power Board, phpBB, completely custom software, as well as XenForo. What's next?&lt;/p&gt;

&lt;h3&gt;
  
  
  Introducing Evennia
&lt;/h3&gt;

&lt;p&gt;&lt;a href="http://www.evennia.com/"&gt;Evennia&lt;/a&gt; is an open-source server, library and toolkit for building multi-player online text games. I chose Evennia for my MUD due to it being written in Python, and the fact that it is bare bones.&lt;/p&gt;

&lt;p&gt;Evennia is not thread-based and runs using one process using Asynchronous I/O. It gives the &lt;em&gt;appearance&lt;/em&gt; of everyone operating at the same time even though it is using sequential code. This means that there can be no race conditions or things that happen due to weird timing. The main drawback of this is that we cannot take advantage of multiple processors. For a text-based game of this size, it is acceptable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Django Web Framework
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; is being used as Shadowlack's ORM. I've been using Django for around six years now for various projects. The cool thing about using Django is that anything that I can normally do with Django, I can easily extend to Evennia.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fate Core
&lt;/h3&gt;

&lt;p&gt;What about game mechanics? I am deviating away from more traditional MUD-like games (though not entirely MUSH-like) due to the more character-driven narrative nature of Shadowlack. I have been working on a "Shadowlack Core Book," and the rule system of &lt;a href="https://www.evilhat.com/home/fate-core/"&gt;Fate&lt;/a&gt; fits with how Shadowlack is structured. Fate is designed in such a way that it allows for non-obstructive roleplaying and less fiddling with dice than a typical Dungeons and Dragons game. The idea here is to keep character adventure and development on the forefront.&lt;/p&gt;

&lt;p&gt;Fate in a MUD environment? Whaaaaat.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mi1_GpHb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2020/04/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mi1_GpHb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2020/04/image.png" alt="We're going there! Here's pyramid-style Fate-flavoured character skill point allocation for Shadowlack."&gt;&lt;/a&gt;We're going there! Here's pyramid-style Fate-flavoured character skill point allocation for Shadowlack.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility-First
&lt;/h3&gt;

&lt;p&gt;Given that it's a text-based game, Shadowlack has always had a fairly high amount of sight-impaired players, as well as those with motor impairments (RSI, cerebral palsy, muscular dystropy, etc). Right out of the gate, all development is being done with consideration for screen readers and a wide range of assistive technology.&lt;/p&gt;

&lt;p&gt;Everything is keyboard accessible, and follows WAI-ARIA Best Practices. Additionally a screen reader mode is available in the game client, and then some! Check out the &lt;a href="https://a11yproject.com/"&gt;A11Y Project&lt;/a&gt; if this sort of development interests you. They also do a phenomenal job at &lt;a href="https://a11yproject.com/posts/myth-accessibility-is-blind-people/"&gt;busting myths&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7ffPyi_9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2020/04/shadowlack-keyboard-nav.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7ffPyi_9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2020/04/shadowlack-keyboard-nav.gif" alt="Accessible keyboard navigation."&gt;&lt;/a&gt;Accessible keyboard navigation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pnqh7r8w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2020/04/shadowlack-dark-light-1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pnqh7r8w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2020/04/shadowlack-dark-light-1.gif" alt="Toggling between dark and light site themes."&gt;&lt;/a&gt;Toggling between dark and light site themes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web Client
&lt;/h3&gt;

&lt;p&gt;No client? No problem. You can access the MUD-portion of the game using a browser and a web-based WebSocket client that &lt;em&gt;mimics&lt;/em&gt; Telnet. Or you can connect using your favourite MUD client. It's up to you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forum For Life
&lt;/h3&gt;

&lt;p&gt;Shadowlack's forum is here to stay if the new (&lt;em&gt;old&lt;/em&gt;) MUD aspect of the game is unappealing. The hundreds of thousands of existing stories have a forever home. Asynchronous roleplaying will remain possible. How the MUD client and forum will interact is not set in stone, but the major zones (countries, moons, etc) will be accessible in either medium.&lt;/p&gt;

&lt;h3&gt;
  
  
  Full Stack Development Ahead
&lt;/h3&gt;

&lt;p&gt;Believe it or not, this is the first &lt;em&gt;actual&lt;/em&gt; game that I'm developing. I feel as though many developers start in games and then shift over. I've been programming software for over 20 years now (in API integrations, UX, securing development environments, and security flows), and it's been cool to see how easy it is to pull all of the different moving parts together. It's exciting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contributing
&lt;/h3&gt;

&lt;p&gt;Shadowlack is a labour of love and is kept alive by the community. I've been the sole developer at Shadowlack for 17 years. If you're interested in contributing to the project, check out our &lt;a href="https://www.patreon.com/shriker"&gt;Patreon&lt;/a&gt; or hop on our &lt;a href="https://shadowlack.com/discord"&gt;Discord&lt;/a&gt;. I don't plan on being the only developer forever... and creative writers are always welcome. 😉&lt;/p&gt;

</description>
      <category>python</category>
      <category>ux</category>
      <category>gamedev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Using Boxstarter and Chocolately for Repeatable Windows 10 Installations</title>
      <dc:creator>Jodie Struthers</dc:creator>
      <pubDate>Sat, 08 Feb 2020 21:06:00 +0000</pubDate>
      <link>https://dev.to/jodie/using-boxstarter-and-chocolately-for-repeatable-windows-10-installations-1258</link>
      <guid>https://dev.to/jodie/using-boxstarter-and-chocolately-for-repeatable-windows-10-installations-1258</guid>
      <description>&lt;p&gt;Local development environments have come a long way on Windows machines over the past decade.&lt;/p&gt;

&lt;p&gt;We have the ease and use of &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10"&gt;Windows Subsystem for Linux&lt;/a&gt; (WSL). You can get your favourite Linux distribution up and running fast with no need for VirtualBox or any other specific tools. For some folks, that may be all you need!&lt;/p&gt;

&lt;p&gt;With &lt;a href="https://github.com/microsoft/terminal"&gt;Windows Terminal&lt;/a&gt; slowly getting stronger (to the point where I don't feel as vulnerable while away from a *nix system; finally tabs!), I can be more productive using Windows command line. My main issues with this in the past have been making a mess of my system environment variables, and forgetting where I've installed something. Chocolately and Boxstarter solve both of these issues for me.&lt;/p&gt;

&lt;p&gt;Score.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation Prerequisites
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://chocolatey.org/"&gt;Chocolately&lt;/a&gt; is a Windows package manager. It's similar to using MacPorts (which in turn is like BSD ports) or Homebrew (brew), if you are familiar with developing in macOS. Chocolately allows us to automate the entire Windows software lifecycle.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://boxstarter.org/"&gt;Boxstarter&lt;/a&gt; allows you to write repeatable Windows installation scripts. This allows me to deploy scripts on beast machine work stations and temporary laptops with repeatable success.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Windows 10 Work Development Environment
&lt;/h3&gt;

&lt;p&gt;I work across a wide variety of technology and my development environments reflect that. You can find the specific scripts that I use in this &lt;a href="https://gist.github.com/shriker/239778729a66bc33376d01e284ac99f7"&gt;GitHub Gist&lt;/a&gt;. They must be run from a Boxstarter Shell.&lt;/p&gt;

&lt;p&gt;This Gist contains the following for setting up a software development tools (Python, Go, Ruby, Node, PHP, C, etc), databases (MariaDB, PostgreSQL, MongoDB), apps and tools (Git, VS Code, Firefox, VirtualBox, 7-zip, PuTTY), light security environment (Wireshark, Burp Suite, nmap, HxD, etc), and more. All packages are from Chocolately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install From a Gist
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-BoxstarterPackage -PackageName https://gist.githubusercontent.com/shriker/239778729a66bc33376d01e284ac99f7/raw/ed43e0d2140a028cb7a56f60a5af7e071136d4e0/work-environment.ps1 -DisableReboots

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Raw contents of the Gist:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Disable-UAC
Disable-GameBarTips
Disable-BingSearch

# windows updates
Enable-MicrosoftUpdate
Install-WindowsUpdate -acceptEula

# defaults
Set-WindowsExplorerOptions -EnableShowHiddenFilesFoldersDrive -EnableShowFileExtensions -EnableShowFullPathInTitleBar

# environment
cinst vscode
cinst git --package-parameters="'/GitAndUnixToolsOnPath /WindowsTerminal'"
cinst firefox
cinst virtualbox
cinst 7zip
cinst putty
cinst sysinternals
cinst microsoft-windows-terminal

# frameworks
cinst dotnet4.6.2
cinst vcredist140

# languages
cinst python
cinst golang
cinst ruby
cinst tinycc
cinst nodejs-lts
cinst yarn
cinst php
cinst composer

# databases
cinst mariadb
cinst postgresql
cinst mongodb

# security
cinst yubikey-manager
cinst burp-suite-free-edition
cinst wireshark
cinst nmap
cinst hxd
cinst windbg

Enable-UAC

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;After I've set up my Windows box, the only remaining steps I need to do is generate a new ssh key and add it to Paegent (a PuTTY authentication agent), and then sync my &lt;a href="https://dev.to/jodie/visual-studio-code-extensions-i-use-1e4o-temp-slug-1071029"&gt;VS Code settings&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Oh, and if you want to set it all up in a VirtualMachine, or remotely? Boxstarter can do that too.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>windows</category>
      <category>security</category>
    </item>
    <item>
      <title>Separation of Concerns &amp; User Experience</title>
      <dc:creator>Jodie Struthers</dc:creator>
      <pubDate>Thu, 29 Aug 2019 16:21:24 +0000</pubDate>
      <link>https://dev.to/jodie/separation-of-concerns-user-experience-5cgc</link>
      <guid>https://dev.to/jodie/separation-of-concerns-user-experience-5cgc</guid>
      <description>&lt;p&gt;If you were a student of Computer Science, you have no doubt heard of ACID (Atomicity, Consistency, Isolation, Durability). ACID properties are amazing. They can ensure that bad transactions (failures, duplicates, etc.) never make it into your database, and that when something does fail, it fails in a known way.&lt;/p&gt;

&lt;p&gt;I have a lot of experience with Java software developers who create payment processors and financial systems that rely heavily on ACID properties to do the job right. They build robust software that is both reliable and scalable. They do amazing work. A+++&lt;/p&gt;

&lt;p&gt;It is rare that I get to be on the ground floor of a product or service being built. Often people have something that is semi-viable before they realize that the experience is terrible for humans, but great for machines. &lt;strong&gt;Product owners mistakenly treat User Experience as a checkbox they need to check off before launch.&lt;/strong&gt; It is too often at that critical point when the emails land in my inbox.&lt;/p&gt;

&lt;p&gt;Many times when I walk into a new startup scenario, it is like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ycODcu4Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/08/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ycODcu4Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/08/image-1.png" alt=""&gt;&lt;/a&gt;My job: preventing shuffles of shame.&lt;/p&gt;

&lt;p&gt;The toilet is functional, as is the toilet paper roll... They work, but it is not at all what the user is expecting.&lt;/p&gt;

&lt;p&gt;I have "fixed" things like ACID-inspired forms that are 14 screens long and auto-generated Ruby on Rails scaffolding. I've increased ROI  (Return on Investment) through a variety of avenues, often leading to lower support costs, increased development efficiency, and increased customer loyalty. I have centralized and grouped like-data and like-functionality. I have overhauled information hierarchy. And most importantly, I always ask &lt;em&gt;why&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Ultimately, you do not want to mess with an ACID backend. To do so often means disrupting the reliability of the software. What you want to do is create useful interfaces. Understanding the underlying structure is an incredible asset. Given the breadth of my knowledge, I have been able to create meaningful and functional API endpoints.&lt;/p&gt;

&lt;p&gt;Throughout my career, I have both written the endpoints, and stubbed out API objects for "plug and play" user interfaces. The object stubbing has been the most time efficient method that I have worked with to date. It meant that backend and frontend developers were never holding each other up. With the object stubs, it also meant that when a piece was ready to "hook up," there were minimal questions over what data or functionality was needed.&lt;/p&gt;

&lt;p&gt;I realize that I may seem like I'm in the "designers should code" camp, but I feel the opposite. If all designers were expected to code, it would mean the elimination of valuable perspectives. I don't work in a silo. The more perspectives you have, combined with the ability to generate a desired outcome based on those perspectives, is invaluable.&lt;/p&gt;

&lt;p&gt;A developer may see design as "useless fluff" or "making it look pretty," while not understanding the greater impact. A designer may have only frustration over how "messy" and "disjointed" the underlying product seems despite it being functional and solid. Work on understanding one another.&lt;/p&gt;

&lt;p&gt;A hybrid role may seem like a great idea, and admittedly, it's a niche that I fill. I do my best work when I have teams and people of various disciplines and backgrounds to bounce my ideas and concerns off of. Let's build amazing things together.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--toIO7g-N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/08/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--toIO7g-N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/08/image-2.png" alt=""&gt;&lt;/a&gt;I wanted this to be my "good" example, but the unicorn is relying on a gradual swirl taper and could not use toilet paper very well with those hooves. It should consider a bidet. Better for everyone. #SquattyPotty&lt;/p&gt;

</description>
      <category>teamwork</category>
      <category>design</category>
      <category>ux</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why choose a design degree?</title>
      <dc:creator>Jodie Struthers</dc:creator>
      <pubDate>Tue, 23 Jul 2019 20:25:00 +0000</pubDate>
      <link>https://dev.to/jodie/why-choose-a-design-degree-11kl</link>
      <guid>https://dev.to/jodie/why-choose-a-design-degree-11kl</guid>
      <description>&lt;p&gt;Whenever I am asked this question, other professional designers display ire at my answer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Because I wanted something challenging (they will nod and agree), and design is subjective (they will try to contain their vomit)."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The word &lt;em&gt;subjective&lt;/em&gt; sets designers off in a world where we like to believe data-driven design is paramount. Without fail, this question always falls on the coattails of people asking about my technical expertise. It is unfathomable to some that I can keep a foothold in both design and technical realms. "Would not a Computer Science degree have made more sense?" Naaaaah.&lt;/p&gt;

&lt;p&gt;I grew up drawing, playing competitive sports (hockey &amp;amp; figure skating), killing it academically, and having an obsession with computers. In high school clique terms, I was the jock-nerd-art-goth geek. I would help you with your Java homework, create decorations for the next themed school dance, then kick your ass on the ice.&lt;/p&gt;

&lt;p&gt;While my peers didn't know what to do with me, my teachers treated me like they had struck gold. It was always, "Jodie, keep your options open. You can do anything!" I took all the Advanced Placement (AP) academic courses. Physics, Chemistry, Biology, Math. I also took Art, Architectural Drafting, Photography, Geography Technology (Geotech), and Computer Science. I did really well.&lt;/p&gt;

&lt;p&gt;Then came that meeting with my career counsellor. They asked me what I wanted to do. I had the grades. I could pick whatever I wanted. Out of everything I had done in high school, I liked Geotech (practical application of programming and data science) and Art. I picked Art. My counsellor was visibly crestfallen.&lt;/p&gt;

&lt;p&gt;I didn't know how one made a career in Art. Did you, like, paint? I didn't like painting. I liked solving problems. Why was I picking Art again? Unfortunately I didn't have a lot of time to think. I was graduating with the "double cohort" year. Ontario had dropped grade 13 (Ontario Academic Credit/OAC). As a result, there were twice as many new high school graduates.&lt;/p&gt;

&lt;p&gt;My parents reasoned that if I didn't go to post-secondary right away, then I likely never would. I enrolled at the community college in their Art Fundamentals program. This was a mistake. I had wanted to take a year off, but instead got pressured into going to a school I didn't want. Oh, and it used up the entirety of my savings.&lt;/p&gt;

&lt;p&gt;The course was okay. I got A+ on every assignment and literal punches from my peers for performing so well. This could have gone to my head, but I was deep into research now and I knew there was better. My reasoning: something is inherently wrong if I am the &lt;em&gt;de facto&lt;/em&gt; best.&lt;/p&gt;

&lt;p&gt;I applied to other colleges and universities. Or, I thought I did. In Ontario, all applications were done through a central online portal.&lt;/p&gt;

&lt;p&gt;I didn't hear anything back. Hmm...&lt;/p&gt;

&lt;p&gt;Upon further investigation and escalation I found out that they had messed up my applications because they could not process ones that had a Rural Route address. Cool integration fail. I was penalized for living in backwater Ontario. I could have gotten some deadline extensions (a couple post-secondary admissions people were super awesome), but I opted at that time to finally take that year off I wanted. Shit had hit the fan in my personal life, and my family needed me.&lt;/p&gt;

&lt;p&gt;I spent a lot of that year driving to and from hospitals. My nana was dying of cancer. She died that spring, and I spent the summer and my birthday helping to clear out her home. She had been the only one to encourage my art and personal projects. It felt surreal. The house sale meant there would be a little more money in the family. Bittersweet.&lt;/p&gt;

&lt;p&gt;I sent out applications again. This time they made it to their destinations. I applied to OCAD, Sheridan, and snail-mailed a hefty portfolio out to ACAD (Alberta University of Art). I got into all of them and ultimately chose the one that was furthest away from me: ACAD. They had the program that I was most interested in. &lt;em&gt;Visual Communications Design&lt;/em&gt;. I moved out to Alberta by myself with a couple of suitcases.&lt;/p&gt;

&lt;p&gt;In hindsight, I should have applied directly to VisCom. Unfortunately I didn't quite understand how their program was set up and didn't know that was even an option. When it came to getting my transfer credit applied, I got a grand total of: &lt;em&gt;three&lt;/em&gt; general credits. My first year at ACAD ended up being nearly a 1:1 repeat of my Art Fundamentals diploma. (My community college year was actually stronger in many ways because they were better funded.) I wasn't allowed to drop or challenge the ones that were repeats because they were prerequisites for VisCom. It was mildly infuriating. I used one credit the first year, and got admissions to convert my other two to a second year credit. Not a complete waste, but it sure felt like it.&lt;/p&gt;

&lt;p&gt;The best thing about repeating first year was being able to meet the people who had their sights on VisCom. You'd go in, see someone's work, and most times be able to immediately tell what they were aiming for.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You: VisCom?&lt;br&gt;&lt;br&gt;
Them: Yup.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Second year required another portfolio application. I applied and got in. Where was technical Jodie during all this? Doing the side-hustle and selling her various web services to help pay for &lt;em&gt;gorram&lt;/em&gt; black foam core. While I can strive for and appreciate "good craft," it can be so wasteful. I cannibalized many old projects just so that I could present new ones without breaking the bank. The preoccupation with physical presentation consumed far too many tedious hours.&lt;/p&gt;

&lt;p&gt;One of my greatest triumphs near the end of obtaining my degree was getting a bank loan and acquiring an $800 large-format full colour printer. It was worth every cent for the amount of sleep it saved me.&lt;/p&gt;

&lt;p&gt;I tried to challenge a couple more courses. The first one was about things like Adobe Photoshop and InDesign. I'd already completed a course in QuarkXPress and had been using Adobe products for ages. Denied. I didn't learn anything new, but did get to help out Windows people learn shortcuts that instructors only knew how to do on MacOS. (There were at least 5 other people should have been able to challenge this.)&lt;/p&gt;

&lt;p&gt;The next course I tried to challenge was the web design one. By that time I had a reputation so when the instructor saw me in class, they asked "What are you doing here?" and I replied with "I need you to sign this." Paper got signed, credit applied for prior learning, and I got some money back. Though I still hung out around the classroom to help folks out. I mostly traded my expertise for food.&lt;/p&gt;

&lt;p&gt;My time at ACAD was pretty great. I wasn't "the best" and that meant that I actually was learning new things. I also started to analyze teacher-instructor relationship dynamics, what was deemed "good craft" (visually data-driven) and "good work" (not necessarily data-driven), and the project outlines themselves. Oh... yep, subjective element totally there. I could emulate someone's work and get a good grade. The constructive critiques were where the school really shined and I feel that I can owe a lot of my design communication strength to this.&lt;/p&gt;

&lt;p&gt;During my forth and final year, I doubled down on the web development aspect of my career. Several of my final portfolio pieces were from personal projects of mine. I also did joint projects with Computer Science folks at the University of Calgary. I'd found my niche.&lt;/p&gt;

&lt;p&gt;For a few remaining pieces, I painted boogers. Specifically nose boogers. Instructors would come up behind me, see me choosing the perfect shades of green and yellow, sigh and walk away without a word. 🤢😉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4IDUKdKi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/07/image-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4IDUKdKi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/07/image-2.png" alt=""&gt;&lt;/a&gt;Rough art of the Canadian Bluenose ship inside of a nose. Only I thought this was hilarious. I don't need your validation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lom05iRU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/07/image-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lom05iRU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/07/image-1.png" alt=""&gt;&lt;/a&gt;The beckoning nose canals of your youth.&lt;/p&gt;

&lt;p&gt;If design didn't have a subjective element, everyone would love New Twitter. 🙃&lt;/p&gt;

&lt;p&gt;You can research and collect data forever, but until your product is being seen and used, you're missing out. I'm a huge fan of iterative design for this reason. Data-driven is just one part of the equation. Factor that all in, bundle in sentiment, the messiness of human nature, both brand and personal relationships, past actions, perceived future trajectory...&lt;/p&gt;

&lt;p&gt;Design is partially subjective and part of my job is figuring out how to factor in your personal feelings and perceptions. It's a challenge, people are interesting, the world is in a constant flux, we can't completely box in subjectivity, and that's why I love being here. I know my nana would be proud of me. 💙&lt;/p&gt;

</description>
      <category>career</category>
      <category>ux</category>
      <category>design</category>
      <category>education</category>
    </item>
    <item>
      <title>You stole my source code on Neopets</title>
      <dc:creator>Jodie Struthers</dc:creator>
      <pubDate>Wed, 19 Jun 2019 15:30:00 +0000</pubDate>
      <link>https://dev.to/jodie/you-stole-my-source-code-on-neopets-513g</link>
      <guid>https://dev.to/jodie/you-stole-my-source-code-on-neopets-513g</guid>
      <description>&lt;p&gt;I love reading about how many people first got into design and programming on Neopets. Neopets was (and still is) a virtual cornucopia of &lt;em&gt;community&lt;/em&gt; and &lt;em&gt;learning&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;I have a long history with Neopets. When Neopets first launched, many of my friends were drawn into it because they were part of the 1995-1999 Dogz and Catz (Petz) community. A few of our Petz fan sites were specifically targeted and asked to check out Neopets. It was a perfect match.&lt;/p&gt;

&lt;p&gt;Many of the Petz community were into reverse engineering at the time (whether they called it that or not). We'd take Petz files, use a resource editor (like &lt;a href="https://en.wikipedia.org/wiki/Resource_Hacker"&gt;ResHack&lt;/a&gt;), and modify them to suit our liking. My primary objective was modifying source Catz and Dogz files to make them look like my "real life" pets. Other folks created entirely new "Breedz." It was an amazingly vibrant community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4akcgoNx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/06/image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4akcgoNx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/06/image.png" alt=""&gt;&lt;/a&gt;Desktop/screen saver Catz game, what's not to love? Made by P.F. Magic.&lt;/p&gt;

&lt;p&gt;When we were invited to check out Neopets, we made it our secondary home. We were not just a simple group who only played with virtual desktop inhabitants. We were curious, we were creative, and for the most part, we were helpful.&lt;/p&gt;

&lt;p&gt;Neopets was not a very secure site (plain text passwords, widespread XSS, poor filters, session/cookie hijacking). In addition to getting people into design and programming, it also got people interested in hacking (all hats), automation, penetration testing, and social engineering. Neopets attracted a lot of highly technical and talented people.&lt;/p&gt;

&lt;p&gt;When I started playing Neopets, I was one of the people who already knew HTML/CSS. I'd customize and bling out my profile and pet pages. My pages became a hot bed of activity, with people coming to check out my art, as well as the source code. People used me as a font of inspiration and education. I used to write notes to people in the comments of my code. Things like: "You may take this part, but from here down, at least change the hex codes! That would be xool, cyas!"&lt;/p&gt;

&lt;p&gt;Talis, my Aisha, got pretty popular. He was edgy. He was cool. He received a lot of fan art. Most of the art would not be acceptable on Neopets these days. They pivoted hard from having a fun college atmosphere to family-friendly territory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U4XYOQ7m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/06/js_59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U4XYOQ7m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/06/js_59.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PAnWpiip--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/iversia_talisnny1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PAnWpiip--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/iversia_talisnny1.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rnaJWtXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/06/js_worm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rnaJWtXo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://shriker.ca/content/images/2019/06/js_worm.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
It's almost as if I really liked JTHM by Jhonen Vasquez. Talis the Aisha, drawn with a mouse on various oekaki boards.



&lt;p&gt;I had a lot of people viewing my Neopets pages. Neopets offered basic statistics (number of daily page views). We also had things called Neocircles. A Neocircle was their version of a &lt;em&gt;web ring&lt;/em&gt;. Web rings were able to link the customized pet pages together and make it even easier to find similar content. These days search engines have filled this niche, but I sometimes miss curated web rings.&lt;/p&gt;

&lt;p&gt;I used images and the poor filtering on Neopets to write my own analytic scripts. My script could grab user information (like username), and feed it to my own sites. I could tell who exactly was viewing my sites, and how often. A very rudimentary Google Analytics. I built myself quick links so that I could message interesting people and check out their profiles. I analyzed HTTP requests and learnt that I could inject custom text into the hobbies/interests fields. The hobbies were not validated server side, and there was no CSRF protection, so I could inject whatever I wanted.&lt;/p&gt;

&lt;p&gt;At the time, it was fun. I could make my profile say all sorts of goofy things (taking out Dr. Sloth's garbage, daydreaming about Jelly, eating ronuts, etc). It also highlighted how exploitable the site was. There were security holes in pet pages, profiles, and even shops. Over time these eventually got fixed, but for the first few years it was wild.&lt;/p&gt;

&lt;p&gt;I collected people. I had a solid group of (neo)friends before I had a guild. When Neopets added the guild feature, my friends urged me to create one. We'd been hanging out in the Neoboards, mostly in "Evil Things and Monster Sightings" (RIP), before we got the Neopets Team to create the "Role Playing" neoboard for us. (You are welcome, Harry Potter, Pokemon, and Naruto fandoms.)&lt;/p&gt;

&lt;p&gt;I created my own guild.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seize the Night&lt;/strong&gt; (StN) was originally nameless. I'd been creating role playing boards with the label "[x] Lupe Role Play [x]", but when guilds were created, we needed to have a collective name. Like a pack. I picked Seize the Night based on the 1998 Dean Koontz novel of the same name. (I need a handle, man.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x4TmHajn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/js_stn100.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x4TmHajn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/js_stn100.gif" alt=""&gt;&lt;/a&gt;The original [x] Seize the Night [x] logo.&lt;/p&gt;

&lt;p&gt;It grew. Fast. In the first couple of months it grew to 260 members. I implemented a council and then a sub-council to help with the influx of people. Then 320 people. 440. 520. It was around this time that the guild became unwieldy.&lt;/p&gt;

&lt;p&gt;If you wrote on our guild message board, your message would be gone by the time the page reloaded. You'd drown in the voices.&lt;/p&gt;

&lt;p&gt;There was no proper threading. There was no proper moderation. There was no way to implement any sort of escalation path. There wasn't even any visual indication of who was and was not a guild admin. You had to dig deep into the member list or visit individual profiles to figure that out.&lt;/p&gt;

&lt;p&gt;The only kind of self-moderation powers Neopets gave us (and to this day), was "Delete This Message."&lt;/p&gt;

&lt;p&gt;At the same time I was also running a fairly popular "Neopet Code" (akin to the &lt;a href="https://en.wikipedia.org/wiki/Geek_Code"&gt;Geek Code&lt;/a&gt; from 1993). It was hosted off of Neopets and I would funnel my guild members that way. My self-hosted sites had a lot more moderation options and I could ensure that people's voices got heard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ozMOK-g9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/crisis_xiii_whitebg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ozMOK-g9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/crisis_xiii_whitebg.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--21wYYWhY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/spec_mahthie.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--21wYYWhY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/spec_mahthie.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
Armed with a mouse and Paint Shop Pro 6, I was unstoppable. I started the trend of different flame-coloured Fire Lupes. I am not sorry.



&lt;p&gt;Then something predictable happened. As part of Neopets effort to plug security holes and curb social engineering, they did two things: made it part of the rules to stop sharing any personal information (email, IM handles, social networking sites), and also made it so that you can only link to &lt;em&gt;official&lt;/em&gt; Neopets fan sites.&lt;/p&gt;

&lt;p&gt;I was no longer able to actively promote our better equipped guild site, or give new staff members my contact information. Everything had to be underground, word of mouth, or subtly brought up through an official fan site.&lt;/p&gt;

&lt;p&gt;Aww yeah, the Neopets underground.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zhuu5I57--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/js_talis3-1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zhuu5I57--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/js_talis3-1.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W7VZUkiS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/jetfire02-1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W7VZUkiS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/jetfire02-1.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FPzhxScW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/specven8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FPzhxScW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/specven8.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
Talis; Jetfire02 (dressed as Dib; I had not seen Invader Zim yet); SpectraDevil. Punks, all of them.



&lt;p&gt;I operated the guild like this for a while. It was terrible. People were getting their accounts frozen for new rule breaking. We had our own sort of coded language, but that meant next to nothing to the newcomers who would join. We couldn't explain outright where we were organizing off site, and that our official guild board was a thing of flaming garbage. Unless you already knew someone, you were out of luck. It bred cliques. Many newcomers left in frustration due to being ignored.&lt;/p&gt;

&lt;p&gt;Despite this, the guild kept growing.&lt;/p&gt;

&lt;p&gt;Eventually I made the decision to &lt;strong&gt;BURN IT ALL TO THE GROUND&lt;/strong&gt;. I enlisted a few people and we deleted the guild. It was a little sad, but the deletion of this guild caused a ripple effect. I severed the head of the hydra, and I like to think that the multiple (smaller) heads that sprouted back made the world a little better.&lt;/p&gt;

&lt;p&gt;It was then that I turned my focus toward building and maintaining my own communities. What made Seize the Night ultimately fail? What sort of moderation options do I actually need? What kind of onboarding process should I have? How do I raise up other people's voices? What kind of enforcement? How can I be proactive about potential harassment?&lt;/p&gt;

&lt;p&gt;I created &lt;a href="https://shadowlack.com/"&gt;Shadowlack&lt;/a&gt; (then known as Ramath-lehi). Shadowlack has gone on to help get people careers and jobs in various industries and forge friendships. I've watched ESL students use it to practice their English in a welcoming environment. I've watched and helped "my kids" grow up.&lt;/p&gt;

&lt;p&gt;Without Neopets, there would have been no Seize the Night. Without Seize the Night, I would not have figured out the components of what makes a good living people system. I would have learnt a lot more hard lessons over a longer period of time. Seize the Night choked because Neopets decided to create and enforce rules (good!), but didn't give us the proper tools we needed to organize and thrive (bad).&lt;/p&gt;

&lt;p&gt;I see these lessons I've already learnt from Neopets being repeated at places like Facebook and Twitter. Your communities are only as good as the people you let into them, the rules you choose to uphold (or disregard), and the tools you provide. If your baseline is "this isn't illegal in my country," you have already failed.&lt;/p&gt;

&lt;p&gt;I'm grateful to the people who stole my source code, drove up my page views, and made me even more curious about the digital world around me. 💙&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZVTxTUza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/specx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZVTxTUza--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://shriker.ca/content/images/2019/06/specx.gif" alt=""&gt;&lt;/a&gt;So spooky.&lt;/p&gt;

</description>
      <category>inclusion</category>
      <category>neopets</category>
      <category>community</category>
      <category>security</category>
    </item>
  </channel>
</rss>
