I’ve been thinking about AI recently, mainly due to my proximity to it and because of the way it’s made its way into almost everything I use. I can’t say that I enjoy it, or that I even use it that frequently, but it’s there.
I think of myself as a someone that does a little bit of everything. My skills are heavily skewed towards the EE/CS spectrum, but I have a good dose of creative energy in me that I try and express where I can. Not to mention the handful of "side quests" I'll go on just for the sake of broadening my horizons. To my amazement AI has somehow found its way into all of these areas.
I have to be honest, I never really liked AI. I can understand the hype behind it, and there is a case where I can see someone having some marginal improvement in efficiency for some hyper-specific problem. But even with this very real improvement, I still struggle to use it. Or even care about it. So why even talk about it?
Well, it doesn't seem to be going away any time soon, so I might as well talk about it.
There seems to be two major camps in this AI race, the ones that think AI is going to solve every problem under the sun (so you better jump on the bandwagon now) and the ones that think AI is going to ruin absolutely everything it touches (so boycott it now while you still can).
I think AI has it's very niche uses, and will continue to have these niche uses, and maybe they're helpful in some way. But AI also has a lot of downsides, it makes mistakes, and in my honest opinion it makes bad art. Bad artificial art. But sometimes the art it creates isn’t all that bad. I'll get to that.
Oh and there's also an AI bubble that will pop any day now...
There are people out there who are trying to make AI more usable and less error-prone so that maybe it can be helpful for those use case out there. It's not going away any time soon, so we might as well improve it while we still can, right? Regardless of the cost. Or maybe even break it while it's still breakable.
There are also people out there that refuse to use AI, regardless of how much it's being shoved into almost every tech product. I find myself to fall into that camp, but not by deliberate action. Or inaction, in this case.
I mentioned before that I liked going on "side quests". I enjoy learning new things just for the sake of learning them, and with the hopes that I can actually apply that knowledge later on down the road. There have been times where I've thrown in a prompt to AI just to see what it would do, or maybe to find some information that I can't find through a normal search engine. But even then, I follow up with more information that I've found from other sources, just to compare the answers. I don't know enough about the things that prompt for an answer, so once I find the answer I feel like I have to double check the work. I just don't have much of a personal use for AI; it doesn't revolutionize anything for me personally, other than acting like a glorified search engine that I still have to double check.
So, overall, AI isn't something I use much. End of story right.
Right?
My problem, or I guess what makes me want to talk about AI, is how it's forcing us to confront our relationship with art.
I mentioned before that I have a bit of a creative streak. I try and express myself and learn the skills that I need to be able to express myself. I could prompt an AI to make the art for my stories, or to write my stories for me, or to give me ideas for said stories. People say AI is just a "tool", so what does it matter that you're using it for art. A paintbrush is a tool, so is a hammer, etc. The thing is, though, that a paintbrush doesn't just paint for you, neither does the hammer build something on your behalf. You still need the skill to use the tool to get what you want out of it. Sure I could spend my time learning how to prompt an AI to effectively get what I want out of it... or I could just learn how to use the non-generative tools to do what I want instead. Why have a LLM generate and modify an image for me if I could just modify the image myself? If I want to try and draw something that I've never tried drawing before, why not try learning how to draw. Or if anything, pay an artist to do so? While I can understand if it's just a quick image that someone wants to create for laughs, it starts to become an issue when it's used in place of learning the skills necessary to create what you want.
I've mentioned before that art is just as much about the process than it is about the final product, and part of what makes art art is the fact that there's always a process to it.
"Tech companies are making it possible to render a spitballed outline very quickly. Using their tools, the process of creating an image (or a song or a script or a film) shrinks. It doesn’t take much thinking; the machine does the heavy lifting.
But art isn’t really about jumping from an idea to a finished piece. Art emerges from process — the middle part, which some companies hope to erase."
- Animation Obsessive, "The Process Is the Art"
An AI doesn't have hopes and dreams, it can't experience pain and loss, and it doesn't understand the complexities of the human condition. A computer is a complex machine made from various metals and silicon, wired together in beautiful patterns to provide power to tiny transistors, which are converted into binary to perform actions as dictated from the user. Computers use hexadecimal numbers to store more numbers in memory, and retrieve them when the user needs it to do so. An LLM can only regurgitate the human condition as it’s been written down by other people, real people, who have lived their lives. An LLM can only make art by copying the art made from human hands and human minds.
I remember when some of the first generative AI models first hit the scene, and artists were (rightfully) worried that they would be replaced. I don’t think we can replace artists with a generative AI. You’ll have companies that will try to save money by hiring the machine and not the artists, but I do believe that the output of a generative AI model relies so much on its inputs that it can only really make derivative works. While there is an argument to be made that no art is truly original, I do genuinely believe that art made by humans is inherently worth more than AI art.
Artistic ‘styles’ across any medium are created by people who have their own unique experiences and approaches to art (and life itself). What happens when you take that away? What’s the point of self-expression without the ‘self’? If an LLM has no sense of self, what’s there to express?
As I become more adjusted to AI tools being shoved into everything, I can’t guarantee that I’ll be able to adjust to it. I’m sure theres some programming problem out there that I’ll have to solve and maybe AI might prove itself useful to me, but for now I’m more than content not using it, making art myself no matter the quality, and paying artists for things that I don’t have the skill to do on my own.
I also encourage you to make art for yourself, or maybe even support an artists you like. Sometimes the human touch lends itself to more interesting projects and works than an AI will ever be able to make.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
I'm taking a break from both studying and writing new CS/EE/Substack posts to just write about one of my favorite shows. I just found out from a friend that it's on Netflix, and said friend is also watching it for the first time. I watched this show during a time in my life where I didn't realize that I needed it, and I'm so glad that other people will get the chance to enjoy a show that's meant so much to me over the last several years.
I was a freshman in high school when I first watched this show. That period of time was difficult for me, because it was the first time I had truly entered an 'academically rigorous' environment. The amount of schoolwork that I had to keep up with made me feel like I was drowning in textbooks. I had little to no preparation to how much work I would get, and I can't say that I had anyone around to teach me how to manage and organize my time properly, let alone anyone in my immediate circle who could actually help me in any of my classes. It was the first time that I truly realized that I had to learn how to manage my own academic affairs. It was definitely an academic 'shock', for lack of a better term.
My mom was always insistent about learning from different cultures, and instilled in me to learn the history about not just our own culture but other cultures as well. It's certainly a belief that I've taken to heart the older I've grown. As a result of her interest in other cultures, growing up, we always had different cable channels from different countries (BBC, France24, and Aljazeera were some of the news channels we would commonly watch as a family, in addition to US news). I was watching BBC news when I saw an advertisement for the show. This is how I found out about it.
I remember taking study breaks to watch the show, and waiting for the premieres. This was also around the time that I found out about tumblr, and discovered the #CloneClub. It was nice being able to find others that were interested in the same show as I was, even if we were separated by a screen. I remember watching Cosima onscreen, the scientist of the group, and thinking to myself that if she could figure out complex biomedical research, then I can certainly get through my own biology homework. It was a show that at the end of the day I enjoyed watching, not only because of how good it was, but because the focus was on women, their lives, and their autonomy. They're not just experiments, but people with their own hopes, dreams, and aspirations, desperately trying to find more information about who they are and where they come from to form some sense of identity in their lives. That's what makes the show meaningful to me. Hopefully you'll give it a watch!
"Look. So, this spiral, this is the golden ratio and it's a mathematical pattern that just repeats itself in nature, in flower petals and honeybees, and you know, the stars in the galaxy, and in every molecule of our DNA." - Cosima Niehaus
This all started because I wanted to rip a phone book in half.
About a year ago, I was brainstorming different ideas to demonstrate search algorithms to my recitation section. I had done some of my own research on different videos to play in class [1] [2] [3] [4], but I hadn't come across anything specific to my needs in the classroom.
So, when you can't find a resource that you're looking for, just make your own!
I was inspired by the CS50 "Behind the Pedagogy" video [5] where David Malan mentioned that he used to rip phone books in half to visualize the concept of Binary Search. I though that would be a great idea to do this in recitation, but it was immediately questioned due to the lack of phone books in circulation and for the expense of having to obtain phone books every single semester. So, I thought the next best thing would be to record myself ripping a phone book in half, that way we would only need to rip a phone book in half once, thus decreasing our expense of the demonstration. I was successfully able to convince my professor to do this [6].
So, I enlisted the help of two other [7] TA's (Jonathan and Ronan) and the other [7] CSE250 professor, Oliver, with help for the project. I got to work, writing the script and setting aside time to record. It was genuinely difficult to set aside time to do all of this work while in the midst of my Electrical Engineering curriculum (and the others' CS curriculum) [8], but, we all made it work.
Coincidentally, the algorithms review at the end of CSE250 was removed that same semester, and I was never able to show this video during recitation. I was able to get this video finished to premiere it during a final exam review session, so there are students who did get to see it, which is a win in my book. Also, the video is in 4k because I forgot to turn off the 4k setting on the camcorder, mainly because I didn't realize that I rented a 4k camcorder in the first place. Using the school computers to edit and render the video was incredibly time consuming because it was shot in 4k, which added to the frustration of video editing. There were supposed to be fancy effects in the video, but I decided against including them, mainly due to time constraints and the frustration of every video editing software I used constantly crashing due to the excessive file size.
So, since I didn't add the effects in the video, I'll give a short summary of the search algorithms here.
Search Algorithms Performance Test:
Oliver, the professor, asks three students to perform a search in a phone book. Whoever finishes the query first gets an A in the "class" and everyone else still searching instantly fails.
Jonathan [sic], the first student, uses a method with hashing and chaining to find the requested information in O(1) time [9].
Gina (me), the second student, uses Binary Search to find the requested information in O(log n) time. This is still longer than Jonathan's method, so Gina (me) still fails the query.
Ronan, the last student, uses Linear Search, which runs in O(n) time, and is still searching for the requested information up until the end of the video.
Different search algorithms have different uses though, so just because a search algorithm doesn't perform in O(1) time doesn't make it completely useless. Some tradeoff speed for physical space, as hash tables can get pretty large on a physical storage device and can remove the ordering of data, but have a much "faster" search time. Or binary search, which really only works if your data is sorted. Hence why Binary Search (me), still fights for a B [10]. Linear Search is easiest to implement, and can get slow when dealing with larger datasets, but is always guaranteed to work. But since this particular "test" is only measuring speed, it gets an F in this case.*
Me and a few CSE250 TA's decided to make a silly video where we acted out different search algorithms and compared their runtimes by ripping
Honestly, I'm glad we went through with the video, we all had a lot of fun making it, and I know that someone might be able to look past the silliness and find something useful.
Now, before you ask, yes we have a bunch of bad takes, "bloopers", and general shenanigans. That's a separate video, which I've also included here.
Go forth and be educated, I guess. Until next time!
Sources & Side Notes:
[1] CS50 2019 - Lecture 0 - Binary Search
[2] Linear Search vs. Binary Search
[3] There are plenty more resources on youtube w.r.t. data structures, so I'm not going to include them all. I encourage you to look into some of these videos yourself.
[4] Unrelated, but I still wanted to share Nic Barker's Data Structures Video. He also has a side-project called Clay, which is a high-performance UI layout programmed in C. I recommend checking out the project.
[5] The CS50 Behind the Pedagogy Video
[6] He didn't want to appear in the video because he's camera shy, so I had to get Oliver to help me instead.
[7] former
[8] EE311 was an absolute monster of a course. That was easily the most difficult and time consuming course from my entire semester.
[9] In the general sense, just using a hash table with chaining would result in the bounds being O(n) and Ω(1). For the purposes of this algorithm and this video, the algorithm was able to find the query "Mike" in constant time because it happened to be the only name in that section of the phone book, which reduces the amount of material that the algorithm has to search through for that entry.
[10] Yes, a "B" for Binary Search.
*(Edit 4/16/26) This paragraph has been edited, because it incorrectly implied that other search methods are not actually "thorough" and might not be able to find what the user is looking for, which is an incorrect assumption to make. The original paragraph read: Different search algorithms have different uses though, so just because a search algorithm doesn't perform in O(1) time doesn't make it completely useless. Some trade off speed for thoroughness, or work better when adding or removing information much more frequently on top of searching for the material. Hence why Binary Search (me), still fights for a B [10]. Linear Search is easiest to implement, but can get slow when dealing with larger datasets, hence why it gets an F in this case.
Every semester, without fail, I get dozens of questions about tree rotations. It gets confusing to keep track of the direction of the rotation and the steps to reorganize the tree afterwards. It doesn't help that we don't spend too much time covering it in class either. This post seeks to make understanding tree rotations, their uses, and their algorithms just a little bit easier!
This post assumes familiarity with Binary Search Trees [1] [2] [3] and AVL constraints [4] [5]. If you're unfamiliar with either, then I recommend brushing up on those concepts before jumping into tree rotations. Before we start, it's important to note that tree rotations happen sparingly, and you'd only perform a rotation if a subtree is unbalanced. Otherwise, if your tree is balanced, there's no reason to do a tree rotation, and doing so might actually cause more problems. With that out of the way, let's get started!
Let's start with a Binary Search Tree. Since tree rotations are a way to balance our search tree, we'll make sure that our binary search tree is unbalanced. Since there are different ways to balance search trees [6], our goal will be for our tree to adhere to AVL balance constraints. Let's look at the example below:
Figure 1: A balanced AVL BST.
Let's say we remove Node F. Now our tree looks like this:
Figure 2: Our tree from Figure 1, with Node F removed.
Since this is an AVL tree, the balance factor of Node F's ancestors has changed, which causes Node C to have a balance factor of +2. Before removing Node F, Node C had a balance factor of +1. We'll have to rebalance our tree in order for it to adhere to AVL constraints. This is where tree rotations come in!
Our Special Rotation Algorithm:
We'll need to rotate Node F's parent, Node C, the node with the +2 balance factor, over to the left.
Figure 3: Our tree from Figure 2, but now we're preparing for a left rotation around Node C.
A leftward rotation will allow for Node C's right child, Node G, to become the parent of that entire subtree, while Node C becomes the new left child of Node G [7]. Node H becomes the right child of Node C. This preserves the ordering of the BST, since we want to make sure we maintain those constraints as well (a value smaller than the parent goes to the left, while a value bigger than the parent goes to the right).
Figure 4: Our new AVL tree after rotating around Node C.
Note that Node I doesn't change its position ever, it just stays put relative to the rotation. The Node G's former left node, Node H does change; it becomes the right child of Node G's "new" left node. If Node H were to have subtrees, those subtrees would not need to be changed.
Note that our new balance factor for Node G is -1 and Node C is +1. These are now within an acceptable range for our AVL tree constraints.
Final Algorithm:
Now that we know the steps we need to take, let's write down our algorithm in a cleaner way.
Since we just performed a left rotation, we can now infer the steps for a right rotation. Let's start with a slightly different AVL Tree (which, with the correct values, could also be a heap! [8]).
Figure 5: A brand new AVL tree, oOoOoOo...
Let's pretend we removed Node E. This would change our balance factor for Node B to -2 [9]. In order to fix this, we would need to do a rightward rotation around Node B. After doing so, Node B's balance factor will be 0, with Node D's balance factor becoming +1.
That's all there is to it! I recommend practicing drawing your own tree with different balance factors, then removing or adding a node, and trying to use a rotation to balance your tree. It's good practice that will help you visualize the process. Until next time!
Sources & Side Notes:
[1] Stanford's BST Lecture Slides.
[2] CMU's BST Notes.
[3] UB's BST Lecture Slides.
[4] Stanford's AVL Lecture Slides.
[5] AVL Tree Visualizer.
[6] AVL vs. Red Black Trees.
[7] UB's Tree Rotation Lecture Slides.
[8] Algosaurus - Heaps, Please note that you shouldn't do tree rotations on heaps, they'll break the structure of a heap. Please.
[9] Removing Node E doesn't affect Node A's balance factor because the height of its children never changes.
I'm at a watch party right now, geeking out about NASA sending a rocket to space. The first manned space mission since the 70's -that would get anyone excited. I should be studying for my midterm that's later this week... but this is MUCH more interesting.
I hear about standards all the time in my engineering classes. When working in a "social" field [1], it's important for everyone to have a shared set of (technical) rules and guidelines so as to avoid confusion [2]. There are plenty of different standards in the engineering world- IEEE, OSHA, ISO, ASME, etc. etc. But, sometimes I can't help but think about the standards that we as engineers set for ourselves both in and out of the classroom.
Engineering is one of those majors that forces you to time-manage, prioritize, and analyze your likes and dislikes. No one makes it through an engineering school because they hated it the entire time. No one [3]. The problem is that in order to do well in your coursework, there's a lot of sacrifice that needs to be made to your personal life [4]. As I watch the NASA launch, I think about how many of those engineers didn't get calculus for the first time, or maybe weren't the best at their statics course, or maybe couldn't wrap their head around probability while in their undergrad. But they're still able to work together (maybe even with people who did understand calculus, or statics, or probability) to build something bigger than themselves. They get to send people to space.
"Failure is not an option". [5]
When I fail a class I just fall behind in my degree program, and maybe waste some money. Maybe I'll experience some frustration, but otherwise I can continue on and do better. When NASA fails, people die.
How high do I set a standard?
I'm only human, but as an engineer, it's hard to find the right balance between "just get this homework done" and "my understanding of the material is lacking, I need to study more". Sure, I can just try my best and get the grade I deserve... but sometimes that's not enough. Sometimes it's necessary to set a higher standard for yourself. If not for yourself, then for your future. I've heard it said somewhere that your brain needs a certain amount of external pressure to truly commit something to memory in a short amount of time. There's a point where you have to worry about your grades, because it's the easiest signal to show that you understand the material you've learned. But what's also important is that you can't go at it alone.
Just like NASA relies on hundreds of people who know their stuff to send people to space, you have to connect with students who understand things that you don't. Progress can't happen in a vacuum [6], and it takes teamwork to build projects that are better than any one individual could've done on their own. It's good to study and worry about grades, but it's also good to reach out to classmates and struggle together, have study-groups and hackathons that run into the early hours of the night, because that's how real progress is made. Failure is not an option, but also, don't go into it alone.
I know that it's easy to set the bar for myself too high, and maybe take on things that are much too challenging for my (current) skill level. But maybe that's not a bad thing. As long as I have people in my corner to help me through those challenges, maybe it's not so bad to have a bar set so high.
Side notes:
[1] About as "social" as engineers can get.
[2] XKCD's Standards.
[3] No one that I've met so far.
[4] Especially if you're not a genius, billionaire, playboy, philanthropist... or if your math skills are just rusty.
[5] Source
[6] Unless you are literally in a space vessel in space.
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming