Notes from 10/6–17/6
Blockchain
Blockchain Finance Solutions
Pretty familiar use cases, but once again an overly optimistic view.
How Truffle Teams Will Change Enterprise Blockchain Development
Truffle Teams is a Zero Config CI. Streamlines a team’s workflow, giving a shared compilation and testing environment.
The key benefit of Truffle Teams is the ability to enable a team, no matter the size, to view where your project is going during the enter product life cycle. From the development perspective, teams can watch where things are failing and succeeding to respond accordingly. From the operations side, teams are monitoring what’s been deployed and how people are interacting with your contracts with as little configuration as possible.
Wow this is pretty amazing.
Cryptography
The clever cryptography behind Apple’s “Find My” feature
Ah yes so I guessed it right, the private key is generated and stored only among your devices and you need more than one device for a multi-key system to access it. But I wonder if you’re able to just track the bluetooth signature from the public key?
When you want to find your stolen laptop, you turn to your second Apple device — let’s say an iPad — which contains both the same private key as the laptop and has generated the same series of rotating public keys. When you tap a button to find your laptop, the iPad uploads the same hash of the public key to Apple as an identifier so that Apple can search through its millions upon millions of stored encrypted locations and find the matching hash. One complicating factor is that iPad’s hash of the public key won’t be the same as the one from your stolen laptop, since the public key has likely rotated many times since the stranger’s iPhone picked it up. Apple didn’t quite explain how this works. But Johns Hopkins’ Green points out that the iPad could upload a series of hashes of all its previous public keys so that Apple could sort through them to pull out the previous location where the laptop was spotted.
Development
Public APIs list
I suppose just in case you want to try and build something for yourself?
7 absolute truths I unlearned as junior developer
Focus on automation over documentation where appropriate. Tests or other forms of automation are less likely to go out of sync. So instead I try to focus on writing good tests with clear language, so developers working on code I wrote are able to see how the project functions with working code. Another example is automating the installation of an application with a few comments, rather than a long and detailed installation guide.
Being overly opinionated on topics you lack real-world experience with is pretty arrogant. I came across as SUCH a know-it-all, insisting there must be tests yet having hardly any experience on what that really looked like at scale. Don’t be like me. It’s important to have principles, but also to be open and truly interested to understand other people’s experiences and perspectives.
Not all experience is created equal. My experience coding in my bedroom, working as a student, working in CS research, and working at a growing startup are all valuable kinds of experience. But they aren’t all the same. Early in your career, you can learn 10x more in a supportive team in 1 year, than coding on your own (or with minimal feedback) for 5 years. If your code is never reviewed by other developers, you will not learn as fast as you can — by an enormous factor.
WISDOM!!!
Really useful and humbling.
10 Coding Prompts for your Portfolio
- Intermittent fasting app
- News aggregator
- Online store using external APIs
- Blog using your own DB schema
- Wishlist app
- Advert board
- Reservation app with AI features
- Serverless community forum
- Chatroom using cloud
- Extend the chatroom to have subscription services
They’ve also mentioned quite a few tools. The MEAN/MERN stack, serverless framework, Printful APIs
Software Engineering for Machine Learning: A Case Study
In addition, we have identified three aspects of the AI domain that make it fundamentally different from prior software application domains: 1) discovering, managing, and versioning the data needed for machine learning applications is much more complex and difficult than other types of software engineering, 2) model customization and model reuse require very different skills than are typically found in software teams, and 3) AI components are more difficult to handle as distinct modules than traditional software components — models may be “entangled” in complex ways and experience non-monotonic error behavior.
Seems like there will be an entire skillset of just machine learning architectural design and how to build teams around it.
Specific best practices mentioned
- End-to-end pipeline support — training, deployment, integration of models, internal tools to help automate processes
- Data availability, collection, cleaning and management — need to blend data management tools with their ML frameworks
- Education and training — company holds a twice yearly internal conference on machine learning and data science, coupled with mailing lists and online forums to enable anyone to ask and answer technical questions
- Model debugging and interoperability — making models more interpretable
- Model evaluation, evolution and deployment — need to evaluate your experiments
- Compliance — principles around uses of AI in the open world
Two things are worth noticing. First, across the board, Data Availability, Collection, Cleaning, and Management, is ranked as the top challenge by many respondents, no matter their experience level. We find similarly consistent ranking for issues around the categories of end-to-end pipeline support and collaboration and working culture. Second, some of the challenges rise or fall in importance as the respondents’ experience with AI differs. For example, education and training is far more important to those with low experience levels in AI than those with more experience.
Life Optimisation
How I Survived Insane Hypergrowth at Airbnb
1. Don’t just identify a problem. Start fixing it by enlisting others.
A team player who is constructive when problems arise is far likelier to advance, and advance quickly. Focus on outcomes, and you’ll become the coworker everyone wants to work with: someone who can inspire the organization to take action when they want to. Simply put, someone who can get it done.
2. Understand the (ever-broadening) context.
Being an effective team player isn’t just about solving problems as they arise. It’s also a matter of understanding, and contributing to, the priorities of the overall business. Because what matters to you most might not be what the company needs to focus on at a given moment in time.
3. Confront challenges head-on. You’ll get through it!
4. Everything changes all the time. Get over it.
Take solace in the fact that no organization is perfect. To survive, every company must change and flex. For instance, at Airbnb we reoriented the product team at least every year as the product’s external environment and community of users shifted. Change also doesn’t mean that something was wrong before. The internal organization simply needs to respond to exogenous factors.
5. It’s all about the EQ.