More Baking: Coconut Cookies

Coconut cookies – Simple and very tasty

Since I had dried coconut left over (see here), I was searching for a recipe for cookies with coconuts. There’s plenty, so I picked one and it worked really well. The biggest problem was converting cups into something I can use, so here the metric translation of that recipe:

  • 150g flour (= 1 1/4 c)
  • 1/2 tsp baking soda
  • 1/4 tsp salt
  • 110g butter (= 1/2 c)
  • 200g sugar (brown only as I had no white sugar) (= 1 c in total)
  • 1 egg
  • 1/2 tsp vanilla extract
  • 120g coconut shredding (= 1 1/3 c)

Don’t let me rant about the use of tsp. That is pure insanity. Luckily those don’t need to be exact anyway.

  1. Preheat oven to 175°C
  2. In one bowl mix flour, baking soda and salt
  3. In a larger bowl add butter and sugar and mix well
  4. Add egg and vanilla
  5. Add flour little by little (sieving it in)
  6. Mix in the coconut shreddings
  7. Form small balls (about 2-3cm diameter) and put them on baking paper
  8. Bake about 12-14min. Move to wire rack to cool.

The result was as good as I expected. Crispy outside, a bit chewy inside. Perfect on the first try!

Steel-Cut Oats for Breakfast

My whole life I have mostly cereals for breakfast: cornflakes and Müsli. There are so many variations of the latter, that it never gets boring: with dried fruits, with chocolate or nuts, crunchy or not, just add with milk or like Bircher keep it soaking for some hours…

But this is all rolled oats and until recently I didn’t even know there’s non-rolled oats, namely “steel-cut oats”. I followed this recipe with 60g (2oz for the metrically challenged) of oats and it reminded me a lot of Griessbrei which I had when I was a kid. Ah, good old memories! It was surprisingly nice. Not a big fan of the 25min cooking time though, but it’s a nice variation which is especially nice in cold winter days.

Ubuntu 21.10, PulseAudio 1.15, Bluetooth and its Codecs

When it comes to in-ear headphones, the neckband format is by far my personal favorite. While I have several Bluetooth headphones, my most liked in-ear one is the Fiio FH3: comfortable, great sound. But it’s cabled, and I do not like cables. So I got a Shanling MW200 for my FH3. And the FH3 still sound great!

But the MW200 blinks in blue which means it’s using the SBC audio codec when connecting to my Linux PC! Unacceptable!

It turns out that on an older Ubuntu version (20.04), the Bluetooth Codecs only support SBC. Not a big problem: PulseAudio 1.15 supports better codecs like aptX, AAC and LDAC. And it’s part of Ubuntu 21.10.

Time to upgrade from 20.04 to 21.10 then!

After doing the usual

❯ apt update
❯ apt upgrade
❯ do-release-update

I still only see SBC used: the MW200 blinks blue when it’s using it. If it was using another codec, it would blink in another color (e.g. green=LDAC or purple=aptX).

The fix is simple:

❯ add-apt-repository ppa:berglh/pulseaudio-a2dp
❯ apt update
❯ apt install pulseaudio-modules-bt libldac

Once done, you can see the codecs:

❯ pactl list
Card #4
        Name: bluez_card.4C_00_00_00_00_24
        Driver: module-bluez5-device.c
        Owner Module: 29
                device.description = "Shanling MW200"
                device.string = "4C:00:00:00:00:24"
                device.api = "bluez"
                device.class = "sound"
                device.bus = "bluetooth"
                device.form_factor = "headphone"
                bluez.path = "/org/bluez/hci0/dev_4C_00_00_00_00_24"
                bluez.class = "0x240418"
                bluez.alias = "Shanling MW200"
                device.icon_name = "audio-headphones-bluetooth"
                headset_head_unit: Headset Head Unit (HSP/HFP) (sinks: 1, sources: 1, priority: 30, available: yes)
                a2dp_sink_sbc: High Fidelity Playback (A2DP Sink: SBC) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_aac: High Fidelity Playback (A2DP Sink: AAC) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_aptx: High Fidelity Playback (A2DP Sink: aptX) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_aptx_hd: High Fidelity Playback (A2DP Sink: aptX HD) (sinks: 1, sources: 0, priority: 40, available: yes)
                a2dp_sink_ldac: High Fidelity Playback (A2DP Sink: LDAC) (sinks: 1, sources: 0, priority: 40, available: yes)
                off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
        Active Profile: a2dp_sink_ldac
                headphone-output: Headphone (type: Unknown, priority: 0, latency offset: 0 usec, available)
                        Part of profile(s): headset_head_unit, a2dp_sink_sbc, a2dp_sink_aac, a2dp_sink_aptx, a2dp_sink_aptx_hd, a2dp_sink_ldac
                headphone-input: Bluetooth Input (type: Unknown, priority: 0, latency offset: 0 usec, availability unknown)
                        Part of profile(s): headset_head_unit

Even better is that it’s very easy to change the codec via the volume control and clicking on the hamburger menu next to the Bluetooth headset:

Audio Volume Control for MW200

And the MW200 now blinks in green (means it’s using not SBC, but LDAC)!

If anyone wonders: I cannot differentiate between aptX, aptX HD and LDAC. SBC sounds a bit duller though.

Looking for a Job – Lessons Learned

I looked for a proper job just three times in my life so far: when I moved to Japan, 2 years later and recently, about 18 years later. Needless to say, I was not well prepared for the last one.

This is a short summary of what I learned. If you are looking for a job, try to avoid the errors I did.

  1. Make sure your CV looks good
  2. Adjust the CV
  3. Have a cover letters
  4. Update your coding skills
  5. Update your interview skills
  6. Be a CV factory
  7. Have good video interviews
  8. Write down the progress
  9. Keep yourself busy

Make Sure Your CV Looks Good

“Good” has several meanings here:

  1. Pleasant to the eye. And well structured.
    My structure: My name, contact information and my current role,
    a section with the list of my skills,
    a section with the list of work experience: company I worked for (newest first), location, time, title/role and work experience. The experiences being things you did and the outcome it had.
    Then a section for education, certifications, visa status and language skills (if relevant)
  2. Machine readable. Many companies use programs to read your CV and they pre-fill your work history into their own forms. Simple structure works well, but you’ll find out quickly what works and what does not: if your information is well understood (i.e. company name, position, time you worked there, experience) and the correct information appear in the correct text boxes, then it’s good. If not, tweak and simplify your document structure.

Keep in mind that the first human CV checks might take as little as 15 seconds, so make sure than in that short time your CV leaves a good impression.

Adjust the CV

Do not send out the very same CV to different companies.

Mention the keywords as per job description and the listed requirements, e.g. if the job description mentions Kafka, CI/CD and Agile, make sure they are listed if you have any experience with those. If “Agile” is asked for, don’t have “Scrum” as the only keyword related to Agile. Experienced recruiters will know that those are related, but do not depend on that. Make it easy for the reader (or machine) that you have the skills they are looking for.

To make my life easier, I had one version of my CV which contains every skill and experiences I had. For each company I removed some which were irrelevant for the specific job, and added or emphasized the skills which were wanted. Specifically I re-sorted my skills: top ones were most relevant.

Have a Cover Letter

Although I have learned that cover letters were supposed to be out of fashion, I did write some in the end. One company explicitly requested a cover letter and 4 other companies had a mandatory or optional cover letter upload in their automated CV upload process. The cover letter should contain your understanding of the role, your motivation and how you can add value. While this would be covered in the first interview, spelling it out is a nice.

Given the nature of the cover letter, make sure they are much more personalized than your CV. This is a great summary.

Update Your Coding Skills

If you are into coding, there’s plenty web paged like LeetCode or HackerRank where you can train for the typical coding exercises you might get. It’s also a nice practice and I found it actually fun as the tasks are (sometimes) interesting to solve and you get told whether your program is correct. It does not cover anything complex. Most tasks can be solved in 10min or less.

For the first programming test as part of a job search I kind’a had no idea how this works, so I solved the 5 tasks as fast as possible where there was no urgency needed. I messed that one up enough so the company rejected me at that point. 100% preventable in hindsight.

Update Your Interview Skills

The best preparation I got was for the Amazon interview from here. Especially the behavioral questions and the STAR format was useful as it avoids:

  1. awkward silence you create when you get surprised by a question and
  2. the rambling when you realize you have no good reply

The logic of behavioral questions is sound: it makes you tell a story of your past actions. I found many behavioral interview questions online and what I got in interviews was matching many of them, so take those publicly available question as a guideline and make sure you can answer them all with a relevant story from your past.

It took me days to collect good examples. Quite some of those I replaced with much better ones I remembered later which were better suited and more impactful.

Thus my recommendation: Do not try to “wing it”: write those stories down. Think about good examples which have a point or lesson learned. Memorize just key points. An interview is a stressful situation and you might not come up with a good story on the spot. In one case 6h later(!) I realized what I should have replied, where during the interview I drew a blank.

Also my performance during interviews got better and better: I knew more what to expect, the questions got repetitive so I knew the answers, I prepared better myself about the company and the interviewer. So don’t start your interview with the ideal dream-workplace you want. It’s a risky gamble though.

I am confident that if I could re-apply for the jobs I applied for at the start, I’d go much further in their interview process.

Be a CV Factory

I had several interview at various companies for various roles. Sometimes I got an early rejection, sometimes I got a first short interview and then a rejection. Neither is a problem as usually this first meeting clears up the expectations from their an my side. And sometimes I had 2nd interviews which I failed or it just did not “click”. None of those rejections were unexpected.

Then I had an interview for a role which I thought was perfect for me: it used many of my skills and the interviews (about 6 in total) went really well I thought. So after those interviews I stopped applying for other roles and I was basically expecting a “We’ll hire you!” mail. Alas, a week later I got a rejection email.

I was crushed. I felt really down for 2 days. I had no current interviews upcoming. I was starting at zero again. The future looked bleak.

Two things helped here to get me out of this low: First a friend said that his company he works for has a position open which might be suitable for me. This gave me a small light of hope. And I saw a video on YouTube (I think it was Andrew LaCivita but I cannot find the specific video anymore) about being a CV factory: send out so many CVs that you never run dry: if you get a rejection it does not matter much if it’s 1 of 10 currently running ones. And even if you expect a positive reply, keep on looking for new job offers as you might get a reject. That helped a lot. It totally changed the way I was approaching the job search.

It’s the same as the Pet vs Cattle concept: if you are personally invested in your pet and it dies, you’ll be depressed. If you have 100 cattle and one dies, you replace it. No need to shed tears.

So I widened my net: smaller companies (incl. startups, but nothing below 50 employees), work which used only some of my skills, roles which I ideally didn’t want to do but I knew I could do etc. And it worked: of course I got some quick rejections, but also quite some “let’s have a quick 30min interview” where I had a chance to make a good impression. I also attended online-events like HackerX although it was more targeted towards developers (which was not something I am qualified for). Turned out that those companies also look for roles I am qualified for, so beside having fun doing online video chat with like-minded people, I also had some more leads to potential jobs. At one time I had 5 jobs in flight with either first interviews scheduled or waiting whether they want to have a 2nd interview.

One note: I am in Japan and most companies have enough manners to tell you within a week or two at most whether they want an interview or not. The only companies which basically did not reply at all were some large international companies. Some recruiters were not well organized and it needed some reminder emails from my side to get a result too. But generally I got a response fairly quickly. Anything after 2 weeks of no response I considered “dead”. Other countries might behave differently though.

Have Good Video Interviews

I like video conferences. I got a cheap studio light (about ¥7000, hint: try to get one without cooling fan) and a good microphone (¥15000) so video and audio works well. Learn a bit about light and reverb. Plenty good YouTube videos exist for both. Look for Twitch and game streaming and listen to what they suggest to do regarding light and audio. Don’t do the color accent lights though: That’s good for streaming and not that good for interviews.

My first video conferences were a bit…technically challenged. Audio was usually ok, but video sometimes froze for some seconds. Once I completely dropped off the conference. Next day I bought a 15m Ethernet cable (about ¥2000) and that fixed the quality problems completely. WiFi works great for many things, but when it comes to low latency (online games) and constant quality (real time communication), it is not good enough when the signal has to cross several walls.

I tried, but mostly failed to look at the camera instead of the person in the video stream, but it turns out as long as the camera and the video stream is not too far away, it’s fine. Test this by recording yourself. Test audio too while you are at it. It also helps to make the video chat windows small and move it towards the camera. This is double true for the people having a camera at the bottom of their screen.

But most important is the attitude which you show in the interview. You are already (probably) technically qualified as otherwise you’d not be invited to an interview at all. A huge part of the interview is thus:

  • Will this person stay because they really like this job, or will he/she be moving out as soon as something better comes up?
  • What’s the general attitude? Happy vs. sad? Energetic vs. lackluster? Showing interest vs. not really caring?
  • Would I (the interviewer) want to work with that person?

Make sure you leave a good impression here. Answer the simple question “Why do you want to work here and in this role?” If you cannot answer this with plenty enthusiasm, you can be as qualified as you like, but I would not hire you. Would you?

Also be prepared to answer “What is your understanding of this role?”

If you know who is interviewing you, find out a bit about them. LinkedIn/Xing mainly, but sometimes you find that they did presentations at conferences and those recordings are available on YouTube. Mention those if the natural flow of the conversation allows it. I would not go as far as looking up their Twitter/FaceBook/etc. as I would not know how to use that information in a work-related interview without appearing creepy.

And when it’s time for your questions, have a list of questions ready. Again, don’t “wing it”. While some questions are not predictable as they come out of the conversation you just had, always have sensible questions at the end which show that you are interested, but also help you decide whether this is a good job for you. Really good examples from here.

Write Down the Progress

When you submit a lot of CVs, you should track it somehow. You want to know when you should follow up, in what stage you are, and where you have applied already. I used some recruiting companies and when using those make sure to never apply via multiple channels for the same role. If that happens, your CV is immediately removed because if they hire you, which recruiter will be paid?

Keep Yourself Busy

Lastly, I once read: “If you are unemployed, your day job is to find a new job”, so expect to work 8h/day on finding a new job: Look out for open positions, write and send out CVs, and learn stuff which might help you getting a new job.

E.g. I learned Japanese, did a lot on HackerRank and LeetCode with Python, did a lot of Kubernetes, used CI/CD on GitHub and GitLab, learned about lights and sound for video conferencing, how to pass behavioral interviews etc. It kept me busy!

Genki Covert Dock as a Notebook Docking Station

A while ago I bought a Genki Covert Dock for my Switch so I can play on a TV in another room without having to carry the original Switch dock around. The Covert Dock has 3 ports: a USB-C connector for the Switch, HDMI for a TV/monitor and one extra USB3 USB-A connector for typically an Ethernet adapter. It also works as a 30W PD power supply. Everything works well with the Switch. Since the drivers built into the Switch are not many and generally it’s picky about its docking station, often other 3rd party docking stations won’t work. Same applies to the Ethernet adapter which must use the AX88179 chip since that’s what the original Nintendo Ethernet adapter uses.

I got a new notebook recently with Thunderbolt 4 and since it has very few USB ports (2xC, 1xA) and I like to use my USB keyboard, a wireless mouse and Ethernet and an external second monitor, the normal solution is a docking station like this or that. Some supply power, some depend on an existing USB-C PD power supply. Some have multiple video outputs, some USB-A connectors, some have Ethernet, card readers etc.

All I need is: PD pass-though since I got enough USB-PD PSUs, one HDMI port, Gigabit Ethernet, 2 USB-A.

And then it hit me: Those docking stations do basically exactly what the Covert Dock does! Might it work on my notebook too?

And I’m glad to say that it does. It can deliver 30W which is enough to keep a (or my) notebook running without depleting the battery, HDMI works, the USB Ethernet adapter works too.

No need for another docking station! I still need one more USB-A port for keyboard and mouse, but I got a simple USB3 hub which does that just fine.

More LEDs!

6 years ago I built a 10×10 LED matrix using LED strips. While it worked, it would not be possible to build something significantly larger due to financial constraints: a 16×16 matrix costs about US$20 and is about 1cm/pixel. If you want to go big, the current way is via LED matrix panels. Like these.

Driving them is much more complex though: the WS2812B you send a bitstream once and you are done. The LED matrix panels needs a refresh not unlike CRTs do. Given the pixel count, this is perfect work for an FPGA. Which is why boards like the Colorlight 5A 75B do exactly that. It received its pixel stream via Ethernet usually from a video processor like this C2 or that X4. But since it’s using Ethernet, you can also use the Falcon Player since it supports the Colorlight card as an output. And the Ethernet frame format is conveniently described there too.

So what’s the point? Do I need a LED wall? Of course I don’t need one, but:

  • LEDs are fun
  • I did a 10×10 LED matrix the hard way, and would like something larger like 128×64 (smaller pixels, bigger panel)
  • I never created raw Ethernet frames
  • The FPGA can be reprogrammed (but the hardware is 5V output-only)
  • The costs of 4 panels (64×32 for a total of 128×64 pixels), 200W PSU, and the Colorlight LED receiver card is about $120, which compares well to the educational value and potential fun I might get out of it
  • A good video how to set up everything is here which reduces the chance of this project utterly failing to close to zero.

As they say:

so I need something to do at home on cold and dark days.

More Baking: ANZAC Biscuits

A colleague at work who is from New Zealand told me about ANZAC biscuits. Never heard of them and they do sound like a well known antidepressant.

From the list of ingredients it’s similar to Hobnobs I made 2 weeks ago, but there’s coconut in ANZAC biscuits which is a significant change in taste. I happen to like coconut, so…let’s do it!

This is the recipe I used. Since I could not get Golden Sirup in Japan, I followed the recipe note which mentions that 1/3 light molasses and 2/3 honey is a suitable substitute. I found the light molasses at Tomiz.

ANZAC Biscuits. Crunchy. Sweet. Tasty!

The result was similar to the Hobnobs but they became thinner and thus crispier. Not sure that’s how either is supposed to be since I have no reference. Both are tasty though, which is all which matters!

Update: I think they are a bit too thin and a bit too crispy. Next time I’ll try with slightly more flour and 13min instead of 15min baking.

The almost perfect USB3 hub

Since small ARM SBCs get USB3 ports nowadays, it’s making more sense now to use those as a storage hub. One problem I faced is that many of the faster or bigger storage choices take up a lot more power than most SBCs can deliver. E.g. the NVMe-to-USB3 bridge I have uses easily 1A which is above the official threshold of 900mA for USB3.

The normal fix is a powered USB3 hub as they tend to be able to deliver more current and they are often limited only by what its PSU can deliver.

And I found a particular suitable one:

atolla USB 3.0 Hub (with ext. PSU)

Here the Amazon link for more details. Note that the voltage is 5V only, so you unfortunately won’t get an electric arc shown in the photo. Neither is it magnetic which somehow also generates electric arcs in product photos…I wonder who came up with that idea. It definitely wasn’t an engineer. Anyway…

Why is that hub great for SBCs?

Because it’s a powered USB3 hub and thus it does not rely on power from the SBC to power USB3 devices. So you can connect NVME-to-USB bridges, 2.5″ HDD etc. as they are all powered by the (3A) PSU. The VIM3L is limited by a 900mA fuse.

The 2nd benefit is the extra charge port on the USB hub which can be used to power the SBC! So you end up with a single PSU. Its 3A is beefy enough to power most SBCs and USB3 devices. The VIM3L seems to max out at about 1A under CPU load.

The only drawback is that the USB connection for the hub is on one side, while the power connection is on the opposite side. Literally any other place (with the exception of the bottom, and I just wanted to mention that) would have been better…but having a single power source, several USB3 ports and enough power to run a NVMe enclosure…it’s a winner in my book.

Create your website with
Get started