init repository
This commit is contained in:
commit
14c0430850
126
generate.py
Normal file
126
generate.py
Normal file
@ -0,0 +1,126 @@
|
||||
from sys import argv
|
||||
import subprocess
|
||||
from PIL import Image
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
from markdown import markdown
|
||||
from glob import glob
|
||||
from json import dump, dumps, load
|
||||
from os import path
|
||||
import re
|
||||
|
||||
numbers = re.compile("[0-9]+")
|
||||
out_dir = "/var/www/html/"
|
||||
base_url = "https://helixnebula.space/"
|
||||
template_environment = Environment(
|
||||
loader=FileSystemLoader("templates/"))
|
||||
|
||||
with open("metadata.json", "r") as f:
|
||||
metadata = load(f)
|
||||
|
||||
for placename in metadata.keys():
|
||||
read_path = f"{out_dir}{placename}/"
|
||||
write_path = f"{out_dir}photos.json"
|
||||
photos = [
|
||||
path.basename(photo).split('/')[-1] for photo in
|
||||
glob(read_path + "*")
|
||||
]
|
||||
try:
|
||||
photos.remove("index.html")
|
||||
except ValueError:
|
||||
pass
|
||||
metadata[placename]["count"] = len(photos)
|
||||
metadata[placename]["photos"] = photos
|
||||
metadata[placename]["photos"].sort(key=lambda path: int(numbers.search(path).group(0)))
|
||||
with open(write_path, "w") as f:
|
||||
dump(metadata, f)
|
||||
|
||||
def covers(overwrite=False):
|
||||
print("running covers")
|
||||
for placename, info in metadata.items():
|
||||
read_path = f"{out_dir}{placename}/{info['cover']}"
|
||||
write_path = f"{out_dir}cover/cover_{info['cover']}"
|
||||
if not overwrite and path.exists(write_path):
|
||||
continue
|
||||
command = ["convert", read_path, "-strip", "-interlace", "Plane", "-gaussian-blur", "0.05",
|
||||
"-auto-orient", "-resize", "700x525>", "-quality", "80%", write_path]
|
||||
subprocess.run(command)
|
||||
|
||||
def thumbnails(overwrite=False):
|
||||
print("running thumbnails")
|
||||
for placename in metadata.keys():
|
||||
for photo in metadata[placename]["photos"]:
|
||||
read_path = f"{out_dir}{placename}/{photo}"
|
||||
write_path = f"{out_dir}thumbnail/thumbnail_{photo}"
|
||||
if not overwrite and path.exists(write_path):
|
||||
continue
|
||||
command = ["convert", read_path, "-strip", "-interlace", "Plane", "-gaussian-blur", "0.05",
|
||||
"-auto-orient", "-resize", "300x200>", "-quality", "65%", write_path]
|
||||
subprocess.run(command)
|
||||
|
||||
def compressed(overwrite=False):
|
||||
print("running compressed")
|
||||
for placename in metadata.keys():
|
||||
for photo in metadata[placename]["photos"]:
|
||||
read_path = f"{out_dir}{placename}/{photo}"
|
||||
write_path = f"{out_dir}compressed/compressed_{photo}"
|
||||
if not overwrite and path.exists(write_path):
|
||||
continue
|
||||
command = ["convert", read_path, "-auto-orient", "-strip", "-resize", "1200>", "-quality", "90%", write_path]
|
||||
subprocess.run(command)
|
||||
|
||||
def render_index():
|
||||
template = template_environment.get_template("main")
|
||||
data = {key: value for key, value in sorted(metadata.items(), key=lambda item: item[1]['title'])}
|
||||
photo_counts = {placename: metadata[placename]["count"] for placename in metadata.keys()}
|
||||
total_count = 0
|
||||
for _, info in metadata.items():
|
||||
total_count = info["count"] + total_count
|
||||
with open(out_dir + "index.html", "w") as f:
|
||||
f.write(template.render({
|
||||
"metadata": data,
|
||||
"album_count": len(metadata.keys()),
|
||||
"photo_counts": photo_counts,
|
||||
"total_count": total_count
|
||||
}))
|
||||
|
||||
def render_places():
|
||||
template = template_environment.get_template("place")
|
||||
for placename, info in metadata.items():
|
||||
working_path = out_dir + placename
|
||||
photos = metadata[placename]["photos"]
|
||||
photos_json = dumps(photos)
|
||||
count = len(photos)
|
||||
widths = []
|
||||
heights = []
|
||||
for photo in photos:
|
||||
photo_path = out_dir + "thumbnail/thumbnail_" + photo
|
||||
img = Image.open(photo_path)
|
||||
width, height = img.size
|
||||
widths.append(width)
|
||||
heights.append(height)
|
||||
photo_specs = zip(widths, heights, photos)
|
||||
try:
|
||||
with open("md/" + placename + ".md", "r") as f:
|
||||
md = markdown(f.read())
|
||||
except FileNotFoundError:
|
||||
md = "<h1>Blog Work In Progress</h1>"
|
||||
with open(working_path + "/index.html", "w") as f:
|
||||
f.write(template.render({
|
||||
"count": count,
|
||||
"placename": placename,
|
||||
"info": info,
|
||||
"markdown": md,
|
||||
"photos": photo_specs,
|
||||
"photos_json": photos_json
|
||||
}))
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
overwrite = "overwrite" in argv
|
||||
covers(overwrite=overwrite)
|
||||
thumbnails(overwrite=overwrite)
|
||||
compressed(overwrite=overwrite)
|
||||
except KeyboardInterrupt:
|
||||
exit()
|
||||
render_index()
|
||||
render_places()
|
56
md/BasinRange.md
Normal file
56
md/BasinRange.md
Normal file
@ -0,0 +1,56 @@
|
||||
# A Peaceful Glimpse Into The Great Basin
|
||||
|
||||
This is the Great Basin, a land of contradictions: it's flat and rugged, hot and
|
||||
cold, forest, marsh, and desert. The valleys, mountains, natural lakes, playas,
|
||||
salt flats, volcanic activity, and more combine to form a place that, in my
|
||||
opinion, is indescribably beautiful and fun to explore. It's sparsely populated,
|
||||
with vast stretches of untrammeled wilderness. Seemingly in the middle of
|
||||
nowhere, one can find many unpaved roads and trails to explore, however you will
|
||||
not find very many developed hiking trails outside of the more popular areas. I
|
||||
have hiked on jeep roads my car wasn't hardy enough to traverse.
|
||||
|
||||
A little background on what basin and range topography means goes a long way in
|
||||
understanding and appreciating the landscapes of Nevada and western Utah. [This
|
||||
very informative video](https://www.youtube.com/watch?v=Owjt_WJKrBo) helps
|
||||
illustrate how these lands formed, I highly recommend watching it. [The
|
||||
Wikipedia page for The Great Basin](https://en.wikipedia.org/wiki/Great_Basin)
|
||||
is another great place to learn more. Finally, [this page at
|
||||
birdandhike.com](https://www.birdandhike.com/Areas/BasinRange_Area/_BasinRange_Area.htm)
|
||||
is honestly a better overview of this place than I can give. But, I did take
|
||||
some pictures too!
|
||||
|
||||
Entering from the east along Mail Summit Road raises you from the valley into
|
||||
the pinyon/juniper forests of the Seaman mountain range. Following the road will
|
||||
bring you down into the vast Coal Valley, a dry, sagebrush-laden basin. The
|
||||
valleys in the monument are pristine, with little variations like hills or
|
||||
ridges between the mountain ranges. There are 3 such named ranges that make up
|
||||
the monument, the eastern Seaman range, the western Quinn Canyon range, and the
|
||||
central Golden Gate range, with Coal Valley to it's east and Garden Valley to
|
||||
the west. The Quinn Canyon range is the highest, and features snowy caps in my
|
||||
photos.
|
||||
|
||||
Thanks to the [map provided by Bird &
|
||||
Hike](https://www.birdandhike.com/Hike/BasinRange/Camps-BR/_BR-Camps/_BR_camps.htm),
|
||||
I found some scenic campsites, and one that was not on this map. My favorite
|
||||
was the "GV Crags" site, with a cool rock outcropping and a trail that leads up
|
||||
to the Golden Gate range (however it doesn't go to any high peaks, but does go
|
||||
high enough to reach the forest)
|
||||
|
||||
Drives through the valleys, along the bases of the mountain ranges, and nights
|
||||
under the stars here are great. It's very peaceful and I saw very very few other
|
||||
people here. There are a couple of small ranches within the monument's borders,
|
||||
but they do not intrude on the views or solitude. Of particular note would be
|
||||
[City by Michael Heizer](http://www.tripleaughtfoundation.org/), which is not
|
||||
available outside of a scheduled tour, but it is located here.
|
||||
|
||||
Also present in the monument are petroglyphs, but ancient rock art kind of gives
|
||||
me the creeps when I look at it, so I did not explore those areas. The Bird &
|
||||
Hike website goes into details about those.
|
||||
|
||||
This is an area that begs further exploration on my part and I will be returning
|
||||
when I have the time. I would like to do more hiking, and take more photos in
|
||||
the forests. My first visits, I did not stray terribly far from my campsites,
|
||||
and I will do more exploring on foot next time. Enjoy the photos! And don't
|
||||
forget to check out [the overview on Bird &
|
||||
Hike](https://www.birdandhike.com/Hike/BasinRange/_B-R_Over/_BasinRange_Over.htm)
|
||||
if you want to see and learn more.
|
113
md/Bisti.md
Normal file
113
md/Bisti.md
Normal file
@ -0,0 +1,113 @@
|
||||
# The Looney Tunes Badlands
|
||||
|
||||
The Bisti is, without a doubt, the single weirdest place I have ever been in
|
||||
my life. It turned my understanding of how natural formations came to be right
|
||||
on its metaphorical head. It is so bewildering that it exceeds description,
|
||||
but I will try anyways.
|
||||
|
||||
The BLM-managed Bisti/De-Na-Zin wilderness, as the name implies, has two named
|
||||
sections. The area these two wilderness areas cover is quite large, and trekking to
|
||||
the heart of the region and back is probably not feasible in one day. Both are
|
||||
known for absurd formations and an abundance of exposed petrified wood. It's
|
||||
extremely dry, and is prone to large amounts of blowing dust in the spring.
|
||||
|
||||
|
||||
The Bisti has no developed hiking trails, nor are you able to follow anyone
|
||||
else's footprints except on the occasional sandy areas. I found some vague
|
||||
descriptions online of what direction to try going first, but ended up feeling
|
||||
like the coolest stuff I found was not there. It is very much a choose your
|
||||
own path adventure. I didn't take any GPS tracks to share with you.
|
||||
Admittedly, the view from the parking area is not impressive. None of the
|
||||
weird stuff is there to see unless you commit to really hiking in. But it's
|
||||
worth it.
|
||||
|
||||
On my first trip, I packed my things for an overnight backpacking adventure,
|
||||
and set into the wilderness in the early afternoon. The first encounter is a
|
||||
fairly large "plain" that is surrounded by small hills. Its inviting to look
|
||||
at, and suggests that one can use it as a little highway into the wilds. I
|
||||
first headed toward some of those low hills to see what I could find. A
|
||||
staircase-like arroyo winding through the large mounds was one of my first
|
||||
observations. The surface of the Bisti, it's flats and it's hills, are mostly
|
||||
shale. Its like clay, when packed in it is quite hard but other times, like on
|
||||
hillsides, it will collapse under your step. The hard parts look smooth and
|
||||
the soft parts are very pitted, almost looking like a thick gravel. This
|
||||
material seems to erode easily with rainfall, making the arroyos very dramatic
|
||||
in appearance. This was far from the weirdest thing I would see on this trip,
|
||||
but I was already pretty enamoured.
|
||||
|
||||
The shale came in hues of gray, yellow, red, and black. I'm sure the different
|
||||
colors are made of different compounds (and shale may not even be the right
|
||||
term for it), but I'm not a scientist. My first bewilderment of the region is
|
||||
that there are many mounds, hills of various colors in close proximity. One
|
||||
could be pitch black, and the one next to it would be vibrant red, and the
|
||||
space between them would change colors quite abrubtly. The entirety of the
|
||||
Bisti is not as dull looking as the drive to the parking area may suggest.
|
||||
|
||||
The next oddity I observed was an abundance of small caves and tube-like
|
||||
erosions. The Bisti is filled with pits, crevices, holes, and small caverns.
|
||||
Most of them are too small to walk in, but I did find a few that I could walk
|
||||
into. I wonder what formed these. I often found myself looking at things that
|
||||
were obviously eroded by water, but didn't actually make any sense to me. The
|
||||
pipe-like formations that went up and down seemed to defy gravity, I was
|
||||
staring at things wondering what could possess water to do that. It almost
|
||||
seems like the water was jetted through the ground, like there was a lot of
|
||||
pressure. There is also an abundance of paths that the water cut straight
|
||||
through a mass of shale, but these made sense because one could track where
|
||||
the water flows horizontally. At least *some* things make sense, but a lot of
|
||||
it simply did not.
|
||||
|
||||
Then comes the petrified wood. Its essentially an ancient log that turned into
|
||||
a rock. There were surely trees here at some point in the past, but the
|
||||
petrified wood that is here is just casually sitting on the ground as if
|
||||
someone just plucked them out from someplace else and just set them down
|
||||
there. It's fascinating and fun to find.
|
||||
|
||||
There are some deposits of pristine looking sand, perfectly rippled from the
|
||||
wind. There are no dunes of it that I found, but the bottom of some bluffs and
|
||||
hills would have pools of it. It looks soft, I want to run my hands through
|
||||
it.
|
||||
|
||||
Now, the hoodoos. And weird balancing rock formations? A lot of this stuff
|
||||
looks like clay mushrooms. Some of it looks like big massess of very solid
|
||||
rock sitting on thin pillars of softer looking material. The colors of the
|
||||
heads and stems of these formations can be completely different. They look
|
||||
like little goblins created them. Some are small, and others are sitting
|
||||
well above the head and into the sky. These multicolored cliffs, rock
|
||||
deposits, and hoodoos need to be seen to be understood or believed. And also,
|
||||
flats between the hills with many rocks and boulders interspersed, just
|
||||
sitting on the ground as if someone arranged them.
|
||||
|
||||
I set up camp at the base of a shale hill. The place I decided to sleep was
|
||||
not quite as extravagent as what I had seen so far or what I would see in the
|
||||
morning, but it was still inviting and I enjoyed it. I cooked dinner and drank
|
||||
tea. As the night went on, I noticed that it was completely silent. No sound
|
||||
of insects or plants blowing in the wind of any kind. Just silence. I really
|
||||
liked it. I walked out under the moonlight and drank it all in. Silence, a
|
||||
great view of the night sky (as anywhere away from the cities), and plenty of
|
||||
room to walk. I had a peaceful day exploring and a peaceful night
|
||||
appreciating.
|
||||
|
||||
In the morning, I took a new route. I found a lot of red stuff. And I do mean
|
||||
*red*, very vibrantly so. I wound through the hills for a couple miles, not
|
||||
finding a lot of hoodos but definitely weird caves and tunnels carved by
|
||||
water. More and more weird stuff here. At this point I was heading back to my
|
||||
car because i was running out of water. And then I left, not to return for
|
||||
over a year.
|
||||
|
||||
My second trip, I had driven there for hours, only to realize once I was
|
||||
getting close that the horizons were very hazy from blowing dust. I knew it
|
||||
would be a bad idea to go out but again, I packed the overnighter bag and set
|
||||
out into the badlands. It was extremely windy, and dusty, and by the time i
|
||||
made it a couple miles in, my eyes were irritated. I did find some cool areas
|
||||
and took some good pictures though.
|
||||
|
||||
Eventually I tried to set up camp, but it was a disaster. The intense wind
|
||||
ripped my tent stakes out of the soft ground, and my food cooker was
|
||||
collecting lots of dust into my food. I realized this was a lost cause and
|
||||
packed my things up, trudged directly into the wind for two miles, and left to
|
||||
go back where I came from. My eyes were filled with dirt, and I'm lucky I
|
||||
didnt get some sort of eye or respritory infection. I was still happy to see
|
||||
the Bisti again.
|
||||
|
||||
This place is really unique, and I'm glad that I went. It is a place of
|
||||
extremes, very dry, very dusty, very barren of life, very bizarre.
|
71
md/Caballo.md
Normal file
71
md/Caballo.md
Normal file
@ -0,0 +1,71 @@
|
||||
# Oases in the Desert
|
||||
|
||||
Before writing this, I did not know what the plural form for the word "oasis"
|
||||
was. Apparently it's "oases", which I had never heard before in my life! It's
|
||||
hard for me to talk about Caballo Lake without also mentioning Elephant Butte
|
||||
Lake. The two are less than 20 miles apart, and are both dammed resevoirs fed
|
||||
by the iconic Rio Grande.
|
||||
|
||||
There is a cansus-designated place in New Mexico called Caballo, which has a
|
||||
very small population. But they do have a post office! The name is shared also
|
||||
by the Caballo Mountains range and Caballo Lake. As a title for this album, it
|
||||
is used loosely to refer to that whole region.
|
||||
|
||||
Caballo Lake State Park is a peaceful place. There are small gardens of cacti
|
||||
in various spots, with picnicking, fishing, and camping areas with spectacular
|
||||
views of the Caballo Mountains. In my time spent there, I saw a lot of families
|
||||
enjoying themselves, fishing, grilling, and chilling out. I was camping on a
|
||||
rocky shoreline of the lake, and a man was walking with his dog. His dog
|
||||
excitedly ran over to my campsite to greet me, and his owner followed and we
|
||||
chatted for a while.
|
||||
|
||||
He was an interesting character, telling me stories of him being a
|
||||
self-described con artist. He likes to sit at intersections in the nearby town
|
||||
of Truth or Consequences, writing carefully phrased signs for panhandling. He
|
||||
pointed out to me that he takes great care not to lie. While he may be asking
|
||||
for money, he does not claim to be homeless or in danger, but he tries to
|
||||
appeal to folks who do help the homeless. One time, someone gave him money and
|
||||
said very sternly "this is for your dog, not for you.", and he said that he
|
||||
listened to that demand. He came back later and gave me a real wooden walking
|
||||
stick, colored like lapis lazuli. I still have the walking stick, though I
|
||||
never preferred using it over my trekking poles. It does look quite lovely
|
||||
though.
|
||||
|
||||
I have enjoyed kayaking on the lake. One morning I brewed myself some tea on
|
||||
the shore and enjoyed it while slowly floating about. I spent a couple days
|
||||
camping in the same spot, and there was another family nearby on the lake
|
||||
shore. We never talked, but we were able to see what the other was doing at
|
||||
camp. They spent a lot of time fishing. After a couple days, I decided to pack
|
||||
all my backpacking gear onto my kayak so i could cross the lake and camp on the
|
||||
other side. I found a nice sandy alcove with cottonwood trees, bordered by some
|
||||
steep bluffs that led out to the desert at the base of the mountains. I enjoyed
|
||||
a night of solitude, slept in my tent, and returned to the park the next morning.
|
||||
|
||||
When I got back, the family I was camping near at the park was concerned that I
|
||||
had went missing. They asked if I was okay, and if I hadn't showed up earlier,
|
||||
they would have asked the rangers to find me and see if I was alright. They
|
||||
didn't expect me to leave like that and thought i got lost or hurt! I told them
|
||||
I just wanted to camp on the other side, and they understood. They were very
|
||||
kind and I appreciated that.
|
||||
|
||||
When I was hanging out by Truth or Consequences, I found some unpaved roads on
|
||||
my atlas that led to the east side of the Caballo Mountains, "behind" the lake.
|
||||
The roads traversed southward along the valley, and then had turnouts that went
|
||||
west towards the mountain range. I found a cool spot to hang out and do a
|
||||
little mountain biking. I didn't go all the way to the peaks, but the views
|
||||
were really nice anyways. You can see the distant Elephant Butte Lake, from a
|
||||
high vantage point that made it look quite small. Sadly I did not feel like
|
||||
taking a lot of pictures in this area, but I regret that and want to go back to
|
||||
do more photography, and then go to the peaks.
|
||||
|
||||
The east side of these mountains are where you can find the Jornada del Muerto.
|
||||
It is a very dry, sometimes red-colored stretch of desert that challenged
|
||||
Spanish travelers with a waterless 90 mile stretch. Along the highway south of
|
||||
Engle, I found some access points where I walked the old trail and hiked up to
|
||||
[Point of Rocks](https://www.nps.gov/articles/000/new-mexico-point-of-rocks.htm).
|
||||
Here you can also find Spaceport America.
|
||||
|
||||
The areas around Truth or Consequences and Caballo have turned into one of my
|
||||
favorite regions of New Mexico. I have spent a lot of time here enjoying the
|
||||
Chihuahuan Desert. I feel very welcome and comfortable there and will surely be
|
||||
back in the future.
|
142
md/Rubies.md
Normal file
142
md/Rubies.md
Normal file
@ -0,0 +1,142 @@
|
||||
# Hell on Wheels & Heaven in the Mountains
|
||||
|
||||
Picture this: a sunny, peaceful, and warm June drive into the Great Basin
|
||||
desert, through valleys and surrounded by mountains, along the loneliest road
|
||||
in America. Before setting out, I studied my atlas, searching for new access
|
||||
roads into the wilderness. I drove east, until arriving at a small unpaved two
|
||||
track leading to the Pancake mountain range. Silly name, I know, and honestly
|
||||
thats what motivated me to go.
|
||||
|
||||
A Kia Soul is a funny vehicle to trek the desert wilderness. Front wheel drive
|
||||
with road tires gives little traction on unpaved surfaces. I was cautiously
|
||||
driving down the trail, when I came to a hill. I lost traction before the
|
||||
peak, forcing me to reverse. In these situations, I always went in for a second
|
||||
shot at a higher speed. Momentum works wonders to get through steep or sandy
|
||||
sections.
|
||||
|
||||
The trail had small plants growing between where tires had worn the track. I
|
||||
didn't think anything of it, they looked small and harmless. So I gave it the
|
||||
gas and made it up the hill. I felt a small thump under the vehicle on my way
|
||||
up, but honestly I had done worse in the past without any damage. All seemed
|
||||
well...until I smelled gasoline. I stopped the car, stepped outside and could
|
||||
smell it strongly. I crouched under the vehicle and saw a steady drip coming
|
||||
from the fuel tank. Oops...
|
||||
|
||||
I had no cell signal, and couldnt call for help. I quickly realized that my
|
||||
only option was to turn around and beeline to the nearest settlement. The
|
||||
closest town was Eureka, I didn't know what all was there or if anyone could
|
||||
help me, but it was my only choice. It was not very close and it took a while
|
||||
to get there, but the gas leak was slow enough that I made it there with at
|
||||
least a quarter of a tank left. I was hoping to catch cell signal there so I
|
||||
could google the nearest mechanic shop, but even the town had no cell service.
|
||||
|
||||
I found a gas station on what appeared to be the main street, so I parked and
|
||||
walked inside. My only hope was to ask the person working behind the counter if
|
||||
there was anywhere in town to get my car fixed. She knew a guy apparently,
|
||||
phoned him in and he showed up maybe ten minutes later. He crouched under my
|
||||
car and told me what I already knew. But he didnt have the gear to fix it. He
|
||||
needed not only a new gas tank but also a lift for the whole vehicle. He
|
||||
reccomended a shop in Elko that could help me.
|
||||
|
||||
I think that many city folk could not imagine how remote Great Basin
|
||||
communities can be. Eureka is a town with few services and no cell signal, and
|
||||
from there to Elko was....over 100 miles, with mostly untamed wilderness
|
||||
between them. I tanked up at this Eureka gas station and gunned it to the
|
||||
North. Honestly I was not sure how far I could go before the tank leaked out,
|
||||
but I didnt really have a choice but to try.
|
||||
|
||||
Thankfully the speed limit on state highway 278 was 70 MPH, which did wonders
|
||||
to make me feel like I was getting there quickly. Along the way, I encountered
|
||||
a vehicle going below that speed that I was not immediately able to pass. I was
|
||||
in a rush and i really wanted them out of my way, but it didnt seem like that
|
||||
big of a deal until I saw the sparks of a cigarette being tossed from the window
|
||||
to the road. This scared the living crap out of me, because I was leaking fuel
|
||||
and was about to drive right over that. Thankfully nothing bad happened, and I
|
||||
was soon able to pass them and continue my...panicked drive.
|
||||
|
||||
It took nearly two hours but I made it to Elko with some fuel left. It would
|
||||
have been great to be able to roll right up to the mechanic and get the process
|
||||
going the same day, but it was too late in the day and they closed. I went to
|
||||
Wal-Mart and bought a siphon kit and small gas canister so I could suck the
|
||||
fuel out of the tank to save it for the morning, but I couldnt get it to work.
|
||||
I was almost out of fuel but I managed to make it to a gas station where I just
|
||||
got some fresh fuel to put in the 2.5 gallon can. I then drove out past city
|
||||
limits and parked in the first spot that I could sleep in the car with. The
|
||||
smell of gasoline filled the car, so I set up a tent outside and slept there
|
||||
instead. Fun times!
|
||||
|
||||
First thing in the morning I showed up at the shop, after pouring the fuel can
|
||||
into the now empty tank. Its a wild story to tell someone and they seemed a
|
||||
bit...surprised at least, but they took the vehicle in and ordered the new tank
|
||||
(or whatever it is they do at first). My dad found and booked me a hotel room
|
||||
in Elko, so I plucked my essential gear and clothes out of the car and walked
|
||||
from the shop to the hotel and checked in. I took a shower and tried to relax
|
||||
for the evening.
|
||||
|
||||
The next day, to pass the time, I went to the [Northeastern Nevada
|
||||
Museum](https://museumelko.org/). The wildlife exhibit was awesome, but the
|
||||
settler and mining history section made me feel bad for the environment and for
|
||||
the natives. They at least had some pretty mineral samples on display. After
|
||||
that I walked to a mexican bakery and got some sweet treats. I went back to my
|
||||
hotel room and quite frankly I was bored out of my mind that night. I didn't
|
||||
want to be in a hotel, I wanted to be back out in the wilds.
|
||||
|
||||
The next morning, I walked back to the shop and asked if i could get more
|
||||
things from my car, which was just sitting there waiting for the part to
|
||||
arrive. I packed my big overnight bag with my camping essentials and about 4
|
||||
days worth of food. I then installed a ridesharing app onto my phone and
|
||||
requested a drive from the shop to the nearby Ruby Mountains. But that didnt
|
||||
work out...three times, the ride was declined after waiting for like 10 minutes
|
||||
each. The whole time, I was waiting in the shop, and there were people around
|
||||
me. Eventually I told them I was trying to pay for a ride but couldnt get one,
|
||||
and someone from the shop actually offered me a ride! When he was ready, I
|
||||
grabbed my bag and he drove us all the way down Lamoille Canyon and to a
|
||||
trailhead. There was no cell signal in the mountains, so we agreed to meet back
|
||||
at the parking lot at a specific time some days later. And from then I was
|
||||
entirely on my own.
|
||||
|
||||
In Elko, and in the lowlands around it, it was a warm June day, about 90F. When
|
||||
I stepped out of his car into the mountain air, it was significantly cooler. I
|
||||
filled my sawyer filter bottle with some cold water from a nearby stream of
|
||||
snowmelt, and headed up the trail. In contrast to the desert valleys, there
|
||||
were large trees, green grass, and lots of snow. I navigated the trail and
|
||||
headed to higher ground.
|
||||
|
||||
I met some alpine lakes and passages covered in snow. One of the lakes,
|
||||
Lamoille Lake, was mostly frozen, even in late June. The higher I hiked, the
|
||||
more snowy it got. The first snowy passage was actually pretty sketchy for me,
|
||||
as I did not have waterproof or even warm footwear and the sides of the trail
|
||||
were steep. My hiking poles were awkward to use with this much snow on the
|
||||
ground, and I almost slipped downward towards a snowy slope a few times. At the
|
||||
end of that was land I could more easily traverse, which made a great campsite.
|
||||
But when I arrived at the segment of trail that is called Liberty Pass, the
|
||||
snow cover was too much and the trail was steep. I had no snow shoes, I didnt
|
||||
even bring my crampons, so I had to accept that I couldnt proceed further
|
||||
without serious problems with my shoes. They kept getting wetter and colder. I
|
||||
turned around and explored what I could.
|
||||
|
||||
In the next days, the high of finding new mountain wilderness wore off, and
|
||||
depression started setting in. I couldn't talk to anyone because I had no cell
|
||||
signal, I couldn't hike higher because of my crappy shoes, and I couldn't bail
|
||||
out because I didn't have my car. Sadness and embarassment from the repair
|
||||
expenses, and my lack of control over the situation weighed me down. If that
|
||||
wasnt bad enough, the next day, i broke my backpacking gas stove by carelessly
|
||||
crossthreading the screw-in connection. I couldnt even cook a warm meal
|
||||
anymore, and had to ration raw pasta and oatmeal. My protein source
|
||||
(lentils) were inedible when raw. Things weren't looking great.
|
||||
|
||||
Despite the gloom, I still was happier there than I was in that hotel room.
|
||||
Some cheer returned to me when it began to snow. A cloudy day in the 30F-40F
|
||||
range, with gray skies and slow falling snow, made for good pictures and
|
||||
brought back my appreciation for my surroundings. Time passed slowly but
|
||||
eventually I swung back from the depression.
|
||||
|
||||
Eventually it was time for me to hike back to the parking area for my ride. He
|
||||
showed up at about the right time and the car was fixed. I thanked them
|
||||
fervently and drove away from Elko feeling simultaneously scarred and happy.
|
||||
|
||||
My time in the Ruby Mountains was bittersweet. Beauty abounds here, and water
|
||||
is plentiful. I would go back in a heartbeat. But I still felt damaged by my
|
||||
emotions and the moments that I felt stuck there. I hope to return in better
|
||||
circumstances. And I learned to be more careful when screwing my stoves onto
|
||||
the fuel canisters...and to not punch holes in my gas tank.
|
232
metadata.json
Normal file
232
metadata.json
Normal file
@ -0,0 +1,232 @@
|
||||
{
|
||||
"BasinRange": {
|
||||
"title": "Basin & Range National Monument",
|
||||
"state": "Nevada",
|
||||
"cover": "99.jpg"
|
||||
},
|
||||
"Berlin": {
|
||||
"title": "Berlin Ichthyosaur State Park",
|
||||
"state": "Nevada",
|
||||
"cover": "135.jpg"
|
||||
},
|
||||
"Bisti": {
|
||||
"title": "Bisti Badlands",
|
||||
"state": "New Mexico",
|
||||
"cover": "19.jpg"
|
||||
},
|
||||
"Canyonlands": {
|
||||
"title": "Canyonlands National Park",
|
||||
"state": "Utah",
|
||||
"cover": "20240616141708.jpg"
|
||||
},
|
||||
"CratersMoon": {
|
||||
"title": "Craters of the Moon",
|
||||
"state": "Idaho",
|
||||
"cover": "20240701200914.jpg"
|
||||
},
|
||||
"GoldButte": {
|
||||
"title": "Gold Butte National Monument",
|
||||
"state": "Nevada",
|
||||
"cover": "20240320115524.jpg"
|
||||
},
|
||||
"GreatBasinNP": {
|
||||
"title": "Great Basin National Park",
|
||||
"state": "Nevada",
|
||||
"cover": "20240618111751.jpg"
|
||||
},
|
||||
"LunarLake": {
|
||||
"title": "Lunar Lake & Lunar Crater",
|
||||
"state": "Nevada",
|
||||
"cover": "20240619100121.jpg"
|
||||
},
|
||||
"Misc": {
|
||||
"title": "Misc. Uncategorized",
|
||||
"state": "Many",
|
||||
"cover": "45.jpg"
|
||||
},
|
||||
"Quartzsite": {
|
||||
"title": "Kofa Wildlife Refuge",
|
||||
"state": "Arizona",
|
||||
"cover": "20240318163253.jpg"
|
||||
},
|
||||
"Sequoia": {
|
||||
"title": "Sequoia National Park",
|
||||
"state": "California",
|
||||
"cover": "208.jpg"
|
||||
},
|
||||
"Tahoe": {
|
||||
"title": "Lake Tahoe",
|
||||
"state": "Nevada",
|
||||
"cover": "20240401121328.jpg"
|
||||
},
|
||||
"WalkerLake": {
|
||||
"title": "Walker Lake",
|
||||
"state": "Nevada",
|
||||
"cover": "203.jpg"
|
||||
},
|
||||
"Bluewater": {
|
||||
"title": "Bluewater Lake State Park",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_9773.JPEG"
|
||||
},
|
||||
"Cathedral": {
|
||||
"title": "Cathedral Gorge State Park",
|
||||
"state": "Nevada",
|
||||
"cover": "IMG_1183.JPEG"
|
||||
},
|
||||
"Clayton": {
|
||||
"title": "Clayton Lake & Dinosaur Tracks",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_0907.JPEG"
|
||||
},
|
||||
"Caballo": {
|
||||
"title": "Caballo",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_0760.JPEG"
|
||||
},
|
||||
"Peralta": {
|
||||
"title": "Peralta Trail (Weaver's Needle)",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_6990.JPEG"
|
||||
},
|
||||
"EchoCanyon": {
|
||||
"title": "Echo Canyon State Park",
|
||||
"state": "Nevada",
|
||||
"cover": "IMG_1201.JPEG"
|
||||
},
|
||||
"CityOfRocks": {
|
||||
"title": "City of Rocks State Park",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_9191.JPEG"
|
||||
},
|
||||
"Diamonds": {
|
||||
"title": "Diamond Range",
|
||||
"state": "Nevada",
|
||||
"cover": "IMG_0623.JPEG"
|
||||
},
|
||||
"Rubies": {
|
||||
"title": "Ruby Mountains",
|
||||
"state": "Nevada",
|
||||
"cover": "IMG_0667.JPEG"
|
||||
},
|
||||
"ElMalpais": {
|
||||
"title": "El Malpais National Monument",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_9669.JPEG"
|
||||
},
|
||||
"CibolaGrants": {
|
||||
"title": "Cibola National Forest Near Grants",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_9966.JPEG"
|
||||
},
|
||||
"CibolaDatil": {
|
||||
"title": "Cibola National Forest Near Datil",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_9575.JPEG"
|
||||
},
|
||||
"Datil": {
|
||||
"title": "Datil",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_6663.JPEG"
|
||||
},
|
||||
"Flagstaff": {
|
||||
"title": "Flagstaff",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_8048.JPEG"
|
||||
},
|
||||
"VLA": {
|
||||
"title": "Very Large Array",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_6644.JPEG"
|
||||
},
|
||||
"Phoenix": {
|
||||
"title": "Phoenix",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_7879.JPEG"
|
||||
},
|
||||
"SaltRiver": {
|
||||
"title": "Salt River Canyon",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_6709.JPEG"
|
||||
},
|
||||
"CoconinoFlagstaff": {
|
||||
"title": "Coconino National Forest Near Flagstaff",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_8407.JPEG"
|
||||
},
|
||||
"WatsonLake": {
|
||||
"title": "Watson Lake",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_7580.JPEG"
|
||||
},
|
||||
"PrescottNF": {
|
||||
"title": "Prescott National Forest",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_7458.JPEG"
|
||||
},
|
||||
"BoyceThompson": {
|
||||
"title": "Boyce Thompson Arboretum",
|
||||
"state": "Arizona",
|
||||
"cover": "1606.JPEG"
|
||||
},
|
||||
"ToApacheLake": {
|
||||
"title": "To Apache Lake",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_1735.JPG"
|
||||
},
|
||||
"SonoranSnow": {
|
||||
"title": "Sonoran Desert Snow Day",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_8764.JPEG"
|
||||
},
|
||||
"GoldwaterLakes": {
|
||||
"title": "Goldwater Lakes",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_7200.JPEG"
|
||||
},
|
||||
"Roswell": {
|
||||
"title": "Roswell & The International UFO Museum",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_5957.JPEG"
|
||||
},
|
||||
"Mogollon": {
|
||||
"title": "Mogollon, A Ghost Town",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_5380.JPEG"
|
||||
},
|
||||
"ChiNaturePark": {
|
||||
"title": "Chihuahuan Desert Nature Park",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_6236.JPEG"
|
||||
},
|
||||
"Bumblebee": {
|
||||
"title": "Bumblebee",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_8535.JPEG"
|
||||
},
|
||||
"TontoNF": {
|
||||
"title": "Tonto National Forest",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_1670.JPG"
|
||||
},
|
||||
"Superior": {
|
||||
"title": "Superior",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_6153.JPEG"
|
||||
},
|
||||
"Gila": {
|
||||
"title": "Gila National Forest",
|
||||
"state": "New Mexico",
|
||||
"cover": "IMG_5468.JPEG"
|
||||
},
|
||||
"OakFlat": {
|
||||
"title": "Oak Flat",
|
||||
"state": "Arizona",
|
||||
"cover": "IMG_6104.JPEG"
|
||||
},
|
||||
"Pushawalla": {
|
||||
"title": "Pushawalla Palms Trail",
|
||||
"state": "California",
|
||||
"cover": "IMG_1424.JPG"
|
||||
}
|
||||
}
|
52
templates/main
Normal file
52
templates/main
Normal file
@ -0,0 +1,52 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>nebula's photoblog</title>
|
||||
<link rel="icon" href="favicon.ico" />
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="mainHeader">
|
||||
<p class="title">
|
||||
i take pictures
|
||||
</p>
|
||||
</div>
|
||||
<div class="mainBody">
|
||||
<div class="postBody">
|
||||
<p>
|
||||
<h1>Work in progress!</h1>
|
||||
This is going to be a photo blog. Right now its just a mess of undescribed photos.
|
||||
A lot of photos have not been uploaded yet and work on CSS and choosing which images
|
||||
are included here are underway. Come back later to see more pictures, descriptive
|
||||
content and better CSS.
|
||||
</p>
|
||||
<h4>A collection of {{ total_count }} photos in {{ album_count }} albums.</h4>
|
||||
<details class="toc">
|
||||
<summary class="tocText">Table of Contents</summary>
|
||||
<br>
|
||||
{% for placename, info in metadata.items() %}
|
||||
<div class="tocEntry">
|
||||
<a class="tocLink" href="/{{ placename }}/">{{ info['title'] }}, {{ info['state'] }} [{{ info["count"] }}]</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</details>
|
||||
</div>
|
||||
<br>
|
||||
<div class="photolinks">
|
||||
{% for placename, info in metadata.items() %}
|
||||
<div class="photolink">
|
||||
<a class="placeLink" href="/{{ placename }}/">{{ info['title'] }}, {{ info['state'] }}</a>
|
||||
<span class="indexPhotoCount">{{ photo_counts[placename] }} Photos</span>
|
||||
<br>
|
||||
<a href="/{{ placename }}/">
|
||||
<img class="preview" src="cover/cover_{{ info['cover'] }}">
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
143
templates/place
Normal file
143
templates/place
Normal file
@ -0,0 +1,143 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>{{ info['title'] }}</title>
|
||||
<link rel="icon" href="../favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<link rel="stylesheet" href="../style.css" />
|
||||
<div id="galleryContainer" class="galleryContainer">
|
||||
<div class="toolbar">
|
||||
<button onclick="prevImage()">Previous</button>
|
||||
<button onclick="imageNewTab()">Open Full Size</button>
|
||||
<button onclick="delGallery()">Exit</button>
|
||||
<button onclick="nextImage()">Next</button>
|
||||
</div>
|
||||
<img id="galleryImage" class="galleryImage">
|
||||
</div>
|
||||
<div class="mainBody">
|
||||
<a class="indexlink" href="../">
|
||||
<!-- <img src="../icons8-home.png"> -->
|
||||
Home
|
||||
</a>
|
||||
<!-- <br> -->
|
||||
<div class="locationDisplay">
|
||||
<span class="locationTitle">{{ info['title'] }}</span>
|
||||
<span class="locationState">{{ info['state'] }}</span>
|
||||
</div>
|
||||
<div class="headerImageContainer">
|
||||
<a target="_blank" href="{{ info['cover'] }}">
|
||||
<img id="headerImage" class="headerImage" src="/cover/cover_{{ info['cover'] }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="postBody">
|
||||
{{ markdown }}
|
||||
</div>
|
||||
<h3 class="photoCount">{{ count }} photos</h3>
|
||||
<div class="allphotos">
|
||||
{% for width, height, photo in photos %}
|
||||
<a id="{{ photo }}" class="previewLink" onclick="javascript:enlargeImage('{{ photo }}');return false;" href="{{ photo }}" target="_blank">
|
||||
<img width="{{ width }}" height="{{ height }}" id="{{ photo }}" class="preview" src="/thumbnail/thumbnail_{{ photo }}">
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
viewState = null;
|
||||
// jank here for getting photos during html templating
|
||||
photos = JSON.parse('{{ photos_json }}');
|
||||
galleryContainer = document.getElementById("galleryContainer");
|
||||
galleryImage = document.getElementById("galleryImage");
|
||||
previewLinks = document.getElementsByClassName("previewLink");
|
||||
headerImage = document.getElementById("headerImage");
|
||||
|
||||
function enlargeImage (filename) {
|
||||
viewState = photos.indexOf(filename);
|
||||
galleryImage.fullRes = filename;
|
||||
galleryImage.src = "/compressed/compressed_" + filename;
|
||||
galleryContainer.style.display = "block";
|
||||
headerImage.style.rotate = "none";
|
||||
};
|
||||
|
||||
function delGallery () {
|
||||
galleryContainer.style.display = "none";
|
||||
galleryImage.src = "";
|
||||
headerImage.style.rotate = "-3deg";
|
||||
};
|
||||
|
||||
function nextImage () {
|
||||
viewState++;
|
||||
if (viewState == previewLinks.length) {
|
||||
viewState = 0;
|
||||
};
|
||||
galleryImage.fullRes = photos[viewState];
|
||||
galleryImage.src = "/compressed/compressed_" + photos[viewState];
|
||||
};
|
||||
|
||||
function prevImage () {
|
||||
viewState--;
|
||||
if (viewState == -1) {
|
||||
viewState = previewLinks.length - 1;
|
||||
};
|
||||
galleryImage.fullRes = photos[viewState];
|
||||
galleryImage.src = "/compressed/compressed_" + photos[viewState];
|
||||
};
|
||||
|
||||
function imageNewTab () {
|
||||
window.open(galleryImage.fullRes, "_blank")
|
||||
};
|
||||
|
||||
function dragHandler (event) {
|
||||
|
||||
};
|
||||
|
||||
function keyHandler (event) {
|
||||
if (event.key == "ArrowRight" | event.key == "Space") {
|
||||
nextImage();
|
||||
} else if (event.key == "ArrowLeft") {
|
||||
prevImage();
|
||||
} else if (event.key == "Escape" | event.key == "q") {
|
||||
delGallery();
|
||||
}
|
||||
};
|
||||
|
||||
function clickHandler (event) {
|
||||
if (event.target.id == "galleryContainer") {
|
||||
delGallery();
|
||||
} else if (event.target.id == "galleryImage") {
|
||||
if (event.clientX > window.innerWidth / 2) {
|
||||
nextImage();
|
||||
} else {
|
||||
prevImage();
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
// last_pointerx = NaN
|
||||
// function onDown (event) {
|
||||
// // console.log(event);
|
||||
// last_pointerx = event.x;
|
||||
// };
|
||||
|
||||
// function onUp (event) {
|
||||
// if (event.x > last_pointerx) {
|
||||
|
||||
// }
|
||||
// if (last_pointerx > event.x + 50) {
|
||||
// prevImage();
|
||||
// } else {
|
||||
// nextImage();
|
||||
// };
|
||||
// };
|
||||
|
||||
document.onkeydown = keyHandler;
|
||||
document.body.onclick = clickHandler;
|
||||
// galleryImage.addEventListener("touchstart", onDown);
|
||||
// galleryImage.addEventListener("touchend", onUp);
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
x
Reference in New Issue
Block a user