The Chicago Transit Authority is currently in the process of rebuilding the Clark Interlocking, where the Ravenswood Branch (Brown Line) diverges from the North Side Main Line (Red/Purple Lines). Long story short, the current interlocking is all at one level, and when northbound Brown Line trains diverge, they must cross three other tracks, blocking them. In order to reduce delays and increase train capacity, the junction is being rebuilt so that northbound Brown Line trains will use a flyover to pass over the other three tracks so trains can continue underneath them.
I am doing my best to photograph the progress as it goes on, though I am somewhat limited in what I can do from the ground while the system is elevated, and I am avoiding unnecessary travel on public transportation due to the ongoing pandemic, which means I can’t get pictures from the nearby Belmont station platform either. Still, here’s what things looked like back over the summer:
I haven’t been down there for more photography since then, and this weekend I decided that given the sunny weather, I should go down there again. This time though, I walked and did not enter the station to minimize COVID-19 risk. Here’s how it looks now:
They’re starting to lay the trackbed now, so that’s definite progress. The apartment building that was under construction in my June photo also looks completed, at least from the exterior. The track passes surprisingly close to the building though, and given that the building was still under construction in June, there’s no way they could have built it without knowing about and coordinating with the CTA construction. I guess one lucky tenant will have the train going right outside their window. Interestingly a situation like this exists on the Singapore LRT where it passes very close to buildings at some points, but on that system they actually frost the windows to preserve privacy for the occupants of those buildings. I know there is no way the CTA rolling stock supports that, and I somehow doubt our new railcars will either. Still, I don’t live there, so not my concern.
A side note: when I was there, I got one-upped by a guy taking a photo from above with a drone. That’s way better than what I can do from the ground given the elevated nature and the fact that I can’t (or at least really shouldn’t) walk on the tracks. One of these days I’ll try using a drone, but I want to master my photography skills from the ground before I start adding flying to the equation. I talked a bit with the guy flying the drone, and he indicated that they will be laying track for the actual overpass (i.e. above the existing track) fairly soon.
While I was there, I also photographed the track in the area, and I definitely got a very strong “Chicago” vibe from it:
I then walked back home and got a few photos on the way back. I realized I haven’t really photographed Edgewater, my own neighborhood, much, which is a shame given its distinct (and awesome) character, so I got some photos there too.
Anyone who has read basically any post on this blog will know I’m really big into urban transit. For some reason, I have found myself obsessed with the South Shore Line far more than any Metra line. I guess the reason being the South Shore Line’s uniqueness, both relative to Metra and to other commuter rail systems? Anyway, I have set out to photograph the entire South Shore Line. I also felt a stronger urgency to photograph the South Shore Line since a project is supposed to start relatively soon that will double-track the line between Gary and Michigan City and rebuild the stations along the line in the process. While this project will definitely be a major service improvement, I wanted to document what’s there now before it happens.
I have currently photographed every station in and east of Gary, but still have Hegewisch, Hammond, and East Chicago left. Since those are a lot closer to Chicago, they’ll be easier to get to. The further out ones were a bit more of a challenge.
The first big challenge is cost. The South Shore Line does not sell daily or weekly passes, only monthly passes. This means that I would have to pay a separate fare for each leg necessary to get all the stations, and when you add that up between all the stations, it gets real expensive real quick. However, I encountered a nice twist of fate. As part of the measures to welcome people back during the pandemic times, they temporarily made westbound travel free through the end of October. This was a game changer, since it meant in any given day I could take the train all the way out to the furthest east point I intended to photograph that day, then take short hops to various stations on the way back. In doing so, I would only have to pay the fare for the one outbound trip, since all the hops inbound were free.
The second big challenge was scheduling. This is not the L, this is a commuter rail line. Consequently, it does not run all that frequently, especially on weekends. This meant I needed to plan ahead based on the train schedule to avoid spending hours at a single station and not being able to photograph any others. I managed to make that work with a bit of cleverness and planning, but it did mean that my photography expeditions were full day endeavors. So, without further ado, here is how it went.
Expedition 1: South Bend and Michigan City
I figured I might as well knock out the furthest and most expensive stop first, so I went all the way out to South Bend. The weather that day was mostly sunny with scattered clouds. I caught the Red Line downtown, then got on the 8:45am train to South Bend (the first one of the day). I got to South Bend and quickly got to work taking pictures, since my train was going to leave again about an hour later.
From there, my plan was to take the train to Carroll Avenue and walk to 11th Street, since those two stations weren’t all that far apart. I got back on the train at South Bend, and the conductor recognized me from the trip out. When getting our destinations (they need to know where everybody’s getting off since there are a few flag stops) he automatically assumed I was going back to Chicago since he knew I got on there. I quickly explained I was going to Carroll Avenue and that was resolved. I didn’t particularly want to explain why I was going the route I was (not all transit employees like people photographing their systems), but later on he asked what I was doing and I had my camera bag pretty obviously visible so there was no hiding it and I explained briefly what I was doing, and he actually said it sounded like a cool project. It was nice to get approval from a transit employee for once.
Once I got to Carroll Avenue and got off the train there, I got to work photographing the station. The station is a low platform with a wheelchair lift and located directly adjacent to both a South Shore Freight facility and the main South Shore Line storage yard and maintenance shops. I really was hoping to get some photos of the yard, but unfortunately it didn’t look like there was anywhere I could (legally) go to get a good photo. Still, I got plenty of pictures of the station. The sky had also cleared up some more, so I got some nice bright shots.
I was going to head out but then found my path was blocked by a pair of freight locomotives in the main driveway, so I had to wait for them to move before I could go anywhere. Once they did, I started walking towards 11th Street. Along the way I found a few abandoned buildings.
Then, I got to where the tracks enter the street. This is a very uncommon sight and will disappear in a few years, so I made sure to photograph it.
I then made my way down 11th Street to the station. There were a few people waiting at the station for the next (eastbound) train, so I didn’t take any pictures with them in it and waited for their train to arrive before taking pictures where the interior of the shelter was obviously visible. The 11th Street station is unique in that it is located in the middle of the street. No platform whatsoever, and you have to cross a lane of traffic to board. It’s similar to a tram stop, except this is a full-sized commuter train. The train runs in the middle of the street for two miles and some change, a very unusual setup these days. This is a relic from the interurban heritage of the line.
I then continued down 11th Street and eventually got to the point where the tracks switch from 11th to 10th and cross the Amtrak line. There were also a few abandoned buildings there.
Seeing the abandoned buildings and run-down houses, I had the song “Boulevard of Broken Dreams” going in my head. That song wasn’t referring to any literal street, but I felt like if there was any street it applied to, this was probably pretty close. I didn’t take any pictures focusing on abandoned houses since I felt bad about doing that, since, ya know, that used to be someone’s home. I did take pictures of abandoned commercial properties though.
Then, I got to where the tracks leave 10th Street and return to their own right of way.
From there I headed back towards the 11th Street station. Once I got back to the station, I started getting photos of everything I couldn’t before. I also finally got to eat lunch (a sandwich I brought with me) and got a soda from a convenience store for a little caffeine. From there, I waited for my train. One thing that amused me at 11th Street was the electronic sign reminding me to watch the gap between the platform and the train. Uh, there is no platform at all? I have to step up from the street.
Expedition 2: Hudson Lake, Beverly Shores, and Dune Park
Taking advantage of another sunny day, I planned another expedition. Doing some research on Google Earth, I found that I could walk from Beverly Shores to Dune Park via the Calumet Trail, so my plan was to take the first train for the morning to Hudson Lake, then take a train from there to Beverly Shores and walk to Dune Park in order to maximize how many stations I could photograph on a weekend schedule.
The trip to Hudson Lake was pretty uneventful. I got on the train at Millennium and got off at Hudson Lake. The one important thing was I originally got on in the third car, while you can only get on/off at Hudson Lake in the first or second car since the platform is only long enough for one car (the doors at the back of the first car and front of the second car are the ones that stop by the platform). Thankfully I found this out from the conductor when he checked my ticket and saw it was to Hudson Lake, so I knew to head to one of those cars when we were getting near Hudson Lake. Once I got to Hudson Lake, it felt like I had entered a whole new world. After having been in Chicago for such a long time and only leaving to visit South Bend (and then just the airport) and Michigan City, my mind was entirely on urban areas. Hudson Lake is very much rural, so that was a bit of a shock. Still, I got to work photographing the station (not much of a task, given that the station is just a short concrete platform, shelter, and small parking lot).
From there with an hour and some to kill, I walked around Hudson Lake photographing various things. It took a while to find a public beach, but eventually I did. I got some photos of the water from the beach and also found a sand mermaid someone made. There were a surprising amount of boats docked there as well. Then I continued walking around the lake and photographing the sights. Eventually I made my way back to the train station and caught the train to Beverly Shores.
I got off at Beverly Shores with little fanfare, but did make sure to notify the conductor since it’s a flag stop and there was no guarantee anyone else was getting on. I then started photographing there. The station is strange in that while the actual railroad facilities are pretty minimal (standard platform, shelter, and parking lot kind of deal), there was an old station house that is now an art gallery. That station house was built in Mediterranean revival style, which felt very out of place for rural Indiana. Still, it was a cool piece of architecture, even if out of place.
Then, after I took a bunch of photos, I headed to the Calumet Trail to begin walking to the Dune Park station. The trail felt kind of desolate. While near the Indiana Dunes, I was not actually on the lakeshore. Instead, it was just a wide clearing in the forest containing (from left to right) the road, the railroad, power lines, and the trail.
Still, despite the feeling of desolation, it was a nice feeling walking down it. I did see random pieces of power company infrastructure along the way and made sure to photograph those. Then after a few miles, I got to the Dune Park station. That station is an oasis in an otherwise fairly empty area. It has a big station house with a waiting room and high platform, despite not being all that close to any population centers. I immediately got to work photographing the station, and since it had a waiting room, nobody was hanging out on the platform, making it easier to avoid including people in my photos. I also got a soda from the vending machine there (gotta have that caffeine). Eventually my train arrived and I headed back home.
With that, I had photographed every station from Dune Park to South Bend.
Expedition 3: Portage/Ogden Dunes and Gary
For my third major expedition, I finished out the future construction zone. This time I actually took a day off work and went during the week since the first available opportunity with clear skies was during the week. Doing this meant that I could travel with the weekday schedule though, which meant more frequent trains. The weather definitely did not disappoint. It was in the 60s and completely clear skies. I could not have asked for better weather.
As usual, I caught the Red Line at Bryn Mawr in the morning. I hadn’t taken the Red Line in a while and they had started some construction work on a temporary platform for when the Red Line reconstruction project begins, so I photographed that while waiting for my train:
My train arrived in less than five minutes (yay, weekday schedule) and got me to Millennium Station without any trouble. At Millennium Station, my South Shore Line train was already waiting and boarding, so I just hopped right on. It didn’t leave for another 20 minutes, but I figured I’d rather wait on the train than in the station. Anyway, the train headed out right on schedule and got me out to Portage/Ogden Dunes.
Once there and the other person disembarking there had left the station, I got to work photographing. The weather was absolutely beautiful, making for really good photography conditions. The station is interesting in that it is the only one on the line with mini-high platforms. All other stations either have low platforms that are not wheelchair accessible at all (Gary/Chicago Airport, Miller, Beverly Shores, Hudson Lake), use wheelchair lifts (Gary Metro Center, Carroll Avenue), or have high platforms. This made for an unusual detail to photograph. This was also my first time at a two track station with only one platform, so most eastbound trains require passengers to cross the westbound track to board/disembark. These both will be changed with the construction project, which will build a new high platform for the eastbound track (though it looks like it will keep the low platform with mini-high platform for the westbound track). Also, while I was there, several freight trains and two Amtrak trains passed by on the tracks to the north of the station.
After photographing, I found that there were power outlets in one of the shelters, which gave me a chance to top off the batteries in my phone and camera. Some idiot had turned on the heat though, even though it was in the 60s. To make things even hotter, the shelter basically trapped sunlight, so it was really hot in there. I was able to turn off the heat, but it took a while to cool down to a reasonable temperature. Anyway, a while later, with a fully charged phone and camera, I caught the next train to Miller. Miller is just a low platform with one track (there is a second track, but that is a diverging line that does not carry South Shore Line trains). Once again, I waited for everyone to leave, then got to work.
From there, my plan was to head to downtown Gary on the bus. However, I couldn’t find the bus stop. There was a reroute in effect due to some nearby street construction, but the GPTC website just listed the streets it was going on without an actual map. My guess for where the bus was going to arrive seemed to be incorrect, and no bus actually came at/soon after the scheduled time. With that unfortunate stroke of luck, I headed back to the train station since there was a train coming not that long later. That train did come, though about 10 minutes late. That train got me to Gary Metro Center within a few minutes. I got off there and also got started photographing once everyone had left the platform. It was a bit tricky since it was afternoon and sunny, so the shadow of the station canopy was not straight down but instead over the westbound track. This resulted in a major difference in lighting between the two, but I think in the end it came out ok. Gary Metro Center is definitely a major transit center, being directly connected to the main local bus hub and Greyhound station for Gary. The train portion is unusual in that it while part of a major transit center and on an elevated embankment, it has a low platform. From what I can tell, this is so freight trains can pass the station. without colliding with the platform. Other stations with high platforms deal with this by either having a second track that avoids the platform (Dune Park) or a guantlet track to provide extra clearance for freight trains (Hegewisch, Hammond, East Chicago). At Gary Metro Center, they just built the station with a lower platform and use a mobile wheelchair lift for accessibility.
After photographing the platform, I headed into the main station building itself via the skybridge connecting it with the platform. A guy on the platform asked me if I was taking professional photographs. I don’t know why he was asking, as he wasn’t even a railroad employee. I responded that my photos are definitely not professional. It would be awesome if I could get paid for photographing train stations, but in the end I have a day job doing web development (also a fun thing, don’t get me wrong). I crossed the skybridge and entered the main station house. From the station house I walked around the plaza and parking lot photographing from various angles.
Then, I caught the R1 bus to get me to the Gary/Chicago Airport station (aka Clark Road). When I got on the bus, the driver asked me where I was going, so I said “Gary Airport train station” and he seemed really confused (it seemed like he thought I wanted to go all the way to Chicago?). I then followed that up with “Clark Road” and it still didn’t click with him, but then eventually another passenger emphasized that I meant the Clark Road train station and he got it. The bus got me there fairly quickly, and I started photographing the last station of the day. Thankfully, the sun was still high enough in the sky to avoid shadow issues.
The Gary/Chicago Airport station is another interesting one in that it’s a flag stop and a pretty basic station. It’s just a shelter adjacent to a single low-level platform, so like Portage/Ogden Dunes, eastbound passengers need to cross the westbound track to get on/off the train. However, unlike there, the platform is not the full length of the train and only can fit four cars (there are only two places where the track can be crossed, and one of them is road crossing by the platform, while Dune Park had four along a full length platform, allowing potentially all eight cars to board/disembark). The picture on Wikipedia (from 2016) shows it having some old cracked asphalt for the platform, but it looked like it had some fresh concrete since then, and the station looked pretty nice, even if minimal. As far as I’m aware, there are no plans to renovate the station due to its low ridership.
After another inbound train arrived, I took that to Millennium Station, then caught the Red Line back home.
One of these days once I get another sunny day I’ll also photograph Hegewisch, Hammond, and East Chicago (most likely all in the same day). That’ll be easier (and cheaper) since they’re a lot closer, so if I can’t get there while westbound travel is still free, having to pay a fare for each leg won’t be quite as expensive as it would be for the stations further out. I can even get to Hegewisch entirely on the CTA. Once that’s done, I will have conquered the South Shore Line! I haven’t taken pictures of Van Buren Street Station yet either, but I consider that to be part of the Metra Electric District and not the South Shore Line for the purposes of completely photographing lines.
Part of living by myself means I need to cook my own food. I’ve been able to cook decently to some extent for a long time, but I never had to cook every meal myself until living here in Chicago. I either lived with my parents, who did most of the cooking, or was in college, where I got most of my meals at the dining halls. Despite living as a single guy just out of college, I made sure to actually eat well and not just be reheating frozen meals all the time (I have had a total of one frozen meal, a Giordano’s frozen pizza, in the entire two months I’ve lived here so far). Here are some of my creations:
Waffles
Not exactly the most interesting, but I got a free waffle iron that someone in my building left in the laundry room with a sign saying “Free”. Waffles are one of the first things I ever learned how to cook, and they’re always a delicious classic. I don’t go for the cheap fake syrup either, I get real maple syrup. It’s worth the cost.
Chicago-style pizza
Yes, of course I need to make some Chicago-style pizza if I’m in Chicago. For the record, I also love New York-style pizza. But Chicago-style pizza has one key advantage: I can make it easily in a normal oven and don’t need to get it crazy hot for it to come out really good. I can cook one a Chicago-style pizza at 425 degrees and it comes out amazing. My first attempt followed the recipe in the Joy of Cooking:
Not bad for my first attempt. It came out tasting pretty good, but did leave some things to be desired. The crust was too fluffy, the cheese didn’t melt quite all the way (I used shredded mozzarella, and it still was definitely noticeable that it was shredded when I was eating it), and something just didn’t feel quite right. A few weeks later, I tried again using a recipe from King Arthur Flour:
This came out a lot better. There were a few important changes from the first time here. First, I used a different recipe for the dough specifically designed for this use, not a slightly modified version of standard pizza dough. This dough didn’t rise quite as much and was easier to stretch out, so it wasn’t as fluffy and provided the right outer edge for my pizza. Second, I used the stuffed pizza approach. I formed a bowl with the outer crust and placed sausage and cheese on as normal, but then I placed another layer of dough on top before putting the sauce on top, and topping it off with some Parmesan. Further, I used sliced mozzarella rather than shredded, and it made a big difference. in getting the right gooey texture for the cheese. Also, I topped it off with some grated Parmesan, which I didn’t do the first time. Finally, I made sure to coat the pan with butter before baking, which made a surprisingly big difference. I’m definitely going to try this again at some point, and probably keep it more or less the same as how I did it this time.
Challah
Ah, challah. A truly amazing bread. I grew up with challah every Friday night and always loved it, so I continued that tradition living independently. When I first moved here I had no yeast and yeast was not available at the grocery stores (seriously), so I was kind of out of luck. However, with some help from family and the internet, I was able to get some yeast shipped to me. Once I had that, I got to work. The first time I made challah was right when the yeast got here, which was mid-afternoon, limiting how much time the dough had to rise. The result was definitely not bad, but a little too dense and crumbly.
In subsequent weeks I would make the dough first thing in the morning and let it rise all day, giving a much fluffier result. Here are some from later weeks:
I definitely got some pretty good challahs (challot?) out of that. I’m still getting the braiding technique down, but regardless of how they looked they all tasted delicious. Also, leftover challah makes great toast, which is now my standard breakfast on Saturdays and Sundays.
Enchiladas
I also made some enchiladas using a family recipe I grew up eating. The key components are mole sauce, chicken, chicken broth, corn tortillas, and lots of cheese.
Lasagna
Chili
I don’t have any pictures of this one, but I made some good old-fashioned chili. I wasn’t all that imaginative with this one, and just put a few kinds of beans, some ground turkey, and a few spices in a pot. It was pretty good, though the flavor was kind of weak. Before I make this again I will make sure to get more spices so I can give this a stronger flavor.
Cookies
Ah, a classic, chocolate chip cookies. Easy to make, yet delicious. I made a whole batch of them, following the recipe here. In the past I’ve used the recipe on the Nestle chocolate chip package, but I wanted to see how other recipes were. I liked this one better, the cookies had a better texture and a slightly better flavor. I did make a slight tactical error though. I didn’t consider how many cookies the recipe made (about sixty) when compared to how many people would be eating them (one). Now, there are much worse problems (who doesn’t want a ton of cookies), but I did have to find a way to store them when I don’t have all that much tupperware. However, my grandparents sent me a bucket of popcorn a few weeks prior, so the bucket made a perfect cookie container:
The earlier batches were a bit undercooked and didn’t quite hold together, so I had a lot of cookie crumbles in that bucket. However, those crumbles still tasted good, and the later ones did hold together just fine.
Lemon Chicken
I made some lemon chicken as well, wanting to try something interesting. I used yet another recipe from the internet. That was delicious, but also probably the messiest meal I have ever made. I managed to get flour and cornstarch all over my kitchen, and this used a ridiculous amount of preparation dishes, and I only got two dinners out of it. Next time I make this, I will definitely make more, since for all the trouble it is I want it to last a while.
Burgers
To celebrate memorial day and then later independence day, I made burgers. Nothing particularly special about this, I just make a patty from ground beef and put it in the oven until it’s properly cooked, and add on some cheese at the end. Still, always a delicious option.
Blintzes
Cheese blintzes were surprisingly difficult. I used the recipe from the Joy of Cooking, and the first night it was kind of a disaster. The outer wrappers I made didn’t hold together, and then the filling was way too runny, getting all over the place. They tasted good, but probably half the filling didn’t actually stay in. This was a total mess in my kitchen.
With the leftover filling from the previous night, I gave it another shot. I made another batch of the wrapper batter, having already used all I made the previous night. The second night was definitely an improvement. I changed a few things up that made a big difference. First, do not be bashful in coating the pan with butter. It really does help crisp up the wrappers and hold the finished product together. Second, pour the batter directly from a pitcher instead of using a spoon. That made a big difference in how the wrappers turned out, since it was easier to pour the batter thinner and more evenly. Finally, make the filling the day before and keep it in the fridge since it will solidify somewhat. These held together much better and tasted amazing.
So I think I have been eating pretty well for a single guy in his 20s. I have a collection of recipes under my belt, and I’m always looking to learn more.
Over the span of a year and four months (March 10, 2019 to July 5, 2020), I have taken photos of every station on the North Side Main Line, from Merchandise Mart to Howard. This all started on my spring break trip during my junior year of college, where I visited Chicago. That trip was mostly focused on downtown, but at one point on March 10, 2019 I did find myself at Sheridan station:
I also got some pictures of the Merchandise Mart station on that trip, since that’s a major landmark in Chicago and located near downtown:
All the rest of that trip I got photos of other stations in/around downtown, including areas like the Milwaukee–Dearborn Subway, the State Street Subway, and the Loop. I went all the way out to the end of the northern leg of the Milwaukee–Dearborn Subway up at Division, but never went anywhere north of the river on the State Street Subway.
As it would turn out, that would be my last time photographing Chicago with my Canon camera. The next time I was in Chicago was for my interview with BlueBolt, by which time I had my newer and more powerful Olympus camera, and managed to get a few photos along the way.
Once I had the job and started looking for an apartment, I knew approximately where I wanted to be (Uptown/Edgewater area), so for my spring break trip my senior year I returned to Chicago to scope out apartments in that area. Unlike the previous trip, where most of it was downtown, this was mostly focused on the North Side. I stayed up in Rogers Park, and got around via the Red Line. I got plenty more photos of the North Side Main on that trip, taking photos as I traveled to visit apartments. I needed my camera to photograph the apartments, anyway.
I also got some pictures of various other stations along the way, some of which I was headed to anyway for various reasons, and some of which I specifically went to for the purpose of photographing. Since this was during my spring break, I couldn’t really choose the weather. Some days were good, but some were also cloudy. However, I knew I was going to be living in Chicago in a few months, so that didn’t really bother me.
Once I moved to Chicago in May, I didn’t really get out much due to the stay-at-home order. Even after it was lifted, I limited how much I went out since I didn’t particularly want to catch COVID-19 or spread it to others. Also, my primary focus for photography was on the parts I could access without going downtown (to avoid crowding), which is to say the North Side Main, Ravenswood Branch, Evanston Branch, and Skokie Branch. Progress initially started slow, but over time I got photos of more and more stations. I started with stations like Wilson, Bryn Mawr, and Howard, but also went up to Linden and down to Belmont:
However, this most recent weekend, since I had a long weekend due to July 4th, I figured I could make use of a three day pass, my extra free time, and a period of good weather to get as many photos as possible. As an added bonus, due to the holiday weekend, crowding was pretty low. I made it my goal to finish with pictures of every station on the North Side Main, which I accomplished by Sunday. Here’s a picture of each station that hasn’t been included earlier in this post:
Somehow when I visited Chicago to scope out apartments, I didn’t get any pictures of Morse, which is the station I was staying closest to. I guess in how busy I was with getting places from there, I never thought to get out my camera. I also only realized that as I was putting this post together on July 4 (I had just assumed I took photos of the station I was using frequently for a week), so the next day I headed out with my camera to get photos there and fill in the gap. So, to finish off the set, here’s photos of the remaining stations:
I also have conquered the Skokie Branch (Yellow Line), since in my quest to photograph Morse, I also went to Oakton–Skokie, having already photographed Dempster–Skokie during my apartment expedition. I will at some point go photograph Dempster–Skokie during the day though.
So with that, I’ve hit a major milestone in photographing the Chicago L! I’m warily watching news reports about COVID-19, and if it flares up in Chicago again (so far it hasn’t, but could any day), that’ll put the kibosh on my transit photography for a while. Even if it stays at the level it is, I’m going to avoid going through downtown in order to avoid the highest crowding, limiting my photography to the Ravenswood and Evanston Branches.
Since moving to Chicago, I have been able to keep up a pretty good exercise routine on my bike. This is really important during the COVID-19 pandemic since with gyms closed and all that, this helps me stay healthy. Also, since I am otherwise mostly at home (my job is from home and I’m limiting how much I leave in order to help prevent the spread of COVID-19), biking is a good (and reasonably safe) way to get outside.
I used to run cross-country and track in college, but unfortunately cannot run significant distances anymore due to an injury, requiring me to find alternate forms of exercise. I started with swimming in the fall of 2019, but it was often difficult to motivate myself to do it and just didn’t feel right for whatever reason. I avoided the exercise bike since I had done that before and the time there seems interminable and I have to go really hard for a decent workout. In January 2020, I settled on the elliptical since we had a bunch of them available at CWRU and it was reasonably similar to running, but didn’t cause me any problems. With that, I started getting back into shape. Once I got sent home due to the pandemic, I continued on the elliptical since we had one in the garage. Upon moving to Chicago, I needed to find another option since my building doesn’t have any exercise equipment. Biking seemed like a decent option, since it avoided some of the pitfalls of the exercise bike (in particular the fact that your legs are the only thing moving) but still gave me a good cardio workout. As an added bonus, I could bike outdoors and explore the city some.
I first started out biking along the North Shore Channel Trail. I wanted to go on the lakefront trail, but it was closed in order to prevent congregating. It’s a pretty decent trail that goes from Chicago up to Skokie then Evanston. It doesn’t cross a lot of streets, making biking more pleasant. However, it’s a massive pain to get to, requiring a lot of biking down city streets, in particular some that are less than bike friendly. The trail also isn’t all that scenic, offering a pretty standard suburban view the whole way.
At one point I did a bike ride downtown for some photos. I didn’t want to travel on the CTA at the time so that essential workers could have more space, but did want to go downtown to get some pictures. I managed to do so while not getting near anyone, and here are some of the pictures I got:
I also considered alternate routes. I then settled on a route that went further east, staying close to the lakeshore. That one takes me right through Northwestern’s campus, and then onwards through Wilmette, and eventually up to Kenilworth and Winnetka. I liked that route a lot more since it was much more scenic and also allowed me to go further. The northern part of the route also paralleled a Metra line, and I briefly got some pictures there with my phone.
One day I planned to bring my real camera to photograph all the Metra stations along the route, but alas that trip was not meant to be. I got a flat tire up by Howard, so I had to walk my bike over to the L and return home. I then had to spend a good chunk of the rest of the day finding a new inner tube for my bike (since the tube is very old at this point, I figured it was worth getting an entirely new tube rather than just patching it). Since it was a Sunday, I couldn’t find any open bike shops near me. I then looked to Target, and found that they had the tube in the size I needed, but nowhere near where I live. I ended up getting there on the L. However, even after that, I still didn’t have a tire lever (the location where I got the tire didn’t have one), so I still couldn’t replace the tube. I then found that another Target location had that, but still not my usual location, so I got to take a nice long walk to get that. Then, with new tire (I bought an extra one just to be safe) and tire levers, I replaced the tire and was back in business. Unfortunately, I haven’t had the right weather (a completely blue sky) on a weekend since then, so I unfortunately haven’t been able to take that trip. It will happen someday.
Then, last week, the lakefront trail reopened. That was so much easier since I only live a few blocks away. The trail also separates bikes and pedestrians for much of its length, allowing me to get some good speed going. As an added bonus, a lot of the parking lots along the trail are still closed, so I can cross them more easily and quickly. Unfortunately the trail is closed between North Avenue and Ohio Street for construction due to significant pavement deterioration between those locations, so I either have to turn around at North Avenue or bypass that area on city streets near downtown. So far the farthest south I’ve been is Museum Campus, but I will definitely continue on further south in the future.
I’ve had some free time lately, and I found a project for the past few days to keep me occupied. It all started in a group chat when someone brought up the idea of building his own programming language where as much as possible is symbols, primarily various types of brackets. Every command is in some sort of brackets (sort of like Lisp), and everything not in some sort of bracket is a comment. An example program (provided by the author) is this:
(#A)(&(A>12)*(A-=3)!(A+=2))(A>>)
To break it down, the program does the following:
(#A) reads A from standard in and requires A be a number
&(A>12) represents an if statement, where the condition is A>12
*(A-=3) means that if the condition (A>12) is true, then subtract 3 from A
!(A+=2) means that if the condition is false (i.e. A <= 12), then subtract 2 from A
(A>>) means print A to standard out
Arrow
This inspired me to build my own programming language. I was trying to figure out what the most ridiculous way to draw out control structures was, and after thinking for a while, I decided to require the programmer to use text to represent the control flow of the program by drawing everything with arrows. Thus, I called the language Arrow (mostly because that was the first name I could think of that I couldn’t find an existing language for). It is available on my GitHub for anyone who wants to read more about it or maybe try using it. You can look in “primesieve.arw” and “string.arw” for some examples of functions. There are two basic control structures: if and loop.
If statement
/--< false condition
| body
| more body
\-->
In that case, if the given condition is false, then the body is skipped over, indicated by the arrow. Here’s a basic example:
bool even
even = true
/--< x % 2 == 0
| even = false
\-->
In that case, if x is even, then the variable “even” will be set to true. How this works is that if x modulo 2 is zero (i.e. x is even), then the body of the if statement will be skipped and even will retain its original value of true. However, if x is odd, then the body of the if statement will not be skipped over and x will evaluate to false.
Loop
/-->
| loop body
| more loop body
\--< continue condition
The loop functions as a standard do-while. I couldn’t find a way to satisfactorily represent a standard while with arrows, so I gave up and just did do-while (you can always skip over it with an if statement if the condition is false if you want a real while loop). The arrow indicates that if the continue condition is true, go back to the top. A basic example of this:
int counter
counter = 0
int base
base = 2
/-->
| base = base * 2
| counter = counter + 1
\--< counter < 5
That code would calculate to the fifth power by looping until the counter reaches five, and at each iteration multiplying base by two.
Functions
I also couldn’t be satisfied with a programming language without adding functions. Functions also use a syntax that involves visualizing the control flow with text. An important nuance here is that functions must only have one return at the very end. Also, functions cannot be void (though I may implement that in a future update it time permits, and you can ignore the return value of a function). A basic example:
function
/--> int five()
|
^ 5
As you might imagine, that’s a function that returns five. The key idea here is how the return is specified (and code body goes above the return). The return (^) points back towards the function name. An important thing to note here is that you can only return from a function in one place (which must be the last instruction in a function body). Similar to how there are no break/continue statements, this requires the control flow to be visually obvious and have no jumping around, keeping the flow visible with the arrows.
Putting this together
With these frameworks, programs can be put together. A simple example of a loop inside a function is a function that calculates an integer square root (or the ceiling if the number is not a perfect square):
function
/--> int squareRoot(int x)
| int candidate
| candidate = 0
| /--> //repeat the loop until the candidate squared is greater than or equal to the input
| | candidate = candidate + 1
| \--< candidate * candidate < x
^ candidate
You can get more complicated, since control structures can be nested. To make this more fun, here’s a function that detects if a number is prime:
function
/--> bool isPrime(int x)
| bool result
| result = true
| /--< x < 3
| | int factor
| | int ceiling
| | ceiling = squareRoot(x)
| | factor = 2
| | /-->
| | | /--< x % factor != 0
| | | | result = false //if the factor divides the input, then the input is not prime
| | | \-->
| | | factor = factor + 1
| | \--< factor < ceiling and result //bail out as soon as we see a factor
| \-->
^ result
That function (which uses the square root function from earlier) loops from 2 to the square root of a number and sees if any of those values divide the number. If so, it returns false, and if not, returns true.
Lexer Framework
In the process of developing this, I built a fairly powerful lexer framework that can, given a language spec built with objects, perform the lexical analysis to generate tokens automatically. It’s definitely not the most efficient tool (it uses greedy matching and a ton of string operations), but it was a good exercise in object-oriented design and writing reusable tools. The basic building blocks are as follows, and everything except “fixed string” recursively nests on other token types.
Fixed string
Fixed sequence
Repeated
Multiple options
Given rules using these elements (as well as a few other rules on how to actually get a useful result, such as what type to attach to each token and when to combine underlying tokens), the lexer can generate the tokens for a program. A few simple examples:
Digit is multiple options of the fixed strings “0”, “1”, … , “9”
Unsigned integer is repeated digit at least one time
Identifier is sequence of letter followed by repeated alphanumerics zero or more times
Type System
Given that I am a very strong believer in strong typing, I created a type system for Arrow. The three base types are int, char, and bool, and arrays of any dimension can be created from those types. Everything is copied/passed by value (and arrays are deep copied). Strings are just arrays of characters, with the length representing the length of the string. Every variable starts out uninitialized, and attempts to read an uninitialized variable will result in an error. Arrays also can be either initialized or uninitialized. To initialize an array, dimensions must be specified in the declaration (for example, int[] x[5] would initialize an array of length five). Once an array is initialized, each cell is an uninitialized value.
Strings are also a part of the language, with a string being an array of chars. Unlike C which uses null-terminated strings, since arrays are a well-defined type in Arrow (as opposed to C which just has a pointer to the head of the array), the length of the array determines the length of the string.
Scoping and static semantics
Using mostly what I learned in Programming Language Concepts class, I was able to implement static semantics fairly easily. I designed the call stack (and the static symbol stack) to have both a static link and a dynamic link, with the static link being used for scoping and dynamic link being used for a return location. I also was able to implement static type synthesis on the parse tree using techniques I learned in that class. Currently there are no global variables, but with how the scoping system is implemented I could add those with minimal effort.
Input/Output
Though it almost came as an afterthought, input/output were added to the language. Output is pretty simple, using the print keyword (note that it’s not a function, but instead a language construct). Multiple things can be printed by separating them with commas. Input is a bit more tricky, and currently input can only be taken to integers and strings. To receive input, use the input keyword than specify a type (for example, “input int” or “input char[]“). Input commands can be used in expressions like a regular function call, but the argument given is a type and not a variable.
Compiler Design
The overall high level design was taken from what I learned in Compiler Design class. In particular, having a separate lexer, parser, parse tree, and backend (interpreter).
I may have accidentally created something useful
I intended the Arrow language mostly to be a joke as well as maybe something to keep me occupied. However, as I was developing it I realized that it may actually have some useful value. Certainly it’s not a great tool for developing real-world applications, but the visualized control flow may be a useful tool for teaching control structures or helping visualize algorithms. The control flow graph is almost built into your source code here. The lack of any sort of GOTO statements (throw, return, break, continue) also means that the control flow has to be painfully obvious and can only be shown with the control structures that require the control flow to be directly visible.
If anyone creates something useful, I’d love to see it!
Wow, the past few weeks have been crazy. Quite a lot has happened. This was definitely not the scenario I imagined even a few months ago, but despite quite a whirlwind of things happening, I managed to make it work.
One interesting twist was the component where I was teaching. I was a teaching assistant for Software Craftsmanship, and the primary component of my job was leading code reviews every week for students’ programming assignments.
Then, the graduation ceremony was pretty much a complete non-event. Some videos were posted, and we each got a slide. I’ll get my diploma in the mail in a few weeks. I managed to graduate Summa Cum Laude (for CWRU that means top 10% of my class), so that was good to see. They unfortunately removed my submission for my slide. I’m not sure why, since it wasn’t anything inappropriate or rude or anything. It was just a picture of me sitting with a cat in my lap and the line “It’s been a crazy four years”. Oh well.
Moving
I have now moved to Chicago! When on my apartment scouting trip earlier, I found one apartment that I knew was my best option. The apartment had basically everything: a good location close to the L, lots of room, on-site laundry, the property management gave me a good impression of how they handled things, and an additional small room that would be good for an office. As an added bonus, the tenants living there at the time I toured the unit had a cat, so I immediately knew this would be a good apartment to have my own cat (coming soon, I hope!) After I finished with apartment tours, I went to the property management office to apply in person, and a few days later got a call telling me I was approved.
Fast forward to May, with some (a lot of) help from my parents, we loaded my stuff into a van and drove up to Chicago. Before actually moving in, I snapped a few quick photos of the empty apartment to document what it looked like without my stuff:
With that, we got to work unpacking everything. Most of the furniture was fairly easy. The bookshelf just had the shelves taken out, so we had to put those back. We also had to take the drawers out of the dresser to move it up the stairs. My desk required no modification at all. The one somewhat difficult thing was the bed, which we basically completely disassembled to fit into the van. However, being an Ikea bed, we were able to put it back together following the original instructions with minimal tools. Then we also unloaded my stuff, and went to Target to buy supplies and food. We finished the day with some Giordano’s pizza (deep dish, of course), a fitting welcome to Chicago. The leftover pizza then lasted me three more days.
With that, I had a place to live! Over the next few days, I got to work making this place look more like home, putting up decorations, cleaning out boxes, etc.
This definitely felt more like a home. However, I was still missing some real furniture. My living room table was a card table accompanied by a folding chair, and I had no couch. My grandparents came to the rescue for that problem and got me a table, two chairs, and a couch off Wayfair. After some assembly, I had a real living room:
So with that, I have a home! No doubt this place will evolve as time goes on, but I’m pretty satisfied with how it turned out. I’m also really glad I ended up going for a slightly larger apartment, given that now I’m spending a lot more time here than I expected due to the stay-at-home order in Illinois.
Stuff I’ve been doing in the meantime
I had a fairly long gap between when I moved and when work will start, so I have done a bunch of different things in the meantime with all the free time I had. It felt weird being completely done with school, but nice to have all the free time. I have done the common things like watching TV and playing video games (in particular Wii Sports), but also some other things.
For exercise, I still am avoiding running on pavement due to my Achilles, and there aren’t really any good non-paved places around here to run that I’m aware of. Also, all the gyms are closed as part of the COVID-19 prevention measures. Thus, I settled on biking outside. After spending five months on the elliptical, being outside and moving again was a great feeling. The lakefront trail is closed since the amount of people that used it posed a hazard for COVID-19, so I had to find alternate routes. My primary route so far has been the North Shore Channel Trail up to Skokie and Evanston, but I also recently found that going further east into Evanston and Wilmette (via Northwestern) is a good route. I biked downtown once too (via Broadway, which has bike lanes for much of its length) for some photos, to date the only time I’ve been downtown since I moved here.
I have not yet been on the L, which is a bummer given how much of a transit enthusiast I am. Still, I know that the public health of Chicago is more important than my hobbies, so I’m avoiding the L to give more room for the people who really need it. All my supply needs are within walking distance (Jewel-Osco for groceries and Target for most other things), and I haven’t quite started work yet, so there really isn’t much reason for me to be taking public transportation for now. Once things calm down some, I’ll continue my exploration of the city. I have no plans to leave Chicago, so I have plenty of time to do this.
One of my projects in the meantime was the Arrow programming language, available on GitHub, and I will make another post about Arrow and the story behind it soon.
In all, despite the craziness going on everywhere, I think I’m doing well as I can right now. I can’t wait to start work, and in time as things settle down I’ll get to experience more of the city.
So during this COVID-19 shutdown, my photography is going on hiatus since I am going to be a good citizen and follow the stay-at-home orders. I have no idea how long this is going to take, but I figure it’ll be a while. Looking through my Flickr, the last photo I took that got posted was this:
I took that as part of a free afternoon I had while doing apartment visits in Chicago, not realizing it would be my last photo expedition for a number of weeks, if not several months. Not a bad photo to end with, if I must say so myself. I aligned it about as perfectly as I can hope by hand, and the lighting looks pretty good while still being a clear shot (it helped that this station is fairly well lit and has a light colored design), so it definitely shows how my photography has improved. I also took that picture with my newer camera with everything manual except focus (I’m still getting a feel for that), while my previous Chicago trip was with my older, smaller camera and with all the settings on auto.
Once this blows over, hopefully sooner rather than later, I will finish what I started with my Chicago photos. I definitely am going to explore all over the L, since it’s a really interesting system with a very non-uniform design due to the varying owners and vintages of all its components. I also will try to get as many photos as I can on Metra and the South Shore Line, though that’s inherently limited by the train frequency and the (much) higher ticket cost. There are also a ton of buildings and landmarks I want to photograph, and unlike Cleveland, high density extends throughout the city, rather than just downtown, so that’ll be a fun project. This will take multiple years, but is something I very much look forward to.
Like virtually every other college student in the United States, I got sent home as a result of the ongoing COVID-19 pandemic and will be taking part in remote classes for the remainder of the semester. After finishing my apartment search, I headed back to Cleveland on Friday and immediately got to packing my stuff. Then, on Sunday I headed back home to Durham, where I will be for the rest of the semester. I likely will not be back to Cleveland again except for visiting friends and hopefully the cross-country alumni meet. It was a bit tough saying goodbye so quickly, since I was before operating on the assumption I would remain on campus with my friends until graduation, so I would be able to hang out with them until the end and we all could say goodbye at the end, but knowing when it was. Instead, I met with some of them one last time at Mitchell’s Ice Cream (which is now also closed), and then first thing the next morning headed out. We’re all still keeping in contact, but it’s not the same. I also had a few more things I wanted to get pictures of, but I guess that was not meant to be. It so happened that my last photo was filling in a missing photo from my post about the changes to the public transportation in Cleveland:
The first week of remote classes is going as well as I can hope. The situation is obviously not ideal for anyone, but we’re getting by. My classes are mostly using Zoom, which seems to be standing up to the likely unprecedented load without any problems I can notice. Since my classes are mostly lecture and project based, I’m in a better situation than the people in classes that are more discussion or lab based, so I’m basically just watching lectures from home instead of in person.
Life at home meanwhile is somewhat boring. I am taking a fairly light courseload for my final semester, so I already had a fair amount of free time back at CWRU. Now that most of the other things I was doing that take my time aren’t happening anymore, I have a lot more free time. Other than schoolwork, I’m also working on other projects, exercising, and making sure to walk outside a lot since the weather is beautiful down in NC.
I somehow managed to time the apartment hunt perfectly. While I was in Chicago, there were virtually no restrictions and it was more or less businesses as usual. Almost immediately after I left, the COVID-19 countermeasures began, which would have probably made apartment hunting much more difficult if not impossible.
Moving to Chicago will be interesting. Assuming interstate travel isn’t banned, I’ll be moving in early May. I have an awesome apartment, which is especially good now that I’ll likely be spending a lot of time there, likely including working from home for some period of time. Time will tell I guess. I also had a lot of plans to explore various things around Chicago and other nearby cities starting this summer, but those will have to be put on hold. Fortunately, I have plenty of time to do all this once this pandemic is over, even if it takes a long time, since I have no plans to leave Chicago.
So today I continued my apartment hunting adventure. As was the case with the past two days, my day started with an apartment visit. This time, it was in Edgewater. Not all that much to say on that front, so I’ll continue to the fun stuff. I had some hot bar food from Mariano’s for lunch, which was pretty good. I will likely be shopping either there or Jewel-Osco for groceries, so I figured I might as well start getting familiar with their stores. Once that was done, I got back on the L and headed towards another barrage of apartment visits. This was the first set I saw not on the Red Line, but instead on the Brown Line, making this my first time taking that line (I also have not yet ridden the Green or Pink lines). I got off at Paulina:
From there, I headed to my first apartment of this set of visits. I then traveled across that part of the city (the realtor driving me between apartments), and visited a number of units in Lakeview and Uptown, but further west than I was before. After that was done, I caught the Brown Line at Irving Park. Due to fairly large the number of people there (it was about 3:30pm at this point, so rush hour was approaching), I didn’t get any photos, and it was cloudy anyway. I headed back downtown and hung out there for a while, then headed back north to get dinner. Since I wanted something light, I took the train back to Bryn Mawr to go back to Mariano’s and get a chicken caesar salad:
After some dinner, I figured I would explore a more remote part of the L system, and figured I’d head to Howard and from there either go to Linden or Skokie, depending on which train arrived first. It just so happened that both were there, so I opted for Skokie for no particular reason. Thus, I boarded the Yellow Line and went out to Dempster-Skokie.
From there, I headed back to Howard, then transferred to the Red Line and called it a night. It’s feeling a lot more real that I’m moving here now that I’m apartment hunting. With any luck, I’ll have a place to live soon. From there, I’ll have a whole new city to explore.