Buzzwords To Come.
Published 02 January 2022 at Yours, Kewbish. 2680 words. Subscribe via RSS.
Introduction
I was speaking with some friends who’d read a previous blog post earlier - we were talking about the balance of trying new things out to learn and explore versus continuing down paths that we were already on. He mentioned that this was how reinforcement learning works, which was a very interesting analogy that I hadn’t thought of. Generally most of the time, the model / agent does whatever it thinks will result in the best outcome, but for some x%
of the time, it takes a random action that’s not in the set of ‘possibly beneficial paths’. That x%
is how it discovers new opportunities for potentially good paths, perhaps finding shorter or more efficient routes to solve a problem.
I think this year, I’d like to increase my x%
. While I want to keep tinkering on some of the projects I have going on right now, I’m looking at a couple areas in SWE and tech that seem either interesting, inspiring, or very applicable to my current interests. For the short-term future, at least, I think I’ve mostly worked out what my ‘best paths’ that I’d be default be taking, so one of my goals for 2022 is to take steps off those paths and figure out what intriguing areas of development there are outside of my development ‘comfort zone’. Throughout the last couple months, I’ve been meaning to take a look at a couple of areas of tech: Web3, NLP / AI, and diving deeper into the technical details of web dev.
Web3
For the uninitiated (like myself), Web3 is a term used to refer to the concept of a new Internet paradigm focusing not on walled gardens and mass social media interactions, as in Web2, but on ideas of decentralization and historicity preserved through blockchain models. I’m really interested in where Web3 seems to be going - it seems like many people from all corners of tech are experimenting and getting involved in it, and I still feel that I don’t know much about it. I’d like to get to understand the basics, at least, to make my own opinions on Web3 for myself (because boy, Web3 is a very polarized and opinionated topic).
This budding interest is likely because I’ve been spending a lot of time on Twitter recently. I follow quite a few people adjacent to, or involved in, the Web3 space, so I’ve been seeing a lot of Web3 and crypto-related1 activity on my timeline. So may people seem to be getting involved in the community that I can’t help but wonder what it’s all about. Seeing the development of the Constitution DAO, watching the wonderful creators I personally follow getting involved, observing the power of Web3 to unite and bring people together - those experiences were pretty amazing. I’m also inspired by the viral nature of these Web3-based communities, where almost everyone’s in some DAO or has some cute .eth tag in their Twitter bio. Maybe it’s just because I want to surround myself with all these bright tech minds and crypto folks, but I do want into their passionate circles of tech and fun and Web3.
An interesting side effect of my way of stumbling into Web3 is that I wasn’t really exposed to any of the negatives of Web3 until I started looking elsewhere for information on crypto. I first heard of Web3 through generative artist Matt DesLauriers, and I saw how creators like him were using crypto to eplore new streams of revenue and share their work in new ways. Recently, however, especially on HN and other tech communities, I’ve started to find a decent amount of crypto criticism as well. I’ve personally enjoyed reading pieces like Stephen Diehl’s ‘The Handwavy Technobabble Nothingburger’ and Jay Pinho’s cleverly named ‘Web3? I have my DAOts’. I know it’s easy, and I’ve been logically reasoned into agreeing multiple times, to hate on the Bored Apes or whatever up-and-coming CryptoPunk movement, but I can’t help but think I’m missing their side of the story as well. My friends were joking that I’d become a ‘Web3 shill’ after I’d ironically used the phrase ‘WAGMI’2. It’s interesting to me that these little Web3 nods are so strongly associated with their community. I want to see the whole picture - I think my current sources of information lie too far on either side of the ‘is web3 beneficial?’ spectrum. I’m not sure which ‘side’ (I guess there’s a false dichotomy here) I lean more towards myself, but I think exploring crypto a bit for myself would let me solidify my thoughts.
Some resources I’ve found are the CryptoZombies page, and fellow Google Code-in GPW Scott Sunarto’s handbook for Working in Web3. I’ve skimmed both pages, and I think they’d be a solid start for my journey. I especially like how Sunarto’s page is laid out sequentially in order of exploring Web3 with cute little checklists and curated resources, so I’ll see how far I can get with that. I’d like to get started in exploring Solidity (the language of smart contracts associated with ETH chains) on testnets, because I quite frankly don’t want to burn actual money on this yet. I also have a very random idea for a proof-of-concept Discord-based blockchain that I might want to work on, but we’ll see what that’d look like.
Current barriers for entry mostly hinge on the fact that I’m not quite 18 yet, and as such can’t use many (or any, really) exchanges to convert fiat into crypto. This is fine - I don’t think I need to hold any actual coins yet and I think I can get by fine with testcoins from faucets. If it comes time to actually fund my projects, I’ll probably just wheedle my friends who are of age and into crypto to buy some for me. As of now, I also don’t have any wallets yet, but I think that’s quite easy to remedy.
NLP and AI for Semantics
Something else I’m interested in exploring is NLP, specifically in AI applied towards semantics and tools for thought. I’ve seen a lot of amazing work surrounding things like semantic resurfacing, decentralized article recommender systems, and tonnes more, and I think there’s a lot of cool applications possible, particularly in HCI and computer interfaces. It also helps, though this is a lesser reason, that AI’s pretty in demand, and is favourably seen as a valuable base skill - but the HCI reasons still come first. One friend in particular’s doing some really interesting work with NLP and recommender systems, and while I don’t think that it’s out by the time this post is up, it was very inspiring to go play around with a system that was able to capture and link my ideas together that well.
One of the things about AI is that it’s become one of those CS buzzwords - a ‘slap this onto x and you’ll get a winning product’ sort of thing. It’s so ubiquitous in today’s technologies that it’s taken almost as a default, or as something that should be implemented as a key selling point for everything. Alternatively, because it’s not very well understood beyond the field of CS or science in general, I find that people revere it as if it were a dangerous deity with scary whims and magic powers. When I first started getting into development, I remember that was when AI for data science was starting to ingrain itself in popular media. Now, it’s almost a de-facto area of study for CS students - I can’t count the number of times my parents have said something along the lines of ‘ooh, AI. You should get into that, it’s really hot in the job market’. I see their point, which is one of the reasons I’ve decided to try to explore it this year. However, saying all this, I also want to be careful that I don’t personally skew my projects and forays into AI with the idea that I want to apply it for commercial or clout purposes. I don’t really think making another face recognition hackathon project’ll be all that useful to the world (though perhaps I’ll take a stab at one while learning, who knows), but tackling applications meaningful to me, like tools for thought and knowledge management, would be interesting.
Luckily, AI in general has very low barriers to entry, and there’s plenty of resources that I’ve been either recommended, or found in the past. Compared to Web3, which is still a budding field, AI at least seems to have more systematic guides and paths for specialization. There are tonnes of resources and things for learning AI (I think I’ve gone through that ‘build your own AI from scratch’ one-layer neural network series before), but I think I’ve found an interesting resource specifically applied to semantics. Pinecone’s (a company I hadn’t heard of before finding this course) released an ebook / MOOC-like course applying NLP for semantic search. I guess it also wouldn’t hurt to start playing around with Tensorflow and Keras and whatever fancy NLP/AI people work with nowadays, but I really’d like to at least learn enough to build a small MVP for my own notetaking system. A couple ideas I have at the moment are for article condensation / prioritization scorers, and maybe something that can analyze the common aspects of articles I enjoy, but to be honest, I don’t really know enough about NLP to even know what projects I can work on.
How I Build
Another core tenet I’d like to set for this year is changing the way I build. Not in a particularly revolutionary way, but if you spend any time at all on Twitter, you’ll see the #BuildInPublic trends and the communities of developers sharing what they’re working on each day. Yesterday, one of my friends requested that I share what I was working on more frequently, and ping people who I thought would find whatever projects I was tinkering with cool. I quickly rebutted with a ‘but I don’t really work on anything’, but they have a point. I find that I tend to do the whole ‘dev in secret until I have something that’s reasonably done, then release, and repeat cycle’, and I think maybe getting more feedback on my ideas and showing off things I’m passionate about to my friends would help me expand my points of view3.
I don’t have a goal for the projects I’d like to build this year yet, or a set number of things I want to ship, but to keep me aligned with my two steering goals for this year, I’ll tentatively set myself the goal of making something Web3 and crypto related, as well as making something NLP / AI related. ‘Something’ is purposefully a loose definition here: I don’t think a single 30-line smart contract or cookie-cutter Tensorflow file’d count, but I don’t want to put any explicit quantifiers on what I must build either. I’ll see how it goes, but I think I’ll evaluate whatever I’ve done with respect to a decent level of polish and how happy I am with the project.
Speaking of projects, I feel that my work is usully really self-contained and atomic. They’re embodiements, I suppose, of the least common denominator principle I discussed a couple blog posts back. Look at my GitHub - there’s lots of tinkered-through projects, doing one little thing with a pretty clear scope and somewhat obvious start / end criteria. I experiment a lot with different technologies or purposes, but there’s no real big projects - at least, not ones I’ve built a concrete user base around or seem impressive enough to feature on my LinkedIn or resume. As much as I’d like to pretend to be okay with being a software artisan and not having to worry about project maintenance or anything, I do slightly crave having an actual impact too. Hopefully, I can get some of this with the internship I’m starting this summer, but I’d maybe like to think of useful side projects that I can work on that not only benefit my very niche workflows, but could work for other people too.
Conclusion
I have a bunch of personal and non-tech related goals for this year, but as for the rest of my miscellaneous technical goals: I want to finish up the FullStackOpen course to properly learn React, I want to keep up my Anki habits when I get back to school, and I want to keep this blog up and running, with posts at least every month, while I work through my second term at university. This, combined with the aforementioned Web3 and NLP/AI, should prove to produce a very interesting and technically challenging year. I don’t know how productive it is to sit here at the end of 2021 and romanticize finally getting into these areas of tech - I realistically know that I probably won’t be able to tackle all of these projects this year. But it’s nice to have goals and to have a backlog of things to explore and work on, so let’s hope I do manage to increase my x%
.Something that’ll likely help me stay accountable with all this is that my friends and I are starting to talk through potentially making study groups to work through resources at our own pace but together, so we can leverage the community we already have to enrich our personal knowledge. It’ll likely be a model similar to Azlen Elza’s learning groups, but we’ll see how that goes.
It’s super early in 2022, but I guess I’ve already started slightly increasing my x%
. I’ve just accepted an internship offer at a very spicy company (no, not FAANG, but I like their culture and their product), and I’m very excited to have the opportunity to work on actual products that have real impacts across so many millions of users. Everyone I’ve met so far at the company’s been amazing - I hope this isn’t me being starstruck, but I’m really looking forward to starting to work with them in May. I’m surprised that I even got an offer and landed an internships seeing as I’m still an unexperienced, slightly confused first year, and as I started applying super late, but hey, miracles happen. This’ll be my first ‘real’ job, and while I’m a bit nervous about having actual deadlines and responsibilities, I think it’ll be a great opportunity to grow and develop my skills, and again, I’m extremely excited - 2022’s been off to a great start so far.
Hereafter, the abbreviation ‘crypto’ will refer to cryptocurrency of the Bitcoin sort; cryptography folks kindly avoid getting triggered at me kthxbye. ↩︎
Which stands for ‘we’re all going to make it’, a common Web3 phrase often followed by some combination of the rocket, diamond, hands, and starstruck emojis. ↩︎
A slight aside: I was looking through some of the project ideas I’d come up with at the very beginning of 2020, and I thought I’d share some of them here. They’re very obviously me, and all rather niche and quirky:
- Python + Flask - Stable matching algorithm for students to rank the topics they’d like to do the most, and arranges groups and matches topics to students. (I just wanted first pick at project topics)
- Python - XORcise - socket ‘chat’ where people compete to XOR / AND / whatever (the networking would be interesting)
- Tensorflow + Kaggle - How likely are you to survive the Titanic? (still a half-solid idea)
- Vue - LinkTree generator (except LinkTree is already a thing)
- Python - Blackmail converter (? what blackmail did I even have)
- C, Python - Keyspam - Brainfrick [sic] transpiler
- Python - Regex - Carbon alkane naming CLI (I think I wanted extra biology points)
- Tensorflow - Facial recognition and social / physical distance detector (why was the facial recognition a thing?)
I have no idea how I came up with any of these, but hey - I was nothing if not rather creative back then. ↩︎