I was recently looking for a summarized version of a Random Walk Down Wall Street from Burton Malkiel when I came across this website. These are some really nice “Booklets” which are condensed versions of books, concepts or ideas. These are perfect to get a summary of something you have have already read, or something that interests you and can use to start digging deeper.
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
Plaid is a company in the financial technology, or more commonly known as the “fintech” space, which was founded in 2013, pivoted sometime in 2014 and was purchased by Visa in January 2020 for $5.3 billion dollars.
Plaid was founded by two entrepreneurs who set out to develop a consumer app in the budgeting and account reconciliation field. A mobile or app-based version of Quicken or Intuits Quick Books where users could provide their credit cards and bank account and the interface would allow them to get some insights into their spending habits and create budgets and reports to better manage their personal finances. The startup entered and won a prestigious grand prize award during a TechCrunch Disrupt hackathon in New York in 2013 with their application which at that time was called “Rambler”. During the development process the founders recognized that one of the biggest challenges to building “Rambler” was the bank connectivity component – it was time consuming and resource intensive to develop a solution which connected to each financial institution. The duo wanted their application to connect to the majority of US banks and this required writing code which would need to securely connect and consume the banks exposed API’s for retrieving account information, transaction reports and transaction details. This development exercise was required for each new financial institution the company wanted to include in their app.
Source Code: https://github.com/paschmann/blockchain_origin
It’s a relevant and intriguing story of how one employee at Kroger, Michael Kullen, wrote a 6 page letter to a Kroger VP, encouraging them to consider a different business model. He was not taken seriously, resigned from Kroger and opened his own grocery chain called King Kullen. It is considered Americas First Supermarket due to it having separate departments; self-service; discount pricing; chain marketing; and volume dealing. In 2007 King Kullen had revenues of $800 million and operates 32 stores in New York state.
”It only takes a split second to smile and forget, yet to someone that needed it, it can last a lifetime.”
Like a lot of my side projects, golfedout.com was built out of a personal need. Golfedout is intended to track the variety of golf courses I have played over the last 6 or 7 years since I took up the game a little more seriously. When I started the project it was a simple list of courses, and then evolved into a more elaborate application which allowed you to follow other golfers, partake in a leader board, view course details such as architects or addresses and I also added a gamification aspect. Another aspect I was interested in, is how many of the top 100 golf courses have I played? How many PGA tour courses have I played? In the end I believe I may have made golfedout.com considerably more complex than others might have needed. If you are a avid golfed or interested, here is a link to my golfedout.com profile: https://golfedout.com/profile/rangerat