Sustainability + Opensource = Win

I really like this sort of manifesto from Bruno (an open source alternative to Postman, Insomnia, ++) – which is a API testing tool. Building useful open source tools or products is generally a labor of love (= Github Stars), but sometimes the love fades (= Github Forks), and inevitably no one wins (= Github Unfollow). As an open source developer, and consumer is to have zero expectations – I got this product for “free” and I am sharing this product for “free” is generally part of my ambitions.

However, many consumers of open source software want to the product to grow and thrive at that free tier which is more often than not unreasonable. This sus up some options around the lifecycle surrounding open source and what consumers, and developers should expect. read more

Export Apple Photos to the Filesystem – Apple Script

I have never really used Apple Script, but recently had the desire to backup all my Apple Photos to my local NAS. I currently have all my photos organized in a Folder -> Album structure so pulled this Apple Script together together to get this done. Create a new Apple Script (*.scpt) and select the source Photos Folder and a location to save the files on your filesystem. Note: Slashes in the name case folders to be created 🙁

https://gist.github.com/paschmann/536def178ea9dd96c22c2143cc2b212c

3D Printing Project: F1 Sim Wheel

I have always enjoyed the concept of being immersed into a virtual world. One of my first experiences with VR was in roughly 1993 when our local arcade introduced a game from one of the OG gaming founders John Waldron called Dactyl Nightmare on a 1000CS. After that experience, I have always wanted to build a motion sim which gets you as close to reality as possible.

Last year I took the first steps and decided to put the initial blocks in place and start with sim platform that I could eventually add motion to. I purchased a Fanatic wheel base and thought it would be a great learning experience to build the steering wheel from scratch. Many of the components can be built versus bought which is what is keeping me motivated to eventually get the entire system together. read more

DIY – E V E R Y T H I N G

Designing, building and then using something you have made, has been one of the most rewarding and personally satisfying activities I have found in my life so far. I was born a tinkerer, always disassembling, trying to understand and improve or recreate.

My favorite TV show is “How it’s made”.

I have way too many expensive tools, printers, cutters and machines, and not a single one has made a significant return on the investment … but, what I have learned using them has been 10x …

Its not just the tool, its the tools to use the tool, the software to design the product, the process to start, run or finish the machine or product, the prep work, consideration and the functionality. read more

Laser Cutting Project: Bicycle hook

This weekends challenge, a better hook for a bicycle:

Want to laser cut one of your own or remix it? Check it out on Thingiverse

This is a vertical based bike hook for bicycles with aero (deep) front rims. Currently there are not many wheel hooks that keep the front wheel vertical and that don’t scratch the rim when putting the bike up.

The hook is lasercut using a glowforge and medium draft board (the material thickness is important as all the slots need to interlock). Assembly is slotting the parts together and installation requires two screws/anchors into the wall.

It was specifically designed for a Reynolds AR80, however, I believe other wheels with similar dimensions, depths or profiles should fit. read more

Open Source Project: Reach SDK

Over the past few years I have found myself re-implementing and re-writing basic features of server, web, mobile or service components. Registration, Login, Forgot Password, Notifications, Search, Help, FAQ, Contact Us, Maps are just a few I can think of, where half way through the development everything seems familiar and I have a case of deja vu. No doubt I have written or implemented a library or service which performs this specific function.

While developing the Changd app I found myself in one of the deja vu moments while writing the email notification service, and decided to pause development, and fix the root cause. After multiple Github issues to support a variety of notification providers, I came across Apprise, a python library which supports multiple notification provides. Since there was not a Node.js implementation, I decided to use Apprise as inspiration and influence for a Node.js library which I aptly named “Reach”. read more

Publishing packages to NPM

These are the notes/process I used when developing the Node Reach SDK package:

The “Standard” Release Process

Here is my understanding of the steps that are most commonly expected to be run when publishing a new version of an npm package.

  1. Safety Checks:
    1. git pull
    2. git status
    3. npm ci
    4. npm test
    Prepare the Release:
    1. npm run build
    Update the Changelog Update the Version Number:
    1. npm version
    2. Or by hand:
      1. Update version in package.json & package-lock.json
      2. git commit -am ‘2.0.0’
      3. git tag v2.0.0
      Publish to npm:
      1. npm publish
      Publish to Git:
      1. git push
      2. git push –tags
      Create a GitHub Release (optional)

DIY: Physical Random Number Generators

One of the benefits of Quantum Computing is their ability to generate truly random numbers.

Since classical computers are deterministic machines, governed by algorithms, they are inherently predictable. Therefor any number generated by a classical computer, even if it seems complex is actually based on a set of conditions or algorithm, which therefor makes it a “pseudo random number”, rather than truly random.

To generate truly random numbers you need to rely on a physical processor or phenomena that are unpredictable, examples of this include radioactive decay, electronic noise or even atmospheric noise.

Since QC is essentially based on a physical process and the probabilistic nature of quantum mechanics, its qubits can exist in a superposition state, this means they can represent a combination of 0 and 1 simultaneously, this state/property can be harnessed by QRNG (Quantum random number generators) to produce truly random numbers.

As a fun project, I decided to build a small physical QRNG using an Arduino, laser diode, beam splitter and two photo resistors. The basic premise is that you pulse the laser, it sends a wave/particle (both!) through the beam splitter, 50% of the time it should hit one of the two photo resistors, providing you with a random string of “1”s or “0”s.

While a very simple, basic and small example, it is a fun experiment. Check out OpenQbit.com if you would like to build your own. To make this a little easier, I laser cut a template/outline for the beam splitter for holding each of the components.

Enjoy Randomness? Check out these blog, sites, references: http://www.reallyreallyrandom.com

Non Quantum RNG generator using zener noise: http://www.reallyreallyrandom.com/zener/breadboard/

Nice video explaining the seed variables used and middle squares: https://www.khanacademy.org/computing/computer-science/cryptography/crypt/v/random-vs-pseudorandom-number-generators

Open Source Project: Application Support Center

This is another blog post of a series around the enterprise mobility IT team at SAP. We are an internal team focused on managing mobile devices, mobile applications, and developing custom apps for SAP’s 100,000 employees. I believe we have some unique stories, software, tools, and insights to help others in the community considering, or currently undertaking, some of the challenges which surround mobility and its adoption in the enterprise.


Introduction

As the enterprise mobility team, we manage over 100 different mobile apps at any given time. This includes volume purchase apps, consumer versions of apps listed in our MDM, and custom-developed apps. In my last post about Relay, our custom real-time chat application, we have seven different components that need to be managed and maintained for this single app (iOS, Android, Web, macOS, Linux, Windows, and Server). A good majority of our custom apps are similar, and have multiple components, all of which have independent release cycles and potentially different teams that manage them. We initially used an excel spreadsheet to track and manage these applications and their corresponding components. This became a logistical challenge as our portfolio and responsibilities grew. Our commitment to our end users also grew during this time, and we wanted to provide a consistent support experience across operating systems and apps. We took this opportunity to step back and look at the process holistically, and decided to redesign how we managed and supported apps that we were responsible for. We also defined some essential services and features each of the apps should have, independent of their platform. I touched on this in a previous blog, but from a support perspective each app should include: read more