Month: August 2022

Managing Photos

We have a lot of photos — I expect that is true of most people. When taking a picture required someone to make sure there was a roll of film in the camera, take a picture, and then develop (or get developed) the pictures? We didn’t have that many pictures — my family, I recall, had a pile of undeveloped film and a few albums of photos. With the advent of digital photography, I took a lot more pictures. But it was still a manageable quantity. With smart phones — a camera available any time you have half a thought to record something for posterity? We have a lot of pictures. 264 already this month, 4727 last year! And then we have movies. While it is awesome to be able to preserve all of these memories, it’s also impossible to find anything. Ideally, you could search for files tagged with ‘garden’ and find all of the garden pictures.

Which brought us to a quest for a good photo and video tagging application. Haven’t found one yet, but I have discovered that a lot of applications use their own database. Dolphin stores its tags in Balloo — I remember encountering something similar with Windows Media Player and a shared music library — we thought we were making changes that would be visible to everyone, but the changes didn’t even persist if you blew away your local store and repopulated your library. I’ve found apps with sqlite, ones with an external MySQL server, etc — but it’s something that locks you into their application. A few (DigiKam) have a feature to sync their data over to the image metadata, which (I think) will have to suffice.

Worse still, I haven’t identified any reasonable consistency to where metadata is stored — when you add ‘tags’ in the Windows File Explorer, the tags appear in “Subject”, “LastKeywordXMP”, and “XPKeywords”

Windows image tags in EXIF data

Tags written in DigiKam application, however, don’t appear anywhere in the metadata by default– it’s all hidden stuff in the DigiKam database. Since we have SQL servers, we could just share a database for tagging our images. But that seems silly since the file metadata already has places to include these images. I could write something that reads from the SQL tables and uses something like exiftool to write the file metadata. Fortunately, there is a configuration option to actually write the tags into the metadata:

Include tags when writing to metadata

Now tags are written into IPTC “Keywords” as well as XMP CatalogSets, Categories, HeirarchicalSubject, LastKeywordXMP, Subject, and TagList. Which is sufficient for Windows to display something in the “tags” column.

Tags written in Darkroom can be stored in a sidecar file — which is messy, adds to the backup requirements, and generally doesn’t work for me.

GThumbs lets you multi-select across a directory and bulk-add tags. These get added to IPTC Keywords and XML Keywords — which do show up in the “Tags” column of Windows Explorer.

Building Vouch Oauth Proxy

I am using an NGINX container which is based on Debian 11 — following the vouch-proxy build instructions failed spectacularly on the first step, reporting that “package embed is not in GOROOT”. It appears that Debian package installation gets you go 1.15 — and ’embed’ wasn’t added until 1.16. So … that’s not great.

As a note to myself — here are the additional packages I install to the base container:

apt-get update
apt-get upgrade
apt-get install vim wget net-tools procps git make gcc g++

To manually install golang on Debian:

  • Find the version you want to run on https://golang.org/dl/ and wget that tar.gz file
    • wget https://go.dev/dl/go1.19.linux-amd64.tar.gz
  • tar -vxf go1.19.linux-amd64.tar.gz
  • mv go /usr/local/
  • vi /etc/bash.bashrc and append the following lines:
    export GOROOT=/usr/local/go
    export PATH=$GOROOT/bin:$PATH
  • Log out and log back in. Test the go installation by running:
    • go version

Now I am able to run their shell script to build the vouch-proxy binary:

  • cd /opt
  • git clone https://github.com/vouch/vouch-proxy.git
  • cd vouch-proxy
  • ./do.sh goget
  • ./do.sh build
  • cd configure
  • cp config.yml_example_oidc config.yml
  • ./vouch-proxy

 

Medina County GIS — Accessing Linked Data

There’s a lot of data that I’ve been using the old Medina County GIS system to access because I couldn’t figure out how to get it from the new Medina County GIS platform — finally got it!

The first step is to select a data layer that has linked data — this could be surveys, old tax maps, building permits, septic permits, etc.

Once a layer is selected click on the “Identify” icon — a blue circle with a letter I inside of it. I’ve been using “Draw Point” — this changes your cursor

On the map, draw your point on the icon for the data element — for tax maps, this is a gray box with some text in it. Building, septic, etc have colored shapes.

The trick, then, is to scroll down on the “Identify” tab — it’ll always start with the general parcel information (ownership, parcel size). But, if you scroll down, there will be new sections specific to the data layer you selected. Here, it’s the archived Tax Map scans. Click one of the “View” links …

Voila — you’ll have the information.

XRDP Logon Hangs on Black Screen

I’m writing it down this time — after completing the steps to set up xrdp (installed, configured, running, firewall port open), we get prompted for credentials … good so far!

And then get stuck on a black screen. This is because the user we’re trying to log into is already logged into the machine. Log out locally, and the user is able to log into the remote desktop connection. Conversely, attempting to log in locally once the remote desktop connection is established just hangs on a black screen too.

Zoning, ORC 519.25, and 8%

ORC 519.25 says:

The board shall adopt a resolution if there is presented to it a petition, similar in all relevant aspects to that prescribed in section 519.12 of the Revised Code, signed by a number of qualified electors residing in the unincorporated area of such township included in the zoning plan equal to not less than eight per cent of the total vote cast for all candidates for governor in such area at the most recent general election at which a governor was elected, requesting that the question of whether or not the plan of zoning in effect in such township shall be repealed be submitted to the electors residing in the unincorporated area of the township included in the zoning plan at a special election to be held on the day of the next primary or general election. The resolution adopted by the board of township trustees to cause such question to be submitted to the electors shall be certified to the board of elections not later than ninety days prior to the day of election at which said question is to be voted upon. In the event a majority of the vote cast on such question in the township is in favor of repeal of zoning, then such regulations shall no longer be of any effect. Not more than one such election shall be held in any two calendar years.

Which made me wonder how many people, exactly, 8% would be. Well, the last election for Governor was 2018, so a quick trip to the Board of Elections site for the 2018 precinct result details shows

2016 Governor’s Race
Precinct Registered Voters Votes Cast
Hinckley A 1437 1009
Hinckley B 1253 867 Total Cast 4059
Hinckley C 1134 735 8% 324.72
Hinckley D 1213 803
Hinckley E 902 645

 

Since the number of signatories needs to be greater than or equal to 8%, that’s 325 people. Which … isn’t really an insurmountable obstacle in a township with just over 5,900 registered voters — about 5.5% of the registered voters.

Police Resignations

Scott came across a video where some cop in Florida rips into this lady who drive for about a mile after he put his lights on — along a dark, uninhabited road — to stop at what looked like a petrol station. It was odd because I had an uncle who worked in law enforcement and I distinctly remember him saying to get somewhere well lit and around people before pulling over. Put on your hazard lights, drive slower … but get somewhere in public. And visibility helps the cop too — they can see that the blob in your hand is just your purse.

The video had some text at the bottom that said the deputy involved had resigned … but that could mean he resigned before the department was able to investigate the incident, got a job elsewhere, and is out there right now hassling some other person who simply made the prudent decision to stop their car in a safer spot.

Which made me think about some of the Township meeting — when someone from the fire department or police department resigns? They don’t just say “hey, I’m not gonna be working after Friday” and that’s it. They submit a resignation. The resignation is then submitted at the Trustee meeting — and the Trustees vote to accept the resignation. It seems like we could better unsure officers are held accountable for their actions by not accepting resignations if there is any outstanding complaint against the individual tendering their resignation. Wait for the complaint to be resolved — maybe it was nothing and they can resign. Maybe it bears an investigation. But there’s no leaving to avoid accountability.