A fun project designing and laser cutting/finishing some coasters for a friend.
Category: Design
Drawbot
A fun project to build a drawing bot which uses linear motors, belts, and a servo to take digitized line art and physically draw it on paper, in a plotter like fashion. Here are a couple resources which are helpful.
https://drawingbots.net/knowledge/tools
One of my intentions is to draw golf course layouts and their corresponding contour lines, this site has the relevant height lines.
https://anvaka.github.io/peak-map/#12.39/35.20202/-81.03753
Process:
Use a Inkscape extension to convert SVG to line art: https://github.com/love-open-design/LY-Drawbot-Tool-by-LOD
LY Drawbot – Workflow
Inkscape SVG -> Object to Path (If needed)
Extensions -> Generate GCode for LY Drawbot
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
/* Annotated QRNGv1 Firmware V1.1
Author: Noah G. Wood
Modified: Paul Aschmann
Copyright (c) 2019 Spooky Manufacturing, LLC
License: GPLv3.0
*/
int triggerPin = 2; // This pin will pulse our quantum circuit
int hPin = A0; // This pin measures the horizontal polarized photons
int vPin = A1; // This pin measures the vertically polarized photons
float H = 0;
float V = 0;
long previousMillis = 0;
long interval = 1000;
float maxH = 0;
float maxV = 0;
void setup() {
// Just setting up triggerPin and serial connection
//pinMode(13, OUTPUT);
pinMode(triggerPin, OUTPUT);
Serial.begin(9600);
}
int Random() {
// Pulse the laser
digitalWrite(triggerPin, HIGH);
//delay(1);
digitalWrite(triggerPin, LOW);
}
void loop() {
// The main program
// Run our program and print the random bit to serial
//delay(1000);
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
Random();
}
// Read the photoresistors
H = analogRead(hPin);
V = analogRead(vPin);
// Determine random bit
if (H > V) { // More photons in the H mode, return 0
Serial.println("-------------------- > H: ");
Serial.println(H);
Serial.println("V: ");
Serial.println(V);
if (H > maxH) {
maxH = H;
Serial.println("New max H");
}
} else if (V > H) { // More photons in the V mode, return 1
Serial.println("-------------------- > V: ");
Serial.println(V);
Serial.println("H: ");
Serial.println(H);
if (V > maxV) {
maxV = V;
Serial.println("New max V");
}
} else {
Serial.println("Same values");
}
delay(1000);
}
List: My Apps
List of Mobile Apps I have designed, developed and published, mainly under the Lithium Labs umbrella.
Generative Art Resources
During the NFT hype, generative art got a lot of attention due to its ability to programmatically, and algorithmically generate designs and art. These are a few resources I used and developed digging a little bit deeper into the subject.
Skill Share Course: https://www.skillshare.com/classes/Programming-Graphics-I-Introduction-to-Generative-Art/782118657
Golf Shaft Labels
This was a short lived, fun start up idea I had around creating personalized and custom stickers for golf clubs. The idea was spurred as a culmination of three problems:
First, leaving a club out on the course somewhere is very common and easy to do, but getting the club back … is not as easy. Often you only find out that you lost it days, or weeks later, and then having to call the golf course, describe the club, day, and location that it was lost, is a tedious and stressful job. when a set of clubs can cost well over $1,000 and a replacement often costing around $120. By having at least your name, and optionally your phone number on the club, it dramatically increases the chances of you getting your lost item back.
Enterprise Mobility @ SAP – Relay
This is another blog post of a series around the enterprise mobility IT team at SAP. We are an internal IT team focused on managing mobile devices, applications, and developing custom apps for SAP’s 100,000 employees. I have been a part of this team for the past six years and 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 mentioned in previous posts, apps are an essential cornerstone of mobility @ SAP. Whether they are employee initiated or driven by innovation, we adopt the underlying processes and do our best to deliver solutions that increase our end users’ productivity. This post will take a deep dive into the ideation, architecture, design, and lifecycle of an internal app called Relay. A real-time chat application initially developed in 2012 using the Business Technology Platform (Previously known as the SAP Cloud Platform). A variation of the application might be familiar to some of you SAP community users, as Messages. We recently retired the application internally due to the increased adoption of MS Teams and Slack. However, I believe that some of the concepts and premise behind the application are still relevant to share.