I recently purchased a Concept2 rower and started doing some indoor rowing to change up my workout routines. I was considering developing a live rowing platform to compete with friends and make the workouts more interactive. It turned out there were already a few options on the market, so I shelved the idea.
But, since the Concept2 allows 3rd party connectivity, I still was curious how integration, discovery, and notifications would work from an iOS device. I was able to find a nice SDK, but it was considerably outdated (5 years) so I decided to use that as a foundation and port the application to Swift 5 and get it working for anyone else interested in developing a rowing app for iOS.
Over the past couple of years I have had a keen interest in quantum computing and the optimism of its benefits over traditional computing methods. I have read countless papers, articles and spent a considerable amount of time deciding how I would explain it to a 5 year old.
ELI5: A normal computer is like a light switch is either on or off. A quantum computer is more like a dimmer switch, it can be partially on, or partially off.
It’s overly simplistic but gives a simple understanding of the potential states that the device can be in. I also wonder how I would explain QC to friends or technology friends. Trying to find the right words that quantify both its elementary simplicity and its quantitative complexity is difficult, especially when you yourself don’t fully grasp it. But like other technologies, the best way to learn is by doing … experimenting, researching and proofing. Leading to your own understanding and comprehension of existing anecdotes and theories or new ones.
As a creator and contributer to open source projects I am often torn as how to license my projects to encourage the greater community to contribute and have creative freedom with a project. However I would still try to ensure that I maintain control over as much of the intellectual property (IP) or business value as possible – especially if this value is what I have in place as a revenue generator and would enable me to continue development of the project.
Sentry – which is a great error logging/monitoring tool – recently evaluated their open source licensing and had some reasonable goals in mind:
- Anyone should be able to run Sentry for themselves or their business
- No difference between our cloud service and our open-source product (no open-core model)
- Minimal limitations on usage of code; as free as possible
- Protection from other companies selling our work
Due to the weight on the last point, Sentry decided to change their license from BSD-3/Apache-2.0 to BSL.
This is a basic and simplistic implementation of RSA in JS which used to understand the implementation/math required for encryption/decryption and opportunities for hacking RSA using Quantum Computing.
If you are looking for a nice article on RSA and a small practical example, this might be helpful https://simple.wikipedia.org/wiki/RSA_algorithm
Hacking RSA using Prime Number Factorization
Hacking RSA uses the numeric public exponent from the public key and tries to calculate its largest common multiple factors (p and q) – from those two numbers you can calculate the Private Key. Using traditional computing to hack “small” RSA public keys can be done with a few modern algorithms, including the currently fastest General Number Field Sieve.
A nice library for General Number Field Sieves is http://cado-nfs.gforge.inria.fr/
You can use this site to factor a prime without having to install anything https://asecuritysite.com/encryption/factors. Enter the Public Key which gets generated by the code (should be < 100 bits for the site to be able to factor)
Edit the index.js file if you would like to edit the size or message being encrypted:
// Message const message = 'Hello'; // Generate RSA keys (bits), max is 232 digits (768 bits) const keys = RSA.generate(80);
Run the code
npm run start
Public Key Exponent (e):65537
Random Prime (p): 798000088811
Random Prime (q): 563631878177
Totient (lcm of (p-1)(q-1)): 224889144420297550405280
Public Key (n = p * q): 449778288841956732777547
Public Key Length: 24 digits (79 bits)
Private Key (d = e multiplicative inverse (totient)): 210473481577786144493313
Private Key Length: 24 digits (78 bits)
Encrypted (c = encoded message (m) ^ e modulo n): 426078873740860671226694
Decrypted (m = encrypted message (c) ^ d modulo n): 72101108108111
Source Code: https://github.com/paschmann/blockchain_origin
Rasa is an open source machine learning framework to automate text-and voice-based conversations.
Rasa UI is a web application built on top of, and for Rasa. Rasa UI provides a web application to quickly and easily be able to create and manage bots, NLU components (Regex, Examples, Entities, Intents, etc.) and Core components (Stories, Actions, Responses, etc.) through a web interface. It also provides some convenience features for Rasa, like training and loading your models, monitoring usage or viewing logs.
I developed Rasa UI to help me manage my bots as well as creating and managing the training data. The app is developed on NodeJS, and uses a simple SQLite DB for persistence (previously PostgresDB).