Monday, February 19, 2024

The Case For Crying at Work

Being sentimental is a personality trait that doesn’t get a lot of sympathy in our current society. There seems to be a baseline of sympathy for introverts and maybe even special accommodations made for them. Theres a whole Netflix show romanticizing the love lives of partnered people, both with Down Syndrome. It’s not a joke. it’s meant entirely sincerely (?). But the imaginary list of commonly coddled non-neurotypicals does not have sentimental people in the top 100. 

In fact, when sentimental people are usually shown, they are the butt of the joke. The circus clown. Hoarders is a televised pillory of an overly sentimental person. It’s actually super messed up. It shows prized possessions being yanked away from a person and that person’s pain in seeing it leave. The endings of that show is usually a stern talk with the hoarder to change their ways or maybe even initiate a big-pharma intervention (yuck).

I am a very sentimental person. Thank God I’m not a hoarder in the same way as the people on that show. My thing is, rather than collect material things, I collect my feelings in each of their unique moments. Some might call them memories but that makes them seem like they were filmed in ultra HD. The video component of the memory gets very blurry or even altered but the feeling connected to it remains fresh so I call them feelings. I collect the overwhelming complexity of each moment and how each moment is a product of the past and a stepping stone to the future and all as precious as Gollum’s ring.
But everyone knows that bad feelings are often more potent than good feelings. So you end up with a nicely curated set of bad feelings on the homepage of your brain-based memory-Netflix under the label of “recently watched”.

And that sucks. 

Recalling those bad feelings makes the current day cloudy and gloomy. Even understanding that built-in chafing, they are too precious to discard. 

Like I said, there is not a lot of sympathy for someone overcome in the current moment with the weight of past feelings. “Snap out of it” might be the response. Or “get with the program”. Instead of feeling the feelings in the moment, some people thing the socially correct thing to do is to bottle it up until a tender movie moment or a live concert and then break down. Or exfiltrate from a public space to an entirely private one like a bathroom stall or their car. Out of sight from others.

Because that’s the thing about hoarding feelings versus hoarding material things.  Its invisible. We can plausibly pretend we just don’t have any. A hoarder of material things can’t hide it. *Someone* will eventually walk in their door and send up the bat signal for an intervention. 
I’m not unique. A whole lot of people are hoarding a whole lot of feelings and no one even knows. If we could see each others hoard-houses of feelings, there would be a lot of “you too?!”s. 

We need to be more accepting of this public displays of sentimentality (PDS). It’s ok to want to hold on to and even re-live old feelings even if they are counterproductive to one’s current self. We dont need to yank those feelings out of our brain or bottle them. We just need to cope however we best cope.
There are a few who truly don’t care about the past or future, who are entirely *entirely* in the moment and are entirely un-sentimental. But not many. I hope we can all find comfort in each others chronic mental aches and give ourselves a little peace. 

Friday, October 4, 2019

DIY Toddler Stoplight Costume with Arduino


With Halloween coming up, we casually asked my 2.5 year old son what costume he wanted to wear this year. He responded with “a stoplight.” At first I thought he was being silly but then I realized it could actually be a pretty cool costume. It could also be a cool little electronics project that I could tackle.

The scope of the project is basically to produce a black T-shirt modded to look and operate as an interactive stop light for Halloween night.

Design requirements include functionality, ruggedness and most importantly, safety. Functionality is described above. Ruggedness is important because it often rains on Halloween. Also, anything in that path of a toddler needs to withstand a beating. Safety is obvious. Reusability is not a priority. Kids grow so fast that this shirt will be unlikely to fit for much more than a few months. Most likely it will only be worn for one night, maybe two if he really likes it. Ideally, the core parts can be salvageable to be used for future projects.

Schematic Design

First order of business was to select the microprocessor. I have used the Arduino platform in the past, so I felt comfortable moving forward with that. Computing capacity isn’t really an issue for this project, it’s not too complicated. But since this is going to be a “wearable” project, I decided to go with the Adafruit FLORA which is specifically meant to be wearable. It is suited for conductive thread.

To sense movement, there are a few accelerators with out-of-the-box Arduino libraries. I chose the Adafruit LSM303DLHC, mostly because I was already placing an order with Adafruit, so it made it easy.

Finally, I needed controllable LEDs. There are many ways to do this. I probably picked the most "overkill" way: NeoPixels. Each NeoPixel has a brain on-board and can be programmed in any fashion, independently of any other NeoPixel.

After choosing those components, I also had to estimate the total the power draw to know what size battery to buy. This was my calc:
Item
Quantity
Draw (mA)
Total
Flora 1 30 30
Accelerometer 1 20 20
NeoPixels 6 60360

2400mAh is a standard LiPo battery size. So if you divide 2400mAh by 410mA you get about 5 hours of runtime with all 6 lights on at a time. It will be less than that with wire resistance taken into account. But it should be more than enough to make it through the night. 2400mAh LiPo battery it is.

Other, small items to buy/order would be
  • Conductive Thread
  • JST 2 Pin on/off switch
  • Alligator Clips
  • LiPo Charger
  • Black long sleeve shirt
  • Black beanie
  • Felt (Red, Yellow, Green)
  • Sewing hoop
I’m literally starting from scratch for this. But many of these parts will likely be reused.

Detailed Design

In terms of wiring everything up, the accelerometer occupies the I2C connection pins of the FLORA board, plus ground and 3.3V for power. Additional sensors could have been be daisy chained, but that was not necessary in this case.

The NeoPixels are connected to the D9 and D10 pins for PWM control, plus ground and VBatt for power. The NeoPixels all daisy chained.

The idea is to have the battery pack in a pants pocket, running to the FLORA which is attached to the shirt, tucked under the top circle of felt (Red). The accelerometer is also attached to the shirt, right next to the FLORA. They are electrically connected using the conductive thread. The conductive thread is also used to feed all the daisy chained NeoPixels. There are 6 Neopixels total, so each circle has 2 lights side by side.

The "backing" is black felt which insulates the shirt wearer from the conductive wire. Then the colored felt circles go on top of that. The felt covers up the mess of conductive wire.

Arduino Program

Accelerometer Library:
https://github.com/adafruit/Adafruit_LSM303DLHC

NeoPixel Library:
https://github.com/adafruit/Adafruit_NeoPixel

Adafruit Common Sensor Library:
https://github.com/adafruit/Adafruit_Sensor

The hardest part is the accelerometer. Making sure that it registers “moving” and registers “stop.” Even if the accelerometer is at a dead stop, it’s output fluctuates. So there needs to be a buffer.

The device also has a magnetometer built in to track magnetic north, but that's not needed for this application. In fact, the X and Y coordinates are not really needed either. Its basically just the Z coordinates, forward movement and backward movement. It looks like the Z axis reads as nominally 10 at rest.

The NeoPixels are pretty straightforward. I’m just going to be lighting them up in chunks of 2. The chunks will never be on at the same time as the each other. And they will always be the same color. The NeoPixels are actually way overqualified for the job I’m assigning them. But they are pretty affordable and could potentially be used on future projects.

Regarding color and brightness, I used max brightness and the full RGB color code (255,0,0 for example for red).

Here is a sample Arduino program which just runs through Red, Green and Yellow using the NeoPixels.

Sample Code


#include
#include
#include

#define PIN 6

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

Adafruit_NeoPixel strip = Adafruit_NeoPixel(21, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop () {
  RedOn()
  //check for movement, loop until movement found, 
  GreenOn()
  //check for stop, loop until stop found
  YellowOn()
  Delay()
}

void RedOn {
//set pixel numbers 1-7 to red
strip.setPixelColor(1,255,0,0)
strip.setPixelColor(2,255,0,0)
strip.setPixelColor(3,255,0,0)
strip.setPixelColor(4,255,0,0)
strip.setPixelColor(5,255,0,0)
strip.setPixelColor(6,255,0,0)
strip.setPixelColor(7,255,0,0) 
//turn everything off
//push to LEDs
strip.show()
}

void YellowOn {
//set pixel number 8-14 to yellow
strip.setPixelColor(2,255,255,0)
//turn everything off
//push to LEDs
strip.show()
}

void GreenOn {
//set pixel number 15-21 to green
strip.setPixelColor(3,0,255,0)
//turn everything off
//push to LEDs
strip.show()
}

//push to LEDs
strip.show()

Lessons learned

Sewing with conductive thread is a b*tch. The most difficult part is tying off each end. I ended up using clear nail polish to help keep the ends in place. It’s really time consuming to sew it all together. And programming in earnest really can’t start until you have the physical hardware installed. Note: as you handle it, tiny slivers of the conductive thread get stuck in your skin and can end up bothering you for days. Maximize continuous thread runs as much as possible. Or said another way, minimize tie offs. Keep a good posture while sewing. It gets so meticulous that I found myself slouching and squinting while I sewed. There is lots and lots of wasted thread. Sometimes you can re-use a thread scrap on a short run somewhere else. Constantly tighten the thread. That tightness ensures a strong connection at the pin. Minimize threads jumping over threads. That was the downfall of the circle vision. There was a ton of thread overlap. It got too crazy.

The accelerometer is difficult to work with. It get's "stuck" sometimes and the best way to fix the problem is restarting the program. It would be good to have a physical reset button readily available on the shirt, able to be pressed while out and about.

Minimizing number of LEDs was really helpful to the project. It reduced the load on the battery, it made troubleshooting way easier and the greatest part was that it made the shirt much more reliable. Less places to go wrong. Less potential trouble spots. After simplifying it, I’m confident in the shirt holding up under crazy toddler conditions. 

Sunday, August 11, 2019

Why I believe in God


God would not be God if we could give Him a high five. We commune with Him through faith. But faith need not be preposterous; faith is still faith when it's supported by a measure of logic. So let me tell you why I believe in God.
"Then the LORD God formed a man from the dust of the ground"
The Hebrew bible says we can find God in the dust of creation, so that seems like a reasonable place to start searching for Him here on earth. The problem is, when you drill down into our natural world, you find chaos on every level. Maybe no more so than on the electron level where quantum physics come into play. But you see it just walking around in nature. Every natural thing is misshapen, irregular, offset, disorderly.

Friday, August 9, 2019

Built to Unbuilt


Violence and destruction do not belong in highly developed places. It's an affront to all the hard work that has went into building that place and a slap in the face to those who maintain it. If the masses must hash something out with their elites, why can't both sides agree to a battlefield which produces the least amount of collateral damage?

Wishful thinking of course, but I also wonder if there is something deeper here. A reason why developed places are exactly where violence and destruction feel most at home. Because it's easy to file the destruction under collateral damage or "caught in the crossfire" when that's not the whole story.

There is a deep down predilection in many to want what is built, to become unbuilt.

Tuesday, July 16, 2019

Part bummer, Part reset, Spygate checkup


The twin towers of Russiagate and Spygate sometimes seem to be outfitted with tractor beams for charlatans and disinformation. So much digital (and real life) ink has been spilled telling and retelling fantastic tales of international intrigue, it's enthralling. The narratives constructed over the past three years are multifaceted and impressive.

Unfortunately, not all of it is actually true. Put another way, there are strains of truth running through rivers of lies. Remember, these stories until now have mostly been told by people like Glenn Simpson, Ben Rhodes, Adam Schiff, Roger Stone, Jerome Corsi and George Papadopoulos...not exactly clear-eyed honest operators.

Wednesday, June 26, 2019

10 Reasons Why Appointing Mueller Made Sense


Trying to decipher Rod Rosenstein is a hobby of mine (and a few others), and it's not easy to be honest. How did Rod go from (allegedly) discussing a wiretap of the President to effusively praising him? The first order of business seems to be understanding the circumstances of the May 17th, 2017 appointment of Robert Mueller as Special Counsel. For that decision alone, Rod Rosenstein became a MAGA-punching bag. Hell, I have been guilty of it too. But maybe some of that hate was and is misguided.

Here are 10 reasons why the decision to appoint Mueller actually made some sense:

1-Shutting down the "Trump-Russia" investigation on May 16th, 2017 was untenable
Shutting it down seems like the right move in a vacuum. Trump-Russia was a hoax, we now know that definitively with the release of the Mueller report. But at the time, there were "Russia" questions from Americans of all stripes. Trump was an outsider candidate with worldwide business dealings, and Mike Flynn had been fired for something, who knows maybe there is something there, they thought. All of these doubts were billowed by the echo chamber media but regardless, that perception was out there. Shutting it down would make Trump look guilty, like he had something to hide.

Making it worse, it seems likely that some at the top levels of the FBI and DOJ would mass quit if Rosenstein decided to shut down the investigation. I'm sure McCabe would. A mass quit event would be portrayed in Watergate terms, maxing out the political damage to Trump. 

Friday, June 7, 2019

How did we get the Spygate Texts?


Anyone with an internet connection can right now read almost 8,000 text messages between FBI employees Peter Strzok and Lisa Page, a stunning win for transparency, but how did we even get to that point? The usual answer is: "Horowitz found them," which is true, but it's nested inside this larger tempest of #spygate, Mueller and Congressional machinations.

This post is focused on the discovery of the text messages, not necessarily on the release of them. But simply the story of these texts being lifted off of FBI archiving systems and tabulated is pretty incredible. This is how it went down, based on the information publicly available right now.

Sunday, June 2, 2019

Is this all just a mall?


It seems like every day there a new suspension or ban on the major social media platforms and it's just getting to be too much. Too many people locked out of accounts. Too many hard to understand reasons for it. There is no recourse.

In brilliant blog post from 2010, sociologist Zeynep Tufekcia used a mall analogy to describe Facebook. She explains, it's a highly controlled/surveilled space, specifically designed to push you towards buying crap and the owners can kick you out pretty much whenever they feel like it.

That description always stuck with me. Because when you take a step back, it seems like a silly thing (getting kicked off a social media site). It's something we used to laugh about and decry the overzealous mall cops giving you trouble. Yet these days, social media bannings feel more...upsetting. More oppressive.

Thursday, May 16, 2019

Rosenstein's Bad Options



There are so many theories around Rod Rosenstein's motives that I can barely keep them all straight.

The left at first thought he was a great choice for the DOJ, as evidenced by his confirmation in the Senate by a wide margin (94-6). Then once he had a hand in firing James Comey, they called for his head. That flipped when he appointed Robert Mueller - Rod was their hero again. But now that the Mueller report is out and he supported Barr's decision-making, he's again a traitor. (phew!)

On the right, Rosenstein has been excoriated for his decision to appoint Mueller. And this rhetoric (that Rod's a bad guy) has been continued by many on the right through today. However there are also those on the right who believe Rod has been quietly doing Trump's bidding all along and, quite honestly, I find this idea fascinating.

Really, all this comes back to a single question: what was the reasoning behind the Mueller appointment. Why did Rod decide it was needed after consistently pushing back on the idea. Did he panic? Was he squeezed? Was it a grand plan? Something else?

So this is my attempt to parse that question.

Saturday, April 27, 2019

The NCIJTF Finds a Home in Chantilly

The story here is about two buildings built in Chantilly, VA with defense contractors in mind and how those buildings got to be leased by the FBI to house it's growing Cyber division, and the NCIJTF specifically (if you want to understand what the NCIJTF is, read this).

The government leases buildings all the time, but the most sensitive operations seem to take place on government owned property. CIA HQ is it's own government owned campus in McLean, NSA HQ is inside of Fort Meade, DIA HQ is at Joint Base Anacostia-Bolling. Even in Chantilly itself, there is the government owned National Reconnaissance Office (NRO) complex.

FBI Cyber is certainly working with sensitive intelligence, yet a leasing arrangement was chosen in this case. Why did they choose to lease instead of own? Hard to say for sure. But I trace it back to the hacker mindset of being incognito. Holed up in a non-descript business park with no signage or even documentation saying you're actually there.