This week I got a message from a UC Davis staff member saying that he wanted to talk about how he could help hyperloop by fixing up our workspace, so I met up with him in Chevron Labs. I talked a bit about how we were low on chairs, would like more storage space, and some new equipment would be nice. However there wasn’t much to say seeing as Chevron is a pretty great place to work.
But he quickly stopped me, and told me that the actual situation was considerably more dire. You see, the Hyperloop team uses various machine shop facilities to create the pod. We need to weld, solder, 3D print, etc and there is a really neat room in Bainer that contains all those facilities for undergraduates. Unfortunately, for the next three years that room will be under extensive renovation. This is a bad time to be a mechanical engineer at UC Davis!
As you can see, the shop room is pretty neat. You can tell I’m a coder though because all I can think of as I walk past all that equipment is how this stuff could probably be very easily automated, and in fact there is probably already some DMU automation code on GitHub, and that when all these mechanical engineers graduate they will not be able to use the skills they learned in school. But I digress!
Anyways, the machine shop is off limits for the next three years, So he asked me to tell him all the things that we needed in order to continue. I told him all the things that were critical to the team, but I’m pretty cheesed at the whole situation. In terms of engineering universities, we tend to be far more research oriented than practical oriented, which I like because these days, everything that people generally consider ‘practical’ such as welding and soldering is quickly becoming automated, while things that are more cutting edge and ‘impractical’ are becoming useful. However that doesn’t mean that all of mechanical engineering is obsolete, and I understand that there are those who really enjoy working with their hands, and I wish that the university could accommodate them better.
A lot of people don’t really understand how code is written, and that’s partially due to the state of development at the moment. People are constantly building new tools with old tools to interface with old tools and some of those tools are proprietary and a good chunk of those tools were programmed before I was born (June 9th 2000 if you’re curious). So it can be quite hard to figure out exactly what is going on, but I will try to explain it.
Basically, there are two methods: text editors, and IDEs. Text editors are very simple: you write words in them, hopefully those words are code. You couldn’t use something like Word, because on a low level, there are MANY more words in a Word file than the words you type. You’ll want to use something like vim or emacs, which create files that only contain the code you write. Then you go to the terminal, which is a super low level computer interface (leftmost app on the above image), and compile the code. There are different ways to compile different coding languages, and for each you have to download a compiler (or use a computer that comes with a compiler for that specific language). For example, to compile C++ code you type g++, or gcc, and then the name of the file. For Python you type python3 or python. With python and most modern programming languages, this runs the code. For older languages such as C++, it produces a compiled file that you then run.
Then, there are IDEs. An IDE is an application that you write your code in, and is much more complex than a text editor. They typically have features to help you code, but some have more than others. They nearly all have auto-formatting, error highlighting, and debugging support. The better ones will have features that split up your class functions into definitions and declarations, and complex features like that. Some IDEs are good for multiple languages, some specialize in only one. Some are built by companies to get developers to use their programming languages and make apps that run on their machines (like VS Code and XCode) and some are far more general. The image I gave you is actually a screenshot of my desktop, so as you can see, I like JetBrains IDEs. I have CLion for C++, WebStorm for programming websites with CSS, HTML, and JS, PyCharm for Python, and IntelliJ IDEA for Java. I’m a student so I get them for free, but otherwise you’ll have to pay. The multitude of languages I use is actually a bit of a giveaway that I’m an amateur, because typically good coders specialize in only one.
So you may be wondering why people use text editors when IDEs are so much better. Well, there are some occasions when you can’t use IDEs. For example, right now for my research project I have to work with a remote server, which I can only access via the terminal. Since I can’t open the files outside the terminal, I have to use vim to edit the files. Also, if you’re doing something small and manageable, a text editor will load faster. Jeff Dean, arguably the greatest programmer of all time, uses emacs. So there is a time and place for both!
There’s a 99% chance I’m going to Israel for my internship at Cloudshare this summer, but there’s also a small chance that I’m going to work at Voleon instead. They automate financial projects, and are located in Berkeley. I’m probably going to take the Israel job because it’s in Tel Aviv which is a super fun place to be in the summer, it’s an early stage startup, and I’ll be working on R&D which is good for graduate school. But Voleon uses artificial intelligence, and I’d be in the US all summer and will be able to head down to Davis to help out Hyperloop and see my friends. And who knows, they might pay me more! So I interviewed over the phone, and it honestly didn’t go all that great. But even if I get it, it’s early in the year so I’ve still got a good amount of time to decide.
We had a Dungeons and Dragonsparty, which was pretty great! The Dungeon Master wore a suit and bought us far too much pizza! Somebody else brought candy and I brought babka (which was delicious) and bagels (which turned out to have mold). My obnoxious Triton Paladin named Carxes Caryinax fought against the rest of the team because he wanted to help his sister, and this unfortunately led to the three villains escaping with a powerful Wisdom Stone! It was one of those moments where I knew what I was doing would hurt my teammates, but it was definitely what my character would have done and the core of D&D is roleplaying. The Wisdom Stone, which is one of the six stones that make up the core plot of our campaign and are inspired by the Infinity Stones, turned out to be inside one of our team member’s chests the whole time! He is a warforged from the future which is basically a robot, so it was his actual chest not a box. We were defeated in combat and Carxes was killed by our team, but he was later brought back to life as a revenant of the Raven Queen because one of my teammates is a Hexblade warlock. So all in all it was a fun party!
May you be ever victorious in your endeavors!