OpenSCAD Library for Lasercutting and CNC Milling

Brendan Sleight is actively developing an OpenSCAD library to aid in subtractive manufacturing methods such as lasercutting and CNC milling. It can support other 2D cutting methods as well, for example vinyl cutters. There is no way to output a DXF file from OpenSCAD’s user interface so a bash script is used. The end result is a DXF that can be sent to many 2D subtractive manufacturing machines. Most OpenSCAD libraries are geared toward 3D printing. I really enjoy OpenSCAD. Extending it’s applicability to 2D manufacturing methods is a welcome addition to my toolkit.

2021 Reading List

I planned to read two books per month this year. I fell a bit short. I completed “The Expanse” series. It was excellent throughout. I read a bit about Iceland after a wonderful trip to the country in August. As usual I bought more books than I finished so I have a backlog going into the new year. Books remain a guilty pleasure. I like the way they look and feel. I continue to read far more periodicals and technical writing for work than what I read for pleasure. Maybe those items are pleasurable as well. I read a fair amount with my kids. I’ve included a couple of exceptional books that I read with them as well.

  1. Interesting Stories for Curious People
  2. Burn-In: A Novel of the Real Robotic Revolution
  3. The Girl on the Train
  4. Tiamat’s Wrath (The Expanse #8)
  5. Leviathan Falls (The Expanse #9)
  6. Surreal Numbers
  7. Tragedies of Cañon Blanco: A Story of the Texas Panhandle
  8. Invent Your Own Computer Games with Python
  9. The Adventure of English: The Biography of a Language
  10. The Saga’s of Icelanders
  11. Independent People
  12. Based on a True Story: Not a Memoir
  13. Numbers Don’t Lie: 71 Stories to Help Us Understand the Modern World
  14. Responsibility to Awe: Poems
  15. Banksy Graffitied Walls and Wasn’t Sorry
  16. Sobo a troll from the hidden world
  17. Humble Pi: When Math Goes Wrong in the Real World
  18. What If? Serious Scientific Answers to Absurd Hypothetical Questions

Currently Reading The Adventure of English

📚 Currently reading “The Adventure of English: The Biography of a Language” by Melvyn Bragg. If you are the type of person that owns an Oxford unabridged dictionary or can spend the better part of an afternoon reading about the etymology of your favorite words then this book is for you. It’s a lay-persons history of the English language from its Germanic roots in the 5th century to present day.

Merry Christmas

I’m enjoying a quiet Christmas morning alone this year. Thanksgiving became my favorite holiday as I grew up. Some of this is undoubtedly because it was my Dad’s favorite day and he always made a big production celebrating it. When my ex-wife and I divorced we decided to split the holidays with the kids rather than alternate. I always have the kids during the week of Thanksgiving and she has them the week of Christmas. I enjoy that split. School schedules are different than when I was young. The kids are off the entire week for Thanksgiving. We spend the time visiting the sites and sights around town. We read, we watch our favorite movies. We play games, we make crafts. We cook, we eat, we laugh. We have carried on the tradition of decorating a Christmas tree the day after Thanksgiving and we open gifts on the weekend. It’s a special week.

I’m naturally happy by myself. I need less social interaction than some people. I remember being 6 or 7 years old, hiding behind the bed with an old HP calculator from my mom’s desk. I could add numbers until I fell asleep on the floor. There was a peace that came over me in those moments. Comfort in the certainty that certain patterns always held no matter how many ways I tried to break them. I didn’t understand arithmetic let alone number theory. I still don’t. I may or may not have learned something useful. That wasn’t the point. The only thing that mattered was the joy of finding things out. Learning for the sake of learning, not for any other purpose.

That being said, I still find myself lonely on days like today. Our world is so connected that I am never really alone. My phone hasn’t gone 5 minutes without a notification from someone today. I miss my kids though. I’ll see pictures of their day later. I’ll FaceTime with several if not all of them. I miss my girlfriend. We’ve communicated in so many ways today. We sent electronic hearts through our connected “LoveLights”. We sent text messages with cute emojis, and we saw each other via FaceTime. Despite these wonderful inventions, there is no substitute for genuine face-to-face, hand-in-hand, human connection. I’ll see her tomorrow and my heart will grow a little warmer. I’ll see my kids next week and the dull roar of the house will slightly irritate me, but I’ll feel just a bit happier and more complete.

Merry Christmas to all of you that celebrate. Happy holidays to those of you that celebrate other holidays. Enjoy your time with yourself, with your family, with your friends. I wish you all a safe and healthy New Year. Take time for yourself and all the ones you love. Time is the only true commodity. It matters more than anything else you have. You can’t make it. You should take it. You better protect it. You need to share it. It’s not yours for long.

Riding Light

In our terrestrial view of things, the speed of light seems incredibly fast. But as soon as you view it against the vast distances of the universe, it’s unfortunately very slow. This animation illustrates, in realtime, the journey of a photon of light emitted from the surface of the sun and traveling across a portion of the solar system, from a human perspective.

Simply stunning.

Currently Reading Tiamat's Wrath (The Expanse, #8)

📚 I’m currently reading “Tiamat’s Wrath (The Expanse, #8).” I planned to read this earlier in the year and forgot. Last week the 9th and final book in the series was released so I thought I should catch up.

Connecting to Oracle from Python on M1 Mac

I’ve written previously about using the cx_Oracle package to connect Python scripts to an Oracle database. After moving to an M1 Mac I encountered errors with my connection again.

cx_Oracle currently has no ARM compatible version. It will install without error alongside Python and other packages that are compiled for ARM. It will throw an error at runtime stating that the version x86_64 is not compatible the system architecture.

If anyone knows of a cx_Oracle binary that was compiled for the M1 I would appreciate a pingback. For now the simplest solution was to install an x86_64 version of Python. Create a virtual environment using Python x86_64. Then run all my scripts in this environment.

I use Homebrew. Homebrew installs in /opt/Homebrew by default on M1 Macs and will install ARM versions of software when available. I created a second Homebrew install specifically for x86_64.

This requires Rosetta 2. It is possible that it already installed. It will automatically install the first time you try to run an x86_64 application but will not automatically install if you perform installations via the terminal. To install,

$ software-update --install-rosetta

Agree to the license and then install Homebrew for x86_64

$ arch -x86_64 /bin/bash -c "$(curl -fsSL"

This will create another Homebrew installation in the typical /usr/local/Homebrew directory. To install x86_64 packages here just pass the architecture flag to brew install

$ arch -x86_64 brew install *package_name*

After installing Python I created a virtual environment with the necessary package dependencies and then everything worked fine.

$ /usr/local/bin/python3.9 -m venv *environment_name*
$ source ./*environment_name*/bin/activate
$ pip install *package*

Enable TouchID for sudo password in Terminal

TouchID on the newer macs is one of those features that I didn’t know I needed and now can’t live without. Any computer that doesn’t have it now feels broken. One place where it wasn’t available by default was the terminal. I do a fair amount of terminal work and I found that it is possible to enable TouchID support. This allows you to enter your sudo password via TouchID. To enable it edit /etc/pam.d/sudo with your favorite editor.

$ sudo vim /etc/pam.d/sudo

Then add the following line at the top of the file.

$ auth sufficient

Restart your terminal and TouchID is available.

Shortcuts for Text Translation

Earlier this year I posted an Automator workflow that sent text to Google Translate. As I mentioned then, I work for a company with global offices and I have to make quick translations often. I used the workflow regularly. It rarely fails and has saved me a considerable amount of time. I can also translate text on my iOS devices but it requires more steps. I’m now running Apple Silicon Macs exclusively and macOS Monterrey includes the shortcuts app. It was relatively simple to build a translation shortcut that is cross platform.

Translate Shortcut

The shortcut is fairly basic. It only uses built-in commands.

  1. Take selected text as input. Make it available in Share Sheet (iOS) and Quick Actions (macOS available in Services menu).
  2. Save the text to a variable.
  3. Use the built-in Microsoft translation function.
  4. Save the translated text to a variable.
  5. Save the translated text in the clipboard for later use if needed.
  6. Output the original text and the translated text.

Translated Text Example

I created a generic version that allows for a choice of translated language and a version for quick translation to English and German. These are my most frequently used languages.

Services Menu

Thanks to the cross platform support this is now also readily available on iOS in the share sheet which eliminates several steps and app changes.

Share Sheet