Oops! Something went sideways.

Looks like the styling got goofed up. Sorry about that, unless it's what you wanted. If this isn't what you were looking for, try force refreshing your page. You can do that by pressing Shift + F5, or holding Shift and clicking on the "reload" icon. (It's the weird circle arrow thing "⟳" just above this page, usually next to where it says https://blog.unitedheroes.net...)

isn't quite ashamed enough to present

jr conlin's ink stained banana

In 2022, you will be able to legally play at aSwiss online casino and use the entire portfolio of slots, tables and live games. This is good news! This was made possible thanks to the new gambling law, which came into force on January 1, 2019. 21 local casinos, such as the famous Grand Casino Baden, were able to obtain so-called license renewals to publish a legal online casino site on the Internet. This allowed Swiss players to visit different operators. Find out what you need to know about gambling in Switzerland and neighboring countries with this online casino quiz.

:: The ATC Model of Work

Anyone who knows me knows that i’m not a huge advocate of Agile.

There’s lots of reasons for that, from the fact that it prevents folk from defining actual requirements in favor of vague stories (which makes testing and documentation harder), to using arbitrary points without accounting (ironically, those points are VERY attractive to accountants who see them as a measure of productivity, even though they’re never meant to be that), to the fact that the SCRUM master is inevitably a manager who has a strong stake in productivity and not someone like a lead engineer who understands complexity (which makes it harder for engineers to push back against features). Agile also works for well defined tasks or simple work where engineers are interchangeable. This almost never matches reality.

Still, tracking and reporting work is valuable, and there are tools that can help with that.

So, how does a modern team do that?

Hell if i know. i’m not a productivity specialist or some sort of efficiency expert. i’m just a guy that builds and supports back end systems, and has done so for a very long time.

i can tell you the way that our team currently does things, or at least, what works for me. It might work for you as well? Who knows. The fact is that trying to use a single system as a universal solution is like trying to build a log cabin using only Swiss army knives. It might theoretically be possible, but there’s going to be a lot of sadness and used bandages before you’re done.

Each team is usually made of a bunch of folks with specific skills. Some might be really good at solving odd problems. Others might be fantastic at finding hidden bugs. A few might be top notch at optimizations. They’re not cartoon assembly line workers (and even there, you’re going to need training before you’re told to go add wiring harnesses this week and installing dashboards next week). So folk tend to do a lot of the same sort of tasks, partly because it’s comfortable, and partly because the inverse Peter Principle means that nobody else wants to do that job.

i kind of view it as Air Traffic Controllers (mind you, my knowledge of ATC folk comes from watching movies like Pushing Tin so it’s probably hilariously wrong, but it’s what i know). Each controller has purview over a set number of flights managed as a stack. As a flight leaves their area, it’s removed from the stack. As flights leave their area of control, they’re removed from the stack.

Developers tend to work the same way. There might be multiple tasks they’re working on. As they complete tasks, they get pulled from their stack, as they get time, they might add more. Since developers are a lot like async functions, there can be times they’re blocked, so having a bunch of tasks on hand can keep them from surfing . The downside is context switching, but some folk are better than others.

We use Jira (or really, any bug tracker system) for how we say “we’re working on this” and “this is done/blocked”. It’s how we communicate to ourselves and up the chain. Tasks are associated into groups, which are collected into Key Results, which are assigned to Objectives so that execs get pretty dashboards with blinky lights they can put into slides that result in us getting paid.

Senior Devs are kinda responsible for breaking apart the Key Result into groups and tasks, again, so that the work gets properly tracked. If another group has a requirement that demands some feature, that group gets prioritized appropriately. (We also don’t do crap like “Planning Poker” or whatever. Look, the person who’s doing the work absolutely knows what the effort is, unless they’re brand new to development. Getting a bunch of other people who may have zero context to make SWAGs ain’t gonna help. If y’all did auditing of tickets and points you might realize that, but i’ve never read about that in any article or done that in any retro, so yeah, chances are you’re not doing it either.)

Is it a fantastic solution that will solve all you problems?
No, What? Were you paying attention? It’s just how we do things. You will have a different solution because of reasons. Still, this works for us and generally persists longer than whatever Agile system gets inflicted on us.

:: By Scraping This Site, You Agree To…

So, in a weird bit of synergy, i was wondering about what sort of bots were scraping my site. (That was the spur for the previous post)

Shortly after i did that, i listened to the latest episode of Planet Money, called “Surprise! You Just Entered a Contract!“, which talked about the history and general pervasiveness of all the “Terms of Use” links. In essence, they’re binding contracts between you and the service or data provider. What’s worse is that the only thing that is under legal review is “how noticeable” those links happen to be. How noticeable? Here’s the link for AirBnB:

A screen capture of the bottom of the AirBnB site that declares the copyright, along with the words "Terms" and "Sitemap". Neither Terms nor Sitemap appear to be links.

If your curious what the terms are (and you really should be) here they are.

All a site has to do is basically make a link stand out a little bit. Many of those terms specify “by using this site you agree“, or some words to that effect, and they’re legally binding.

So, while that sucks for you and me and everyone who blows by those not really obvious links, it does make me wonder just how applicable they can be.

The big AI vendors are always touting how amazing their services are, and how they’re great at comprehending the data and providing understanding. That’s an interesting thought. If i included a similar sort of license, that required that all my data only be used (in whole or in part) as part of a CC-SA license, and that link was included in a file i know that the site must read before processing any other data, (like the robots.txt file), would the AIs (and therefore their creators and employers) be legally bound to those terms?

i mean, i’m not a lawyer, nor do i play one on TV, nor did i stay at a particular branded hotel chain last night, so i am NOT one to argue any of this.

But, i can have fun thinking about it.

And i bet some lawyer could make a good bit of cash actually arguing about it.

:: Bots on Parade

i’m a curious soul.

i was curious what bots were scraping my sites, so i figured i’d do a quick survey.

i’m also super lazy, so i used a simple bash script to get the list of whoever has been pulling my robots.txt file, because no one else would.

so a quick

zgrep robots.txt access.log* | cut -d\" -f 6 | sort |uniq > agents.lst

on soc.jrconlin.com got me:

 
-
AwarioSmartBot/1.0 (+https://awario.com/bots.html; bots@awario.com)                                                       
FediCrawl/1.0                                                                                                             
Googlebot/2.1 (+http://www.google.com/bot.html)                                                                           
IonCrawl (https://www.ionos.de/terms-gtc/faq-crawler-en/)                                                                 
Mastodon server indexer                                                                                                   
Minoru's Fediverse Crawler (+https://nodes.fediverse.party)                                                               
Mozilla/4.0 (compatible; fluid/0.0; +http://www.leak.info/bot.html)                                                       
Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/)                                                                                               
Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)                                                                                                
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:49.0) Gecko/20100101 Firefox/49.0 (FlipboardProxy/1.2; +http://flipboard.com/browserproxy)                                                                                                         
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:98.0) Gecko/20100101 Firefox/98.0                                        
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)                                                                           
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36     
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36     
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11    
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36      
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36           
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/116.0                                          
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0                                            
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE
Mozilla/5.0 (Windows NT 9_1; Win64; x64) AppleWebKit/547.47 (KHTML, like Gecko) Chrome/61.0.1793 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4 240.111 Safari/537.36
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/543.47 (KHTML, like Gecko) Chrome/54.0.2644 Safari/537.36
Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)
Mozilla/5.0 (compatible; AwarioBot/1.0; +https://awario.com/bots.html)
Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)
Mozilla/5.0 (compatible; Barkrowler/0.9; +https://babbar.tech/crawler)
Mozilla/5.0 (compatible; DataForSeoBot/1.0; +https://dataforseo.com/dataforseo-bot)
Mozilla/5.0 (compatible; DotBot/1.2; +https://opensiteexplorer.org/dotbot; help@moz.com)
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; Linespider/1.1; +https://lin.ee/4dwXkTH)
Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)
Mozilla/5.0 (compatible; Nmap Scripting Engine; http://nmap.org/book/nse.html)
Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)
Mozilla/5.0 (compatible; SeznamBot/4.0; +http://napoveda.seznam.cz/seznambot-intro/)
Mozilla/5.0 (compatible; WellKnownBot/0.1; +https://well-known.dev/about/#bot)
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
Mozilla/5.0 (compatible; Yeti/1.1; +https://naver.me/spd)
Mozilla/5.0 (compatible;PetalBot;+https://webmaster.petalsearch.com/site/petalbot)
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/103.0.5060.134 Safari/537.36
Poduptime/Development/Testing
Poduptime/Production from https://fediverse.observer
Scrapy/2.7.1 (+https://scrapy.org)
SerendeputyBot/0.8.6 (http://serendeputy.com/about/serendeputy-bot)
caveman-hunter/0.0.0 (+https://fedi.buzz/)
curl/7.54.0
ws-bot-v1

Which is a lot.

i’m also kinda curious about how many bots pretend really hard not to be a bot. (Looking at you Applebot). i know Google has (at least) two different flavors of crawlers (one fast, the other slow, so no huge surprise there.)

Now, compare this with my close to 20 year old blog:

Buck/2.3.2; (+https://app.hypefactors.com/media-monitoring/about.html)
Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; spider-feedback@bytedance.com)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/600.2.5 (KHTML, like Gecko) Version/8.0.2 Safari/600.2.5 (Amazonbot/0.1; +https://developer.amazon.com/support/amazonbot)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.134 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko; compatible; Yeti/1.1; +https://naver.me/spd) Chrome/113.0.0.0 Safari/537.36
Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)
Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)
Mozilla/5.0 (compatible; MojeekBot/0.11; +https://www.mojeek.com/bot.html)
Mozilla/5.0 (compatible; ScooperBot/3.0; +http://www.carma.com)
Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)
Mozilla/5.0 (compatible; SeznamBot/4.0; +http://napoveda.seznam.cz/seznambot-intro/)
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
Mozilla/5.0 (compatible;PetalBot;+https://webmaster.petalsearch.com/site/petalbot)
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/103.0.5060.134 Safari/537.36
Scrapy/2.6.3 (+https://scrapy.org)
Twitterbot/1.0

That’s a whole lot less. As in 58% less.

Also kinda interesting to see the different bots that look for things. Clearly, the Federation attracts more bots.

It’s also kinda hilarious to me that some of my domains (like EvilOnAStick.com get FAR less crawlers. Apparently, these sites are part of the Dark Web.

:: Getting a Feeling for Empathy

There was an episode of Star Trek (the Original Series) that kinda ruined my understanding of what being empathic meant. It featured The Trio in a very low budget stage along with Beautiful Protagonist who was mute, dramatic, and absorbed pain. McCoy gets nearly killed, Empath absorbs the damage like a walking Silly Putty made of Bactine and All Learn a valuable lesson.

(To be fair, this is considered on of the top 10 episodes of the series, but i’ll also add that one of the episode features a phaser ricocheting, so take that for what it’s worth.)

The point is that being empathetic doesn’t mean that you should be a damage sponge, either physical or emotional. What i find being empathetic means is basically, putting oneself in the place of someone else and being aware of their point of view and experiences. That can mean talking to them, learning from them, and trying as best you can to understand them.

Adam Savage once said that the best response you can give to someone who says they do something that sounds silly or trivial is “That sounds really hard.” Inevitably, they’ll tell some hair raising horror story that will clue you in to “Yes, yes it is.” That’s being empathetic. That’s being invited to understand someone else’s perspective and gain a different view. That view can make A LOT of things suddenly a lot clearer for you, and can raise up things that you may never have thought of.

Presuming that you have complete understanding means that you haven’t sufficiently studied it. There’s always something you missed and other people can be more than helpful in pointing that out if you let them. That’s what empathy lets you see. That’s why it’s so damn important.

Mind you, i’ve found that folk who are the most extroverted tend to miss this detail. From personal experience, a lot of introverts understand this at a near instinctual level. That’s because introverts spend most of their time with others listening, and focused on the other person (It’s one of the reasons that being around others, particularly a lot of others, can be so damn draining. Try listening to every conversation going on in a crowded room. That’s what i find myself doing, and it’s not super fun.)

So, yeah, basically, don’t be a self centered clown and spending a few brain-cells on the folk you deal with will help you out tremendously.

:: Work Will Never Love You, but Your Co-workers May

It’s absolutely true that your work will never love you back. This is proven by the recent rash of tech layoffs alongside quarterly reports of increased revenue. For most employers, you are a resource, just like the coffee makers and copy machines. You just cost more and want to take weekends off for some reason.

That doesn’t necessarily reflect how your co-workers may feel, though.

For all the discussion of Big Tech, it’s actually composed of a number of fairly small factions. There are clusters of folk that tend to bump into each other at various jobs, which makes sense, because those jobs tend to look for the same sort of skills. If you write game code, you tend to work for gaming companies. If you write Java, you tend to work for B2B sorts of companies. i work on large data backends for websites, so i tend to bump into a lot of folk that i’ve met at other jobs. Colleagues float between companies because, frankly, that’s the only way to get a raise that’s actually above inflation rate.

What’s more, we all talk to each other. Probably a lot more than the companies we work for would prefer. There are whisper networks about how some companies are worse than others about certain things, and how some companies absolutely nail the right approaches to other things. No company is perfect. No industry is either. We all have our scars and habits grown from the weary battles and share stories at conferences and meetups.

i mean, tech folk aren’t special. We’re no different than any other professional group. Lawyers will talk with other lawyers about their craft, as will plumbers, pizza delivery folk, brain surgeons and rocket scientists.

This is one of the reasons that i can’t believe that the state of mentoring in our industry is so, damn, awful. Mentoring is a key way to foster a network of folk you can rely on. They’re the web of trust you have to check your assumptions, and are the first to reach out a hand when you need it. What’s more, for the same reason you don’t put all your servers in one colo or region, smart folk are ALWAYS looking to grow their network to include more people. Mentoring (and being mentored) is an absolutely fabulous way to do that.

The Lone Coder valiantly hacking away and building something from scratch is a myth made up by the same folk that thought having two people type on a keyboard was a good idea. Don’t believe it. Great Coders have a strong network of people they rely on.

Blogs of note
personal Christopher Conlin USMC Henriette's Herbal Blog My Mastodon musings Where have all the good blogs gone?
geek ultramookie

Powered by WordPress
Hosted on Dreamhost.