Friday, March 14, 2025

Travel Sketching

Over the last few trips I've gone on, I've taken up sketching whenever I can get a chance. More than just an opportunity to practice and take up the mantra of "always keep drawing all the time," I've found that sketching is a great way to really consider the details of what I'm seeing and to better remember the moment. It's also just fun. Below are photos of my sketchbook from my most recent trip, a trip to the northern part of Japan. The first five spreads are from a bigger watercolor sketchbook and the rest are from a pocket-sized sketchbook.








Below are some more excerpts of sketches from previous trips:






Sunday, February 23, 2025

2024 Summer Backpacking: Yosemite and Kings Canyon

This was originally going to be a longer post, with each day of backpacking written out in a more narrative format but many months have passed since I started the draft and I'm not sure I will have the time to really write this out. For now, just to get something out, I'm going to bullet-point out the main things I remember from each trip and call it a day.

Yosemite: Snow Creek to Mt. Watkins, Cloud’s Rest

  • July 19-21, 2024
Day 1:
  • First multi-day backpacking trip I've ever gone on, and last backpacking trip was back in 2022.
  • Was originally supposed to go with co-workers but they had to back out of the trip a week before; I decided to go anyways since I could get a permit
  • Drove into Yosemite from the bay the morning of, starting at 5AM
  • Got permit and started hike around 9:30 AM, I really wanted to get moving as quickly as possible to beat the heat; it was supposed to be 100F in the valley in the afternoon
  • Heading up Snow Creek trail in the heat was not easy. I should have drunk more water on the way up and at the stop at the creek bridge; I was definitely dehydrated in the last day. No reason not to drink more water when there are so many sources!
  • Camped at the top of Mt. Watkins and had a burst of hail before the sun set. Then all calm and clear through the night.
  • Could barely sleep for some reason, only really got an hour or two of good sleep near the end.
Climbing out of the valley on the Snow Creek trail.

Top of Mt. Watkins

Small hail storm before sunset.

Full moon at night.

The next morning.


Day 2:
  • Surprisingly not tired in the morning
  • Hiked to Tenaya Lake and got more water and went for a short swim
  • Pretty much no mosquitoes. I was here a month before to day-hike Cloud's Rest with friends and the mosquitoes were pretty much hell on earth. I had easily more than 30 bites per arm.
  • Went over Cloud's Rest, had lunch at the top, and then headed down a bit to my next campsite. I could have definitely made it all the way back to the valley the same day, but my trip was supposed to be multiple nights. :)
  • Again, I had trouble sleeping but didn't feel tired. Saw some people hiking up to Cloud's rest at night, which is honestly a great idea to avoid the heat of the day
  • Could see the headlamps of people going up Half Dome in the early morning
Lake Tenaya

Sunset and Half Dome.

Hikers summitting Half Dome before sunrise.

Day 3:
  • Definitely should had drunk more water the previous days, was feeling dehydrated in the morning
  • Booked it down to the Cloud's Rest/JMT junction to refill on water
  • Had very normal descent into the valley via the Mist Trail
  • Ate the Curry Village pizza and had an ice cream at the end :)
  • Quick swim in the Merced river to cool down from the afternoon heat and then drove home

Kings Canyon: Rae Lakes Loop

  • August 9-11, 2024
Day 1:
  • Realized I forgot my hiking poles the night before when I reached Fresno. I was able to buy a set at Walmart the morning I headed out to the trailhead.
  • Reached Road's End and got my permit after listening to the ranger's bear warnings.
  • Started my hike around 9:30 AM; wasn't sure if I was going to stop at the South Fork of the Kings River crossing at Upper Paradise Valley, or make it to the JMT Woods Creek bridge
  • Ate the first quarter of my sandwich about 8 miles in. I just wanted to keep climbing up higher to escape the heat.
  • Got to the South Fork of the Kings River crossing around 2PM and ate another quarter of my sandwich. Decided to push on to the JMT crossing.
  • After about 15 miles for the day, and I was ready for a rest. The campsites around the bridge were quite nice. and there was a bear box I could put my bear can into. There were many other campers there, either doing the JMT or the lake loop. I ate the last half of my sandwich and washed off in the river. It was still hard to fall asleep; not sure why.
Start of the hike from Road's End.

The Sphinx in the distance.

Brought along Chiikawa again for this hike.

Wood's Creek bridge crossing. Fun bridge to walk on.

First night's camp.


Day 2:
  • A shorter day for my second day, just a short jaunt to Rae Lakes.
  • This east edge of the loop was the most beautiful part of the hike: after this trip I have become a sucker for alpine lakes. After climbing past 10,000 feet, nothing really compares to the lush alpine lakes surrounded by the towering mountains.
  • I thought about climbing up into the Sixty Lakes Basin but decided against it half way up the trail into the basin. I just wanted to relax at the lakes.
  • I set up camp just before the junction into the other basin around the Upper Rae Lakes and dipped into the lake to clean up.
  • Again, it was hard to fall asleep, and I took some photos and a timelapse of the Milky Way over the Painted Lady. It was really interesting to see the moonlight on the mountain disappear as the moon set too.
JMT trail sign.

Fin Dome over Dollar Lake.

Creek crossing just south of Dollar Lake.

Rae Lakes.

Milky Way over the Painted Lady.


Day 3:
  • "Woke up" (not really sure how much I slept) around 6AM to an incredible sunrise looking over Upper Rae Lakes.
  • Started out early around 7:30 AM to get over Glen Pass before it got too hot and to get back to the trailhead at a reasonable time (~20 miles ahead)
  • Took my time climbing Glen Pass, which turned out to be not that bad. Reached the top around 8:50 AM. Ran into a person who also worked at Apple at the top of the pass.
  • Began my long 7000 ft. descent back to Road's End. Great views of the valley and the waterfalls along Bubbs Creek.
  • Finished around 5 PM and started driving back. Got ice cream at Kings Canyon Lodge and took some photos around the General Grant tree.
The golden light on the mountains reflected in the still Upper Rae Lakes.

Overlooking Rae Lakes from the top of Glen Pass.

Descending from Glen Pass.

Perfect turquoise waters.

Panorama over Charlotte Lake.

Back into the dense vegetation of the valley floor.

And I made a video of some of the scenery along the Rae Lakes Loop:



Thursday, September 26, 2024

Monday, February 20, 2023

Photos of 2022

With another year gone, it's time for another recap. I think 2022 has been the year I've taken the most photos.

Clouds 2


Sunset


Antelope Canyon


Stargazing


Purisma

Tuesday, July 26, 2022

Microphone Amplifier: Shielding

My friend owns a ribbon microphone, which have notoriously low output levels even after their internal transformers steps up the output, and always need to crank the gain up to the max and use noise reduction to get anything usable. A common solution is to use an in-line preamp such as the Cloudlifter and the FetHead. I wanted to see if I could make my own amplifier after seeing a small snippet on ribbon microphone amplifiers in the Art of Electronics

After a little bit of Googling, I came across reverse-engineered schematics for aforementioned amplifiers. They both use JFETs in a differential pair, which allow for the gates to be biased at 0V straight from the microphone, and are powered directly off of phantom power with the phantom power resistors as the load. The Cloudlifter has a cascode configuration of JFETs, while the FetHead is just a single device. Someone already made a FetHead clone, and to keep my project simple I essentially cloned this. I added a few changes to my PCB:

  • Added a footprint for a two channel ESD diode device
  • Added places for emitter degeneration resistor if one wants to add them
  • Used the connector that has the shield separated from ground both the input and the output XLRs
    • Added jumpers that allow for configuration on how the shields are connected to each other/to ground
I was really interested in seeing how to properly shield the amplifier and the effects of grounding the shielding at the amplifier versus not. From several videos I watched on connecting up the shield in general for cables (not just audio and XLR), the idea is to form a continuous Faraday cage to keep out noise. You want all the shields joined through the cable to the chassis of all the devices in line. Whether you ground this shield at all points vs just at one point or only to earth or not at all (no DC connection but AC coupled) I'm still not clear on. With all the jumpers I wanted to test what happens under different conditions.

KiCAD Schematic.

I sent the boards out to made and ordered the parts from Mouser. A week later, everything showed up at my door and I filmed a making-of video just for fun:

I still got the footprint wrong for the ESD diode; I originally chose a SOT-23 part but changed to a lower voltage part just before sending out the design and forgot to change the footprint for SOT-523. Thankfully the part still soldered into place without much issue.

PCBs.

Parts.

Assembled.

The metal box I originally thought of putting the amplifier into ended up being just a little smaller than I thought, causing some interference with the connector screw holes. For now there is no enclosure, making proper shielding tests impossible. However, I can still generally test the amplifier. I handed off the amplifier to my friend and we saw significant gain (I don't really have any equipment setup to do a proper measurement of the absolute gain at home anymore and definitely don't have any to do a portable measurement.). There was very audible noise when there was supposed to be no sound but we'll need to figure that out another time. Some initial experiments with joining the shields on the board and to the ground gave inconclusive results along with a jank foil shield. The cable being used is also of questionable quality.

Sunday, June 12, 2022

CAD Practice: Mini Tripod

It's been awhile since I've done some real CAD work, so I decided to model a mini tripod that I regularly use. The legs have interesting geometry with smooth contours that were difficult for me to capture in CAD. 
Orthographic side view.

I still am not sure what is the best way to model these smooth contours; I initially started off by drawing a top-down view of the leg, thinking I would then extrude this profile and then cut it from the side with another profile like I did for the glasses I previously modeled. I quickly realized this would not work that well since the legs don't have parallel sides.

I backtracked and then decided this would have to be done with lofts. Using the top-down sketch as a guide, I created several cross-section profiles along the leg for the loft to follow and then created the leg out of two lofts. The modeled leg is definitely not perfectly accurate to the real leg as the real one has a smoother curve along the entire outer face and pinches in faster on the inner face. If I were to do this again I would use 3D curves and guide each edge with a rail. Also, at the hinge the curve should be more gradual and not bend in as quickly.



The bevel at the bottom of the leg is also too steep, but this was necessary for the bevel to line up with the tip of the leg and the outer edges. As a result, with the legs all the way out the bottom of the legs are still not parallel with the ground.

A video of the modelling process:


And a render:

Nice render with the tripod open.

Tuesday, May 3, 2022

iCE40 FPGA Tinkering

After my very short experience with getting the Vivado toolchain setup to use the the Pynq FPGA board a few years ago, I've decided to get back into doing some projects with a FPGA again. I only ever got around to blinking an LED before putting the board aside; I had no solid projects in mind to make. The only reason I tried using it was that I was able to get one for free and it is the board used in the digital design class at Berkeley. I know it is a very powerful device and has lots of nice peripherals directly on the board so I may come back to it in the future. (Most digital design time is really spent in simulation anyways so the exact hardware doesn't matter that much.)

But man, the complete Vivado toolchain is nearly 80GB installed, and the bloat of everything with respect to it did not sit nicely with me. So recently I set out to find a different FPGA with a nicer ecosystem. From other projects I've seen online the first one I looked into and eventually settled on was the Lattice series of iCE40 FPGAs. The configuration bitstream has been reverse-engineered and a series of open-source tools have been developed for using these iCE parts. Synthesis, place-and-route, and bitstream generation all can be done through some simple steps. (Most other FPGAs still have locked down bitstreams and is why you need to use vendor-specific tools to do the synthesis and place-and-route. Being tools that are developed by large corporations with lots of money, they may/probably have better outputs from these steps (e.g. more optimized synthesis, better place-and-route of logic cells for better timing, etc.).)

I picked up a UPduino board with its iCE40-UP5K FPGA and installed the APIO ecosystem for the development and build toolchain. APIO makes it super convenient to develop for these FPGAs as it bundles together all of the open source tools.

General setup process (so I don't forget it; recently I had to re-lookup how I setup my STM32 toolchain back in 2018 so if I wanted to use them for a real project I would be able to):

  1. Install APIO
  2. Generally followed this guide.
  3. Initialize project with apio init --board iCE40-UP5K -s
    1. -s allows us to customize the SConstruct file so that we can the build process look into subdirectories for the source files.
  4. For simulation use apio sim
    1. Simulates from *_tb.v files
  5. apio build to build the verilog
  6. For some reason apio upload would not work for me; I suspect there is a PATH problem with my python setup (error: 'WindowsPath' object is not iterable)
    1. I just manually uploaded with iceprog -I A [path to bitstream]
Within minutes I had some blinky LEDs going current controlled by the internal LED peripheral, and running a simulation was relatively straightforward. Next steps are generating PWM and then maybe generating some VGA signals. Still not sure if this the best platform to be using but for small projects the simplicity is nice.

Aside: Some time ago I had did about a day's worth of tinkering with Verilog and getting simulation setup with iverilog and gtkwave after reading blog posts on zipcpu and gaining some interest in HDL again. Getting everything setup on Windows is slightly annoying with all the random things on my path and multiple terminal and shells installed over the years (got the windows CMD, git bash with mingw, msys2, and cygwin).