Scavenger Hunt #39 – Negative Space

The 39th Scavenger Hunt had an overarching theme, Rose, and 10 other words to associate to it. I went for a very literal interpretation of that, got myself a rose bouquet (on discount because they were starting to fade quite a bit) and managed the whole Hunt in one (long) afternoon.

This was my entry for the word “Negative Space”.

A pink rose bouquet in a vase, seen from above, with a large amount of white space on the right.

The original had a few more roses on the left of the image – I chose to frame the image that way to give a bit more mystery about the exact angle (it could almost be turn 90° and seen as a shot from the side rather than the top!).

A picture of a rose bouquet on a white table, seen from above. The bottom of the table is not straight and visible. The picture is slightly underexposed.
CameraPentax K-1 II
Lenssmc PENTAX-D FA 50mm F2.8 Macro
Focal length50mm
F-NumberF/6.3
Exposure time1/100 s
ISO1250

Other pictures from my fellow Scavengers: Negative Space

Essen SPIEL 2023

16 game boxes organized int two piles, with miscellaneous goodies in front of it, and a bottle of wine on the right side.

Another year, another SPIEL, and it keeps delivering, as an event. A lot of games played, a lot of games bought, a lot of fun 🙂 And, if you’re wondering about the bottle of wine on the loot: we went to a restaurant (Fischerei) and got their fixed menu with wine pairing, and got treated with a bottle on our way out! (Food was delicious, by the way – highly recommended if you’re in the area. And like fish.)

So, let’s talk about games and, like last year, let’s do that in order of games played, because that’s actually easier to narrate. We’ve tried really hard this year to not buy games we weren’t sure about (“maybe is no”), but we may have failed a few times as the fair went on.

Papertown

Paper Town - lozenge tiles displaying city elements, colored meeples

Papertown is a tile-laying game, where you try to make geometric combinations of tiles to place your buildings/objectives and the corresponding meeples. The twist is that the tiles are in isometric 3D, which makes it a bit harder to fit in one’s head! That twist might have been enough to make it a pick later during the Messe, but we still had enough self-control at that time to not get it.

Balloon Pop

Balloon pop: transparent cubes and grid player boards

In Balloon Pop, you get a row of colored cubes, representing balloons, that float on top of your board, and they pop (making points) when they reach a certain threshold. The cards are used to define both the priority order and what you’re allowed to do with the balloons (place them horizontally, vertically, discard some of them). Pretty clever, and that may be the one I’m regretting not getting right now.

Menhirs dans le brouillard

Menhirs dans le Brouillard : hex tiles showing menhirs, forest, and white fog tiles on top.

“Menhirs dans le brouillard” was a buy, and it was honestly half because of the title (which means “Menhirs in the fog”, which we both found hilarious) and quarter because of the people explaining the game (who were super friendly and passionate). And the game is actually interesting, even if it’s not our typical fare! You have an hex grid of forest tiles, in which a few menhirs are hidden. There’s initially some fog covering them, and there’s a game of adding fog, removing fog and moving fog so that you are the one to uncover the last menhir (or you’re preventing your adversary to uncover the last menhir).

Robo Factory

Robo Factory - colorful tiles with robots, and player boards with factories

Robo factory is a deduction game where players try to match a secret combination of color elements to create a robot. It’s essentially a multi-player, simpler, version of MasterMind, with all the players playing at the same time, and we were not convinced.

Mind Up!

Mind Up!: a deck of card in the middle of the table, and five cards for each of 4 players set in a row.

The explanation for Mind Up! started with “Do you know 6 Nimmt?”. And it is indeed very reminiscent 😉 Players play a card from their hand, which allows them to pick another card, depending on the order of their card in the overall sequence, which they then organize in piles according to the color. It feels like a welcome update to the concept of “trying to get the right position in a sequence of cards”, and we got a copy (the first of multiple “X copies of N colored cards with numbers” games we got this year 😀 ).

Nautilus Island

Nautilus Island: a submarine board with cards, and collected sets of cards

Nautilus Island is a set collecting game: you’re on a desert island with a crashed submarine and you’re trying to collect stuff to survive. It’s a pretty neat combination of set collection, race for bonuses, and push your luck, and I’d be happy to re-play it, but it didn’t feel special enough to warrant a buy.

Line It

Line-it: Colored cards face up (15 and 63), and cards back showing four colors/symbols (red/yellow/green/blue).

Line It is another “numbered cards with colors” game, where you build a line of value-increasing or value-decreasing cards in front of you, and try to time fetching “jackpots” that build up as a side effect. Considering our other buys, it’s possible that the only reason we didn’t get that one is because we had gotten Mind Up! half an hour before, despite the games not being that similar in the end.

Battle Fries

Battle Fries: cards showing sauces and player cards showing fries

Battle Fries is a very silly card game where you try to dip your fries in various sauces… and preferably other sauces than your opponents, by yelling the name of the sauce all at the same time. The theme is hilarious, but we’re not much for yelling games 😀

Black Friday

Black Friday: a green board with a price grid and colored tokens.

Black Friday is a market manipulation game: you’re trying to make the most money possible by timing your share buys and sells between the different market crashes. Interesting mechanics that do yield “large tendencies and small variations” around the share prices, but it felt a bit dry to be able to sell it on a game night.

Stamp Collection

Stamp Collection: a common pile of tiles and money, and player boards with a few stamps on them.

Stamp Collection is a reimplementation/re-theming of an older game called California, where the players try to make pretty stamp collections to attract fans that bring chocolate when they visit/appreciate said collection. I kind of liked it, and the theme was cute, but the component quality felt pretty low compared to modern standards.

Isle of Trains

Isle of Trains: an island map with meeples and train cards forming trains on the player boards.

In Isle of Trains, you build a train to deliver goods and people to places. The twist is that the goods and people can be put there by your opponents, because you get bonuses and resources when you add things to your opponent’s train, but not to your own – making your train appealing is consequently a good idea! We both liked the game, which also had excellent iconography, but were a bit worried at having to check other player’s boards from across the table to be able to make decisions (checking what others players are doing are not necessarily our strong suit, and this requires a fairly detailed view of that).

Fit to Print

Fit to Print: grid player boards, small desks, and a bunch of "newspaper article" tiles in the middle of the table

Fit to Print is very reminiscent of Galaxy Trucker, but instead of creating a ship, you create a journal layout, with a bunch of constraints. Also, you score directly without making your journal layout explode first. I kind of like the frenzy of ship building in Galaxy Trucker, but I was never convinced by the “race” second half of the game, so Fit to Print plays into that. Add to that an adorable “forest newspaper” theme, and that’s a box that went home with us.

Footprints

Footprints: a long hexagonal board with different types of terrains, player maps and tokens.

Footprints is probably the game I got most excited about while playing it. You’re playing as a clan of stone age people who move through the terrain, gathering resources and leaving footprints (and cave paintings) around. Each card you have can either move your pawn or increase the amount of movement you get in one or two terrain types, and you unlock more powers as you go. It was really enjoyable and we also got a box for home – good thing that we did, because it did sell out later during the Messe!

Color Flush

Color Flush: two players with a hand of cards that look like colorful bookmarks

In Color Flush, players have colored cards that may or may not have the same color on both sides. They’re trying to get a hand in front of them that has only one color of cards, and they do that by picking cards, removing cards and turning cards. We explored this 3+-player game on our own with the German rule, and it felt like it could be fun, so we got a box; but a subsequent attempt at play proved disappointing. Possibly the buying mistake for this year :p

Sixto

Sixto: 6-sided dice in 6 colors, and a marking sheet with numbers in striped lines.

Sixto is a roll&write game where you decide, on each roll, whether you want to cross the cell corresponding to a number and a color on your sheet. Crossing a cell prevents you from crossing cells to the left of it; scores depend on the number of crossed cells on each row and each column (and can be negative if there’s only a single cell crossed on a given line!). Could probably replace Yahtzee for most use cases, but we don’t play Yahtzee much 😉

Whale Street

Whale street: small company boards with cards and money tokens; price ladder.

Whale Street is a stock exchange game where you try to invest your and your companies monies wisely (in order to maximize your final profit), while trying to be the “best operated company”. Honestly kind of neat, and clicked well together; playing it during the demo only the two of us may have removed a bit from the desired feeling of the game (as it was, we probably weren’t competitive enough with each other!), which may have been more fun otherwise.

Trio

Trio: colorful numbered cards on top of a tablecloth with a skull

Trio was a “colored number card game”, so obviously we had to give it a try 😉 Cards are split between players and a third deck that gets laid faced down on the table. Players are trying to create three triples of identical cards by asking their opponents for their lowest or highest card, playing their own lowest or highest card, or flipping a card from the middle. requires quite some memory, but we had more than a few good laughs, it’s quick to play and… well, fun – so that’s another deck of numbered colored cards in the collection 😉

Bites

Bites: various food tokens laid as a path on a table

Bites has an unfortunate title for French-speaking gamers, but a cute theme where ants are trying to gobble picnic leftovers. All players control all the ants, and can get a piece of food on each round; the order in which the ants arrive at the end of the path determine which food is worth how many points. Modifier cards for each game round up the box. It’s well-designed and a fun casual game; we played it in the evening at the hotel bar and not during the Messe itself, so we didn’t get a copy then 😉

On The Road

On the Road: a trail of location tiles, some star tokens, concert tickets and numbered cards

On the Road lets players take the role of a group on their road to success, from their grandma’s farm to a large festival. They collect tickets that gives them fans which should eventually attend the festival… if you’re lucky, that is. Kind of nice, very cute components (the band vans are adorable), but it didn’t quite click enough for it to be a buy.

Garden Guests

Garden Guests: a hexagonal grid of hexagonal tiles with colorful flowers and tokens

Garden Guests is a distant cousin of Hex: players (or teams of players) want to connect one side of the hexagon to the other with their tokens. For that, they can build bases, and then build paths connecting these bases, depending on the cards they have in their hand. Lovely components, but too abstract for our usual fare. I’m a bit curious about the team play, though (players of different teams play alternatively, are not allowed to communicate but can pass cards between each other).

Sunrise Lane

Sunrise Lane: a board with colored buildings of different heights on it.

In Sunrise Lane, you build houses of different levels on marked spots to get points depending on the height of the buildings and the exact spot where you put them. You can continue building adjacently in a chain as long as you have the cards to do so. It felt more abstract that it looked, which is not a surprise as we learnt later that it was a reimplementation of Rondo, except on a square grid.

After Us

After Us: a central board with cards and resources, and player boards with primate cards

In After Us, players are trying to recruit a band of primates to be the first to evolve to intelligence. The primates cards typically give you some actions or half-actions that can be combined with other half-actions from other cards, allowing you to build resources to get more better faster stronger primates. I liked it a lot, so we got a copy; other players at the table bemoaned the lack of interaction, which is a fair question (but not one that particularly bothers us.)

Apocalipsocks

Apocalypsocks: A bunch of cards with cartoony socks on them

In Apocalipsocks, you try to pair similar-looking socks into identical pairs of socks and, when you do that, your opponents get to do something silly like turning on themselves or playing with one eye closed. It probably works for its audience, but that’s not us 😉 The cards are neat and the details to take care of are fun!

Rome In A Day

Rome In A day: hexagonal tiles of different colors, building tokens and cards

Rome In A Day is pretty similar to The Great Split, which we liked a lot last year: you split tiles behind a screen in two groups, and your neighbor player decides which group of tiles they want to add to their board. Compared to The Great Split, though, it felt like there was a bit more strategy involved in choosing groupings, because the other player’s boards are much more visible/readable; the “getting points” part of it also requires a bit more thinking. Long story short, we got a copy of this one.

Belgian Beers Race Dice

Belgian Beer Race: a few dice, some objective cards, and writing sheets that look like the map of Belgium

Belgian Beers Race Dice is a roll&write version of Belgian Beers Race. The theme is similar: trying to visit as many breweries as possible while filling in objectives, not get too drunk, and come back to Brussels early enough. The marking sheet makes it kind of hard to follow what’s happening, and it’s quite easy to forget to cross something, which is a bit sad, because the rest of the game feels like a decent roll&write.

Moon River

Moon River: square jigsaw puzzle tiles assembled in dominoes with various terrain effects (colors, cows, beavers).

Moon River is a clear riff on Kingdomino, but where players get to build their own dominoes. Also, there’s cows. Kingdomino still has my heart, but I liked this specific take (while I was not necessarily convinced by other variants of it), which felt different enough and enjoyable enough to get a box for that “I’d play Kingdomino, but I’d like something just a tiny bit more complex” mood 😀 (yes, it’s a pretty specific mood.)

Dorfromantik

A giant version of Dorfromantik: hex tiles with villages, forests and fields, as well as railways and rivers, and some objective tiles on the side.

Dorfromantik is a cooperative game, adapted from the video game of the same name. I love the video game, I was excited to see the board game adaptation, then a bit skeptical because it didn’t sound that fun, then it got the Spiel des Jahres award, then I watched it played and was still not convinced, and then I played it myself… and it was super fun. We got a copy, I’m not sure how/with whom we’re going to play the campaign (you get to “unlock” more tiles depending on your score :)) but… worst case I’ll play solo 😛 The above picture is a giant version of it – the box version has much smaller tiles! (Which is a good thing for my table estate.)

Deep Dive

Deep dive: 5 groups of face down tiles.

In Deep Dive, you have a colony of penguins looking for food. The deeper you go, the better the fish – but the higher the chance of getting trapped by a predator (No worries, though, you’ll get back eventually!). It’s a pretty fun push-your-luck game, it plays 6, we know who may appreciate that one, so that was a buy.

ArcheOlogic

ArcheOlogic: a grid with polyominos, a hint wheel, and a decoding tool to get the correct information from the hint wheel.

ArcheOlogic is a puzzle game that uses the same kind of mechanic as Turing Machine, but to make players guess the layout of an ancient temple. You get to ask questions such as “what are the parts of this piece that are on column C” or “how many empty spaces is there on line 2”, with various associated costs, and the “most efficient” player normally wins the game. It’s well-designed and actually far more accessible than it looks, but we feared not having the audience for it to be played multiple times.

Mytikas

Mytikas: a multi-level building area, an action board, player boards with building tokens, various cards

In Mytikas, players try to build houses and temples on the Mount Olympus, while trying to gain the favors of the gods. It’s a resource-managing game, with light worker placement, and generally pleasant, but (for us) not enthusiastically so.

Now introducing: AlphabeticalZürich

I recently ran into a Mastodon post of someone who started photographing all the streets of Paris, in alphabetical order: MonParisAlphabétique. I thought that it was a GREAT idea, worth pursuing for other cities, and, since I live in Zürich, I recently started AlphabeticalZurich, which I’m hosting on WordPress and Pixelfed. So if you’re only interested in the pictures and the photography side of things, you can stop reading here and go there (WordPress) or there (Pixelfed; sorted by collections/streets here).

But, there’s a few gritty details that belong to this blog rather than the other one 😉 I prefer to start projects with a tiny bit of logistics, and in particular establishing the list of streets and how to traverse it sounded like a reasonable idea. Here comes the rambling blog post about what I tried, what I played with, and what’s the current status of said logistics.

To get the list of streets of Zürich, I turned to the Swiss OpenData data, and got a link to the CSV of all the streets of Switzerland on geo.admin.ch (other formats are available and documented in the metadata).

The lines look mostly like this:

10006621;Bahnhofstrasse;8001 Zürich;261;Zürich;ZH;Street;existing;true;12.08.2023;2683111;1247210

in which I’m interested in the second and third field. There’s a bit more subtlety, the third field is sometimes a multi-valued field separated by commas (when a street spans several zipcodes or even several cities).

Let’s clean this up a bit:

$ cut -d ";" -f 2,3 pure_str.csv | grep -E "8[0-9]{3} Zürich" | sort

The first few lines are kind of “meh” because they’re highways (and that sounds kind of dangerous), so let’s drop the A\d streets:

$ cut -d ";" -f 2,3 pure_str.csv | grep -E "8[0-9]{3} Zürich" | grep -v "^A[0-9]" | sort 

and we have a list. Now, that list contains 2425 entries, so I’m going to need to do a bit more than one street a week if I want to have a chance of finishing this. Since I know myself, I need to optimize “a bit, but not too much”. So if I’m in a street starting with A, and there’s another one in the vicinity, I may want to go shoot it while I’m at it, even if it’s technically not the next one on the list. My first idea was to use zip codes as a heuristic for “places that are in the same vicinity”. So the algorithm would look a bit like this:

pick the first non-photographed street on the alphabetical list
pick all the streets starting with the same letter in the same zipcode, in order
take pictures of all these streets, mark them as photographed

Okay, this starts to be too complicated for my one-liner Bash (I tried. I really did.), so let’s get some Python instead (I did wonder if I wanted to write some ugly PHP or some ugly Python, so you’re getting some ugly Python.) I also added a bit of output to get a query for overpass turbo.

f = open('zuri_sorted.txt', 'r' )
currLett = '0'
zipStr = {}
zipList = []

for line in f.readlines():
    line = line.strip()
    if (not line.startswith(currLett)):
        for zip in zipList:
            print(zip)
            print(', '.join(zipStr[zip]))
            print('====')
            print( '(' )
            for street in zipStr[zip]:
                print( 'way["name" = "', street, '"]({{bbox}});', sep='')
            print(');', "out body;", ">;", "out qt;", sep="\n")
            print('====')

        currLett = line[0]
        zipStr = {}
        zipList = []
    
    toks = line.split(';')
    street = toks[0]
    zips = toks[1].split(',')

    visited = False
    for zip in zips:
        if (zip in zipStr):
            zipStr[zip].append(street)
            visited = True
            break
    
    if not visited:
        zipStr[zips[0]] = [street]
        zipList.append(zips[0])

My output for a given letter and a given zip code now looks like this:

8001 Zürich
Cäcilienstrasse, Caroline-Farner-Weg, Chorgasse
====
(
way["name" = "Cäcilienstrasse"]({{bbox}});
way["name" = "Caroline-Farner-Weg"]({{bbox}});
way["name" = "Chorgasse"]({{bbox}});
);
out body;
>;
out qt;
====

I can send the part between the ==== lines to overpass turbo to see where these are on a map:

Section of a map of the center of Zürich with Cäcilienstrasse, Caroline-Farner-Weg and Chorgasse highlighted in blue
Credit: OpenStreetMap

I quickly realized that this was not necessarily the best approach because a/ zipcode areas are actually quite large b/ stopping at the boundary of zipcodes is actually fairly arbitrary. But, playing with these did bring overpass turbo to my attention, including the fact that it has an API that looked useful: Overpass API. I consequently modified my query to get “streets starting with the same letter within a radius of 500m1 of a starting point”, with the starting point defined as “the first street that I haven’t processed yet”. I actually have two overpass queries now. The first one displays the map:

[out:json];
(
  area[name="Zürich"][place="city"];
  way(area)["name"="Aargauerstrasse"]->.a;
  way(area)(around.a:500)["name" ~ "^A"][highway]({{bbox}});
);
out body;
>;
out skel qt;

The second one tells me exactly which streets I’m visiting that day:

[out:csv("name";false)];
(
	area[name="Zürich"][place="city"];
	way(area)["name"="Aargauerstrasse"]->.a;
	way(area)(around.a:500)["name" ~ "^A"][highway]({{bbox}});
	for (t["name"])
	(
  		make x name=_.val;
  		out; 
	);
);

Ideally I’d be able to get both in one query somehow, and in a way that doesn’t require editing both the name of the street and its first letter in two places; for now, let’s call that good enough. Compared to the zipcode approach, I’ll also have to manually track streets and feed the next one to the query; maybe I’ll do something fancier at some point, but for now, again, let’s start things and see where the pain points are before prematurely optimizing.

There – I am now READY to go exploring the streets of Zürich! I expect the process there to be: for each street, take a picture of the street sign (to have an idea of where pictures are taken!), take a general view picture of the street, try to find a few fun details, go home, process pictures. And then, publish pictures on Wikimedia Commons, on the blog, and on Pixelfed, rinse and repeat. Oh, and update the spreadsheet, too.

Screenshot of a spreadsheet with the lines as "street names" and the columns as "Shot / Processed / Commons / Written blog / Published blog / Pixelfed". The cells are red and green no/yes, where the two first lines are all "yes", the second line has "yes" on "shot" and "processed", and the rest is "no".

Let’s go!

  1. Value decided by taking the first street and see what looks reasonable from there. Very scientific approach. Also, this seems to yield 2-3km paths for photo walks, which is pretty good, actually. ↩︎

38th Scavenger Hunt

I do not have much in terms of “behind the scenes” for the 38th Scavenger Hunt, because there’s no setup and barely any processing in there – so I decided to make a single post instead.

The List was heavily oriented towards a pirate/adventure/treasure theme, which I was quite happy to see, because I knew I was travelling to the Canary Islands during the Hunt time, and what better setting than an island for that kind of theme? So here are my pictures, in the order of the album reveals. There’s a mix of “seeing the scene and knowing it was a good fit for the Hunt” and “going through the pictures after the fact and finding things that may fit the theme”, but I did want to keep the set to “Canary Island pictures”, which I managed to do… although this may have been a stretch in some cases 😉 If you want the rest of the pictures for that trip, they’re there: Canaries – 2023. And I’m linking my fellow Scavenger albums along the way 🙂

Treasure

A bee sitting on a very yellow flower. The framing is not very close to the flower (there's a bunch of green leaves around the flower), but still enough to distinguish the translucid wings of the bee.

Treasure was definitely a “let me go through my pictures and find something appropriate”-type of picture. I thought going for the bee on the flower was maybe a bit of a stretch, but I wasn’t the only one with this idea in the album, so what do you know! 🙂 The processing of this picture was a bit annoying, because I couldn’t find a crop that completely worked. I finally settled on that one, but I’m not entirely satisfied with it.

Adventure

A small wooden bridge, held by black stones, over a lower flat surface. . The background is very red rocks, and the whole scene looks like  red dust has covered everything - almost Martian, if not for the few small timid plants.

I honestly do not remember if I had “Adventure” in mind when I took this shot. I think I may have, but (as I didn’t know yet at the time) I was starting to come down with COVID, and my brain was apparently already busy fighting it, so I don’t have much memories there.

Flag

Top of an inflatable castle with a "pirate" theme - inflatable walls, inflatable pirate, inflatable pirate flags.

I giggled SO MUCH when I ran into this inflatable structure, set up of town festivities. It’s not often that you can get a shot that would work for not one, not two, but THREE words (treasure, skull and flag) on a list… and with a very literal interpretation at that! That shot almost made the cut for two themes (I was considering two different crops for Treasure and for Flag), but I eventually decided that, while funny, it wasn’t a shot worth two words, so I submitted it for Flag.

Code

Cargo containers with their numbers clearly visible. The cargo containers are orange/brown/red; there's a few green palm trees in the foreground. The image processing is grainy and gives a film feeling.

Code” was definitely a “let me see what I have in my pictures roll that might match” situation. I had taken a lot of pictures around the harbor in Santa Cruz de Tenerife, and I suddenly realized that I actually had a fairly decent fit for the theme around the container codes. I had to extract this from a much larger crop to make obvious what I wanted to convey; and I decided for a retro/film processing (with grain and slightly off color toning), because it felt right when I started playing with it.

Vessel

For Vessel, on the contrary, I had a wealth of images to choose from, and I had taken a lot of pictures of boats and ships (easy, on an island!) with that theme in mind. But that drakkar felt the funniest/nicest vessel I could find, and it also fit the connotation of the theme well (better than, say, a ferry.) The processing was kind of annoying, because I took that picture between two trees, but I still wanted to give a sense of open sea, rather than “something taken from my hotel room” (which… it was), so there’s been a significant amount of healing and cloning involved. I think it’s not too bad 🙂

Monster

A large accomodation barge, presenting as a small building on top of a large platform on top of six large feet. The platform and the feet are red, offering a stark contrast with the blue sky.

I must admit I didn’t think of Monster when I took pictures of this offshore barge, but it absolutely jumped at me when I was looking at my photo (digital) roll with the list in mind. Not only is it a very large “monster” structure, but with a bit of imagination, you can see six legs and a large head! I was afraid this would be a bit of a stretch, but the comments seem to agree that this is a good fit for the theme, so I’m happy.

Skull

A LEGO diorama with two ships, including a pirate ship with skull and swords on its sails, over a blue LEGO seabed.

We entered a mall that happened to have a pretty neat LEGO exhibition… including this cool diorama. I had taken the shot I used for “Flag” already, so I knew I had a “backup Skull” if needed, but I was still very happy to stumble upon this one. It’s also the only picture of this Hunt I didn’t take with my DSLR, but with my phone 🙂

Eight

Two prickly pear heads with eight flowery bulbs on top each, with mountains in the background.

I must admit that Eight needed a liiiittle bit of help to fit the theme, although I had taken that picture with the word in mind. Turns out, each of these cactus heads had 9 bulbs and not 8 – the one one the right had one hidden behind another, and the one on the left had one that was further away than the others. I called Photoshop to the rescue and, well, I did manage to submit not one, but two eights for that shot 😉

Aquamarine

Parking lot markings on a dark road. We see regural white markings, and aquamarine square markings, maybe for small containers or boxes.

There was a lot of opportunity for Aquamarine – taking pictures of shades of blue-green in waves was my first attempts at the shot, until I ran into these markings on the harbour near the Monster picture, and they just looked perfect for the theme. I was trying to go into the more abstract view of the picture, but I think I didn’t quite manage to get what I wanted there.

Sea / See / C

Sunset over the sea; the sky has a line of clouds and is orange, the sun is almost touching the sea, and is aligned with a large rock on the beach. A small wave is exploding near the rock.

And the last picture of the set was a “bonus word”, with the theme “Sea/See/C” (choose one, two or all three!). I’ll admit I went the lazy way with that sunset, but it was a very nice sunset to watch, sitting on a sea wall… we were definitely not the only people there 😀

“What do I do with that lime?” or “The genesis and state of my cocktail book index”

Two martini glasses with a clear liquid and an olive in each, over a seamless grey/white background

A while ago, I bought an excellent book, called Drinking French, by David Lebovitz. It’s not strictly a cocktail book because there’s lots of stuff in it, but I’ll admit that I’ve only tested the cocktail recipes so far.

I have also, since then, bought another excellent book, called Cocktail Codex, also a staple next to my liquor cabinet.

These two books have a few common issues:

  • their (paper) index does not make it easy to search for a cocktail that have two distinct ingredients (apart from looking at the index and finding the intersection),
  • their index is not complete and, in particular, does not contain “trivial” ingredients such as lemon juice or simple syrup,
  • their index does not necessarily account for substitutions I may feel confident doing,
  • they don’t have a common index and I’d need to have a look at both to make decisions.

So I typically find myself in a situation where I have limes, and no idea what I can make with them, except it’d be nice to have something with gin. Also, I’m not that picky and probably if you give me a recipe with lemons, I’ll put my limes in it instead and call it good enough. So, the problem that I was trying to solve was: “given a set of cocktail ingredients, give me ideas for what I can make with them, allowing for some fuzziness in the exact research”.

With that problem in the back of my mind, roughly at the same time, I read Index, A History of the, by Dennis Duncan (a book about the art of indexing), and I became somewhat fascinated by Wikibase (the Mediawiki-base software backing Wikidata, which handles structured data). Things kind of clicked to “WHAT IF I re-indexed the books in a Wikibase instance, I added some structure to the ingredients for the fuzziness, and I made SPARQL queries to get exactly what I want?”

So I did that – I installed Wikibase, and I started re-indexing. I added some structure to the data by adding “subclasses of” and “instances of” and “can be substituted by” and “such as”, and it was glorious. Then I gave some thought about the exact query I was interested in, and I ended up with something along the lines of “given a list of ingredients, for each of them, get a list of substitutes, and give me a recipe that contains at least of one substitute of each ingredient of the list”, where “substitute” is defined as either the ingredient itself, something that is explicitly defined as a substitute, or something that is (transitively) either a refinement or a larger category of the ingredient. The reasoning there is that, if I input “London dry gin”, I want to get the recipes that have “gin” (without qualifier), but also the ones that have a specific brand of London dry gin.

I bundled a small Mediawiki extension called CocktailSearch to be able to query my database and, for a while, I was happy. Here’s an early version of that interface (I had added the page number in the meantime too!)

Screenshot of a Mediawiki interface showing the CocktailSearch extension, displaying results for a search for lime juice and Cointreau.

And then, doubts crept in. My Wikibase install was run via the Docker images. It worked pretty well, but I was a bit unhappy with running 9 Docker images, including one that kept restarting (I probably could have fixed that one, but eh), on a machine (my home Windows desktop computer) that wasn’t really suited for it. I’m not much of a system administrator and I have 0 confidence in my Docker skills in general: the whole setup was making me a bit nervous. Migrating my cocktail index to a more persistent setup became my new project.

I considered multiple options, including “just moving the Docker images to another machine”. I finally settled on trying to run Wikibase, without the Docker images, on a Raspberry Pi that we have laying around. I actually went pretty far in the installation, and I think it could have worked out. But again, I got really nervous about the durability of the setup – Raspberry Pis are not known for being particularly good at data persistence. On top of that, getting from something that “mostly works” to something that I could plug in and access three minutes later with everything running looked like a goal that I might be able to eventually reach, but software rot was a real concern. I felt stuck.

I talked about that with my husband, who pointed out that my usage of SPARQL was actually fairly limited (it is, in fact, limited to a single large query), that my data was actually very very small (maybe a thousand records), and that I could maybe… not use SPARQL, and then not need the whole Wikibase machinery either. I was not convinced at first, because killing your darlings is hard. I had invested quite a bit of fondness in that architecture, and I did like the idea of running mostly standard software. But it didn’t take that much thinking before I actually got excited about the idea of simplifying the whole project drastically.

So, I exported my data to a JSON file, and I started hacking some import script. I then looked at my imported data and at my SPARQL query, hacked some loops in PHP, and essentially called it a day: my SPARQL query and my PHP queries were returning the same results for my few test queries.

Then, came the question of completing the database – indexing takes time, and my base was (and is still) not complete (and, who knows – maybe I’ll index some more books later!). While I’m able to programmatically read the dumped Wikibase JSON, I’m definitely not able to write it by hand without a lot of tears; but continuing to run Wikibase just as an input interface felt a tad excessive. Hence, I transformed my JSON structures into a flat file format that I could easily write by hand and easily parse. I added a significant amount of validation to avoid typo-duplicates and missing item references, and I re-exported my JSON data into that new format. I double-checked that I wasn’t losing any information (I’m indexing a bit more than I need, technically, because I’m also taking notes on the glass type, for instance), and then I started trying to complete the file with new items.

I honestly thought I wouldn’t last three recipes without slapping some kind of interface/completion on that file format, but it’s going significantly better than I expected. I did modify the file format a bit to make it easier to edit manually, at the cost of reading through the file twice when parsing it (I can live with that; and if I couldn’t, I could optimize there, but why bother :P). It feels like it’s enough: I have a validation script that runs fast enough with good enough error messages that I can input things and correct them more quickly and more pleasantly than I did with the Wikibase interface.

Speaking of interface, I also slapped a small web interface on the script, so that I can search with completion and have a readable output. The search completion was also far less involved than I expected: turns out the <datalist> tag does exactly what I want, assuming I pass a list of ingredients (which I can get as “transitive subclasses and instances of the ingredient item”) to the generating HTML. And there, new interface, new results – with additional data entry done in the meantime too 🙂

Screenshot of a HTML table displaying search results for cocktails with limejuice and Cointreau

So anyway, that’s the genesis of the current version of my cocktail book index, which is now called LimeCockail in reference to my original “now what do I do with these limes”.

It does feel a bit of a convoluted path for something that, at the end of the day, is, like, 500 lines of PHP, give or take, but going through that path was very interesting for a variety of reasons. It did give me some hands-on experience with Wikibase (granted, without the issues that come with “running a public instance” 🙂 ), and the Wikibase RDF structure helped me define my structured data in a way that makes sense to me. I also stretched my (almost nonexistent) sysadmin muscles to try to make all of this work together, and I (re-)learnt a few things about the LAMP stack and ElasticSearch. I also got a bit more experience with SPARQL, and I touched jQuery for the first time in a long time to be able to hack the search components backed by Wikibase data. All in all, this project taught me a lot of things!

Now I just need to finish indexing the Codex… 🙂

Scavenger Hunt #37 – Box

A wooden manikin, looking perplexed, in front of an open black box.

For the Scavenger Hunt #37, I revisited the theme I had used in Scavenger Hunt #32 – the wooden manikins are back!

For “Box”, I wanted to go with a literal interpretation of “thinking outside the box” – so that’s exactly what I did. I was not sure I could find a box of the right size – until I got the idea of going for a lens box – of which I have kept at least the ones whose warranty is still running. The Fujifilm box is also kind of nice because it’s black – apart from the written stuff, that gets easily edited away.

Unedited version of the previous picture of a puzzled manikin in front of a black box. The crop and angle are a bit different, and the black box shows Fujifilm brand and information.
CameraPentax K-1 II
Lenssmc PENTAX-D FA MACRO 100mm F2.8 WR
Focal length100mm
F-NumberF/7.1
Exposure time1/100 s
ISO800

The pictures from my fellow Scavengers are here: Box.

Scavenger Hunt #37 – Keyhole

A wooden manikin seemingly spying at something through a keyhole, processed with vignetting, grain and blue tones.

For the Scavenger Hunt #37, I revisited the theme I had used in Scavenger Hunt #32 – the wooden manikins are back!

For “Keyhole”, I knew fairly early that I wanted to do something about looking through a keyhole. Before I committed to going for a manikin theme again, I was thinking of using a keyhole as a frame for something (not hugely original, but working with what I have). Instead, I went for the “spying” theme.

The challenge was to get the manikin at the “right” height with the “right” pose in front of the door – that took a bit of creative posing on top of a chair’s back, but eventually I managed to get a shot I could work with.

An unedited, very underexposed version of the previous picture of a spying manikin.
CameraPentax K-1 II
Lenssmc PENTAX-D FA MACRO 100mm F2.8 WR
Focal length100mm
F-NumberF/8
Exposure time1/80 s
ISO800

I went for a “noir-themed” processing – cold tones, strong vignetting and grain – and I’m quite happy with the final picture.

The pictures from my fellow Scavengers are here: Keyhole.

Scavenger Hunt #37 – Intentional Camera Movement

A wooden manikin, in a super hero pose, tilted slightly to the right, seemingly zooming into the image, with very visible movement trails.

For the Scavenger Hunt #37, I revisited the theme I had used in Scavenger Hunt #32 – the wooden manikins are back!

“Intentional Camera Movement” almost stumped me, because it didn’t feel obvious to make that work in a very static context such as manikins in a studio. Until I remembered that playing with the focal length of the lens while shooting was also intentional camera movement! I set up my camera on a Platypod and then experimented with multiple takes, some going from the smaller focal length to the longer, some trying to move as smoothly as possible, some making a few pauses during the course of the lens. I ended up choosing a continuous move from longer length to shorter length.

An unedited version of the previous image, where the manikin's movement is visible, but the manikin is clearly standing in front of a wall, which breaks the illusion.
CameraPentax K-1 II
LensPentax D FA 24-70mm F2.8
Focal length70 to 28 mm, continuous
F-NumberF/22
Exposure time3s
ISO100

I edited the picture to play with the “super hero zooming into the scene” aesthetics, in particular in the way I chose to tilt the image. I also processed the image to emphasize the movement trails. And I think it’s one of my favorite pictures for this Hunt 🙂

The pictures from my fellow Scavengers are here: Intentional Camera Movement.

Scavenger Hunt #37 – Monochrome

Two wooden manikins. One is sitting in a wooden bowl filled with elastic bands; the other is stirring the bowl with a wooden spoon.

For the Scavenger Hunt #37, I revisited the theme I had used in Scavenger Hunt #32 – the wooden manikins are back!

One of the words was “Monochrome”, with a specific “not black&white” constraint. Since I had a manikin theme, and my manikins are wooden, well, that gives me the palette for what I’m doing. So I started gathering everything that was vaguely wooden-colored in the apartment, and tried to assemble SOMETHING. My train of thoughts when building this image was “a manikin spa” – spas do have weird treatments going on, so why not an elastic-band based one for wooden manikins! I wanted to give the impression of relaxation for the one sitting, and of attending the other for the one standing. I’ve been told it could also look like the day after a student party – and I’m not disagreeing with that 🙂

Unedited version of the previous "manikin spa" image. It is very underexposed, and there's a lot to crop in the borders of the image.
CameraPentax K-1 II
LensPentax D FA 24-70mm F2.8
smc PENTAX-D FA 50mm F2.8 Macro
smc PENTAX-D FA MACRO 100mm F2.8 WR
Pentax DA 18-55mm 1:3.5-5.6 AL
Focal length63mm
F-NumberF/1.8
Exposure time1/100 s
ISO111

The pictures from my fellow Scavengers are here: Monochrome.

Scavenger Hunt #37 – Roots

The formulas "sqrt(3) = 1.732" and "sqrt(7) = 2.645", written with pink ink on overlapping sheets of paper, and where the square root signs are not written, but mimed by wooden manikins lying on the paper.

For the Scavenger Hunt #37, I revisited the theme I had used in Scavenger Hunt #32 – the wooden manikins are back!

The “Roots” image is the one where I expect the most “… I don’t get it”. I considered tree roots, hair roots – I had a vague concept for tree roots but that would be hell to process in the very little time I had left, and hair roots felt difficult to pull off with bald manikins (I do NOT have fond memories of making Spaghetti behave long enough to take pictures!). And then… square roots. Well well well! I could work with that!

I first posed both manikins in “square-root” shapes (… as best as I could – these are NOT the most flexible models). I initially wanted to use a single sheet of paper to give the rest of the context, but I had a scale issue, so I embraced the multiple sheets and made them as visible as I could. And then, square root of 3 is roughly 1.372 and square root of 7 is roughly 2.645, so I picked my prettiest pink pen and made that happen.

Shooting from above was a bit of an ordeal (and involved climbing on a chair with my camera, which I normally try to avoid.)

An unedited version of the previous image, showing manikins miming square root signs, uncropped and very underexposed.
CameraPentax K-1 II
LensPentax D FA 24-70mm F2.8
Focal length33mm
F-NumberF/6.3
Exposure time1/60 s
ISO800

Processing was mostly straightforward – make the sheet rectangular, crop, fix exposure, done.

The pictures from my fellow Scavengers are here: Roots.