Saturday, August 31, 2024

German Genealogical Research

I'd like to talk about genealogy for a bit. In the process of gradually becoming my father, who was very much interested in family history, I started researching family genealogy about four years ago. However my focus was on my wife's family, whose mother immigrated from Germany to the US in 1958.

In the disruption following WW2 her German family lost track of each other and fell out of contact. We knew the name of my wife's mother and grandparents, and one great grandmother. That was all. With four years of work we've extended her family tree in Germany to identify almost all of the 5th great grandparents back to the early 1700s.

Fanchart of a family tree going back several generations

I write this from the perspective of someone in the United States researching genealogy in Germany, trying to describe the resources I've used.


 

Publicly available records

Modern German civil recordkeeping started in about 1874, with a few portions of the country having started a bit earlier. Prior to 1874, all recordkeeping was done by the church: Lutheran being the largest denomination, but Evangelical Lutheran, Catholic, and Jewish records are all available.

Ancestry and FamilySearch have a sizable collection of German civil and church records digitized. Ancestry requires a paid account to access these records, FamilySearch requires an account to be created but it is free. Both have run character recognition on the records to make them searchable.

As a practical matter, Ancestry/FamilySearch/etc do not get yearly drops of new records from German authorities which have reached the threshold for release. Most publicly available records are those captured on microfiche by the LDS church over the last few decades; FamilySearch is owned by the LDS church. Newly released records sometimes appear but it is inconsistent and somewhat haphazard, and usually years after the privacy laws would allow release.

So one often needs to go to the source, not just rely on genealogy sites.


 

After 1874: Standesämter

A civil records office in Germany is called a Standesamt. They retain records according to the Personenstandsgesetzes (privacy laws, often abbreviated PStG):

  • 110 years after a birth
  • 80 years after a marriage
  • 30 years after a death

After this, records are supposed to move from the Standesamt to an Archiv. Many large cities have their own archive, plus regional archives around major population centers, and then an archive at the state level like for Baden-Württemberg or Niedsersachen.

HOWEVER: in theory the documents move to an Archiv, in practice I find many documents remain at the Standesamt years or even decades beyond when they would be expected to move. I generally find the relevant Standesamt first and ask if they have the document. They will say if it has moved to an archive, and provide contact information for that archive.

  • Searching for "Standesamt" plus the name of the municipality will often find it.
  • Meyers Gazetteer can also be helpful in finding the Standesamt.
  • If you can find a website for the Standesamt, look for "Urkundenservice" or, failing that, anything with "Urkunde" in the description. It will probably be further down on the list of options, it is much more common for people to want to register a new birth/marriage/etc with the Standesamt than it is to be looking for older documents.
  • If your written German is not up to the task, use deepl.com to translate English and German. Its results are considerably more idiomatic than Google Translate.

Many Standesamt have a web order form which will allow you to pay using a credit card. If not you'll need to make the request via email, and expect to receive an invoice with an IBAN (the bank account number). You can use wise.com to transfer money from a US bank account, convert it to Euros, and send to the destination IBAN. wise.com fees are quite low.

The Standesamt will require proof of legitimate interest before releasing records earlier than the 110/80/30 years described above. Direct descendants have a legitimate interest, but may be required to prove it via a birth certificate, parents' marriage record and birth certificates, etc. English documents are usually ok for this, don't get them translated unless asked to do so. If a document does require translation I've relied on Annika Romero at https://germangeek.com/ for several such translations.

If not a direct descendant, one won't be able to order documents less than 110/80/30 years old. Older documents at the Archiv, and even if still at the Standesamt but older than the privacy laws protect, will be released upon request.


 

Standesamt Document options

The Standesamt typically offers a few options:

  • A birth record is a Geburtsurkunde, marriage is a Heiratsurkunde or Eheregister, a death record is a Sterbeurkunde.
  • By default an A4 paper form will be sent in the mail. This is slightly larger than US Letter sized paper.
  • An A5 option means a smaller paper, with holes for mounting in a memory album called a Familienstammbuch.
  • Mehrsprachiger, often labeled "International" means the form will be labeled in multiple languages. This is useful for official proceedings in countries outside of Germany, but otherwise it costs extra and I wouldn't bother with it.
  • An Abschrift aus dem Register is a photocopy of the original record exactly as it is, not transcribed into a modern format.

It is often useful to order the Abschrift aus dem Register, which will be handwritten before the mid 1950s. The original registers were frequently annotated in the margins with the dates of marriages, of death, and sometimes even of the birth of children (though this is not common).

For example, on the left is a Geburtsurkunde Standard for my wife's maternal grandmother. It is very brief, only the essential details are copied out of the original register entry. A large "Kopie" appears across it because certified originals are printed on a holographic paper, scanning or copying reveals the hologram. The paper form we received in the mail does not have a visible "Kopie" on it.

On the right is an Abschrift aus dem Geburtenregister, where in the lower left one can see an annotation of her death in Hannover. It is somewhat hit-or-miss: there is no annotation of her marriage, even though it also took place in Hannover. Nonetheless these annotations can be extremely helpful in locating more documents to find further information.


 

Before 1874: Kirchenbücher

Before 1874, you'll be searching Church books called Kirchenbücher. Ancestry and FamilySearch also have a good collection of these upon which they have run character recognition to make them searchable.

Archion has an even larger collection of Lutheran and Evangelical church books, but they have not been indexed using character recognition so you cannot search for a name. If you know the place and date, Archion can be very helpful in obtaining the record. If you do not know the city and rough date, Archion will not help. Archion access is paid, typically for a month of access at a time for about 20 Euros.

Matricula has a large collection of Catholic church books. Similarly, they have not been run through character recognition and are not searchable, but they are available for free.

Records will be handwritten, and very frequently use a lettering called Kurrentschrift. One gets used to it, at least enough to recognize the family name, and Reddit's /r/Kurrent can help transcribe difficult records.

In all cases though, church or civil, the recordkeeping is distributed through towns and regions. There is no central records store, you just have to know where their records would be in order to send your inquiry to the right place. Digitizing and making the records searchable is starting to change this and make records more discoverable, but only for relatively old records which Ancestry and FamilySearch have had for a while.


 

Census data

Genealogy in the US greatly relies on the decadal census, which might not be complete nor entirely accurate but is on the whole an amazing resource to have. There is nothing like this in Germany.

There are occasional census efforts in some of the German states, but not very often and mostly not made publicly available. One of the few exceptions is the Jewish portion of the 1938/1939 census, often referred to as the Minority Census, which was made available for its historical significance and for the benefit of descendants of families persecuted during this time. The non-Jewish portions of the 1938/1939 census were collected but remain in registry offices throughout the country and are not accessible.

There is, however, the Melderegister. Where the US mostly relies on driver's license databases in each state to know where its citizens reside, Germany requires an explicit registration after moving called an Anmeldung. The collection of registrations for a city are the Melderegister, and it may contain information about marriages and children born in addition to where the family lived over the years. The Melderegister of direct ancestors can sometimes be obtained by writing to the Bürgeramt of the city, however they are not retained forever and each city determines its own policies. Archiving Melderegister entries after 55 years and destroying them some time later is a common choice.


 

DNA Matches

In the last couple decades, DNA sequencing has advanced tremendously and is commercially available from a number of providers like Ancestry and MyHeritage. We have found more DNA matches to German relatives via MyHeritage, which has a larger presence in Europe. Nonetheless we submitted DNA tests for both. Note that MyHeritage allows upload of DNA data downloaded from Ancestry, so one doesn't need to buy another test kit but does need to pay for an account with access to DNA matches.


 

Colophon

Hand holding four German Reispässe

We visited Germany in July of 2024, to meet several cousins we'd found. The initial discovery was via a DNA match, but the hook to get us talking was the family tree and genealogy. The family had lost contact with each other and we're slowly rediscovering them.

Researching the family tree was also a step for my wife and our children to claim German citizenship via a declaration process called Staatsangehörigkeitsgesetz (StAG) §5. Prior to 1975 citizenship was not automatically passed on by German mothers, only German fathers, but for 10 years 2021-2031 Germany is allowing descendants of German mothers to declare their citizenship by presenting sufficient proof of descent. If this process is of interest, Reddit's /r/GermanCitizenship can be a useful resource.

A subsequent blog post, Getting Started with German Genealogy, gives specific examples of how we got started with our German family research.

Monday, August 26, 2024

Heat Pump HVAC firms

We had a Mitsubishi mini-split heat pump system installed in 2019, to replace a pair of gas furnaces. We love the system, but finding an installer was more difficult than I had expected. Almost every HVAC installer wanted to install new gas furnaces and be done with it, even those which mentioned heat pumps on their site. They might have eventually been cajoled into installing what we wanted, but that wasn't the kind of vendor we wanted.

We ultimately found Alternative HVAC Solutions, which specializes in heat pumps and leads with them as the solution they propose. They did a fine job and I do recommend them for anyone looking for an installer on the San Francisco peninsula.

However this morning I had to SQUEEEE with excitement at seeing another firm proudly leading with heat pumps as their preferred solution: Electric Air. I cannot speak from personal experience about their service, it is just nice to see how far we have come.

I wrote about our heat pump installation in 2019.

Monday, August 12, 2024

The Decapitated Duck Curve

California invested heavily in solar and wind starting more than a decade ago. So far in 2024 renewable sources have met 100% of the state's energy needs for at least part of the day since early March, and continuing through the time of this writing in August 2024.

Solar growth in particular has been robust enough that it started to perturb the operation of the grid nearly a decade ago, the infamous duck curve where demand seemingly drops in the middle of the day:

A great deal of solar capacity in California has been installed by property owners on their rooftops, both residential and commercial, fed directly into the electrical panel of a building. This supplies energy to the building without the grid seeing anything at all. From the perspective of the power grid the demand for electricity simply drops during summer afternoons, more every year as more solar panels are installed on more rooftops.

However California is experiencing something new in 2024: the duck no longer has a head. Or at least, the use of methane to supply power to the head of the duck has abruptly fallen.

The dip in the middle of the day is still there, a reduction in demand due to rooftop solar generation. However where methane power generation used to spring back up in the late afternoon as solar production falls off, in 2024 the demand only rises partway back above its low point. The head of the duck is no longer there.

The difference is that the capacity of battery storage on the grid has risen rapidly and passed a tipping point. Much of the late afternoon demand can now be supplied from solar sources, shifted in time using batteries.

California's tax incentives now aim for the installation of more battery capacity. Property owners are free to install solar panels on their rooftops to meet their own demand, but the state doesn't need more solar generation and panel prices have dropped well below the prices where tax incentives were essential. Adding more battery capacity will allow the state to continue to carve the duck, by timeshifting more of the prodigious solar power generation to be ready after the sun sets.

Like solar on the roof, batteries installed in a building appear to the grid as though demand is lower. In reality the demand for electricity is not lower, it is simply being satisfied by batteries before the electric meter sees it. Where we've already seen a reduction in gas generation, we'll begin to see a flattening of the demand curve as the buildings on the grid gradually power themselves for even more hours per day.

Wednesday, July 24, 2024

Germany trip 7.2024

Diverging from the usual topics: we took the whole fam to Germany this summer. We arrived in Frankfurt on July 5, and took a train to Bingen am Rhein where we boarded the Rhein In Flammen cruise.


We went to Köln for a few days, and toured the Dom (one of the Misters 15 for scale).


In Hannover we rented a Ferienhaus: a converted windmill. We visited family in Hannover.


I loved Berlin, it was amazing. We went to some of the big sights like the Reichstag / Brandenburger Tor / Holocaust Memorial, had some really great Turkish food, etc.

Berlin was also the site of our Crowdstrike Falcon story: we tried to go to the Monster Kabinett but they had to close the exhibits because all of the computers running the animatronics crashed and could not be recovered that day. We aren't entirely sure it was Crowdstrike related, but the timing was about right.


We went to Stuttgart to see P!nk in concert, as one does. We also met up with more family.


In the last part of the trip we toured Schloß Heidelberg, and flew back on July 22.

Friday, June 7, 2024

Rivian Updates R1 Models

Rivian’s revised R1 vehicles look really nice. They focussed strongly on production cost, to make each vehicle sale more profitable. Their recently announced R2 and R3 vehicles, smaller and with a lower MSRP, would be their way to try to reach more customers.

Passenger vehicles are not a part of the climate space that I worry about as much as other segments. EVs have several inherent advantages:

  • Far fewer moving parts. Over the long term, EVs are more reliable and will be cheaper to maintain.
  • ICE engines deliver about 20% of their total energy to moving the vehicle, EVs are >50%. Moving the entire energy requirements for passenger vehicles onto the electric grid would result in using substantially less total energy.



We need more climate change work to reach this level of clear superiority over legacy methods.

  • Solar energy production got there first, all of capitalism's incentives are now driving toward more solar installation.
  • Concrete and steel production show exciting progress, that the resulting materials are actually superior to what came before in their durability and control over material properties.

More. We need more.

Wednesday, May 29, 2024

Heat Pump Water Heaters and Residential Engineering Departments

A few weeks ago the US Department of Energy finalized efficiency requirements for residential electric tank water heaters. The efficiency requirement was last updated in 2010 and is supposed to be revisited every 6 years, but was not done during the 2016-2020 Presidential term. The new requirement will take effect in 2029, and should result in substantially more effort to make heat pumps the default choice for electric homes. The regulation does not mandate heat pumps specifically but most manufacturers will decide that heat pumps, a proven technology, are the most sensible way to increase the efficiency of their product line.

The push by manufacturers is important because water heaters are frequently replaced with little time for the end user to investigate alternatives because the old unit has already failed. We replaced the water heater in our home in 2021, moving from a gas appliance to electric. We had enough time to find an installer in our area familiar with heat pump installation — emeraldECO, in our case — but not everyone will have that amount of time to make a decision.

Having manufacturers make heat pump water heaters be the default means that contractors will need to train their crews to be ready to install heat pump water heaters, or risk losing business. They have to be prepared to explain the technology to their customers, and to help navigate available in incentives and rebates for the devices. It is a way to incentivize the entire supply chain from manufacturer to distributor to contractor to end-user.


Revisiting an earlier topic: a more sophisticated product installed in the residence brings more complexity in operating the infrastructure. Our heat pump water heater has a Wi-fi connection. It can notify us of faults... and has. It has signaled a blocked overflow pipe as a problem, but following up showed no blockage and no sign of a problem. The design of infrastructure for residential use has to take into account that the property owner won't be knowledgeable about its operation. There won't be an engineering department.

Tuesday, May 14, 2024

Residences as Utility Infrastructure

The universal first troubleshooting step is to reboot. No matter what the product is, no matter what the problem is, try turning it off and back on &emdash; which is how I found myself figuring out how to reboot a solar inverter. It turns out to be difficult to power cycle something which makes its own power.

When we added solar panels to the roof in 2019 we chose a SolarEdge inverter with an integrated vehicle charger, expecting to never acquire another gasoline car. We have been happily using the SolarEdge inverter to charge the EV we subsequently acquired.

Happily charging until Saturday, that is. I boggled plugging in the car, quickly pulling the plug out and back in without fully intending to. The inverter beeped and the car's indicator lit when first plugged in, then turned off and didn't come on again. There it sat, neither charging nor disengaging no matter what I did. Left a few hours, it just sat there not charging. Plugging it in again the next morning did not change anything.

So: time to reboot the inverter.

Getting an inverter to fully reboot requires cutting power from every source that sneaky thing might use:

  1. Turn the switch to disconnect from the photovoltaics.
  2. Turn off the breaker where the inverter connects to the house electrical panel.
  3. Pull the shutoff switch to disconnect from the grid completely. This would have powered off the whole house were there no batteries.
  4. Wait for capacitance in the inverter to drain and all of its LEDs to turn off, then another 60 seconds.

Commercial buildings have long been responsible for substantial utility infrastructure, from boilers to electrical transformers to, sometimes, subway connections and underground steam tunnels. Residences have typically hosted much less infrastructure, and the equipment has been gradually refined so as to be simple for the homeowner. Ground fault breakers, electric starters for pilot lights, and so on have all been developed to minimize the need for a residence to have to deal with odd failures or dangerous conditions.

The clean energy transition is moving more infrastructure into residences which might once have been exclusively the domain of a service provider. Very few homes have a private gasoline station, but many will have private chargers. Very few homes have generators supplying their electricity, but many will have solar and virtual power plants using residential batteries in unison are already here.

The design of infrastructure for residential use has to take into account that the property owner won't be knowledgeable about its operation. There won't be an engineering department, there won't be anyone paying attention to it. I have on the whole been happy with the inverter and the Powerwell it connects to, but there is more to be done to handle odd cases like this.

Saturday, April 27, 2024

SF Climate Week 2024 Fini

SF Climate Week is drawing to a close. For me the highlight was being in the audience for a live recording of the My Climate Journey podcast — especially the discussion with California State Senator Scott Weiner regarding SB253, a new law requiring corporate disclosure of emissions data, including Scope 3 indirect emissions.

Most emissions resulting from the activities of large companies are Scope 3, the collection of suppliers and vendors and other firms which individually are small enough to not be required to file disclosures, but whose aggregate emissions become quite large.

As with MethaneSAT, a satellite service mapping large methane sources, the mere existence of data from SB253 will lead to action. Companies will take some amount of proactive steps to reduce their emissions, but more importantly third parties will know where to target both pressure to improve and products to help with that reduction.

It was also a useful week on my own climate journey. I am seeking opportunities to work on climate change solutions, an area where I have several years experience and can bring skills from a larger number of years in Tech. I would welcome contact with hardware, software, management, or leadership opportunities in climate solutions, please reach out.

Monday, April 22, 2024

SF Climate Week 2024

This is SF Climate Week, a week of talks and events about climate change mitigation, adaptation, and solutions.

Many of the events are at 350 California Street which is the home of 9zero, a climate focused co-working space. I'll be in the city much of the week to attend a few sessions and as a volunteer to help with a few sessions.

Friday, February 2, 2024

Unwitting Salary Survey Participant

I had a call with the head of HR for a company whose mission and product look interesting, dealing with renewable energy. The head of HR is leading the search for a new VP Eng.

The first, and only, question was about the offered salary range. It is at 20% of typical for a VP role. Did I think that was too low? Would I even consider the role? The CEO thinks they can find someone at this salary. The head of HR is not convinced. We talked about compensation for a bit.

Then they ended the call, saying that I am not a fit.

Props for the hustle, I guess, avoiding paying OpenComp by sourcing some data yourselves.

Friday, July 23, 2021

Kthubernetes

Inconceivable: zero hits for "Kthubernetes" ?

Unacceptable. This will not stand.

Thursday, November 28, 2019

gdaldem color-relief is my BFF

When working with geospatial data and maps, an effective way to communicate in email is to send images highlighting the specific thing one wants to point out. For example, showing areas where the dominant land cover is lichens:

gdaldem, though named for its role in processing Digital Elevation Maps, is a useful tool even for things which have nothing to do with elevation. It has a color-relief subcommand intended for color gradients of terrain but which can be used for lots of purposes. It takes a simple text file mapping pixel values in the original to colors in the output. For example, my lichen image above used:

0 black
1 grey
139 grey
140 red
141 grey
209 grey
210 black
211 grey

This means:

  • pixel value of zero (NoData in the original image) should be colored black.
  • water is pixel value 210 in the original image, so make it black as well.
  • the land cover class for lichen in the original image is 140, so color it red.
  • we set grey for 1 and 139, for 141 and 209, and for 211 because by default, gdaldem color-relief would create a gradient of colors between those specified. We want those areas to be solid grey.

The original image was:

Monday, September 9, 2019

Mini-split Heat Pump Installation

We live in a home which was built in 1963, older than we are. The structure has some great attributes and some not-so-great attributes. Among the not-so-great is the lack of air conditioning, and a pair of ancient furnaces with very high gas bills. We set out to do something about this.

  • We wanted to add air conditioning.
  • We wanted a much more efficient heating system.
  • The ducts were 50+ years old and clearly leaky, with dirty patches in the insulation at each joint where the duct has been pulling air through for decades. They would not pass current inspections.

As essentially none of the existing HVAC would remain, we could consider options which didn't preserve any of it. We decided to go with a ductless mini-split heat pump system.

A heat pump is an idea which has been around for a while. It operates similarly to an air conditioner in that it repeatedly compresses and expands a refrigerant, circulating it in and out of the house while doing so. The difference is that where an air conditioner always compresses the refrigerant outside of the house to release heat, the heat pump can also reverse the process to release heat inside. A heat pump can either heat or cool based on where it allows the refrigerant to expand.


 

There are heat pumps which can replace a central furnace and hook up to the existing ducting, but as the ducts were in terrible shape we opted for a mini-split system. There is no central air handling nor air ducts in this system, there are individual units in each room which are connected to a compressor outside.

In each major room a head unit is mounted high on the wall, and contains refrigerant coils and fans. Air is circulated within the room, not drawn from nor exhausted to the outside.


 

The head unit connects to power and two refrigerant lines. This picture was taken during the installation, with the wall open and the two copper refrigerant lines not yet hooked to the head unit.

Note that there is no air duct: air is not moved through the home with a mini-split, only refrigerant. The head unit can cool or heat air drawn from the room, using the refrigerant to pump heat in or out of the house.

I emphasize the lack of ducts because it was a big mental hurdle for us. In a retrofit the heat pump units can go anywhere, placement is not constrained to where ducts currently go.


 

The head unit contains a filter in front of the fan, but the activated charcoal portion of the filter covers only a small portion of the area. We have no way to measure the effectiveness of this filter, but we are skeptical as it seems like air can flow around it easily.





The refrigerant connections are quite small, half inch diameter copper pipes plus insulation, so they can run between studs in the walls and under the house. They all eventually lead to an outdoor unit, which contains a fan and radiating fins like an air conditioner outdoor unit would.

The outdoor unit is available in a few capacities, rated in British Thermal Units (BTUs) like 20k - 50k. The head units inside the home are also rated in BTUs, from 9k through 24k, and one adds up the rating of the head units to determine the capacity of outdoor unit required.

Our home needed two outdoor units, a larger 50k BTU unit for the upstairs and smaller 20k unit for the lower level.





With a furnace or central air, a single thermostat controls the HVAC. That thermostat might be very sophisticated with multiple room sensors, but there is a single central point where control can be implemented.

With ductless mini-split systems, there is no single point of control. Each head unit implements its own local control, it can implement its own schedule, etc. The system is supplied with a handheld remote control for each head unit. It appears to be infrared, and it is not strongly paired with a given head unit. If you take it into another room and point it at a head unit in that room, it will control the head unit in the new room.

The remote is quite complicated. It can change the mode from heating to cooling to fan (and others). It can program weekly schedules. For some models of head unit, it can configure an occupancy sensor feature to aim the airflow directly at people in the room and turn off if nobody is present. Etc, etc.

We use the remote controls for all but one of the head units. For the last unit, we had reasons to not want to change how the HVAC system is operated and wanted to retain the existing themostat on the wall exactly as it was. Mitsubishi has an interface to allow this, connecting any 5-wire thermostat to control a single head unit.





A few things we wish we'd known at the start, in case anyone reading this is planning their own heat pump installation:

  • All of the head units attached to a given outdoor unit have to be cooling or heating, not a mixture of both. We got lucky in this: we needed separate outdoor units for each level, and this matches our usage as the lower level doesn't get so warm while the upstairs needs cooling during the summer.
  • The smaller outdoor units can be attached to the side of the house on a bracket. The larger outdoor units require a concrete pad to be poured. Had we known this we might have chosen to go with three smaller outdoor units and had them all mounted to the side of the house.

At the time of this writing we've had the system for five months, through our first summer. It has been great having the option to cool the house on those days which need it. We are just heading into the cooler months, and we're hoping to see a substantial reduction in the energy bill.

We're quite happy with the system. Heat pumps are also an effective means to help with global warming by improving efficiency and reducing use of methane, and are #42 on Project Drawdown's list.





Our system consists of:

  • 3 x MSZ-FH15 15k BTU head units
  • 1 x MSZ-FH12 12k BTU head unit
  • 3 x MSZ-FH06 6k BTU head units
  • 1 x MXZ-8C48 48k BTU outdoor unit
  • 1 x MXZ-2C20 20k BTU outdoor unit
  • 1 x PAC-US444CN thermostat interface
  • electrical panel work to rearrange breakers and install new 40A and 25A circuits
  • permits and fees
  • demo and removal of old ducts and furnace equipment

The total cost was $31,665 for equipment and installation, in the SF Bay Area where the cost of living is high. Our gas bill in the winter with the old furnaces was often $400/month, which should decline substantially with an electric heat pump powered by solar panels on the roof.

The system was provided and installed by Alternative HVAC Solutions in San Carlos, CA, and we were quite pleased with their work.

Monday, August 12, 2019

LED bulbs for FLOS Fucsia light fixtures

The home we currently live in had a FLOS Fucsia 8 light fixture in the dining room when we moved in. The look of the fixture and the gentle chimes it makes when a breeze blows in from outside is quite appealing.

However we decided not to keep the light bulbs it came with, Philips Spotone NR50 25 Watt halogen bulbs. Replacing them with LEDs turned out to be considerably more difficult than we expected, this post is intended to help anyone else with one of these fixtures who is looking for options.



The base of the bulbs is one not commonly used in the United States: E14. A "candelabra" bulb is E12, a regular bulb is E26. In this nomenclature the E is for "Edison" and refers to the type of screw in base, and the number is millimeters width. The base of the bulbs used in the FLOS Fucsia line of fixtures are slightly larger than a candelabra bulb.

Though not common in the United States, E14 bulbs are quite common in Europe, which means that most of the E14 bulbs you find are designed for the European voltage of 220V and not the US voltage of 120V. Bulbs which are not dimmable will often work all the way down to 85V, but dimmable bulbs are calibrated for 220V and when powered at 120V they are fully dim or all the way off.



It took several tries to find dimmable bulbs which work at the US voltage in this fixture:

  • we first bought non-dimmable bulbs from EBD lighting. These worked, but we missed being able to have a more intimate dinner with the lights turned low.
  • we unintentionally bought dimmable bulbs for European voltage. These did not work at all at 120V, the light would not turn on.
  • a bit later, we found the perfect bulbs: AAMSCO is a specialty vendor which makes an LED version of the E14 NR50 spotlight which is dimmable at 120 volts. It is about 4x as expensive as most LED bulbs, but a perfect fit for this fixture. We felt it was worth splurging. We bought them at lightbulbmarket.com, which offers a box of 10 bulbs at a small discount.
    Update Aug 5, 2024: AAMSCO appears to no longer make these bulbs. I don't know of an alternate supplier.



This image shows the comparison between the original Philips Spotone halogen bulbs, the non-dimmable EBD Lighting bulbs, and the AAMSCO dimmable bulbs. The EBD bulbs have a notably bluer temperature and are considerably brighter than the other two. The AAMSCO LED bulbs roughly match the temperature and light output of the original halogens.




The climate change connection: energy savings from LED lights is the #33 solution for global warming on Project Drawdown's list.

Monday, July 1, 2019

Discourse.org SSO with gitlab.com

A previous post discussed how to set up a Discourse forum to run as a service within JupyterHub. Though this makes the forum appear within the URL space of the JupyterHub server, it still runs as a completely separate service with its own notion of accounts and identities. We're tackling that in this post, describing how to make Discourse use single sign on (SSO) from gitlab.com, which is also how we set up JupyterHub accounts to work.

The previous post went over creating a JupyterHub service configuration for the Discourse service. We now add a second service, for the SSO server. This example is for The Littlest JupyterHub, where we create a snippet in /opt/tljh/config/jupyterhub_config.d/discourse-service.py.

c.JupyterHub.services = [
    {
        'name': 'forum',
        'url': 'http://172.17.0.2:80/',
        'api_token': 'no_token',
    },
    {
        'name': 'discourse-sso',
        'url': 'http://127.0.0.1:10101',
        'command': ['/opt/tljh/user/bin/flask', 'run', '--port=10101'],
        'environment': {'FLASK_APP': '/opt/tljh/hub/bin/discourse-sso.py',
            'GITLAB_CLIENT_ID': '...',
            'GITLAB_CLIENT_SECRET': '...',
            'EXTERNAL_BASE_URL': 'https://jupyterhub.example.com',
            'DISCOURSE_SECRET': '...',
        },
    },
]

Code for the service is at discourse-gitlab-sso. It provides a Python Flask-based service which:

  • Listens for SSO redirects from discourse, which arrive at discourse_sso() and results in redirecting the browser to gitlab.com for an OAuth request.
  • gitlab.com redirects the browser to gitlab_oauth_callback() with the OAuth response. Python code sends several followup requests to get a token and fetch information about the user from GitLab.
  • gitlab_user_to_discourse() maps the information retrieved from gitlab to the format expected by Discourse, and the browser is finally redirected back to Discourse with the SSO information encoded.