Best Outcomes for My 3rd Places & Trips

NOTE 1: This is my POV on 3rd Places and very much YMMV. I’m NOT telling anybody this is how or what they need to do to be successful, it’s merely ideas you can borrow or steal! So enjoy!

NOTE 2: Yes, this is a long post, get ready for a long haul. However, if you’re looking for ideas about 3rd places or just curious then this post will be worth the read! 👍🏻

Recently I wrote about “My Lessons Learned on Learning“. One of the key parts of learning, but also getting things done for me, is to frequently visit 3rd places. What’s a 3rd place? I’ll elaborate.

3️⃣rd Place – (per Wikipedia) In community buildings, the third place is the social surroundings separate from the two usual social environments of home and the workplace. Examples of third places would be environments such as churches, cafes, clubs, public libraries, bookstores or parks.

Three Other Key Definitions

There are three other definitions that should be understood in detail. These definitions are necessary to get the full context of what I have to write about 3rd places, and also to have an accurate grasp of what I mean when I write workworkplace, and home in relation to 3rd places.

Work is activity that is done on behalf of staying alive. Work could be farming a field or going hunting. In my context it would mean creating some type of service or product, or partaking on some type of activity. One more caveat is that this activity would be related to getting paid.

Workplace is a place where poeple have traditionally gone to do work. However it is a place that is often associated with work where work often doesn’t get done. A workplace is what I call a designated place often paid for by an employer that a person goes to in order to work for that employer. That’s it, nothing more nothing less, that is the core definition of workplace for me.

NOTE: Workplace IMHO should not be, and I attempt to not conflate it with one’s personal workspacepersonal office, or home office. Very, very different places.

Home is where the heart is, it’s where you rest your head at night and get sleep. It’s where you may eat some of your meals. It’s where you hopefully feel safe and confortable and can relax! Everybody, I hope, knows their home to be this!

Effective 3rd Spaces

Now that I’ve dug into the nitty gritty of 3rd spaces, at least for my context in these articles, now the valuable part. How does one use 3rd spaces, and how does one make good use of the trips to and from 3rd spaces? There is so much context and value in the trips to, between, and from third spaces as much as use of the space while you’re visiting 3rd spaces.

The following details how I use 3rd spaces and how I utilize the trips between those spaces. This way I get, and YMMV, the most out of 3rd space use, but also, as extra I’ll detail how many of these practices I follow also work to help me and also not fall into the asshole problem person category for the 3rd places!

The following covered 3rd spaces are the most common 3rd spaces I use: coffee shops, passenger trains, city transit, Seattle & Portland parks, and my personal office.

Use Of Spaces

The space that one needs for doing work or even just projects for themselves to creatively problem solve, to learn, or otherwise work toward accomplishing a goal varies. Each of the spaces I use are usually pretty good for many of my projects, and all are exceptionally good for getting work done in various ways.

☕️ Coffee Shops (Tea Shops, Beer Halls, etc) 🍵 🍺

Coffee shops, probably the most frequent 3rd place I visit by an order of magnitude have several factors that dictate their usefulness. A few questions always dictates whether a coffee shop is going to be a good 3rd place;

  • Is the coffee (tea, beer, etc) good?
  • Do they have decent snacks and food?
  • Are the staff cool, friendly, and ok with loiterers?
  • Is there power that is readily available to plug into?
  • Is there good wifi amidst the volume of people?
  • What is the busy-ness of the business? Crowded?
  • Can I easily not fall into being an asshole? (see mitigation below)
  • What’s the combination of all the above?

With a good mix of the following, I have frequented multiple coffee shops each day to finish out a solid work day. But just working at coffee shops is one things, there is something else they’re exceptionally good for – meeting other folks! During the work day I routinely coordinate which coffee shop to be at, with who I might schedule a meeting with to discuss a wide range of things; software architecture, business ideas, or other prospects.

Asshole alert and mitigation practices! One thing about coffee shops is that they are businesses, usually local private businesses. In that sense they have to make money for staff, to keep the lights on and the wifi connected, and doing so means turning seats and selling product. Thus, don’t loiter and take up seats or defer the selling of products. If you do, you are indeed being one of those assholes that has led to the death of more than a few coffee shops! But it’s simple to not be an asshole. Simply insure you’re paying for product, and if things get extra busy and they’re hitting that stride at making some cash, don’t disturb that and prospectively move along. Thanks, much appreciated! 👍🏻

There are so many great ways to not be an asshole at a coffee shop, and yet reap great benefits from studying and working at a coffee shop I’ll have a complete stand alone post just on this topic in the near future. Especially post-pandemic since we’re all flooding back to 3rd places!

🚆 Passenger Trains 🚂 🚅

Next up is a favorite 3rd place which combines not only a 3rd place but also traveling to and from other 3rd places, passenger trains! I currently live in Seattle, for the second time of living in Seattle, but in the northwest have mostly lived in Portland. One of the beautiful aspects of living in either of these cities is the intercity rail service called the Amtrak Cascades.

Because of this service I have only ever driven between these cities in a car 6 times out of the 900+ trips I’ve made between these cities since I’ve lived in the Pacific Northwest!

Some of the strengths of passenger rail service like AmtrakSounderCaltrain, and others throughout the western United States include;

  • The trains range in being spacious to extremely spacious to work in. On most of the trains, even the commuter trains, there are seat back trays or pull out tables to work on combined with electrical sockets and wifi for some routes. The accomodations, depending on the train, range from coach seats, business & first class, roomettes, and bedrooms as regular options.
  • The cities connected are forward thinking, progressive, beautiful, livable, and if done right stunningly convenient cities. With the more innovative and advanced businesses of the United States, still to this day leading technical innovation in the world (maybe not for much longer, but for now it still holds). This provides a lot of reasons to take trips between these cities for work and for pleasure. The lagniappe is, the trains put you directly into the center of these cities!
  • Albeit the US doesn’t have trains that tend to be on time, these trains on the west coast are generally on time plus/minus a few minutes except for the Coast Starlight, and even that train isn’t that off schedule these days. So even though you can’t set your watch by modern US rail service like that of the previous centuries, you an at least expect to show up mostly on time! This makes connections and other related trips to 3rd places manageable and business friendly!

Asshole alert and mitigation practices! When taking the train there are a number of things that will put you in the asshole category and I can barely get to the top few here, so like coffee shops I’ll have a follow up article for a longer list. But there two, one that I’m going to put here and I know it’s Amtrak (and Caltrain, Sounder, & all others) supported.

Don’t disturb the staff running the train. Amtrak and other passenger trains may be late, some of the food might not be good, the cars might be warmer or colder than you like. You may want to drink so many beers (cuz you can technically) that you fall down in a drunken stupor and cause a medical emergency. You may get screamo and yell at the staff. Every single person on the train ceases to care about your problem then, and we all await your imminent detraining event when the police show up and remove your jack ass self. So please, do NOT turn into this asshole and delay the entire roster of folks trying to get from point A to point B!

This next one is a personal – and I know most people’s – peve about some folks that have a lack of situational awareness and a mouth breathing problem. If you talk loudly in the northwest it’s best to remove yourself from the passenger car and head off to the Bistro, Diner, or Lounge Car to talk. You’re epicly annoying and most northwesterners won’t tell you, I however am from the south and wasn’t taught to stand idly by while you mouth breath loud utterances around from a lack of situational aweareness like an asshole. Even more so when you’re falgrantly downing your beers, I will instigate getting you kicked off the train. Uplevel that situational awareness and don’t be that asshole while on the train. Thanks, much appreciated! 👍🏻

🚃 City Transit 🚌 ⛴

Ok, some city transit is horrible as a 3rd place. Most buses are a no go because combined with the poor state of most roads (like in Seattle) one can’t do all that much on them. Limiting their use. But other modes are spectacularly effective, for example;

Seattle Ferries are one of the most relaxing, wonderful, and convenient ways to travel across vast expanses of water while comfortably working or just relaxing. They are great for trips to 3rd places as well as being excellent 3rd places themselves. I’ve even gone and sat on a ferry, then gotten off (cuz they usually make ya at one end or the other) and then just reboarded, just to enjoy the trip while working.

Light Rail (MAXLINK, etc) is one of my favorites too for short hauls back and forth between areas but also as a mode that – when not too busy – is great to just get into a comfortable corner seat and watch the views go by while working on various things. There aren’t electrical sockets or wifi, but nothing a good charge and tethering won’t fix these days.

More on transit as a displacement vehicle between 3rd places below. Suffice to say though, some transit can indeed be the 3rd place itself!

Asshole alert and mitigation practices! The biggest thing with transit usage, when using it as a 3rd place, is similar to the above – if it’s busy just displace again. Don’t sit on a bus or tram or light rail vehicle or the ferries (which are never that packed fortunately) if it’s packed then move along. Don’t take up space by people trying to use the transit for its intended purpose of going from place A to place B. Thanks, much appreciated! 👍🏻

🏞 Seattle & Portland Parks 🌲 🌿

Almost every Seattle & Portland Park is most epic and enjoyable as a 3rd place to relax and work in. Again, with the advent of usable tethering and battery life in laptops, combined with a little wifi in some parks, these spaces can be some of the most enjoyable and amazing places to get some workdone while enjoying your best life!

Often there are benches or other amenities in parks that are good, but there are also park benches along with picnic tables that really multiply the usefulness of using a park as a place to work and think creatively. Combine that with more than a few natural characteristics, such as in Seattle there are rocks down along the shore. Albeit risky, a climb down across the rocks can lead to a comfortable and close to the water seat.

Recently I took a ride (more on this trip type below) to the waterfront in downtown Seattle. Spent a couple hours working right on the waters’ edge, and got a significant amount of work done along with enjoying that view and scenary extensively. I even cut together a narrative of that trip here, included for you to view at your convenience. 🤙🏻

Asshole alert and mitigation practices! I’m gonna just assume you’re smart enough not to litter, burn down, desecrate, graffiti, or otherwise mess up a park. So on to one of the lesser known asshole park activities. Take for example, if you’re working in a park that’s fairly occuppied then don’t take loud conference calls. This also, just like littering, desecration, and graffitying natural lands shouldn’t need to be mentioned, but it does sometimes escape us. Be aware, work on that situational awareness, and don’t wreck other people’s zen. Thanks, much appreciated! 👍🏻

🏣 My Personal Office 🏤

No asshole alert and mititgation practices for this one because of obvious reasons!

One of the things that I learned years ago while working remotely was that it is indeed really ideal to have a 99.99999% reliable location away from homethat can act as a workplace for work as well as projects or other things that might come up. If you get an office with public space for conferene rooms and such even better! Sometimes, one can even write off some of these costs or even charge it back to the employer if you’ve worked that out in your contract!

A personal office provides that space that isn’t at risk of being disturbed by assholes, you can ensure the wifi or internet connection is good, the door is open based upon your need at any time, and generally removes all of the risk of relying on other 3rd places! The downsides are almost always just the cost of having said 3rd place.

Displacing To & From

Almost all of us have spent inordinate amounts of time traveling back and forth – for Americans largely by driving – to 3rd places. That is one way that someone could get between places, but I opt not to drive places. So much so, I stopped owning a car from a lack of need over 11 years ago now. One of the beauties of the northwestern cities of Eugene, Salem, Portland, Seattle, Bellingham, and a few I’ve forgotten. These cities provide numerous opportunities to make the trips between 3rd places without a car. I’ve made great use of this amenity in the northwest. So why make use of this amenity? Here’s my list and of course YMMV.

Getting from 3rd place to 3rd place, with a toddler or grown ass adults, or all alone I make it enjoyable, work productive, and entertaining for myself. Whatever the modal option, I try to make it so that I get multiple uses out of the trip.

One method I use is combining multiple trips into one trip via trip chaining. An example would be; going to a park to work, stopping for a meeting, catching pizza with a team to discuss architecture, having a design meeting, and then getting groceries on the route home. This is a great example of trip chainingthat, in a place like Seattle or Portland is really easy with lots of options to mix and match however you like!

The other characteristic of the trip is while I’m moving toward the destination am I also getting something else accomplished? If I’m cycling am I getting some exercise? Am I runnig some additional errands on the way? Am I riding with some others? Am I going to be able to work on the modal option, such as taking the bus, tram, light rail, or ferry? Is the trip as much a 3rd place as the 3rd place I’m going to? I never like to take a trip that isn’t multipurpose in function. Since I don’t drive daily, those trips have all pretty much ceased to exist for me. It’s a great feeling to get things done, even when getting things done, to get evven more things done. It’s true multi-tasking like we wished our brains could enable us to do!

Overall, here are the modal option that I specifically use for my day to day trips to and from 3rd spaces…

Pedestrian Movement! This is simply walking. If there is a reasonable way to walk to most of the 3rd places and related activites I need to undertake then it is the option I’ll choose. It’s the cheapest, one of the healthiest, and generally convenient ways to move about the world. It’s spectacular that it is our default mode of transport on this fancy planet of ours.

Biking from place to place is great where the city is designed and developed well (if biking aint your thing, skip to the next modal option). This includes almost any city with reasonably urban and original city platting (i.e. the cities with grids) areas in the United States. Which for city specific things, if you live urban or in what are the old streetcar suburbs, is the fastest and likely the most efficient way from point A to point B. Parking is rarely a problem, owning several bikes for each trip type is cheap over time by comparison to other modal options. The only thing more environmentally friendly is walking, so you can rest easy in the ethical realm!

A few options to make things ridiculously easy, involves a few bikes and bike options I have.

  • Everyday hauler of things, Space Horse. This bike provides point to point travel with the possibility of over 100lbs of carry weight on frame via panniers. Adding my backpack and I easily get into the 140 lbs range if needed. The reasoning however is it provides the ability to carry more groceries than the average American buys at Costco (i.e. a LOT of food) all the while loaded up with laptop plus hammock and everything else I’d need to hang out in a 3rd place and get things done comfortably! Even with all that carry capacity, I can easily pop off the panniers while loaded and rack load onto a bus or light rail if need be for that “I got lazy now” trip home!
  • Zippy get there and back, Pop Rocket. This bike I use for quick trips, it’s real light and maneuverable, where I’ll just carry my backpack or I just need to show up and won’t really need to haul anything. Easy to also combine with transit if I wanted to say, skip a hill or just felt like watching videos, or need to whip out the laptop because heaven forbid I got paged while on pager duty!
  • Boldly Bendy Brompton Bike. This bike I use when I want to be able to bring it into and out of locations. It has been my go to bike when I record meetups like “Adam Dymitruk: Event Modeling & James Nugent: Events and Distributed Consensus”“Dave Remy, Event Sourcing Primer: Building source systems using the event sourcing pattern” and “Robin Moffatt, Apache Kafka and KSQL in Action: Let’s Build a Streaming Data Pipeline!”for example. I have a front mount bag and a back rack that is perfect for everything I need. All while being able to be folded up and brought into the meeting location or onto a bus or other mode if necessary. To boot, I’ve used this bike for it’s intended purpose too such as when I took the trip to DC for DataStax’s Accelerate user conference. Riding into and out of International in DC was a stellar experience and that continued everyday of the conference as I road across the Woodrow Wilson Memorial Bridge to the conference center from Alexandria, Virginia. An absolutely stellar experience traveling between 3rd places.
  • Surly Trailer. Ok, sometimes you have to go above and beyond a mere bike frame and need to haul some big stuff. This trailer I purchased years ago and, like the nerd that I am have kept track of various metrics. One of those metrics is the fact I’ve carried multiple metric tons over the lifespan of this trailer. From a multile hundred pound Ikea load to moving from house A to house B in Ballard, I’ve done a lot with this trailer. It attaches with a quick screw on and screwing off so I don’t need any special hardware.
  • Future Bike (i.e. that I don’t own yet). The Urban Arrow is great for carrying even more groceries than listed above, for carrying a child and groceries, or for carrying an adult and groceries with a child sitting on their lap. It’s all up to me! Yay for options! All with that extra electric power to get those multiple hundred pounds up and down the hills of Seattle.

All those bikes and gear combined add up to as many or more options than one generally has with an automobile in the city, at half the cost of a little Honda Fit, with the ability to routinely make better time to lcoations in the city than folks driving! I’ve literally decimated schedules in San Francisco, Seattle, Portland, Vancouver BC, New York City, Los Angeles, Oakland, and other cities with a transit + bike trip option. Easily getting 10-500% more out of a busy day with meetings in different parts of the city. Arguably, when in NYC, PDX, and SEA I have had days that literally would not have been possible to schedule if driving. But were no problem with a bike. Now of course you add the auto-dependent suburbs and you’ll be debilitated, unable to acheive anything like I’ve described here because of the poorly zoned layout of the space. So I just highly suggest avoiding the auto-dependent suburbs if you want 3rd spaces – and especially the trip between 3rd spaces – to work most efficiently for you.

Next up, passenger trains freakin’ rule for movement between 3rd spaces. In addition, they are a 3rd place unto themselves, and can provide extensive focus to get work done as well as to recharge. At least, for folks like me with that ADHD it’s one modal option that can serve multiple purposes like that.

One other thing that works great on trains, if one can manage to coordinate this, is to have meetings with other coders or cohort via the Bistro, Diner, or Lounge car. These are great spaces to have meetings, enjoy life at the same time, and really do that ideation thing I always hear about!

Ferries are a choice I’d really like to utilize more, albeit I don’t usually head off to the islands to get work done or have meetings. However, thanks to some creative minds there have been conferences in Bremerton, meetings in Bainbridge, and other organization work that gets done on some of the other islands. So combining the ferries with other modes, chainging the 3rd places together, can create some immensely useful, enjoyable, and productive worktime.

Summary

That’s my big list of ways to utilize 3rd places, and the travel to and from those 3rd places, to get things done for work. But not just work, I utilize this time to combinge rest, relaxation, and efficiency of modal splits to get things done for myself as well! I hope the list is somewhat useful to at minimum, light some ideas in mind in how to improve your own enjoyment while getting things done for work and for yourself. Cheers!

My Lessons Learned on Learning

NOTE: This is my experience and very much YMMV. I’m NOT telling anybody this is how or what they need to do to be successful learning, it’s merely ideas you can borrow or steal! Enjoy!

I had just, after a couple years of intense music studies, shifted into computer science at college and learned something very important about myself. I signed up for Computer Programming 1, the most beginner of beginner classes on computer programming.

The class started and very early in the first few weeks we’d studied control structures and variables. We were in the midst of writing our first program and I’d gone into my ADHD induced dozed off state, while mind you being wide awake with eyes wide open. However as I sat there, my eyes did start to shut. In a mere moment I relaxed and fell sideways. I awoke in the process of falling, grasped the desk with my hands, as if it was anchored to the ground. However it was too late, the energy of my fall exceeded the lack of weight in the desk, and I uprooted it with a screech of the metal desk feet on the lanoleum tile floor.

BANG, the desk hit the ground and I, now laying 90 degrees of sitting upright with my desk gripped in my hands and me riding it into the floor like a pilot in a plane. Fortunately, being a long haired metal head with plenty of meh I wasn’t embarrassed so much as confused. I announced, “I’m fine!” and got up to a few smirks and smiles from classmates. One of the students spouted, “that’s Adron for ya” as she turned to face to the front of the class again. The teacher asked if I was, “ok”. I responded, with the second free lesson of the day, “I’m fine just got a little bored and distracted.”

The teacher smirked and shook her head at me. She then contineud with the class as I set my desk upright and sat back down to continue too.

The Lessons

first and foremost ADHD will thrash me into boredom and I will entirely phase out when being “taught at” vs be “informed while I learn” or “learning together”. You see, I simply don’t do classroom style learning, I teach myself and then work with people to move past stumbling blocks. It’s a wonderful way to learn.

second lesson was that, one shouldn’t spout of that they’re bored in class. It’s just not cool. Be polite, state things constructively and people will help you.

Benefits of The Teacher

However amidst all of this fracas that I caused, the teacher noticed these things that I had yet to truly learn. She notified me after class that I needed to schedule a time to meet at my earliest convenience. I did and later the next week we met.

At this meeting she, in blunt directness said, “I know you’ve very likely got ADHD but you’re doing great with the class. I also bet you don’t do well with structured teachings, which is why I’m going to give you the rest of the semester’s assignments and let you have at them.”

I was blown away, confused, and impressed at her introspection and reading of me. She added to this though, the third and most valuable lesson of this entire class. This lesson was more valuable than anything I’d learned in college or life up to this point. It was something I knew, without knowing that it was something I could put into words. She said, “if you’re like me, and I suspect you are, I’m not going to hold you to attending every class. Make sure you come in for the tests though, and try to come most of the time, but mainly just get the work done. In addition, get up every hour or so and change the place you’re working, or just walk around. It’ll prevent dozing off.”

She added one more thing, “Oh, also, don’t be the accidental asshole, no need to say you’re bored in my class. Just keep that to yourself you already have fans and friends in the class regardless of you knowing it, no need to give me shit about your boredom.”

The Lesson Trio

Through this these three lessons were reinforced, I’ll call them:

  1. Learning Together Alone – My ability to learn, fast and effectively, is dictated by my ability to hone in on specifics, put those into memory while taking in the abstractions of the ideas at hand. If any questions come up, joining forces or asking a teacher complete this process for me. No classrooms, no needing to sit and be told things that I could easily read 2-10x faster, no need to have concepts pushed at me in a specific dogmatic path.
  2. Be Constructive – Again, just like traveling from point A to point B, we’re all just trying to go somewhere, and we’re all working at this learning thing. Work together, not at odds with each other, everything is better then!
  3. Take Breaks & 3rd Place Displace – When learning, especially with ADHD, you have to break your own super power of hyper-focus as much as you have to battle that of absolute, uncontrollable, and forced distraction. If you can get one under control, you can get them both to work in your favor! Using 3rd places to your advantage, like coffee shops or parks, to do work are extremely effective. Add in a break every 45 minutes or so and you can create an amazingly productive, powerful, and efficient workflow to learn and to simply get things done!

My respect for my teacher just shot through the roof. Not only was she no bullshit, she read me like a book, but she also just pointed out what I needed – these obvious things that I would have otherwise likely missed for many more years.

I took these lessons to heart and started what would become my frequent use and displacement from coffee shops. In addition it taught me that to be truly efficient and effective, I need chunks of time but also need to break up those time chunks with something more significant than looking away from the screen. I need the option to get up and walk away, take a hike, ride a loop around a lake. Something, anything more than merely sitting there and pondering that I’m taking a break.

That brings me to my next blog entry “Magic 3rd Places”, that I’ll have posted soon. I’ll delve into much deeper detail about how I use 3rd places, what 3rd places really are and how I keep my impact to others and myself to a minimum while making use of displacing around 3rd places frequently.

A Review of the MX Ergo Advanced Wireless

FYI: No, I was not paid, nor given these freely, nor do I have any connection to Logitech at all.

A short video of the EX Ergo, the hardshell case I picked up for it, and some commentary about using it in different locations.

A few months ago I picked up a new trackball. It’s one of the multitude of pointing devices I use while working. Just to note, here’s the MX Ergo in its normal spot hanging out with my Apple Trackpad and Logitech m331 Silent Mouse.

The Pointing Devices

I picked this up to replace the older trackballs that I used from Logitech previously, the wireless and wired trackballs had lasted me a solid 5+ years at the youngest of the devices. This trackball however has a number of additional features that dramatically increase the usefulness of the device. I’ll enumerate and elaborate on a few’

  1. The scroll wheel doesn’t just scroll, but has a forward and back feature. Just push the wheel to the left or right with your finger and so goes the navigation.
  2. There’s a metal tray that it sits on, and the angle can be changed from zero to 20 degrees. This position can really change the stressors on the upper arm, which makes for easier use during the course of work.
  3. There are the normal right and left buttons, but also two buttons to the left of the left button, and two additional toggle buttons on the lower end of the left right buttons and on the left side near the ball itself. The toggle by the ball actually changes the speed, and thus increasing the accuracy of position of the cursor, it’s a strange but useful effect when manipulating images or such at a pixel level.

This device is also wireless, and has internal batteries that can be charged via the included USB cable. Standard USB connection required for the sensor for the trackball too.

A few shots of the pointing device all pretty and professional. Keep reading below the trackball gallery.

Why a Trackball

One of the issues when working remotely is that space is often constrained. When in a coffee shop, you don’t want to be the asshole who has all their laptop gear spilling over into areas beyond where you sit. Sometimes you may get lucky and the table space may be abundant, but often it is not. Using a trackpad eliminates the excessive space required for a mouse, as a trackpad just stays in the singular spot near the laptop that you set it.

You might ask, ok you have a trackball but why not just use the trackpad? Well sometimes you still can’t use the trackball, because the space is that limited, especially on a transport mode like passenger airlines. Even in first class you’ll be pretty pressed for space. On a Greyhound bus, if you feel like tempting madness, you have even less space than that and no first class to speak of! In these cases, the trackpad is all you can muster for use. But in cases where you have even a little space, the trackball can come out for use.

Why a secondary pointing device? What makes a trackball so great besides the minimal space it uses? A few things make a trackball more bad ass than most other options. For one, the movement can be more precise, with less training. One can train their thumb movement – or fingers if you want to use it that way – in a way that the arm movement used for a mouse just can’t replicate. Some may say, “oh but just use only your hand for the mouse”, well ok except that defeats the immediate ease of access for a mouse. The core notion here, is you can do this if you want to. Thus, you have reduced space use, reduced physical movement for yourself, you can increase precision, and with this particular trackball, you’ve even got macros and other programmable options for the button array that enhances the use of tools like Photoshop where that precision is a requirement for effective use!

For more reasons, more coverage of the hardshell case, check out my post on Transit Sleuth “Traveling Trackball, AKA “GSD Better!”” speaking solely to the traveling use of the trackball and the hardshell case.

All in all, a great device. Do I recommend it? Well, you’ll have to watch the video to see. 👍🏻

Coding Effort Introspection, 2nd Quarter Workshops, Code Sessions, & Twitch Streaming Schedule

I began learning Vue.js with sincerity a few months ago. But I also started several other #100DaysOfCode efforts (Database Dev Work and GraphQL Design & Dev) at the same time. This, in hindsight wasn’t the best idea. Since I was going to work on some of the #100DaysOfCode tracks outside of my regular day’s workload tackling multiple language stacks, even with the experience and familiarity I have with so many existing stacks it didn’t put me in a position to succeed.

But I digress, even in failure lessons have been learned and I’ll be beginning new with a different plan just next week. Hopefully, not only will this plan work better, but it could tangibly be of much better use for anybody that would want to learn these things too!

With that, I present, the new plan!

Starting on the week 27th I’ll start streaming on Wednesday at 5pm Pacific on Thrashing Code. On the Hasura HQ Channel I’ll be streaming on Tuesday at 9am Pacific and Thursday at 9pm Pacific, scheduling on two time points to cover more of the globe. Instead of daily hour long segments, these will likely go on for a few hours and it’ll be easier to join, ask questions, hang out, chat, and all the things that make a stream entertaining and useful. The lagniappe of this schedule will allow me to more easily cut shorter segments for those that will find those useful, but can’t really join for the longer session. It’ll be a win win for me and the audience.

Thrashing Code Guests

On the 14th of July, Russell Spitzer will be joining me to talk about tech stack, dev environment, and very likely a few things about ole’ New Orleans! Join us for that conversation and let’s dig into all the topics!

The Music of Thrashing Code

The music streams, alas, are again pushed further into the future. I’ve decided I’m going to put together a little bit more before I start streaming that, plus I’d like to get a little bit more into practice before shredding live on stream. For your sake and mine! 🤘🏻

To join in on live sessions;

Aside from the regularly scheduled things above, I’ve scheduled some workshops again as people found those useful. These workshops I’ve scheduled below. It is important to note that these are in addition to the workshops I will provide in the coming weeks and months through Hasura.

  • Getting Started with Hasura GraphQL API and Postgres (Click for tickets)
    • Short introduction to GraphQL
    • Server
    • Client
    • Architectural Overview of Hasura API Server and Tooling
    • Instant GraphQL API
    • CLI Tooling
    • Building a GraphQL Schema with the Hasura Console
    • Database Schema (vs GraphQL)
    • Tables
    • Data Types
    • Relationships
    • Overview of Migrations
    • Using Postgres Functions
    • Short identifiers
    • Default columns (functions & triggers)
  • Full Migrations, Metadata, and Seeds Workflow with Hasura(Click for tickets)
    • Migrations
    • Setup for migrations workflow
    • Versioning migrations.
    • Metadata
    • Setup metadata for workflow
    • Versioning metadata
    • Seeds
    • Setup seeds for initial data loads
    • Versioning seeds
    • Peripheral Workflow Tools & Practices
    • Docker & Local Database Environment
    • Additional Tooling
      • Visual Studio Code
      • JetBrains DataGrip
      • JetBrains Database Plugin
      • Postgres pgAdmin
      • SQL Server Enterprise Manager

Future Workshops

Quick Link to Poll for Priority: https://docs.google.com/forms/d/e/1FAIpQLSdrxPEjPqDLn8GhG1pVOvrhMXP_0LEBqiJirIOUsLkQWA1_jw/viewform?usp=sf_link

Finally, a little help from you dear readers, below I’ve added a poll of several presentations and workshops that I’d like to give in the coming months and would like to get your suggestions on prioritization – i.e. which would the most of you find useful for me to focus on first?

  • SQL Coding (Click to vote) – An introduction to SQL coding. Covering the following material:
    • Introduction to what SQL is and the history. Including, why it’s pronounced sequal, not S, Q, L, and that it does not stand for “Standard Query Language” because nerds are funny about their naming of things, and naming is hard!
    • The basic structure of SQL statements. How they’re built from object, predicate, and verb formation.
    • Putting together a database with SQL. Including creating a database, schema, table, columns, and how to alter these elements.
    • How to go about editing and dropping the elements we created.
    • A quick overview of database migrations.
    • Query writing, joins, inner and outter, and the deluge of Cartesian products.
  • Data Modeling with Relational Databases (Click to vote) – A dive into the 3rd normal form, and the normalization and denormalization of data, including nuanced tips n’ tricks to types and modeling.
    • Basic data modeling, normal forms, and the implications of building schema around normalized forms.
    • Denormalizing schema.
    • Data types and their usage around data modeling.
    • Data types and their implications within data modeling.
    • Common tips n’ tricks for using data types to build effective normalized or denormalized schema.
  • Advanced SQL Coding(Click to vote) – Going beyond the introduction material and delving into the depths of query writing, batch processing, transactions, and other advanced features of SQL.
    • Writing a basic query and growing this complexity to advanced joins, views, and query options to make data available.
    • Getting Cartesian products and ensuring we don’t.
    • Denormalizing data with SQL and some of the complexities of doing so once you have data, and especially with lots of data.
    • Writing loops in SQL and why not to do this.
    • Other SQL tips n’ tricks to awesome SQL coding!
  • GraphQL Servers (Click to vote) – Need a custom GraphQL server? Not sure where to start? In this workshop I’ll provide an introduction to writing GraphQL Servers. Somewhat a language agnostic workshop, but I will pick one to implement a server in for reference in the workshop. Ideally we’ll pick one before the workshop and I’ll use it based on what the students in the workshop would prefer.
    • Introduction to GraphQL Servers and what they do and how they work.
    • Elements of a GraphQL Server
    • Schema
    • Data Set
    • Resolvers
    • Query Operations
    • GraphQL Types
    • Aliases and Fragments
    • Variables
    • Query Nested Objects
    • Directives
  • GraphQL Clients (Click to vote) – This workshop assumes you’ve got your GraphQL Server all setup and ready for use. Now we just need to ensure our clients are getting, and using the data from the server effectively.
    • Client options for the various languages stacks; JavaScript, C#, Java, Go, and possibly other languages.
    • Implementation of queries and mutations in;
    • JavaScript via client and Node.js Server calls (server acting as client).
    • C# and/or Java calls as clients.
    • Go calls as systems client.
    • How to deal with JSON results with JavaScript, C#, Java, and Go.
    • JavaScript with JavaScript Object Notation.
    • C#/Java options for managing JSON.
    • Go options for managing JSON.

Getting COPY For Bulk CSV Working on a Container Running PostgreSQL

(Video is available at the end of this post, be sure to check it out for further details)

First off, check out this post if you’re curious how I put together the csv file. There is a ton of data out there that you can just download that is in csv format, but I wanted to have data that was specific to a DDL (Data Definition Langauge) I wrote. Once I had a file, I went through the following steps to make it easily repeated through automation.

With that file make sure, at least for this example, that the first row of data has the column names as the commas seperated values. It should look something like this (per my example mentioned above), and obviously have far more data than the example below.

id,country,ip,created_at,updated_at,project_id
4cf25606-5f3e-4575-86ea-c585513fcc39,Solomon Islands,169.137.96.151,2020-12-25T05:04:26.124Z,2020-12-30T11:04:26.124Z,d6ef3dfd-9596-4391-b0ef-3d7a8a1a6d10
cbeaf6ab-23cc-43c5-a740-7191f59d8cc5,Solomon Islands,106.92.223.22,2020-12-25T05:04:26.124Z,2020-12-30T11:04:26.124Z,d6ef3dfd-9596-4391-b0ef-3d7a8a1a6d10
17a7ec0b-2758-4721-b104-f368c8109b6a,Solomon Islands,248.8.206.229,2020-12-25T05:04:26.124Z,2020-12-30T11:04:26.124Z,d6ef3dfd-9596-4391-b0ef-3d7a8a1a6d10

Now my next steps was to get this file copied to the server where the database is running. To check the containers I have running I call a quick docker ps to get a list.

The container list of running containers.

In this list, the PostgreSQL server is the container named pgdb. To copy the file to that server, the following command will get the job done.

docker cp ./name_of_file.csv pgdb:/name_of_file.csv

If you’d like the destination name of the file to be different, that is possible in this command too. I like to keep them the same to prevent confusion. For example, if I log into the server and have a bunch of terminals open, seeing the file named on things one place and another in the other place, that’ll throw a wrench into things.

With the file copied, I can now run the PostgreSQL command to bulk copy the data into a table. The command to get that done looks like this.

COPY the_table_where_the_data_will_go FROM '/name_of_file.csv' CSV HEADER;

That’s it! Well ok not really, this is one of the simpliest use cases. Such as, if any columns don’t map one to one with the column names of the csv file to the table column names, this command won’t work as is. Check out the COPY documentation to get the details on how to use the command if you have various things you need to tweak for your own work. However, for this basic premise and for what I want to talk about next, that’s it! 😁

To get into more details about how I automated this process, check out the video.