<?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: Josh Bruce</title>
    <description>The latest articles on DEV Community by Josh Bruce (@itsjoshbruce).</description>
    <link>https://dev.to/itsjoshbruce</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%2F138185%2F5351db97-12e7-4569-9f18-8e8acc175958.png</url>
      <title>DEV Community: Josh Bruce</title>
      <link>https://dev.to/itsjoshbruce</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/itsjoshbruce"/>
    <language>en</language>
    <item>
      <title>I'm not a Technophile</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Sat, 11 Jan 2020 12:35:36 +0000</pubDate>
      <link>https://dev.to/itsjoshbruce/i-m-not-a-technophile-43h3</link>
      <guid>https://dev.to/itsjoshbruce/i-m-not-a-technophile-43h3</guid>
      <description>&lt;p&gt;To be clear I'm not using technophile as pejorative and just want to make sure we're on the same page that I literally just mean someone who loves new tech. In 1998 I worked at Office Depot, in the technology center. My co-workers had cellphones...I did not. My coworkers had Bluetooth headsets and other devices...I did not. They had laptops...I did not.&lt;/p&gt;

&lt;p&gt;You get the idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Horse is Dead, Josh
&lt;/h2&gt;

&lt;p&gt;Given some responses to date, I really feel like I need to beat this horse.&lt;/p&gt;

&lt;p&gt;Sorry if this seems over the top. It's just that given the reaction so far when I mention the following I really want to set the stage in three ways:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Not about money, it's about value.&lt;/li&gt;
&lt;li&gt;Not being anti-change or anti-technology.&lt;/li&gt;
&lt;li&gt;I usually know what I'm looking for and am willing to wait for it to show up (again, in the case of cellphones).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Smartphones are getting out of hand for me, &lt;a href="https://vimeo.com/8foldvideo/prodctivity-2-1"&gt;quite literally&lt;/a&gt;, I'm also not using the capabilities nearly as consistently as I used to.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;90% of the cellphones I know of are larger than the iPhone 8, which I find to be the most tolerable of the lineup and given I've entrenched myself with Apple for now.&lt;/li&gt;
&lt;li&gt;Not a big fan of Android, I had to spend way too much time setting up the device I tried in October.&lt;/li&gt;
&lt;li&gt;I can't go back to something like the Alias, but I don't need much. Mobile hotspot at a minimum (then I can buy an &lt;a href="https://en.wikipedia.org/wiki/IPod_Touch_(7th_generation)"&gt;iPod Touch&lt;/a&gt;, yes, they still make those - and be pretty much set). Potential for a navigation solution would be good. Music. Bluetooth. Wired headset. QWERTY keyboard. Message threading. Decent battery life.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Kinda thinking about the &lt;a href="https://en.wikipedia.org/wiki/Nokia_800_Tough"&gt;Nokia 800 Tough&lt;/a&gt; (not available in the states) or the &lt;a href="https://www.thelightphone.com"&gt;Light Phone 2&lt;/a&gt; to give you an idea.&lt;/p&gt;

&lt;p&gt;Now for the ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Got any cellphone recommendations to help me reduce anxiety over this (long story)? (Really want to feel like I looked everywhere.)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Supporting Words
&lt;/h2&gt;

&lt;p&gt;I don't see new tech that I don't own sitting on a shelf and buy it. I don't know what's planned or subscribe to the newsletters of labs at MIT and Harvard. I bought my first computer in 2002. My first cellphone in 2005 (after building my first tower at that same time). My first laptop in 2010 (same with my first smartphone). My first Bluetooth device that saw regular use in 2017. I believe, in 2019, I finally found a tablet.&lt;/p&gt;

&lt;p&gt;"Woh, you're a laggard," some might say.&lt;/p&gt;

&lt;p&gt;It gets worse. I actually own my media still. That's right: 4,000 songs, 300 movies, and 400 books (granted they’re all digital). And here's the kicker, I'm subscribed to maybe four services: internet, cellphone, iTunes Match...that might actually be it, unless we count the two or three under 8fold.&lt;/p&gt;

&lt;p&gt;"Wait. You're not a laggard, you're a luddite."&lt;/p&gt;

&lt;p&gt;I actually look at this way: I'm a pragmatic, utilitarian, minimalist, futurist, which is probably what a luddite would say. Further, there's a big difference between cost, price, and value. &lt;/p&gt;

&lt;p&gt;Cost is about the total price in time and materials to build something. Price is what others will be charged for something. Value is that fuzzy area that most people talk about...or argue over.&lt;/p&gt;

&lt;p&gt;"I don't think X is worth Y," is a comment on value, not cost or price.&lt;/p&gt;

&lt;p&gt;For desktops (towers), I did not see the value until 2002 because none I was aware of had met my criteria; that &lt;a href="https://en.wikipedia.org/wiki/Zip_drive"&gt;250MB Zip drive&lt;/a&gt; alone was priced at what I paid for that tower. &lt;/p&gt;

&lt;p&gt;For a cellphone I wanted one that could be held like a phone, fit comfortably in my pocket, and had an easy to use QWERTY keyboard instead of T9 for texting; that &lt;a href="https://en.wikipedia.org/wiki/Samsung_U740_Alias"&gt;Samsung U740 Alias&lt;/a&gt; was perfect and cellphone plans had just gone through a major competitive right-pricing as carriers started making more of their money from technophiles purchasing smartphones and data plans.&lt;/p&gt;

&lt;p&gt;For laptops, which my Office Depot colleagues used to pressure me to but all the time I had a pretty big list, explaining that, if I was going to spend over $1,000 on a computer (specifically a laptop), it needed to have a metal body, full-sized keyboard, non-carbon trackpad, no eraser joystick thing, glass screen, with at least an active matrix display (higher viewing angle), and it had to pass “the twist test.” (The twist test means I can grab the laptop like a food tray in a cafeteria and twist it without it sounding like I was grinding gears on a manual transmission.) The active matrix bit is funny because as soon as that became a standard companies like 3M made a killing &lt;a href="https://www.3m.com/3M/en_US/privacy-screen-protectors-us/"&gt;developing screen protectors&lt;/a&gt; that would limit the viewing angle - basically taking us back to what we used to get for free. That second generation [MacBook Pro(&lt;a href="https://en.wikipedia.org/wiki/MacBook_Pro#Second_generation_(Unibody)"&gt;https://en.wikipedia.org/wiki/MacBook_Pro#Second_generation_(Unibody)&lt;/a&gt;) was perfect.&lt;/p&gt;

&lt;p&gt;For smartphones, I realized I was calling less and less, texting more and more, and didn't need a phone, I needed something that could do a bunch of stuff pretty well and just so happened to make and receive calls. Too bad I didn't like any of the options available at the time. Apple was the closest and I already trusted them, considering they had the operating system I had been  holding out for, we seemed to be in sync, and they had proven themselves with the Mac Mini (which met all the criteria I had for being able to switch to Mac in the first place). Then the &lt;a href="https://en.wikipedia.org/wiki/IPhone_4"&gt;iPhone 4 hit&lt;/a&gt; and it was all over. Switched carriers, signed the contract, and was in business.&lt;/p&gt;

&lt;p&gt;For Bluetooth devices I have the AirPods 2 - also the first gen but I thought they were the second gen because I don't buy first gen (I rarely by third, in fact). The other day every time I would put the iPhone display to sleep it would disconnect the call I was on. I happened to be at the Apple Store and was told to do a factory reset. I said, "I have to do a factory reset to get them to work the way they're supposed to?" He said, "Yeah. It's technology, sometimes you have to reboot." I asked, "How often? Because I thought we would have had this figured out by now." He said, "It's newer technology and had bugs," with a shrug. I said, "Come on, man. I was selling wireless Bluetooth headsets in 1998. It's gen 4 Bluetooth, but it's taken us a minute to get here." I shrugged and walked away thinking, "Switching back to the wired EarPods is actually not seeming too bad, at least they're dependable."&lt;/p&gt;

&lt;p&gt;For tablets, I went through the &lt;a href="https://en.wikipedia.org/wiki/IPad"&gt;iPad 2, Air, and Mini&lt;/a&gt; followed up by making another &lt;a href="https://vimeo.com/350626695"&gt;video on rapid capture and recall&lt;/a&gt; wherein I lament the fact that despite it being 20 years into the 21st century I still hadn't found a digital replacement for pen and paper. Then I found the &lt;a href="https://en.wikipedia.org/wiki/ReMarkable"&gt;reMarkable&lt;/a&gt;, which is proving to be valuable to me. &lt;/p&gt;

&lt;p&gt;I waited until I bought the mini to digitize my music (most of the music was in the form of mix DVDs not what I bought myself). I waited until movies came to iTunes to start really building my collection (had about two dozen DVDs before that). Started really buying books when Apple Books came out.&lt;/p&gt;

&lt;p&gt;What I like about this make a list and have the patience to find a thing is that I’m not constantly chasing the next hot thing that walks by. Unfortunately, it also makes it difficult to change when it comes to something you’ve had for a decade and everyone heavily advertised variant is pretty much the same.&lt;/p&gt;

&lt;p&gt;So, yeah, cellphone recommendations or just things you’ve heard about?&lt;/p&gt;

</description>
    </item>
    <item>
      <title>2020 Vision (2019 review)</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Thu, 02 Jan 2020 21:45:10 +0000</pubDate>
      <link>https://dev.to/joshbruce/2020-vision-2019-review-5h4o</link>
      <guid>https://dev.to/joshbruce/2020-vision-2019-review-5h4o</guid>
      <description>&lt;p&gt;I took a pretty big hit in 2019 when my mother passed away. We celebrated her life more than mourned her death. With love and support from family, friends, and strangers the physical transition was quite smooth. The emotional transition was as smooth as one might expect and still catches me a bit here and there. Again, not so much as mourning but in celebrating fond memories. In her memory I created the &lt;a href="https://joshuabruce.com/moms-road-trip/"&gt;HiDo KD Road Trip&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I started a contract at a (very) large multinational company while being employed by a (very) large multinational contracting firm. It was the first time I was brought in as a Scrum Master/Agile Coach instead of meandering my way there anyway, which is what I've been working toward since around 2011. Things have been bumpy but going exceptionally well and I felt very welcomed all around. The sweet to the bittersweet of 2019.&lt;/p&gt;

&lt;p&gt;All the equipment I use is owned or leased by 8fold because minimalist 4 life. The lease is coming up in Q1 of 2020. So, I started replacing all the things. It's been kind of a dumpster fire in comparison to the relative smooth sailing of the last two years...not even gonna try to sugarcoat.&lt;/p&gt;

&lt;p&gt;We're also not going to dwell, because I'm me.&lt;/p&gt;

&lt;p&gt;(Feel free to skip to the 2020 header.)&lt;/p&gt;

&lt;p&gt;Given the plan, I decided a full studio refresh was in order, which happens every two to four years for me. Here we go.&lt;/p&gt;

&lt;p&gt;Get AirPods 2 and consider AirPods Pro. Replace 2017 MacBook Pro 15" with the new 16" inch. Acquire two Logitech c922 webcams to improve live streams and film other A/V content. Purchase Focusrite Scarlette 2i2 Studio. All of these use USB 3, not USB-C or Thunderbolt, which is what both laptops need; so, bought two hubs that have the ability to use outside power and pass-through.&lt;/p&gt;

&lt;p&gt;Fast-forward...today...&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Replaced both hubs&lt;/strong&gt; with more known and stable brands from local stores instead of online.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple support tickets in with Logitech&lt;/strong&gt; because camera software appears out of date and doesn't recognize two cameras of the same model as two separate devices to be manipulated; however, the older Logitech Gaming Software does. (Also doesn't seem to allow user to set desired resolution and frame rate - could be wrong.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Support ticket in with Focusrite&lt;/strong&gt; because it randomly won't connect, be recognized, or let me turn phantom power on. Most recently I adjusted the connections to the point of the closest I can to a direct connection and the device worked. Then I stepped back through the various arrangements back to the original - and the device worked - and I was confused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MacBook Pro 16" is in for repair&lt;/strong&gt; because I had experienced multiple power issues. Basically a notification pops up and says, "USB accessories disabled, unplug the device using too much power" (this prompted changing out the hubs). Given I have 187 watts worth of power flowing, I thought the notification was odd. It got to the point that the notification came up and the only thing I had plugged in was the power adapter...despite the laptop not charging...on all four ports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MacBook Pro 15" needs display replaced&lt;/strong&gt; after discovering a burn-in on the bottom right of the screen. I later discovered that the burn-in went even further across the entire screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switched cellphone carriers&lt;/strong&gt; after wanting to switch back to an iPhone with a smaller form factor. They had the iPhone SE listed. Tried purchasing two of them three times from the site. Got in touch with support who told me to go to a store. Walked a mile to the store (don't own a car) only to discover they didn't have any and couldn't get any...told to contact support. Talked while I walked and got transferred three or four times before being told they no longer sell that phone. Two months later, the iPhone SE is still listed on my previous carrier's site. Tried switching to the Palm phone at the new carrier and almost made it until hitting the iMessage dealbreaker I didn't know I had. No smaller phone for me I guess, unless rumors turn out to be true and there will be at least one phone smaller than the current 8 - otherwise, will grab the 8 again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cancelled AirPods Pro order&lt;/strong&gt; after ordering from my new carrier as they were out of stock. The AirPods Pro did not arrive despite the courier and my carrier saying they were delivered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Both AirPods 2 replaced&lt;/strong&gt; after connectivity issues and then no longer getting the low battery warning sound.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2020 Vision
&lt;/h2&gt;

&lt;p&gt;All right, so why all the stuff?&lt;/p&gt;

&lt;p&gt;I've been creating content for the web in fits and starts since 1998. I have a lot of interests and posting about them all in one place tends to fly in the face of consistent timing and topic advice that has been around since roughly 2001. So, I'm going to try something.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First is the concept of centralization.&lt;/strong&gt; Over the last few years I've seen more and more people getting bit by the platforms we all use. Further, I'm also getting tired of platform hopping, which is what I call it when I find a platform I like, start posting and interacting, and then getting disturbed by the direction its creators start going in.&lt;/p&gt;

&lt;p&gt;So, back to making having my own house on the Internet landscape as the primary place to find me. But this time, the experiment will be to have three.&lt;/p&gt;

&lt;p&gt;Which brings us to &lt;strong&gt;the second concept of specialization without pigeonholing.&lt;/strong&gt; As mentioned, I'm a multifaceted generalist, which gets in the way of all the advice ever regarding finding a niche and a topic upon which to build. I just don't work that way. Some days I want to talk about software, some days I want to talk industrial design, and so on.&lt;/p&gt;

&lt;p&gt;So, three primary sites, each focused on a particular, broad topic.&lt;/p&gt;

&lt;p&gt;Which heralds &lt;strong&gt;the third concept of audience, distribution, and non-exclusivity.&lt;/strong&gt; This is taking a page from creators using crowdfunding (Patreon or Subscribestar) and what &lt;a href="https://8fold.link/"&gt;8fold.link&lt;/a&gt; is proposed to be at least in part. Content will start at the core on the primary sites and then move out from there over time. Some content may never move out.&lt;/p&gt;

&lt;p&gt;Three topic areas and primary houses:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Experience Design: I'm an experience junky. That's one of the main reasons I got into this game in the first place; I could create experiences at low or no cost. From software to industrial to the doors on office buildings, this will be housed at &lt;a href="https://joshbruce.dev/"&gt;joshbruce.dev&lt;/a&gt;...brand new.&lt;/li&gt;
&lt;li&gt;Productivity, organization, and so on: This is me helping others design their own experiences (basically, what I do for a profession) and will be housed at &lt;a href="https://joshbruce.com/"&gt;joshbruce.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Creative and personal projects: My academic training is in fine arts from drawing to painting and back again. Over the years I continue to do work and projects that don't fit into either of the previous specializations. With that said, history has proved that my audience, such as it is, doesn't really want to jump around regarding topics, which is fine. Therefore, we're going to house this type of work somewhere else, which is &lt;a href="https://joshuabruce.com/"&gt;joshuabruce.com&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What are you into and maybe don't want to come to the house?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://dev.to/joshbruce"&gt;DEV.to&lt;/a&gt;, &lt;a href="https://twitter.com/AMidKnight"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.twitch.tv/amidknight"&gt;Twitch&lt;/a&gt;, &lt;a href="https://mixer.com/amidknight"&gt;Mixer&lt;/a&gt;, &lt;a href="https://www.youtube.com/channel/UCnb1kmSENtGFqVs7Gsp--Rg"&gt;YouTube&lt;/a&gt;, &lt;a href="https://vimeo.com/joshbruce"&gt;Vimeo&lt;/a&gt;, &lt;a href="https://github.com/joshbruce"&gt;GitHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.linkedin.com/in/joshuabruce/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="https://twitter.com/AMidKnight"&gt;Twitter&lt;/a&gt;, &lt;a href="https://simbi.com/josh-bruce"&gt;Simbi&lt;/a&gt;, all things &lt;a href="https://8fold.pro/"&gt;8fold&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/AMidKnight"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That's a good way to get started. I'll be rolling more out later, if you are interested in a topic on a particular platform, please let me know.&lt;/p&gt;

&lt;p&gt;Also, all feedback is welcome.&lt;/p&gt;

&lt;p&gt;As always, thank you so much for making the time.&lt;/p&gt;

</description>
      <category>studiorefresh</category>
      <category>contentcreation</category>
    </item>
    <item>
      <title>Voice Control for Incoming Calls</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Sun, 08 Dec 2019 04:34:04 +0000</pubDate>
      <link>https://dev.to/joshbruce/voice-control-for-phone-calls-4ih</link>
      <guid>https://dev.to/joshbruce/voice-control-for-phone-calls-4ih</guid>
      <description>&lt;p&gt;Phone: vibrate (ring)&lt;/p&gt;

&lt;p&gt;Siri: "Unknown caller"&lt;/p&gt;

&lt;p&gt;Me: "Send to voicemail"&lt;/p&gt;

&lt;p&gt;I recently put &lt;a href="https://vimeo.com/8foldvideo/prodctivity-2-1"&gt;a video&lt;/a&gt; together talking about the studio refresh I'm going through. The video talks about the hardware I'll be using to maintain ubiquitous productivity in my world. There was so much I &lt;em&gt;wanted&lt;/em&gt; to say (so, so much), but wanted to stay as focused as possible.&lt;/p&gt;

&lt;p&gt;One of the thoughts was something I have honestly tried and am not sure, from an infrastructure perspective, why it's not already there: hands-free handling of incoming calls.&lt;/p&gt;

&lt;p&gt;When a call comes in on the iPhone there are at least three options presented to the user:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;answer the call,&lt;/li&gt;
&lt;li&gt;reply with a message, and&lt;/li&gt;
&lt;li&gt;send to voicemail.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When the call comes in, while it may not be Siri the app, it is Siri the voice; therefore, from a user's perspective, it is Siri. If the user tends to use voice control often, then it would seem logical that they could be able to turn into my sister in the early 90s yelling to the room at large to answer the phone because she herself was not in a position to do so.&lt;/p&gt;

&lt;p&gt;I walk a lot, as I have been "car-free" since around 2011. I have a very low tolerance for dehydration; so, I usually have my water bottle or something else to drink - in hand. With that said, I may also be picking up food or a snack, which means my other hand is occupied.&lt;/p&gt;

&lt;p&gt;Interacting with phone calls does not appear to be possible with AirPods using tap actions, which does make sense to a degree as, if you have a hand free to stab yourself a coupla times real quick with a hard piece of plastic (pet peeve, sorry), then chances are you can bust out your phone and handle it.&lt;/p&gt;

&lt;p&gt;But no voice control??&lt;/p&gt;

&lt;p&gt;Given that when the phone rings the phone app should be activated, even with a low-level variant, and given that the Siri APIs are open to developers (and somewhat to the general public via the Shortcuts app), and given that Siri is somewhat activated and integrated enough with caller ID to call out who's calling, and (at least with the AirPods save gen 1) I can activate Siri completely hands-free, I don't think it's that much of a stretch and am wondering why this isn't a thing yet (or did I miss something??).&lt;/p&gt;

&lt;p&gt;Giving benefit of the doubt and credit where credit is due to the Apple engineers, I'm thinking it's one of at least two reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;not enough people are asking for it (this may even explain why I can't seem to build my own using Shortcuts, but I haven't looked very hard), or&lt;/li&gt;
&lt;li&gt;the hardware itself is a limiting factor.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second one I would think is more likely. It's possible that the incoming call constrains communication for the device to the point that no other message-response pattern can be performed. That's way beyond my wheelhouse to know though.&lt;/p&gt;

&lt;p&gt;Anyway, as the world (and I) continue to move more toward some wireless and handsfree future I think this functionality would be wonderful. I'm cooking, phone rings, don't have to wipe my hands and reach in my pocket or grab my phone off the counter, I can just say, seemingly to the room at large: Answer the phone.&lt;/p&gt;

</description>
      <category>iphone</category>
      <category>digitalassistant</category>
      <category>voicecontrol</category>
    </item>
    <item>
      <title>Not sexy enough for video</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Sun, 06 Oct 2019 00:06:18 +0000</pubDate>
      <link>https://dev.to/itsjoshbruce/not-sexy-enough-for-video-3ie4</link>
      <guid>https://dev.to/itsjoshbruce/not-sexy-enough-for-video-3ie4</guid>
      <description>&lt;p&gt;...or am I impatient?&lt;/p&gt;

&lt;p&gt;For the last month or so I've been documenting my development work. It's a reaction, in the artistic sense, to most development videos I've seen being similar to this one on most developer tutorials:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/MAlSjtxy5ak" rel="noopener noreferrer"&gt;https://youtu.be/MAlSjtxy5ak&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you can't watch, it's similar to drawing an owl:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsdvg47rxey5zgks33j85.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsdvg47rxey5zgks33j85.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even the tutorials that &lt;em&gt;are&lt;/em&gt; honest tutorials can easily be criticized as contrived or "toy" apps. I honestly think that's why there was a boom of new todo apps for every platform circa 2010. Someone made a tutorial to show-off JavaScript, or Core Data, or whatever. Then a bunch of people watched them and said, "Dude! We should totally put this on the App Store."&lt;/p&gt;

&lt;p&gt;In fairness, this is almost how I started learning development. Back in 2005 (after a few years already in) I bought a book on PHP + MySQL. From cover-to-cover it walked you through building a basic content management system. If you were paying attention the web at the time, then you know that there was an explosion in content management systems coming riding the wave of the user-generated-content Web 2.0 world.&lt;/p&gt;

&lt;p&gt;Anyway. What I was, and still kinda am thinking, would be interesting. What if someone recorded themselves doing development?&lt;/p&gt;

&lt;p&gt;No script. No plan. It had to mimic the real world environment as much as possible. A documentary. &lt;/p&gt;

&lt;p&gt;The code would be real. The frustration would be real. The product and goals would be real.&lt;/p&gt;

&lt;p&gt;When I say real code and frustration, I mean not these television and movie examples:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/SZQz9tkEHIg" rel="noopener noreferrer"&gt;https://youtu.be/SZQz9tkEHIg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I say real product I mean it leverages third party libraries, it may (does) generate other potential first-party open source libraries, and leverages multiple, disparate web-APIs including, but not limited to, Stripe, MailChimp, Eventbrite, and GitHub. Further, the platform is for my own company and used to simply or automate various manual processes currently in place for the three practitioners...real.&lt;/p&gt;

&lt;p&gt;At an open space during Agile Midwest we were talking about learning and training of developers. We started lamenting over a lack of apparent desire and I mentioned this concept, saying something like, "It seems that watching videos of a developer write real code, for a real app, for a real company might just not be sexy enough for people to be engaged, which says a lot about expectation versus reality in the industry. You watch CSI or The Matrix and decide to become a developer only to realize it's actually not like that."&lt;/p&gt;

&lt;p&gt;So, all that to say, that's what I'm trying out. I've been debating live-streams as I've seen some others in the community go that route on Twitch; however, there is a drawback with reality, I might need to edit out things like API keys, personal information, and so on.&lt;/p&gt;

&lt;p&gt;And that's why I'm here. &lt;strong&gt;I would like to know:&lt;/strong&gt; Does the above interest you? Would you watch videos, 30m to 60m in length of me developing this platform?&lt;/p&gt;

&lt;p&gt;These are honest questions. I live and breathe from feedback (physical touch and words of affirmation are my two strongest love languages - doesn't have to be "you're the greatest thing since sliced bread," but crickets for what seems like an extended period becomes a problem).&lt;/p&gt;

&lt;p&gt;I typically post to both &lt;a href="https://vimeo.com/joshbruce" rel="noopener noreferrer"&gt;Vimeo&lt;/a&gt; and &lt;a href="https://www.youtube.com/watch?v=HeBAR-bG7yw&amp;amp;list=PLbMeRqvaMWKInBGxJvhgc0NVHt0_Q1RYu" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt; at least every Monday. This publishing schedule quickly ramped up to every day as I can create seven or eight videos a day.&lt;/p&gt;

&lt;p&gt;I will typically post the Vimeo link to Twitter and LinkedIn as that's where I think I have the largest developer-related following. I have started experimenting with what I call "Diff Developer" instead of "Unscripted Developer" where I basically spend 15m discussing the changes and decisions, leaving the option to have me produce the "Developer's Cut," which would be the full (series) "Unscripted Developer."&lt;/p&gt;

&lt;p&gt;I really would like your feedback on this as the time I'm spending editing might prove to have a better ROI working on my &lt;a href="https://leanpub.com/homeless-not-helpless" rel="noopener noreferrer"&gt;next book&lt;/a&gt;, continuing to improve my &lt;a href="https://leanpub.com/triumph-over-time-principle-based-productivity" rel="noopener noreferrer"&gt;current book&lt;/a&gt;, or refactoring and re-engineering the platform for the various 8fold properties: &lt;a href="https://8fold.pro" rel="noopener noreferrer"&gt;8fold Pro&lt;/a&gt;, &lt;a href="https://8fold.media" rel="noopener noreferrer"&gt;8fold Media&lt;/a&gt;, &lt;a href="https://8fold.software" rel="noopener noreferrer"&gt;8fold Software&lt;/a&gt;, and the secret squirrel of 8fold Link.&lt;/p&gt;

&lt;p&gt;Help me Dev.to community, you're my only hope (or, if nothing else, hopefully willing to give me honest feedback of any kind regarding the concept).&lt;/p&gt;

</description>
      <category>php</category>
      <category>video</category>
      <category>pairing</category>
      <category>mobbing</category>
    </item>
    <item>
      <title>All the Nope: An Attempt at Extreme DRY and YAGNI</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Mon, 01 Apr 2019 23:24:40 +0000</pubDate>
      <link>https://dev.to/itsjoshbruce/all-the-nope-an-attempt-at-extreme-dry-and-yagni-2om</link>
      <guid>https://dev.to/itsjoshbruce/all-the-nope-an-attempt-at-extreme-dry-and-yagni-2om</guid>
      <description>&lt;p&gt;I've been working on the platform for &lt;a href="https://8fold.pro"&gt;8fold&lt;/a&gt;. Most things I do come down to an experiment in one form or another. Sometimes they're philosophically motivated and may also be motivated by something else. For this take on the platform I really wanted to try:&lt;/p&gt;

&lt;p&gt;Extreme Don't Repeat Yourself (DRY) and You Aren't Gonna Need It (YAGNI).&lt;/p&gt;

&lt;p&gt;So, if I ever find myself weighing the cons of some method based on the phrase, "Well someday I'll need X," I stop and delete that reasoning and start again. &lt;/p&gt;

&lt;p&gt;This mental position started taking over my brain from a &lt;a href="https://vimeo.com/97530863"&gt;talk by Uncle Bob Martin&lt;/a&gt;. In it he describes initial development on &lt;a href="http://fitnesse.org"&gt;FitNesse&lt;/a&gt;. In the beginning, FitNesse had no database because someone on the team said, "You know, we really don't &lt;em&gt;need&lt;/em&gt; to do that yet." Basically just holding everything in memory. I'll leave the rest to the talk.&lt;/p&gt;

&lt;p&gt;I also got thinking about it more when I started interacting with Stripe as the primary payment processor for 8fold. What I appreciated about Stripe was that the personal and credit card identification information never touches my servers or code. Instead, I can pull certain types of information from Stripe via an API. At which point, the persistent storage becomes a distributed system.&lt;/p&gt;

&lt;p&gt;Stripe holds all the data related to the card, possibly an email address, subscriptions, plans, products, and so on. Further, Stripe can also perform certain pieces of functionality such as sending receipts, reminders, and so on. Delegation of responsibility.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gdpr-info.eu"&gt;GDPR&lt;/a&gt; came along and made things a bit more complicated (in a pretty good way). One of the stipulations from GDPR is the ability for users to export all their data into a package they can easily consume. If you've ever done this on an of the major social networks available, chances are you're familiar with the following user flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;security page -&amp;gt; request export data

time passes

receive email that package is ready with link -&amp;gt; follow link -&amp;gt; download package

open (or unzip) package -&amp;gt; read web pages or other plain text files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The reason for this flow is because the providers have to build those flat files from the data in the database.&lt;/p&gt;

&lt;p&gt;This was the final nail that got me thinking.&lt;/p&gt;




&lt;p&gt;Every type of storage is exceptionally good at one thing and marginally good at something else, in my estimation.&lt;/p&gt;

&lt;p&gt;A relational database (like MySQL) is very good at querying, retrieving, and managing relationships...hence the name. The pain point for many with using this by itself comes in the form of changing the data structure. My personal pain point is in storing large chunks of content in the database, especially if it's storing actual HTML for a web page specifically.&lt;/p&gt;

&lt;p&gt;A web service accessed via an API (RESTful or otherwise) is good at be a facade for developers and delegating the overhead and decision making to someone else. The pain point here is that it can be a large bottleneck because it moves at the speed of the Internet not the box running the rest of your code. It's also typically difficult to get things changed unless you have a mainline to the developers.&lt;/p&gt;

&lt;p&gt;A flat-file structure (like, well, the base Internet technologies) is good for rapid retrieval and deliver of simple queries of content; open folder, grab file, do something, return result. (NoSQL and flat-file can be pretty similar regarding low-level tech.) The pain point is in searching. The pain point used to be reading from and writing to disk but solid state has made that pretty nominal.&lt;/p&gt;

&lt;p&gt;A NoSQL database (like MongoDB) is very good at overcoming the perceived inflexibility of a relational database and makes creating a web-API that returns JSON easier. The pain point here comes in scaling large datasets with a lot of relationships. The complete structure, from what I understand, can be difficult to wrap your whole head around, compared to a list of tables, each with rows holding the same data.&lt;/p&gt;




&lt;p&gt;So, for this round, I put the following bounds around things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Relational databases: These are essentially (meta)databases. They do not hold content. Instead, they hold metadata about content including the relationships. Say, a User class, each row has the password, an email address, and so on for a given instance of a User.&lt;/li&gt;
&lt;li&gt;Web services: These are responsible for holding the data related to their service and are the single source of truth as well as the single storage location for data that does not grossly impact retrieval as needed.&lt;/li&gt;
&lt;li&gt;Flat-files: These primarily hold text-based content and user uploads, which stores content generated by &lt;em&gt;that&lt;/em&gt; user; thereby, making exporting user data a lot easier because it doesn't have to be aggregated and compiled.&lt;/li&gt;
&lt;li&gt;NoSQL: Haven't had a reason to use a full NoSQL solution; however, some of the flat-files are JSON files with certain types of non-relational metadata.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;I also divided the flat-file structure into what I call public and private while also encrypting or hashing as much data stored in the database as possible, which isn't a lot for a lot of reasons, not the least of which is that 8fold doesn't want personal data (You Aren't Gonna Need It) beyond what is strictly required to make the software work. So far, we need an email address, a password, and a username to create a user object.&lt;/p&gt;

&lt;p&gt;To Uncle Bob's point, the data storage mechanism is an implementation detail. So, when I interact with an instance of User, as a developer, I don't care what's going on unless it's broken. For example...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;
&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;

&lt;span class="nv"&gt;$user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// This would come from the relational database&lt;/span&gt;
&lt;span class="nv"&gt;$id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nv"&gt;$personas&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;personas&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// This would come from the Stripe API&lt;/span&gt;
&lt;span class="nv"&gt;$cards&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;cards&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// This would come from the flat-file&lt;/span&gt;
&lt;span class="nv"&gt;$profile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// This would come from the non-NoSQL JSON&lt;/span&gt;
&lt;span class="nv"&gt;$emails&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$user&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;emailAddresses&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If I decide to change any of the implementation details regarding persistent storage and access, I can do so pretty easily, without impacting myself as the developer...at least not a lot.&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
    </item>
    <item>
      <title>You're doing it wrong culture</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Tue, 19 Mar 2019 04:27:32 +0000</pubDate>
      <link>https://dev.to/itsjoshbruce/youre-doing-it-wrong-culture-28oi</link>
      <guid>https://dev.to/itsjoshbruce/youre-doing-it-wrong-culture-28oi</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Not sure why you’ve dragged up a 7 month old conversation, but your build process should be the same across all environments.&lt;/p&gt;

&lt;p&gt;Gulp is for building front-end assets (CSS, JavaScript), the paths of which shouldn’t change across environments.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I hopped onto a forum to ask a question and noticed I had an unread notification...from two years ago. I read it and was sort of caught in a limbo of responses.&lt;/p&gt;

&lt;p&gt;Part of me was thinking of starting a response with, "Well, if you think 7 months is bad, try two years later. Listen here..." &lt;/p&gt;

&lt;p&gt;That's the angry, taking it personal side. To the point of the argument, I was searching on something related to something I was developing that was similar. I wanted to have one set of gulp scripts that could manage the assets for three or four &lt;em&gt;different&lt;/em&gt; sites; therefore, each one had their own .env file and variables. &lt;/p&gt;

&lt;p&gt;But that's not the point.&lt;/p&gt;

&lt;p&gt;I do tend to agree that the build process should be the same across environments: local, testing (if you have one), staging (if you have one), and production. However, the environment variables within a .env file (or other config file) should &lt;em&gt;not&lt;/em&gt; be the same, especially if, like in Laravel, there's an app key unique to the site.&lt;/p&gt;

&lt;p&gt;The Gulp thing is interesting, it reminds me of a lot of other things. Cars, for example, are for getting from point A to point B in an efficient manner compared to the alternative of walking or using a horse and requiring less daily maintenance than either. However, someone decided to break that rule and have cars go in circles, at high speeds (inefficient), for the purposes of entertainment; multi-million dollar industry. Gulp, near as I can tell, is for manipulating and watching the file system; copy-paste files, compile files, and so on.&lt;/p&gt;

&lt;p&gt;With that said, what's with us?&lt;/p&gt;

&lt;p&gt;Why does it seem like on Stack and various other forums that our first response to any question is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why do you want to do that thing?&lt;/li&gt;
&lt;li&gt;You shouldn't do that thing?&lt;/li&gt;
&lt;li&gt;You're doing it wrong? Here's the right way.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don't know if it's the quantity necessarily, it's just the quality. My stock response has become something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not sure this "you're doing it wrong" answer is helpful.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've seen a few people who say, "I don't recommend doing it this way but it's the way you say you want to and here's why it's a bad idea."&lt;/p&gt;

&lt;p&gt;That^ is so much better than coming off as demeaning and confrontational. And this isn't about thin skin - I was an art major and for four years straight was subjected to a jury of my peers for everything I created (like a code review with the whole team, only other students are competition). I literally had someone yelling in my face, "I don't understand your stuff, I mean, seriously, why are you even an art major" (that was a fellow student, while the professor sat on the sidelines saying nothing). So, yeah, thick skin, and I can dish what I'm served.&lt;/p&gt;

&lt;p&gt;But I don't want to when it's berating and destructive criticism.&lt;/p&gt;

&lt;p&gt;And that's the rub. I'm not looking for flowers, rainbows, and campfire singalongs. But maybe entering into the conversation with the notion that the other person &lt;em&gt;isn't&lt;/em&gt; intentionally trying to be an asshole and does know a thing or two, just maybe not on that particular subject. &lt;/p&gt;

&lt;p&gt;Maybe my phrasing seemed confrontational and the other person felt the need to escalate instead of asking for clarification like, "Text being the absolute &lt;em&gt;worst&lt;/em&gt; form of communication, I would like clarification, are you being aggressive right now? Because X, Y, Z makes me think you are." Or even, "This feels like an aggressive trap laying."&lt;/p&gt;

&lt;p&gt;Anyway. Just something that always hits me hard when I see it because I've seen what happens when we're being awesome to and with each other - the alternative is sheer terror.&lt;/p&gt;

</description>
      <category>devculture</category>
    </item>
    <item>
      <title>The Frustrations of TDD, Composer, Laravel, and Package Development</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Sat, 23 Feb 2019 05:31:12 +0000</pubDate>
      <link>https://dev.to/itsjoshbruce/the-frustrations-of-tdd-composer-laravel-and-package-development-21n8</link>
      <guid>https://dev.to/itsjoshbruce/the-frustrations-of-tdd-composer-laravel-and-package-development-21n8</guid>
      <description>&lt;p&gt;(I'm pretty sure Twitter exploded.)&lt;/p&gt;

&lt;p&gt;Over the last couple of weeks, I think - kinda lost track of time - I've been posting somewhat daily threads describing the adventures of redeveloping the 8fold platform, affectionately called AMOS, which I will refer to as just Amos from here on out.&lt;/p&gt;

&lt;p&gt;Not gonna bother too much with recaps, take a look at the thread, if you're curious.&lt;/p&gt;

&lt;p&gt;Today was kind of the final straw for me with trying to do things the way I thought would be most beneficial and complied with my desire to constrain myself as strictly as I could to various principles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;TDD in general, with a fair refactoring Javier Trevino Saldana, as I can't &lt;a href="http://bit.ly/2E6ILXQ"&gt;notice any nuance lost&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Leverage what you have until you can't.&lt;/li&gt;
&lt;li&gt;Packages should be independently testable, even in a monorepo.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last one is kind of where I broke today, which rippled a bit across the others.&lt;/p&gt;

&lt;p&gt;Composer is to PHP what NPM is to JavaScript. The &lt;code&gt;vendor&lt;/code&gt; directory is equivalent to the &lt;code&gt;node_modules&lt;/code&gt; folder. Composer offers something called autoloading. Which helps PHP find what your application is looking for by way of voodoo I have not dove into beyond the fact it has to do with an &lt;code&gt;autoload.php&lt;/code&gt; file it stores &lt;em&gt;inside&lt;/em&gt; that vendor folder. That's important because the references are relative to &lt;em&gt;where&lt;/em&gt; the composer file is when you run &lt;code&gt;$ composer dumpautoload&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;My monorepo structure looks something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/8fold
    /AMOS
    /CoreCharon
    /AppIdeasmith
    /Laravel
    /vendor
    composer.json
    phpunit.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first three folders are technically packages, Laravel services, to be injected into the service container later. The &lt;code&gt;Laravel&lt;/code&gt; folder holds &lt;a href="https://laravel.com"&gt;Laravel&lt;/a&gt;. The vendor folder is where all the installed packages go. The &lt;code&gt;composer.json&lt;/code&gt; file is similar to &lt;code&gt;package.json&lt;/code&gt; file for node. The &lt;code&gt;phpunit.xml&lt;/code&gt; file is the configuration for PHPUnit, which is the de facto testing package for PHP (see, PHP does have nice things).&lt;/p&gt;

&lt;p&gt;Here's where it gets interesting.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/8fold
    /AMOS
        composer.json
        phpunit.xml
    /CoreCharon
        composer.json
        phpunit.xml
    /AppIdeasmith
        composer.json
        phpunit.xml
    /Laravel
        composer.json
        phpunit.xml
    /vendor
    composer.json
    phpunit.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Putting a vendor folder along with composer and phpunit files at root I thought was a good move. Because each package can have its own vendor folder as well, I didn't want them to though; so, I used symlinked folders to point to the root one.&lt;/p&gt;

&lt;p&gt;Things were going pretty good. Tests were working. Didn't have to hop from folder to folder in Terminal. The only annoying part was I'd have to go into the app I was testing and run &lt;code&gt;composer dumpautoload&lt;/code&gt; every once in a while. I hadn't hit a unit test yet that needed a database table created yet; so, yeah, feeling pretty good about myself. &lt;/p&gt;

&lt;p&gt;Of course, I should know better than to put that into the universe.&lt;/p&gt;

&lt;p&gt;After three hours of trying to come to and elegant solution I relented and decided to create a database table. In my defense, I held to my constraints:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The relational database should be for storing relationships (obvious) and no user-generated or -focused content.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Basically, the table has a single field at the moment: username. I created the migration. I ran the tests. &lt;/p&gt;

&lt;p&gt;They exploded all over the screen like when I used to die playing Doom II as a kid.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--txaAszNS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/2uq3dmlsnv8etsg8qup2.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--txaAszNS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/2uq3dmlsnv8etsg8qup2.PNG" alt="Final credit of Doom II by Id Software" width="528" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Frustrated and having spent about as much time as I wanted to in trying to test the packages in isolation using a package called Testbench, which is the only one I can find specifically for testing packages &lt;em&gt;for&lt;/em&gt; Laravel &lt;em&gt;outside&lt;/em&gt; Laravel, I decided to put the keyboard down and start weighing pros and cons of what I figured would need to happen.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pull testing back into Larvel-proper. This would take the tests away from the context of the packages they were testing. This would also give me a single place to run all terminal commands related to the project. (Hmmmm...symlinks?)&lt;/li&gt;
&lt;li&gt;No, that was pretty much it...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, I started doing just that. I didn't do it all at once because I still need to make progress on this project beyond futzing around with the internals. I moved a test, making sure it needed the database and the new table, with one field. Tests past. I kept moving things. I kept building things.&lt;/p&gt;

&lt;p&gt;An hour later, I felt I was making progress.&lt;/p&gt;

&lt;p&gt;TDD was demonstrating why the debates around what it's good for are. Is it design or validation? I lean toward design as I was quickly able to start refactoring, even building a new class with more control over its destiny than the previous iterations.&lt;/p&gt;

&lt;p&gt;I learned &lt;em&gt;way&lt;/em&gt; more about Composer than I ever would have otherwise.&lt;/p&gt;

&lt;p&gt;Learned quite a bit more about Laravel as well. Mainly, for me, at this point, I'm more interested in using the well designed and developed classes in isolation than I am necessarily interested in using the framework as a whole.&lt;/p&gt;

&lt;p&gt;Package Development became much more interesting when I got the &lt;a href="https://phppackagedevelopment.com/#newsletter-signup"&gt;free course preview from Marcel on creating local packages&lt;/a&gt;, granted it's also one of the videos you get to see when you go into the lessons. Basically, I finally understood how to get Composer to treat my computer like it was Packagist, which is like NPM for JavaScript.&lt;/p&gt;

&lt;p&gt;That's it. Hope that wasn't too filled with hatred and anger. :)&lt;/p&gt;

</description>
      <category>laravel</category>
      <category>php</category>
      <category>tdd</category>
      <category>composer</category>
    </item>
    <item>
      <title>Custom Developer Setups</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Thu, 21 Feb 2019 22:15:01 +0000</pubDate>
      <link>https://dev.to/itsjoshbruce/custom-developer-setups-4mlj</link>
      <guid>https://dev.to/itsjoshbruce/custom-developer-setups-4mlj</guid>
      <description>&lt;p&gt;&lt;strong&gt;Backstory:&lt;/strong&gt; I own a company called &lt;a href="https://8fold.pro"&gt;8fold Productivity&lt;/a&gt;. 2018 was a year of really coming to grips with things. We had scaled up to 7 practitioners but our stated principles and practices were a bit slack and not followed. Not in a crazy Judge Judy way but it did result in basically scaling back to 2 practitioners as everyone was asked to really reflect on their relationship with 8fold. 2019 is proving to be, essentially, a reset year. Scaled the online presence to basically static websites, canceled renewals on a bunch of domains, and just overall belt tightening in the realm of operations. I also started working on the platform again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pertinent story:&lt;/strong&gt; I'm doing what I consider to be odd implementations of concepts being done in other ways. I'm also really experimenting with this concept 8fold has in its branding guidelines: We celebrate the individual and cater to the most constrained. &lt;/p&gt;

&lt;p&gt;So, we're taking a UX concept from the accessibility movement and applying it to other concepts. &lt;/p&gt;

&lt;p&gt;For example, don't have a page with 100+ links in a single grouping, not just because it's bad SEO but because people with cognitive issues may not be able to hold that many things in their head at one time; heck, last I heard the average person does okay with about 7.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0WgzS5zi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/9bpev24nci9jlop00hc2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0WgzS5zi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/9bpev24nci9jlop00hc2.jpg" alt="Star Trek Enterprise" width="450" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To expand that, 8fold is a platform for micro-businesses (I don't know how I feel about that label yet but it's what I have). It does't mean we can't or won't support an "Enterprise" of 5M employees pulling in 100B a year, but that's not who we cater to. Heck, doesn't even mean we can't or won't support a "small business" of 10 employees pulling 2-3M a year, but that's not who we cater to. Instead, we cater to scrappers and hustlers. A 2010 version of myself living in my car while freelancing (&lt;a href="https://youtu.be/QfzDUpB88x4"&gt;writing a book about it wanna see it&lt;/a&gt;? &lt;code&gt;&amp;lt;- funny video|book -&amp;gt;&lt;/code&gt; &lt;a href="https://leanpub.com/homeless-not-helpless"&gt;Here it go&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Anyhow, been working on the platform code and applying that same constraint to an extreme. Put together a quick &lt;a href="https://vimeo.com/318621196"&gt;video about using the SplitView from macOS&lt;/a&gt; to create a setup that's beyond serviceable. I was reflecting on that further.&lt;/p&gt;

&lt;p&gt;One of the things I wish I would have mentioned was customization of environments and cognitive load in collaborative environments.&lt;/p&gt;

&lt;p&gt;Whenever I go into an environment I can never know what to expect. Everyone has their own way of working, which can make it very difficult for an outsider to come in and offer assistance. I remember asking someone once for some help in setting something on the iMac I had at the office.&lt;/p&gt;

&lt;p&gt;He asked, "Do you mind if I install some things?"&lt;/p&gt;

&lt;p&gt;I said, "Not really, as long as I can get my work done."&lt;/p&gt;

&lt;p&gt;He went into Terminal. Typed about 20 &lt;code&gt;curl&lt;/code&gt; requests from memory, and had to look another one up, stating, "I don't use that one a lot."&lt;/p&gt;

&lt;p&gt;None of them had to do with me actually doing what I needed to do, it just made him &lt;em&gt;more&lt;/em&gt; comfortable in my vanilla world.&lt;/p&gt;

&lt;p&gt;Once he finished, he scribbled something down on a piece of paper, a Terminal command to "use when needed." He went on to say, "But you should really check out that other stuff I installed, it's all really good stuff and should cut hours on your day."&lt;/p&gt;

&lt;p&gt;"Is it executed from Terminal?"&lt;/p&gt;

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

&lt;p&gt;"I'm not sure how that can be true given that my average day consists of no Terminal whatsoever."&lt;/p&gt;

&lt;p&gt;"Give it a try. You'll see."&lt;/p&gt;

&lt;p&gt;I've also walked over to help people and I'm looking at their IDE going, "WTF? Margaret." It turns into almost straight pair programming as I have no idea how they got their IDE to look like  that, and have no clue how to get it back (like adjusting the most complicated driver's seat in someone else's car). &lt;/p&gt;

&lt;p&gt;I end up saying things like, "Open this file." Then watch as they do some type of keyboard shortcut voodoo they have embedded in their muscle memory and the file appears like David Copperfield doing an NBC special. &lt;/p&gt;

&lt;p&gt;Meanwhile I'm thinking, is that really faster or more efficient than &lt;em&gt;not&lt;/em&gt; hiding the file navigator and just clicking on the file? &lt;/p&gt;

&lt;p&gt;I do think some people do it for the pageantry because when they're bringing their hands back to rest on the keyboard and mouse they make the lead guitar &lt;a href="https://youtu.be/hwjZ2vnDhdU?t=1m10s"&gt;chord change face&lt;/a&gt;, complete with head nod and the hand model wave as if to say, "Look what I just did. I opened a file." (Not everyone, but they're out there and you know who you are.)&lt;/p&gt;

&lt;p&gt;When I'm doing digital organizing it's the same way. I'll ask people where they keep their action lists. Nobody uses Reminders even though it's right there and does exactly what you need it to. No judgment, I love hearing about all the tools ever, it just fascinates me how many problems we solve by grabbing a different tool despite having the tool right there. When you customize your world, remember to leave enough normalcy to allow other people to live in it.&lt;/p&gt;




&lt;p&gt;Don't, worry, the video isn't an advertisement for Vim, I promise.&lt;/p&gt;

&lt;p&gt;Give it a try. You'll see. ;)&lt;/p&gt;

</description>
      <category>development</category>
      <category>tools</category>
      <category>environment</category>
    </item>
    <item>
      <title>Hello World (Dev.to)! It's me, Josh.</title>
      <dc:creator>Josh Bruce</dc:creator>
      <pubDate>Thu, 21 Feb 2019 20:20:09 +0000</pubDate>
      <link>https://dev.to/itsjoshbruce/hello-world-devto-its-me-josh-190p</link>
      <guid>https://dev.to/itsjoshbruce/hello-world-devto-its-me-josh-190p</guid>
      <description>&lt;p&gt;This seems like an interesting platform. Digging the old school computer interface. From font choice to colors. Feel like I'm staring into my dad's old Mac circa 1984; or, the follow-on IBM we got later.&lt;/p&gt;

&lt;p&gt;Self-taught: I built my first site in 1998. I never wanted to be a developer so much as a user experience person, hence the human-down not metal-up mindset. Unfortunately, the concept of UX hadn't really grabbed on and I didn't have the language or know where to look to find out. I also didn't have the means to pay someone else to make my visions (or experiments) a reality; so, I learned development.&lt;/p&gt;

&lt;p&gt;Someone critiqued my HTML as being not that good back in the day; so, I threw myself ever further into the land of development while still keeping up with the psychology of humans and how we interact with the Hulked-up-calculators. I remember the first time I had a portfolio and applying for a UX position at a small shop, the owner said, "You seem more like a developer."&lt;/p&gt;

&lt;p&gt;So, I freelanced for a couple years. What I found was that if I could get in doing the thing everyone thinks is hard and they can't do, then I could move on to doing things I was a bit more interested in. Therefore, software development became a way for me to get my foot in the door and see about doing other things.&lt;/p&gt;

&lt;p&gt;After almost 20 years, I've started looking at the coding problem as a UX problem. The user in this case being the next developer in line. Of course, that's made some of my opinions around certain things a little more strict but it also eases my feelings about being labeled "a developer". :)&lt;/p&gt;

</description>
      <category>html</category>
    </item>
  </channel>
</rss>
