I got into learning about web3 properly around two years ago when I decided to start learning Solidity, I tried to educate myself around the different products being built in the space and landed on Everest which was originally built by Edge & Node. Everest was a registry of products built in the space, it satisfied my curiosity as Product Hunt traditionally did. That took me into the rabbit hole of The Graph and I learned everything about it and listened to as many GRTiQ podcasts as I could. The podcast provides such great insight into the space (it's my #2 podcast just below Acquired).
I ended up applying to help at Edge and Node as I loved their vibe and saw the momentum & push that followed them, things didn't work out (roles changed & I changed on what I was looking for) but I've followed them ever since. I got to chat with Brandon Ramirez and Adam Fuller which I loved as I got an insight into how web3 culture was different to the traditional format of where I'd come from as a CTO / CPO in web2 and how personal actions + value input were a lot more recognised and attributable than the traditional format. I really resonated with how The Graph had structured the ecosystem and how that format could be taken to transform traditional company structures. Last year I went deeper still and went into figuring out how to transition a product I was building at the time (linktree for personal assets) into the web3 space.
As an initial guide to my experience as an engineer, my first languages were JS and early web frameworks, I then studied Computer Science at University and was exposed to C, C++ and Java, my first role out of University was working primarily in Java as an Android Engineer. I then got into Objective C to build iOS apps, then Ruby on Rails to facilitate the backend and frontend for the applications that I helped create. Over the last 10 years I've stuck with Ruby on Rails, have dabbled across other web frameworks, and transitioned from Java to Kotlin and Objective-C to Swift for Mobile Development. My ability to pickup new languages is pretty good just from pure exposure to many different tech stacks after running my own development / product studio, which has helped a ton when getting into web3.
I think the first entry point was just learning wtf testnets were, now I just think of them as environments that protocols host their business logic under. I'd say they're essentially global hosting environments, almost as if AWS was hosted in a staging environment and you could access logs that every developer writes onto the service. To interact you also need to access the right amount of test eth (or whatever token you're running under), which I guess would be test credits in AWS terms but slightly more difficult to find or access as you need to get them through a faucet. Then whilst testnets are hosted, in order to test and run locally you sometimes need to sync transactions to your local machine which can take a long time - pretty much the same as fetching all logs from a busy staging environment.
Contracts, contracts are everywhere in the world and especially in the ETH world. I then went onto understanding how solidity contracts work and what they do. They're basically code deployments that exist always for the world to see. Public deployments if you like, if you mess up you can really mess up. I immediately liked the concept of smart contracts.
I then focussed on creating a subgraph, deployed it on the hosted service of The Graph and was able to interact with it from my Rails app (thanks ethereum.rb). I pretty much deep dived into all of this over a weekend, this gave me some confidence that I kind of understood a little bit of how you could build products in the web3 space. I was living in Prague at the time and fortunately for me ETHPrague was happening in 2022.
At ETHPrague I ended up being the designer, I didn't go too deep into the technicals just because I knew the others in the team knew a whole lot more than me about the web3 space. They talked lingo that I was just soaking up. I did end up helping on the iOS app though and managed to integrate with WalletConnect which the app then fetched event details, attendees and profiles. Even after integrating a pretty easy (and well built) sdk, it exposes you to fundamental concepts that you need to learn about for web3. Wallet addresses, chains, networks, how to handle long running tasks (network requests generally take awhile in web3), debugging, checking etherscan for transactions. The project we built at ETHPrague was: https://devpost.com/software/test-w7apte.
I ended up applying to help at Edge and Node as I loved their vibe and saw the momentum & push that followed them, things didn't work out (roles changed & I changed on what I was looking for) but I've followed them ever since. I got to chat with Brandon Ramirez and Adam Fuller which I loved as I got an insight into how web3 culture was different to the traditional format of where I'd come from as a CTO / CPO in web2 and how personal actions + value input were a lot more recognised and attributable than the traditional format. I really resonated with how The Graph had structured the ecosystem and how that format could be taken to transform traditional company structures. Last year I went deeper still and went into figuring out how to transition a product I was building at the time (linktree for personal assets) into the web3 space.
As an initial guide to my experience as an engineer, my first languages were JS and early web frameworks, I then studied Computer Science at University and was exposed to C, C++ and Java, my first role out of University was working primarily in Java as an Android Engineer. I then got into Objective C to build iOS apps, then Ruby on Rails to facilitate the backend and frontend for the applications that I helped create. Over the last 10 years I've stuck with Ruby on Rails, have dabbled across other web frameworks, and transitioned from Java to Kotlin and Objective-C to Swift for Mobile Development. My ability to pickup new languages is pretty good just from pure exposure to many different tech stacks after running my own development / product studio, which has helped a ton when getting into web3.
I think the first entry point was just learning wtf testnets were, now I just think of them as environments that protocols host their business logic under. I'd say they're essentially global hosting environments, almost as if AWS was hosted in a staging environment and you could access logs that every developer writes onto the service. To interact you also need to access the right amount of test eth (or whatever token you're running under), which I guess would be test credits in AWS terms but slightly more difficult to find or access as you need to get them through a faucet. Then whilst testnets are hosted, in order to test and run locally you sometimes need to sync transactions to your local machine which can take a long time - pretty much the same as fetching all logs from a busy staging environment.
Contracts, contracts are everywhere in the world and especially in the ETH world. I then went onto understanding how solidity contracts work and what they do. They're basically code deployments that exist always for the world to see. Public deployments if you like, if you mess up you can really mess up. I immediately liked the concept of smart contracts.
I then focussed on creating a subgraph, deployed it on the hosted service of The Graph and was able to interact with it from my Rails app (thanks ethereum.rb). I pretty much deep dived into all of this over a weekend, this gave me some confidence that I kind of understood a little bit of how you could build products in the web3 space. I was living in Prague at the time and fortunately for me ETHPrague was happening in 2022.
At ETHPrague I ended up being the designer, I didn't go too deep into the technicals just because I knew the others in the team knew a whole lot more than me about the web3 space. They talked lingo that I was just soaking up. I did end up helping on the iOS app though and managed to integrate with WalletConnect which the app then fetched event details, attendees and profiles. Even after integrating a pretty easy (and well built) sdk, it exposes you to fundamental concepts that you need to learn about for web3. Wallet addresses, chains, networks, how to handle long running tasks (network requests generally take awhile in web3), debugging, checking etherscan for transactions. The project we built at ETHPrague was: https://devpost.com/software/test-w7apte.
After the hackathon I felt really encouraged, I think I realised I had enough knowledge to get by in the space and that the experience I had in the past does follow through to this space. I also love taking chaos and making structure and a lot of the time web3 feels chaotic. Documentation can be all over the place, there's new protocols and tools launching every month, the adoption of new things is super quick. There's so many different ways to do the same thing.
My second hackathon was in New York, this was towards the end of my tenure at my full-time role and I wanted to do something for me. I flew out to New York on Friday, landed in the late afternoon, managed to attend the kick off session at the venue at Pier Sixty. Metup with my teammate Alok (who we hacked together in Prague) and got to work. The ETHGlobal New York project was an interesting one, Alok and I are mobile developers and we ended up building an iOS app without a backend or any contracts and we used a ton of new technologies to help. I dived into XMTP (the messaging protocol that Coinbase use), WalletConnect (this time with a newer SDK), NextID, ApeCoin, NounsDAO, Lens Protocol and ENS. At the start of the hackathon, I'd only heard of ENS and WalletConnect, so this was huge for my learning. This was our submitted project after 2 full days (and a couple of hours sleep): https://ethglobal.com/showcase/vouch-messenger-qqvjm. I flew back to the UK the next day after a few hours of NY tourism. I was super grateful for Alok, his knowledge of the scene is really impressive and helped connect it all together and did some really polished demos. We managed to pickup two prizes.
After New York I was pretty hyped to continue, I joined the ETHOnline hackathon and worked alongside Alok again and Shubham who built out the backend. The ETHOnline hackathon was spread out across a couple of weeks and was done async. Whilst it's not as intensive as an in-person hackathon, it's still fun to do. I found it difficult to understand how long to work on the project, as at least with in-person hackathons you get 48 hours. With an async one you pretty much can work on it however long you like. We built Perks: https://ethglobal.com/showcase/perks-gv9d1 - this was probably my favourite concept I've worked on so far and still think it has legs to continue building. Again I worked on the iOS side and built out smart accounts utilising Unipass, and then integrated with Push Protocol to handle notifications and in-app chat. We picked up three prizes!
Last but not least for 2023, I was part of the Constellation: A Chainlink Hackathon, this time I switched it up and moved over to building on Android, back to my roots. We used Android as we wanted to utilise Polygon ID and they hadn't made a Swift package yet, so Kotlin it was. The mobile app integrated with Polygon ID and XMTP. I loved how this mobile app functioned, it was a really cool way of understanding DID (Decentralized Identifiers) and how they can help verification in social apps. We focussed on the events space for Linkster, so we built a way for Event organisers to issue Polygon ID certificates for in-person authentication, which granted users access to the event and the ability for them to connect. We utilised end-to-end encrypted XMTP messaging which allowed participants of the event to reach out and chat with each other. We used some similar formats to other social apps, like scanning profiles to connect with others. The QR codes acted as a way to firstly fetch the users information but also to then authenticate them through Polygon ID. This prevents anonymous attacks and scamming that happens so much at the moment in wallet messaging apps. We created a backend which hosts the issuer node, and had endpoints for event and personal credential creation as well as verification. The Blockchain integration involved deployment on Avalanche Fuji, using Chainlink data feeds for automatic payments and CCIP for interoperability between Polygon and Avalanche. The concept for Linkster is quite similar to what Attendify was pre-Hopin acquisition.
After working with a number of different SDKs, especially when building in native mobile languages I've noticed that there's a lack of development time put into the Swift & Kotlin libraries compared with web frameworks. I think more effort can be placed to make mobile documentation better and easier for new adopters to use these libraries. I've forked about 4 repos now with a slightly custom integration to make the code work, integrating with multiple web3 SDKs can also be troublesome as they may use different eth dependencies to each other.
Getting into this space has really reminded me of the start of the mobile era, Push Protocol and Base have similarities of Parse (RIP). Then XMTP reminds me of services like ably. Services like Livepeer are going after non-web3 livestreaming applications, soon (if not now) these services will become web2 competitors and I'm here for it. I'm excited to see how The Graph positions itself to grow beyond subgraphs and become the provider for other data services.
Next up for hackathons, I think I'll try my hand on being more on the backend / contract side as I've gained more understanding of the fundamentals of product building in the web3 space. Thanks to ETHPrague, ETHGlobal and Chainlink for the experiences so far.
If you're still new to the space, the hackathons are a great way to expose yourself to the scene. The sponsorship provided by partners to the events is super strong so it makes for a great experience.
Keep building 🚀.