thallia’s tree is moving

Hey all!

For the past month I’ve been working a ton on my new and improved website–a huge improvement from wordpress.

I’ve never been a fan of wordpress, nor have I enjoyed its interface. I also have always wanted to host my own site and on my own server, so I bought a server slot from Digital Ocean and ported this current wordpress site to jekyll, a static website generator.
Now i’m hosting thallia’s tree with my own domain, on my own server, and can update it through command line! It’s awesome 🙂

So without further adieu, I present to you

I will be updating everything there from now on.

Thanks for hanging with me!



Brain Imaging


They’re the central part of everything–the neuron signals, the emotions, the sensory receptors–without brains, we’d be jellyfish. Literally, jellyfish don’t have brains.

I have always been fascinated with the idea of electricity in the body, specifically neuron signals, whether it be the signals from the brain to the muscles, to the organs, or the communication between the different parts of the brain.

To think we could measure this electricity, or even see the brain as it’s sending and receiving these signals is beyond incredible, and somewhere in my career I would like to deal with these technologies.

There are multiple ways of measuring and reading brain waves, all different in their approach. From the book, Essentials of Neuroimaging for Clinical Practice by Darin D. Dougherty, Scott Rauch, and Jerrold Rosenbaum, I was able to learn a lot more about how these technologies work.

There are quite a few main ways used in medical practice today that all differ in approach to measuring and reading the brain. These consist of but are not limited to: CT/CAT (Computed Tomography/Computerized Axial Tomography) Scans, MRIs/fMRIs (Magnetic Resonance Imaging/functional MRI), PET (Positron Emission Tomography), and EEG/MEG (Electroencephalography and Magneticencephalography). That is a lot of big words, but by the end of this I hope to have educated myself (and you) well on how these all work.

CT/CAT scans

Computed Tomography/Computerized Axial Tomography is a very prevalent technology. It is very widely available, and a quick way to produce a high quality image of the brain. It works similar to X-Rays, in the way that it sends gamma rays perpendicularly into the body and measures the resulting radioactive absorption of the body. CT scans work in just about the same way, except it takes the same picture multiple times, just rotated around the same plane. One side of the machine sends the gamma rays, and the other side receives the rays after they have passed through the body. Once the pictures are all taken, they can be compiled and overlap into one high resolution picture of the brain.


Magnetic Resonance Imaging measures the magnetic susceptibility of the body. The MRI aligns the nuclei with strong magnet first. If the nucleus doesn’t have balanced protons or neutrons, the atom has what’s called “net spin”, and “net angular momentum”. When the atom has angular momentum and a magnet is applied, the atom responds with a signal, called a precess. If the atom is balanced, though, and has no net spin, then there is no response Precess means the vibration of an element, and with precess you have resonance. There are unfortunately a lot more mathematics I do not understand yet that come after this for the MRI machine to finish assembling the picture of the brain, so perhaps I’ll save that for another blog post.

Functional Magnetic Resonance Imaging is slightly different than what was stated above. An MRI takes the picture of the brain and creates structural images, whereas the fMRIs calculate the differences in tissue, oxygen, and blood flow triggered by neural events with respect to space, time, and more. This allows for no radiation use, so you are able to use it much more frequently without having to be wary of the person’s health.


Positron Emission Tomography is different from CT scans and MRIs. CT and MRI provide straight images of the brain, whereas PET/SPECT provides data on the brain based on radioactive decay. Unstable (radioactive) nuclides are introduced into the organism, and a sensor detects how fast and where the radioactive decay occurs, then organizes this reaction into an effective photo of the brain.

To explain this a little more scientifically, unstable elements or isotopes have an excess of protons. Because there are too many, they have to send out a proton, which after being sent out, collides with an electron. When they collide, apparently the mass of them both get turned into energy as gamma photons (light), and the PET camera can measure the gamma waves.


Electroencephalography is a voltage measurement device, and is typically used in psychiatry practices to out-rule certain neurological disorders from patients. Electrodes (connected to an amplifier) are attached to the person’s scalp, in very specific areas, and over time the change in voltage is measured.

Specifically, the electroencephalogram measures the change in electric potential (voltage) from the excitatory postsynaptic potentials (EPSPs) and inhibitory postsynaptic potentials (IPSPs). E/IPSPs are the measure of how likely a neuron will fire and change voltage, which is a perfect place to measure the neurological activity in the brain.

Once this data is recorded, a mathematical operation called the Fourier transform must be performed on the signals to appropriately read the data.

All of these ways to measure the brain are incredibly complex and fascinating, and I really hope to work particularly with electroencephalograms in the future. I was surprised to learn how many of these used a high extent of radiation for measuring and compiling pictures, and it makes me want to research more how to reduce that or make it even safer than it is.


  • Disclaimer: if there is anything phrased wrong or conveys the wrong information, please send me an email at and I’d be happy to edit my post.


Project Hype: Oscillating Air Engine

My first semester of college has been quite the adventure. I’ve met a group of great nerds, I’ve been having a great time with my classes, and midterms are in just a few days. I wanted to take some time to update on our engineering semester project: designing and building an oscillating air engine.

For the first few weeks of class, our professor gave us the assignment of studying the engine: what are the main eight components that make it run?

We were able to study engines for the next week–didn’t matter whether we got the official names of the parts right or wrong, just as long as we could name them and describe how they interact and make the rest of the engine work.

The eight parts (with official names) are as follows:

  • Flywheel
  • Crankdisc
  • Crankshaft
  • Piston
  • Cylinder
  • Crankpin (e-pin)
  • Valve plate (intake)
  • Base plate (exhaust)

The engine is pretty neat, it works like this: compressed air is attached to the intake hole–which fills the cylinder. When full, the air pushes the piston out of the cylinder. The piston is attached to the e-pin (which is in turn connected to the crankdisc), and as the piston pushes the crankdisc, the crankdisc (which is attached to the crankshaft) spins the crankshaft with it. As the crankshaft spins, finally, that spins the flywheel. The flywheel is a really big hunk, usually of metal. The momentum of that continues until the cylinder crosses the exhaust hole, which lets out all the compressed air, and the piston is pushed back into the cylinder.

Ain’t that cool?

After that, we were given orthographic and isometric drawings of an engine, and tasked with figuring out the geometric variables that related all the holes together. Everything is related, and you can’t just guess the dimensions or else the engine could lock while spinning, never spin in the first place, or worse.

Here were the variables, and the equations that related them:

Rv = Radius of valve – distance from pivot to port
Lc = opening of bore to center of pivot
L1 = center of crankshaft to center of pivot
Lp = center of e-pin hole to end of piston
x = leftover piston left in the cylinder when fully extended (should be at least the diameter’s length)
Rc = crank radius – distance from e-pin to center of crankshaft
2v = distance between intake and exhaust holes

equation 1: (L1 + Rc = Lc + Lp – x)
equation 2:  sin(θ) = Rc/L1
equation 3: sin(θ) = v/Rv
equation 4: cos(θ) = h/Rv

Once those were figured out and we knew how they worked together mathematically, we had to take the theoretical drawings of our engines (mine are pictured below) and figure out the geometric variables for them.


Boy, that was a time. My friends and I all found so many mistakes in the ideas that we’d had for our engines, but it didn’t take long to assess the issue, come up with a new idea, and implement it!

Now that we had all the theoretical math figured out, it was time to decide on a goal for the engine, create a bill of materials, and start 3D modeling.

There are 5 goals you could aim for in building the engine:

  • Max speed/RPM
  • Max torque/power
  • Max coast
  • Air efficiency
  • Cost efficiency

I originally started with max torque/power, but I ended up changing, and you’ll see why.

My engine design looks like this:

My hypotheses were that if I had two offset pistons, they could compensate for each other’s lack of force at the momentum-carrying part of the cycle. If I had a large flywheel, that could account for more momentum, and speed, and it could pull more. There’s also a creativity goal, so I made the triangles because I thought that’d be interesting looking.

To get our engines approved, we had to go through 3 levels: have the geometry approved by the professor, have the 3D modeling and theory of how your engine works approved by a mechanic dude, and have our official machining drawings approved by a professional machinist. That last one is especially hard–not many people tend to get approved, you had to make sure your drawings were very polished and conveyed all the correct information, but also be careful that they weren’t over-dimensioned. That was a lot to get done, but I was up to the challenge.

My geometry was approved pretty fast–all my holes lined up and everything seemed to work alright!

My build was approved as well, and the mechanic gave me some good suggestions. Based on the design of my engine, there was no way to test the torque. The tool used to test torque has to grab onto the crankshaft, but unfortunately I have pistons in the way on both sides of my design. The mechanic recommended that I change my goal: perhaps to speed, because I have a lot going for me in that category. He also recommended that I changed a few hardware pieces that I had, so I adjusted those in my bill of materials.

When I turned in my drawings, I was a bit wary since they were fairly simple. All the parts of my engine were very simple, and we got to choose one part of our engine to CNC, so I didn’t have to machine my complicated triangular valve plate. The next day, my drawings were in–and they were approved!!


What’s really cool is the other day, I was working in the 3D printing lab, and a sophomore mechanical engineer saw me, and we struck up a conversation. He shared with me his engine design when he was a freshman, and ended up giving me some advice on mine as well, which was great. He said that the triangles are a great idea for speed–since a 45* angle is the best operating angle, as well as a large flywheel. That definitely encouraged my goal of max speed that I’m now going for, and I’m looking forward to seeing how it all works out.

So far, I’ve completed my crankshaft, base plates, and one of my pistons. One piston, two crank discs, and my flywheel to go!

Until next time, nerds!


Ham Radio | gpredict

One thing that’s cool about the world of hamateur radio is that radio waves are all around us. You could be standing in the middle of a transmission going on, and not even know it!

There’s so much that goes on behind the scenes, including the transmission and receiving from satellites around the world. To track these satellites, you can use a cool software called gpredict.

To install, download the .zip file from the GitHub repository.

Make sure you have the dependencies installed:

  sudo apt install libtool intltool autoconf automake libcurl4-openssl-dev
  sudo apt install pkg-config libglib2.0-dev libgtk-3-dev libgoocanvas-2.0-dev

then, in the main folder, run ./

Once that finishes, sudo make and sudo make install to finish the install.

What’s super cool about gpredict is you can use it to remote control the RTL-SDR through gqrx, which I set up in my last blog post.

To set up the remote control, you gotta go to edit > preferences in gpredict. In the interfaces tab, you’ll want to add a new interface.


Next, we need to make sure gqrx is listening on the right port for gpredict’s controlling.

In gqrx, go to tools > remote control settings and make sure you add your local IP address:


I put both…since I wasn’t entirely sure at this moment in time (1AM after a long day of packing).

You’ll also want to set up a home base in gpredict, so it can give you accurate time predictions for when the satellites will be in the atmosphere above you. You can set that up in edit > preferences, in the ground stations tab. From there, add a new one with your location, and it’ll start predicting when the satellites will be in range.

Finally, you can connect gqrx and gpredict by 1) turning on the remote control in gqrx, and 2) finding the drop down menu in gpredict in the top right corner of the program and clicking on the radio control option. That will bring up a window like so:


In gpredict, there will be a little radar-like thing in the bottom left, and right above it it’ll tell you the satellite that will be closest to you, along with a time increment. If you find that satellite in the target settings above, and click Track, gpredict will control gqrx to track that satellite’s frequency, as well as adjust it based on the doppler effect.

In the settings (bottom right of the above little window), make sure to click engage so gpredict will connect to gqrx and start remote controlling it. As you can see, satellite AO-91 was passing over my house in 12 minutes at the time I took the screenshot.

Hearing the satellite AO-91 and SO-50 and catching some CW from it was awesome. It was especially fun to see and hear the satellite moving away by the tone that I heard, and the signals you can see. Pretty neat! Now I have to focus enough to actually start recording the CW that I hear, and start decoding it.

Until next time!


Ham Radio | Technician’s License

A few months ago, I presented the idea to Gector to set UTW up with ham radio. We put it on our list of projects to do, and left it on the back burner.

Two weeks ago, Gector’s dad ordered all three of us ham radios as a spontaneous surprise! He bought us small starter radios, Baofeng UV-5Rs.


They got here after a week, and we wanted to get our licenses before I headed to college, so we had a week to prepare.

There are three licenses you can test for: Technician, General, and Extra. Technician’s was the easiest, and gives you basic operating privileges on the 2 meter band, 6 meter band, 10 meter band, 1.25 meter band, and a few more. You can see the chart here.

I studied out of this manual:


And with these very helpful practice tests:

You can easily pass the Technician’s test with around 6-10 hours of studying, and very easily if you have a solid background in basic circuit theory.

To play with the radios we had while learning about the subject, we got Nagoya NA-771 antennas, which extend the Baofeng’s range, and programming cables to program channels into the radio!


To program the UV-5Rs, you use a software called CHIRP, which you can download here.

sudo apt-add-repository ppa:dansmith/chirp-snapshots
sudo apt-get update
sudo apt-get install chirp-daily

Once that finishes, you can start CHIRP up! You’ll see an empty screen, like this:


Next, you click on the drop-down menu that says Radio. Make sure your radio is off, then go ahead and plug it into a USB port on your computer. Turn it on, and make sure it’s on a frequency that has no activity.

Click on the option Download From Radio, choose the USB port your radio is on, the brand and model, and then it’ll download the currently programmed channels from your radio.

The Baofeng UV-5R has 127 programmable channels, but I’m only using a few for now, since I haven’t found many repeaters to talk to people on (because I can’t until my callsign + license appear in the FCC database). I found my local NOAA (weather) channel and programmed that in, as well as the first five walkie talkie channels (which you can find here).

When I took my licensing test, a nice lady gave me a list of repeaters I was eligible to talk on once I had my call sign, so I programmed one of those in as well. My final setup looked like this:


The repeater I looked up had the information of the tone it needed for me to accurately receive, so in the Tone Mode section I selected Tone (as opposed to DCTS amongst other options), and then entered the 94.8 tone selection in that column.

Once that was finished, I selected the Radio tab once more, and hit Upload to Radio. Boom, I officially programmed my radio channels into it 🙂

Gector, his dad, and I all passed our tests! It takes a little less than a week for our callsigns to appear in the FCC Licensing database, so to pass the time while we can’t transmit, Gector and I got these nifty little USB Software Defined Radio receivers.


There are some tutorials I kinda followed here, but I’ll walk you through what I did as well.

sudo apt-get update
sudo apt-get install libusb-1.0-0-dev

Then install the rtl-sdr drivers:

sudo apt-get install rtl-sdr

Once that was done, I ran rtl_test in the terminal and got this result:

Found 1 device(s):
  0:  T, , SN:

Using device 0: Generic RTL2832U OEM
usb_open error -3
Please fix the device permissions, e.g. by installing the udev rules file rtl-sdr.rules
Failed to open rtlsdr device #0.

Which was weird, because the USB was pretty much plug-and-play on my tower when I tested it out.
But! I unplugged it, plugged it back in, because I realized it can’t read the device when the drivers had just been installed. Now that they were installed, I had to unplug and replug it to get the correct output:

Found 1 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
[R82XX] PLL not locked!
Sampling at 2048000 S/s.

Info: This tool will continuously read from the device, and report if
samples get lost. If you observe no further output, everything is fine.

Reading samples in async mode...

Which is the correct output! You can Control+C to get out of the test.

Now we need a software that can interface and read this device. GQRX was the first recommended one, which you can download for your OS here:

Or if you have linux, you can just run:

sudo apt install gqrx-sdr

Once that’s complete, you can set up the antenna! Either outside or inside works good, I tend to find that outside works better because there’s less physical obstructions for the signals, e.g. less static.

Start gqrx, and fill out the basic info of your device.


Once it looks like that, hit ok, and voila! In the top left corner there’s a pause/play button, and when you press it, it should start looking something like this:


As you can see, there’s a lot of plain static here. You’ll know when you find signals, they look similar to or larger than this (tuned into 98.7 FM radio):


Or here, where the smaller signal on the left is picture data (you can tell by the sound), and the signal on the right is the NOAA channel:


Pretty neat, huh?

Because there’s a lot of static, you’ve gotta adjust the squelch, the gain, and the mode every so often to fit what kind of signal you’re picking up. I typically have the gain close to 10dB, because that’s where I can hear voice transmissions the clearest. Other transmissions come in super clear with the dB all the way up, so you can adjust that based on what signal you’re receiving. As for squelch, what actually is squelch?

Squelch is typically a circuit in the receiver that blocks incoming static, and waits for a signal to be a higher dB gain than the static. When that signal’s dB gain is higher than the static’s dB, the squelch will un-block the sound and allow you to hear the signal coming through. That way you aren’t trying to listen through static the whole time you’re trying to pick up a signal, which can get annoying.

If you’re tracking a very weak signal, though, leaving the squelch as low as possible helps, because if you have a weak signal it’s often not going to trigger the squelch to allow you to hear it.

As for modes:


AM deals with, obviously, AM signals, which are typically 535kHz to 1600kHz. Narrow FM is the most likely mode to pick up voice transmissions across 110MHz and up. WFM (mono) and WFM (stereo) are great for what we know as FM broadcast radio transmissions, which are from 88 to 108 MHz.

LSB and USB have to do with SSB, Single Side Band, one of the most well known modes of voice transmission on High Frequency bands in radio. LSB stands for Lower Side Band, while USB stands for Upper Side Band. Wikipedia has a great picture for demonstrating the difference between the two:


The carrier is the main signal, surrounded by the LSB and USB. So wherever you’re listening to the frequency, you can change the mode here to see which one sounds better/clearer for your receiver.

CW stands for “continuous wave”, which is basically International Morse Code. Again, the -L and -U stand for the Lower and Upper sidebands of CW. I’ve come across more CW in the narrow FM mode than the CW modes, so I’m not sure what’s up with that. I’ll have to play around with it some more to see if there’s a huge difference.

And there you have it! Changing up the frequency, the gain, the modes, and the squelch can help you tune your antennas to hear the best stuff. If you’re ever curious about what certain signals sound like, Gector found this great resource to start identifying the different signals and what they sound like:

I’m hoping to get these antennas somewhere higher up so I can receive better signals, but with moving into college this week it’s going to have to wait a little bit. I should have my call sign in these next few days as well, so stay tuned! (no pun intended…maybe.)

Here is a great tutorial on the rest of what you can do with the RTL-SDR USB.

happy hamming!