Once in a while, I think most people develop a certain amount of nostalgia for their childhoods. This past week, I’ve somewhat started a trip down memory lane, and have resurrected some of my earliest projects, which brings me plenty of good memories. I will maybe share more of these projects in some of the future posts.
First, a bit of background: When I was young, my parents would never allow me to have a video gaming console, even though I wanted one badly and all my friends were immersed in the technology glut of always wanting to upgrade to fastest and computationally powerful gaming consoles. While I was living in Chicago, I briefly owned a Sega Genesis console, which my dad had bought for me along with a few games to play. I am not sure what happened to the console eventually, but it seemed to just disappear from my life; perhaps my dad saw I was spending a large amount of time with it and eventually gave it away without me knowing? Eventually, I was given a Nintendo Game boy, and after a rather uncomfortable episode of my dad discovering I had stolen batteries from him to power it on, he essentially destroyed the Game Boy. This was around 1995.
Sometime around then, my dad bought me a copy of Microsoft Visual Basic 4.0 (computer application), and told me if I wanted to make games, I would have to create them myself. Around that time, he imposed stricter controls on how I could to spend my time around the computer, which could easily lead to all forms of addictive behaviors. The goal was that if I were to play games, I would have to first create them myself. I was up for the challenge. I immediately immersed myself in self-learning, and began to teach myself how to program in Visual Basic. I remember beginning small, creating small forms which displayed simple messages, then over time, the quantity and quality of my projects gradually increased over time. I discovered a web site called www.planet-source-code.com (now www.planetsourcecode.com), which is a forum in which you could submit code projects for several different languages, and compete against other submissions for the honorary title of “Coder of the Month”. When I began using this site, I did not think I could ever compete against some of the contest winners, however within a couple of years, I won coder of the month for a Scorched Earth-style ballista game which I had created. From 1997-2000, I had developed an increasingly expansive and diverse code portfolio. The majority of this code library was lost over time due to inadequate file management. The only evidence of my work during these years are the thirteen code projects which I can still download from planet source code (link) even though the site went through a major data loss in 2015. To get these projects working, I set up a 32-bit Windows XP virtual machine, since I doubt Visual Basic will work on 64-bit Windows 10. Most of the projects I was able to get to run, however the graphical interfaces all seem like they had shrunk in size, and much of the animations which had relied on a slow computer speed seem to have sped up due to the improved processing power of my current computer. I tried compiling some of these projects for Windows 10, and surprisingly, I was able to get some projects to work. I ended up converting all the projects to Visual Basic 6.0, which is the version which I have kept in my software collection.
Random Shape Generator
One of the projects that turned out surprisingly well was a screen saver I had created which generated random shapes. I cannot get this screen saver to work in Windows 10, but it works fine in Windows XP. In this project, it started by me experimenting with a series of vectors with varying length and diverging at random angles, and I wondered what it might look like if you take this series of vectors and then keep repeating it several times. For instance, your typical square consists of a single vector with an angle of 90° repeated end-to-end four times; and most common geometric shapes could be reconstructed using this same process. What I was surprised to learn is that as long as the series of vectors doesn’t have a tendency to shoot off in 180° will eventually end up exactly where they started. In the process, the repetition of groups of vectors would create a shape which has interesting features. Some how out of your chaotic array of random vectors, there tended to appear order, and that to me was beautiful. I took this concept, and figured out how to turn it into a screensaver. I added some variability into color gradients used to draw the shapes which added an extra dimension to the graphics. These color gradients also behaved in a random way.
In the above video (best viewed in high-resolution full-screen), I took around 10 minutes of screen video of the screen saver running on the Windows XP virtual machine I set up, and overlaid it with some Bach. The screen saver appears to run faster now than I remember it running almost 20 years ago, and at some point the animations appear jumpy. However, it’s a relic of the past which has a certain amount of meaning for me, and I think most people can appreciate.
In Windows XP, the screen saver installs and has various customization features. On the Screen Saver setup screen, the screen saver resizes to display in a miniature preview screen image. When you click on the settings button, you can adjust the number of shapes which show up on the screen at once, the time between screens and shapes, and line thickness. An “about” button shows a dialog which gives credit to another Planet Source Code contributor who had provided much of the code I used to develop the screen saver.
Another piece of software included with the screen saver submission allowed for designing various shapes. The interface provided a way of defining the number of vectors in a segment, the length and angle of those vectors, the gradient colors, and display settings such as grid and axis display.
The Visual Basic source code and installer packages can be downloaded using the following links. Keep in mind, it probably won’t work on Windows 10 — and need I even mention, DAD, it won’t work on Macintosh (unless you start a Windows XP virtual machine, which you can do using Parallels). The recommended operating system is Windows XP (which very few people even use anymore). Also, note that the software also has quirks. I think this should be understandable, because it was developed by a 16-year-old.
We decided to end the bicycle ride in Bonn, because there were various issues contacting the friend in Krefeld we were going to stay with there. We decided on an alternate plan: we would travel up to Hamburg and stay a couple nights there before travelling in Berlin. We scheduled train tickets to Hamburg and then to Berlin, and because the trip from Hamburg to Berlin required we leave early in the morning, we decided to try to find a hotel next to the train station. I looked up hotel reservations online, but unfortunately, all the hotels near the city center were out of our price range. We ended up settling on a Holiday Inn with was a few kilometers away, however the lodging price was still a bit high for what we were hoping for.
Until our train was scheduled to leave, we wandered around downtown Bonn, browsed various markets, passed by some monuments, stopped by Nordsee for lunch. The street musicians we encountered were quite good.
The train left around 10 o’clock in the morning, and it wasn’t until late in the day we reached Hamburg (it is, besides, around an 8-hour 300 mile trip). When we finally got to Hamburg, we looked up the directions to the hotel and went straight there. The hotel staff upgraded our room to one of the executive suites near the top floor, which had a great view of the industrial side of Hamburg.
One of the major items on my agenda at this point was to figure out where I could launder my clothes, since I had no clean clothes left. I asked the staff at the lobby where a coin laundry location was nearby, and they referred me to a nearby hotel and sold me some laundry detergent. I took a couple loads of laundry to the neighboring hotel, however I found quickly that I would have issues operating the machinery. The machines were free to operate; however, they were quite different than the machines I was used to. I required a quick German lesson to understand the operating instructions, however I think I didn’t quite understand the instructions, because I ended up having my clothes locked in the machine for a couple hours, unable to figure out how to end the cycle so the doors would unlock. When the doors finally unlocked, it hadn’t spun the clothes, so they ended up soggy. Additionally, I somehow set the dryers into a mode where they wouldn’t actually dry the clothes but just tumble them. At the end, it was getting too late, so I settled on clean — but soggy — clothes; better than having smelly clothes, at least.
Hamburg (April 29)
In the morning, we first made our back to the train station for breakfast at one of the bakeries and made changes to the train schedule to Berlin. After that, we made plans to head in the direction of the Brahms museum, which we wanted to visit there. Hamburg is a city with rich musical history, to include many Baroque composers. Brahms lived the first part of his life in Hamburg. On the way there, we saw the City Hall, where we saw a memorial to George Philipp Telemann (Baroque composer).
We finally made it to the Brahms museum. The museum was near a barque museum, which is in a house that Gustav Mahler lived for a while. The Brahms Museum was one of six museums in the “Composer’s Corner”, which honored various musicians whom are tied to Hamburg — to include Georg Philipp Telemann, CPE Bach, Fanny & Felix Mendelssohn, Johannes Brahms, and Gustav Mahler. We decided to see two of the museums, one for various baroque composers, and the other for Brahms. The museums were fascinating, containing original manuscripts, recreations of opera stages, some of the original instruments, and tools used for creating manuscript copies. The Brahms museum had a re-furbished piano, which was the piano owned by one of the Brahms’s students; so no doubt, Brahms probably had played on it before. The museum director invited me to play it, so I played the Brahms Intermezzo Op. 118, no. 2. It was a little difficult to play, since the piano action was a little different than I was used to. While we were there, we were the only visitors at the museum. I left with a few souvenirs from the gift shop, including a porcelain bust to add to my collection of composer busts purchased at museums dedicated to the composer.
Afterwards, we decided to go out for some authentic Hamburg hamburgers. I’m not sure, but it is rumored that hamburgers originated in the city of Hamburg, however nobody seems to know for sure. We found an authentic Hamburg hamburger place called “Burger King” (not sure what that means in English), and they had very delicious hamburgers there. We both had the house special, which they called the “Whopper” (not sure how to pronounce it). But the burger was far better than any burger I’ve ever tried in the states.
Afterwards, we wanted to get into the Miniature Wonderland (Miniatur Wunderland) museum. Unfortunately, we couldn’t get in that day, and the waiting time for the museum was days long. The museum featured impressive miniature creations (model trains, cities, etc). Instead, we took a walk around the city, and saw many of the historic landmarks. It wasn’t a huge disappointment; at least we were able to see the Brahms museum, which was the main attraction.
After walking around Hafencity for a while, we decided to head back to the city center near the City Hall. Afterwards, we went to one of the shopping centers where my dad got ice cream (I don’t eat ice cream myself). We stayed here a while because it began to downpour, and we didn’t want to walk around while it was raining.
After it stopped raining, we made our way back to the hotel. Later for dinner, we stopped at the Alt Deutsche Küche Elbbrücken (the Old German Elb Bridge Kitchen).
Hamburg to Berlin (April 30)
The next morning, we got up at 4 o’clock in the morning, and rode our bikes to the train station. There we had breakfast then got on the 6:30 train. The train ride was several hours long, so I read some books which I had brought. When we got to Berlin a little before noon, we had to swap the tube in my bicycle, which had failed. Since it was too early to check into the hotel, we rode around a bit, riding by the Victory Column, Brandenburg Gate, the Kaiser Wilhelm Memorial Church (which had been bombed in World War II, and was being preserved in ruined state as a museum), Checkpoint Charlie (which is still manned as a form of historical reconstruction project), the TV Tower, and passed briefly by the museum block. We had lunch at Hackescher Markt, which consists of a series of stores located underneath the railroad tracks.
Afterwards, we headed to the hotel, checked in, and paid a visit to the Rewe (grocery store) at the train station. That night, we ate at a Peter Pane (burger restaurant) near the Ibis hotel which we were staying at, which is across the street from the train station.
Berlin Day 2 (May 1)
We started the day by grabbing breakfast at the Le Crobag in the train station. I grabbed a sandwich and a couple Berliners (jelly doughnuts).
This day was the German Labor day, meaning many businesses were closed. Fortunately for us, many of the museums which are normally closed on Mondays were opened for Labor Day. We wanted to go to the Pergamum museum first, but as we got to the ticket stand, we found many of the exhibits in the museum were going to be closed. Instead, we went to the Berliner Dom, and went on a museum tour of this building. The Berliner Dom is a Lutheran cathedral with very impressive architecture, at which many of the German royalty were buried. It is somewhat a state church. The museum tour talked much about the history of the building, of how it was built, how it suffered damage during WW2 and was later rebuilt. We visited various different levels of the building, going up along the dome walk path, and then down into the crypt, where many of the German nobility are entombed.
After touring the Berliner Dom, we decided to visit the Natural History Museum next. This museum was close to the hotel, and I had seen signs for it advertising some of the dinosaur bone exhibits they had on display. But first, we decided to visit the Goete Institute which my sister Diane attended when she stayed in Berlin, have Döner nearby, then text her images. She always seemed to appreciate when we texted her images of us eating her favorite German food. (Actually, she quite hated us for it.) Döner usually consists of meat or Falafel and various vegetables (cabbage, tomatoes, lettuce) in a focaccia-like bread, topped with a special sauce.
After lunch, we peroused the streets for a bit. Occasionally, we would see placards on the street with names of Jewish people who had lived or worked at those locations, who had during World War 2, been sent to concentration camps and later executed. We stopped by the Foundation New Synagogue, which is now a permanent venue for exhibitions.
We then made our way back to the hotel to unwind for a hour. Afterwards, we went off to the Natural History museum. The Natural History museum had various very impressive exhibits, including a extensive rock and mineral collection, one of the most impressive taxidermy collections, various dinosaur bone collections, and an enormous collection of pickled fish (very creepy exhibit). Some of the notable exhibits include Tristan the tyrannosaurus rex (the largest and most complete T-Rex collections which was excavated in Montana) and Knut the Polar Bear (you might have heard about it in the news).
Afterwards, we tried to get into a pathology museum, but it was about to close; so we headed back to the hotel. We later stopped by the Rewe, then went to dinner at Zollpackhof Restaurant. Afterwards, we went back to the hotel and retired for the evening.
Berlin Day 3 (May 2)
This day, we intended to go to the district with the museums, and see how many we could fit in our schedule. Many of the notable museums in Berlin are located in a section on an island in the Spree river. We bought a general museum pass which would allow entry into most of these museums.
Before visiting the museums, we first went to the Memorial to the murdered Jews in Europe. I can’t seem to figure out what the monument symbolizes. The monument consisted of stone blocks of varying sizes, and a concrete ground which was uneven with various dips and ridges. There really doesn’t seem to be very much information on the site, but supposedly there is somewhere an information center has an archive of over 3 million Jews which were murdered by the Nazi regime. The monument has received much criticism for it’s level of vagueness.
The first museum we visited was the Neues museum, which consisted of a wide range of artifacts from the stone, bronze and iron ages, to include many artifacts of Roman colonization. The museum contained a large collection of Egyptian artifacts (sarcophagi, ancient writings and tablets). Because we had much planned for the day, we need to hurry through the exhibits; so I wasn’t able to glean much from the exhibitions.
We next went to the Pergamon museum next door. We ended up having to wait in line for over an hour to get in; and retrospectively, we should have gone to this museum first when the line wasn’t nearly as long. However we got in. This museum is notorious because it has some of the more impressive exhibits. The museum actually contains the Ishtar Gate, a massive structure which was transported from the dig of Babylon in Iraq. They were only able to include a portion of the palace, however the entire palace was transported back to Berlin, many of which is stored in archives. The museum also has reconstructed Roman buildings, and a collection of Islamic art.
Afterwards, we met with a friend of my dad’s from several years back, when he made a medical trip to Cameroon. We sold her my dad’s bicycle, which meant we wouldn’t need to worry about hauling two bicycles from then on. We had lunch with her at Peter Pane again, and talked about her plans to come to the United States for a tour this year.
Berlin to Leinach (May 3)
The next day, we checked out of the hotel, had brekfast at the train station, and boarded a train to Würzburg. Our final destination was Leinach, and it would require three train transfers to get there from Berlin. We left fairly early. On the way, I finished the book I was reading, mad a few emails, then began another book. On the last train, it was a bit crowded, and we were uncertain where to get off; however, we did get off at the right time, so everything worked out. When we arrived, we were picked up by Hans Wagner, loaded our baggage in his car, and I rode over to the Wagners’ house while my dad rode my bicycle over to their place. There, we had dinner and talked most of the afternoon. Much of the conversation was in German, and since I could barely understand what was being discussed, I eventually got tired and headed off to bed.
Leinach (May 4)
We began the day with a typical German breakfast (bread rolls with meat and cheese and coffee). We started the day by taking the Wagner’s dog Gustav for a walk in some nearby wine country, then later went to Karlstadt am Main to peruse the city. We visited a bakery there and picked up some pastries.
We headed back to the Wagners’ house, discussed more, and eventually decided to go to dinner at Landgasthof “Zum Bären” UG restaurant in Thüngersheim.
That evening, a friend Herbert Feucht dropped in to say hello, and we talked the rest of the evening. I think mostly about politics. It was a long conversation, and it’s interesting to hear different perspectives on various matters.
Leinach to Frankfurt (May 5)
In the morning, we got on the train to Frankfurt. My dad rode my bike to the train station while I loaded the car with the baggage and rode over with Hannas and Katja. At the train station, we said our good-byes. The train ride was a little uncomfortable, since there was a group of children which had completely occupied the bicycle holding area, so I had to stand most of the way with the bike. We got to Frankfurt, and first found a Mediterranean restaurant. I had a Mediterranean skewered Chicken dish there.
We checked into the hotel, then brought my bicycle into the bicycle shop to be dismantled and loaded back into the bicycle box we had transported it to Germany in. It would take a few hours to do, so in the meantime, we walked around the city and shopped for gifts to bring home. I ended up getting a bunch of German chocolates. We later picked up the bicycle at 5:00 PM and dropped it off in the lobby of the hotel. I spent the rest of the afternoon wandering around the city on my own, looking for gifts and stopping at the grocery store.
Frankfurt had a much more modern feel than most other German cities I visited. The town had construction projects all over. It also seemed to have a much more diverse culture, relatively fewer Caucasians, a large amount of people who appeared to be tourists from other countries.
For dinner, we went to the closest place I could find, and I ended up ordering ramen noodle soup. That night, it was very difficult trying to get to sleep. We needed to keep the window open to stay cool, however there were a lot of late-night dwellers outside. There were some people who were yelling in the streets (I couldn’t understand what). This went on essentially all night.
Flight Home (May 6)
We decided to make two trips to the airport, the first to carry the bicycle box and my dad’s luggage. I would then stay at the airport and watch the luggage while my dad went back and got my luggage. It was a bit tricky to try to carry everything at once. Once he returned, we could then check in the luggage and bicycle, and find breakfast somewhere in the airport. We were both tired and a little cranky after a night with very little sleep. We were able to check in with no issues, then we stopped by the duty-free shop for more gifts and to use up the rest of our Euros that we had.
The flight home required a transfer in Chicago. When we got to Chicago, my dad was under the impression we had one fewer hours to transfer planes than we actually had (I’m guessing because he calculated time differences wrong), so when we arrived at the gate after rushing and running a bit, we were relieved to find out we hadn’t missed the flight to Seattle. We arrived back at Seattle, and my mom was waiting to pick us up.
Overall the trip was a great time. Not exactly what people would consider a restful vacation, but lots of memorable moments.
From April 27 to May 6 this year, my dad and I went on a 2-week trip to Germany. This would be our second trip together since 2013. Our intention was to start out in Bennigen, where some old friends of my parents lived; then ride along the Neckar and Rhine rivers up to Krefeld, to visit with other friends. This trip was estimated to be around a 360 mile route, and would require 7 riding days. The intention for the rest of the time was to explore Hamburg and Berlin, visit some of the museums and monuments.
My dad had a bicycle in Germany already, and I was to take my Novera touring bike over on the airplane. To do this, it involved dismantling the bicycle, loading it into a specialized box, and checking it in as over-sized luggage onto the plane flight. For packing, the intention was to pack light — bringing bicycle clothes for a maximum of three days (hopefully to wash them along the way). The weather was going to be mostly cloudy with possible rain in the 40’s, so I was sure to pack cold-weather and rain gear. I carried all the bicycle panniers as carry-on items to save on luggage costs.
The flight (April 21)
On the flight to Germany, we flew Lufthansa on a Boeing 747, and strangely they did not charge for shipping the bicycle. It was a bit difficult lugging everything around the airport and onto the train to Frankfurt, but we somehow managed. We took the train to Frankfurt, and at the train station, I watched all the baggage while my Dad took the bicycle box to the bicycle shop to have it re-assembled. The bike shop in Frankfurt would store the bicycle box until we returned. While my dad had the bicycle reassembled, I unpacked all the panniers, and filled them with the items from the duffel bag. I then wait for my dad to return with the bicycle, at which point we could attach all the panniers and strap the duffel bag to the back of the bicycle. After loading the gear onto the bike, everything was much simpler to wheel around.
The train ride to Bennigen gave me some practice loading the bicycle on the public trains. Most of the trains had bicycle-friendly compartments, typically with belts for attaching to the bike to prevent it from rolling around; in others, actual bicycle racks. We couldn’t get a direct train to Bennigen, since the ticket counter said they could not secure us a spot on the train since we had a bicycle. So instead, we were directed to Bennigen on a route which would require four train transfers. On our second train, at some point, the train stopped mid-track, and would not go any further because of supposed track damage — so we were essentially stranded in an unknown location somewhere Karlshrue. Fortunately, there was some college student girl who knew English adequately enough to be able to help us get our bearing again. We had to take a train which took us in the opposite direction, then take another crowded local city train in Stuttgart — which happened to be loaded with guys in their 20’s who had been drinking heavily, were passing out beer, and were causing a ruckus — which then dropped us off a block from the main train station. From there, we were able to find the right trains to Ludwigsburg and then to Bennigen — after a total of 7 trains, arriving at the desired location several hours later than anticipated. I met my parent’s childhood friends who lived in Bennigen, and stayed at their house the first night.
Cycling Day 1 – Bennigen to Heilbronn (April 22)
We set out towards the West along the Neckar river. Along this section of path, we would encounter many small towns, and see quite a few vineyards, which were cultivated along interesting stone structures built into the sides of hills.
We spent the first night in Heilbronn, which is a city which may have some family history. It is believed that my great-grandfather lived in or near this city before migrating to the United States. We found a quaint hotel, and were able to store our bicycles in the garage of the hotel.
Cycling Day 2 – Heilbronn to Heidelberg (April 23)
Heilbronn is a city which may have some family history. I will need to iron out some of the details, but I believe my great-grandfather lived in or near Heilbronn before migrating to the United States near the beginning of the 1900’s. The weather was mostly clear the entire day. I started out in shorts and a shirt with short sleeves hoping that it would warm up. We stopped during the ride at a Biergarten near Binau for some lunch, and had some wurst, at which point I needed to put on some more clothing layers since it was still in the 40’s. Along the way, we saw several castles, passed through many small villages which almost seemed a relic of the past – old-style buildings and very few signs of industrialization, many agriculture fields. I noticed a tendency as we traveled downstream for cities to look more and more industrialized. We reached Heidelberg finally, and lodged at the Tannhaeuser Hotel.
Cycling Day 3 – Heidelberg to Worms (April 24)
As we left Heidelberg, we appeared to be entering more heavily industrialized area. There were much fewer small towns and many more factories and buildings. This trend continued until we reached Manheim, where the Neckar river intersected the Rhine river.North of Frankenthal, we rode along the East side of the Rhein for a while past a vast agricultural area. We had bratwurst at a small food stand in Lampertheim, the last city before reaching Worms. We finally crossed the Nibelungen bridge into Worms.
In Worms, we stayed at Hotel Hüttl, right across from a Lutheran church and close to the Wormser Dom. There was also a quite impressive reformation memorial in Worms, which consisted of statues of important figures of the Protestant Reformation (to include Luther, John Huss, Wycliffe, Frederick the Wise, and various others). We finally had dinner, and I was a bit relieved that we didn’t need to go on a diet of worms, but instead enjoyed my favorite dish I had in Germany — white asparagus and potatoes.
Cycling Day 4 – Worms t o Bingen (April 25)
Our plan starting out the day was to find a hotel in Mainz-Kastel on the east side of the river, and eventually have to take a ferry across the Rhine later on. I started the day by checking for hotels in Mainz, however I was not finding many cheap hotels which had vacancies. We decided to just wing it and see if we could just find something.
The weather this day was mostly overcast, with a few periods of drizzle. Somewhere near the town of Eich, we became confused because the bicycle guide map was indicating trails which didn’t even exist, meaning we took a couple wrong turns and ran into some dead ends.
As we were making our way into Mainz, we decided to find a hotel in a smaller city, either in Budenheim or Heidesheim. We saw signs for a hotel in Budenheim, but realizing they were not convenient to find, made the decision to continue on to Heidesheim, which we knew had only one total hotel. On arriving at the hotel, we discovered that the hotel, also, had no vacancies; and the reason for this was because there was a major convention happening in Mainz, so all hotels within several miles of Mainz were completely full.
At this point, my dad was intending to continue riding all the way to Bingen, which was a plan I was not happy with. It was already 5:30 PM, meaning This was already our longest riding day yet (already close to 60 miles). It would take us at least another hour to ride to Bingen (11 miles away), we were uncertain we would even be able to even find a hotel here, the weather wasn’t particularly good, we were tired and hungry… Anyways, I was ready to call it a day, and not motivated to ride any more. So I devised a plan: Get out my phone, turn on data roaming, and make sure we have a hotel reservation somewhere, then we will take the train. I was able to make a hotel reservation at one of the recommended hotels in the bicycle book in Bingen. Then we would hop on the train. The plan worked well, and provided a good escape from a stressful situation. I was able to get a reservation at Hotel Krone which had excellent bicycle accommodations and a friendly staff, and a great view out the window. We finished the day at Zum geschwollenen Herz restaurant (To the swollen heart).
Cycling Day 5 – Bingen to Koblenz (April 26)
This section of the bicycle rout was perhaps my favorite, and it was especially nice to have clear skies all day. There was very little industrial areas, and occasional small towns that we passed along the way, and an abundance of castles.
Cycling Day 6 – Koblenz to Bonn (April 27)
In light of our experience with hotels, I made a reservation for our hotel in Bonn on my cell phone. On leaving Koblenz, there was a little bit of confusion in the route. It took us past the Memorial of German Unity, and the directions for crossing the Moselle river and finding the bicycle path were a bit unclear. I think we wondered off into an RV park, and had to turn around. We eventually saw more industrial areas, which we needed to navigate around. Eventually, the trail became clearer. We eventually made it to Remagen, and saw the remnants of the Ludendorf bridge, which is a historic WW2 landmark. Someone I know, who just recently passed away, was one of the first waves of American troops which crossed the bridge in WW2.
In Remagen, we found a Döner place, where we had to go just so we could text images of Döner to my youngest sister. Döner was her favorite meal while she was staying in Germany, so it would only be fitting that she would appreciate images of us eating Döner, especially since she just had a baby and was nursing and was ravenously hungry all the time.
We eventually made it to Bonn, and our first stop was at the front door of the house where Beethoven was born and lived for a few years. We then went to the Beethoven museum, which had a few Beethoven artifacts, manuscripts, and writings. As my tradition, I bought a bust of Beethoven to add to my collection of composer busts purchased near the birthplace of the composer.
The bicycle journey ended in Bonn. The next week, we mostly traveled by train and walking to other areas in Germany.
The following images give a fuller perspective of the distance traveled.
In light of last year’s elections, I thought I’d express some of my ideas concerning the state of American politics and some of my own thinking about how to understand American politics. I realize this is a bit late, and the election was several months ago; and no doubt, people are now sick and tired of hearing about this. I haven’t posted about politics yet on this blog, and don’t intend to say much more about it in the future.
This past election year has been especially draining for many people, because the American public was presented with a choice between two terrible options: Trump or Clinton. Clinton was a horrible candidate because, although she could claim much more experience in the political world, with whom it is unclear to me whether she has any positive accomplishments, and has a proven track record of making poor decisions. Additionally, it was clear that she had many conflicts of interests which ended up profiting her personally. With Trump, it was impossible to get a clear picture of how he would act as a candidate. At some point in his life, he has espoused views on various topics which represented policies espoused by both Democrats and Republicans. It was never clear that he had a real understanding of some of the very fundamentals, about what the purpose or structure of government was as stated in the Constitution. In the end, Trump successfully was able to detect unease among the working-class factions of society, cater to them the words he felt they wanted to hear from a presidential candidate, and secure their votes. I suspect in the long run, they may be disappointed and realize they were duped into electing someone who does not in fact have their interests in mind. In some sense, Trump played the political scene like a very highly-intelligent and successful individual (which he likely is, considering his track record of success in real estate), however I have suspicions he may have been playing Americans as pawns in a chess game. After being sworn into office, he appears to be reversing many of the political views which helped him get elected.
Often times, I think people are fooled by political rhetoric made by politicians during their campaigns. There is an idea that there are opposing philosophies in government: Republicans vs. Democrats, the Left-wing vs. the Right-wing, conservatives vs. liberals, globalists vs. nationalists. I have refrained from using the above labels for my own views, considering their definitions are a bit fuzzy and change over time. While some of these dichotomies do have fundamental philosophical differences, when push comes to shove, the elected political leaders in the United States typically act the same, regardless of the party they adhere to or political philosophies they espouse during their campaign. The fact is that the American populace is collectively incapable of deciding on candidates which espouse a political philosophy which would lead to more limits on government power. You can expect like clockwork that America will decide on leaders which intend to increase the scope and power of government, only so long as they are convince that they will benefit as a result. Candidates which espouse an agenda which puts limits on government power are typically labelled as fringe candidates and radicals, and are vulnerable to the attacks of either party, which are quick to point out when a certain group is going to reduce spending on welfare or warfare ventures which are in line with the particular party. When a candidate suggests that the government shouldn’t spend so much money on welfare programs, the leftists will be correct in criticizing the money spent in the failing national defense policies, and talk about how that money should be put to better use to provide free health care or education; or conversely, when politicians promise more socialized healthcare or medicine, the right is correct in pointing out the this form of spending is wasteful and typically does not accomplish the desired effects, but instead tends to promote policies which increase the American empire and presence in failing overseas military ventures. Regardless if which party is eventually elected, the candidates have a tendency to abandon the ideologies which helped garner votes from the factions they catered to, abandon their campaign promises, and the effect is for the gradual increase for all levels of government power, both for Democratic and Republican agendas. Politicians on the right sign into law some of the largest social programs, and politicians on the left pave the way for more military intervention overseas and surveillance programs.
In evaluating a candidate, what most appeals to me personally is not only a view that the government ought to be limited in its scope, but also a sense that the views the candidate espouses are deeply-held beliefs, which stem from a grounded and consistent philosophy and understanding of history. Political debates are especially mind-numbing to me, since they don’t ask the sort of questions which get to the root of want the core beliefs of a candidate actually are; and rarely if ever illuminate any substantial differences between the candidates. I would prefer the debates to center around fundamental philosophical questions, such as: Is it alright for the government to steal your wealth using the threats of imprisonment or lethal force if it is not okay for you to steal somebody else’s money at gunpoint? Is it okay for the government to force you to act against your own conscience? Is it right for the government to force you to make certain decisions about the education of your children or how you spend your wealth? Are there even any limits to what the government can do? Is it right for the government to force you to act charitably? What lessons can we glean from history and from studies into the effects of certain political policies? Unfortunately, the public media is not helping the American public become more informed concerning these questions. As Neil Postman points out in his book “Amusing Ourselves to Death: Public Discourse in the Age of Show Business” (which although written several decades ago is especially relevant today), the age of television has turned politics into a form of entertainment, in which ideas are passed to you in the form of irrelevant images and catch phrases, and very rarely conveys relevant information. People have stopped thinking critically about the truth of the arguments espoused by the public media, and instead have adopted a feel-good moral attitude which opposes the urge to think critically about the views expressed, and make decisions based on an awareness of history or moral / philosophical principles.
There is a growing demographic of people who espouse socialist political view, and not only am I shocked that they express an ignorance of history especially from within the last century, I am bewildered that they haven’t thought through the implications of what their views imply in actuality from a philosophical level. Not only do the ideas of socialism are immoral and break at least three of the 10 commandments (though shalt not steal, covet, kill), it has a proven track record of leaving individuals as well as entire countries destitute, creating the conditions for economic instability and eventual collapse. We are today seeing this in many countries in Europe, Venezuela, Brazil, and Zimbabwe. Although proponents of socialist views will often point that the version of socialism they support is different in nature than the socialist political systems which have failed, to me, it appears to be the exact same fundamental political philosophy about what the role of government is: to take from the economically successful minority and redistribute to the economically unsuccessful majority with an end goal of reducing or eliminating class distinctions. The socialist ideas imply the existence of a God state, which shepherds us since we are incapable of caring for ourselves, and which we pray to for wisdom and healing. Ironically, as many who hold to these views are self-proclaimed atheists, their desires for a God state appears religious in nature.
The tendency I would like to see is for governments to reduce the scope of their power, and allow for more individual liberty. In my view, governing power ought to for the most part be as decentralized as possible, even as much so it is at the level of the individual, family, or community. This isn’t to say that there is no role for a state or federal (or for that matter, global) governing body, and I certainly would not claim to be an anarchist. However there certainly ought to be more thought into how to limit these powers and defining the roles of these governing bodies, as for instance, Article 1 section 8 of the constitution sets out to do.
The political opinions I hold of free-market decentralized government may be considered impractical to a lot of people, since the possibility of it being tried anywhere in the world any time soon is unlikely; and possibly has never been tried in entirety before. Human beings are flawed creatures and any human being put into a position of power will in one way or another be corrupted. It is therefore expected that the tendency over time is for power to be concentrated into fewer hands over time. At certain points in time, revolutions have taken place which have stripped the ruling class of their power; however, decentralization of power occurs very rarely and is most often been short-lived, as humans make their attempts to maintain and strive for more and more power. From history, it has been clear that flaws of human character will eventually lead to the demise of even the most well-designed political systems humans can come up with.
And so for the time being, I expect the American political house of cards to eventually become too burdensome, and eventually collapse under it’s own weight — just as has eventually happened to every empire in human history. History keeps repeating itself, and I think we can expect that it will continue doing so. It is difficult to find hope for the immediate future, considering the trends. I feel as though I’m a passenger in an airliner with pilots which have had too much alcohol, who are about to run the aircraft into a mountain side. All I can do is encourage others to be aware of their situation, and brace for impact, pray and trust in God to bring you through, and maybe try not to peek out the window too much.
I have just updated my blog from Blogger.com to a WordPress blog hosted on my Synology DS1515 server. I have manually exported much of the text and images from my old site to the WordPress blog, therefore a lot of the formatting may not appear correct. I will gradually correct the formatting as I find time. I realize it’s been several years since I updated my blog site, however I intend to post more regularly going forward. I have a lot of content planned over the next several months, so stay tuned!
I realize I’ve been kind of quiet about it on my blog, but for the next few months, I will be in Belize learning electronics from my Uncle, who works quite a bit with electronics. Today is close to my third week in Belize, and it’s been pretty busy so far. I don’t have much opportunity to use the internet, so that’s why I’m just now writing for the first time.
Living out here in the jungle, there are no public utilities, so my Aunt and Uncle provide their own infrastructure. For electricity, the house is powered off of two large arrays of solar panels, which charge an array of 12 lead-acid batteries. The DC voltage is converted into 120 V AC supply using a converter and inverter. During cloudy days and days during heavy energy demand such as when the washer and dryer are being used, a gas generator is used to power the house up. I’ve found I have to be very careful to turn off lights behind me and unplug all unused electronics, because it is easy to overload the system and cause it to shut down. I simply need to plug in my laptop sometimes, and the entire house loses power.
Water is collected from rain water. The roof of the house is designed so all the water that hits the roof flows into gutters, and is collected in large tanks. The water is then heavily filtered and supplied to the house at 40 psi. There is no hot water, so all my showers have been cold lately; it’s not a big deal in this climate, anyway. Right now, I’m staying in the guest house, which is its own separate building apart from the main house, consisting of a bedroom and bathroom. The house has it’s own separate water collection system, and the electricity is supplied using an extension cord from the main house.
The first few days here, I worked through a few Electrical Engineering problems, refreshing myself on concepts that have been taught to me during my time at the University of Washington. After my crash refresher course, I was put on a project of getting a 6502 microprocessor emulator device my Uncle built before I was even born to work again, and to upgrade the memory on the board. Originally, the project entailed just getting the circuit working. I was a bit intimidated looking at the tangled mass of wires, some of which have become disconnected, so I need to figure out where they used to go. Also, I was relatively new to soldering when I came down, and the last couple weeks has been a crash course into how to solder together prototype circuits. Soon, the project evolved into modifying the circuit to include an updated SRAM, since they evolved since he designed the circuit. Later, I found there were major revisions to the circuitry I needed to make to cause the circuit to run properly, so I ended up taking a lot of the circuitry apart and rebuilding it, and improved on the design quite a bit. I’m in the process of testing the logic and rewiring the circuit, and I have a feeling this project might take a while longer before I’m even ready to start programming it with Forth (a stack-based microcontroller programming language which very few people use, because it was oversold in the 1970’s). After that, I might design a control circuit for a gas generator, which automatically starts and shuts down the generator to ensure adequate battery voltage. Also, one of the Mennonites at a hardware store is requesting a microprocessor-based grain dryer controller, which might become one of several entrepreneurial opportunities I’ll have while down here in Belize.
Being here with my Uncle is like having a personalized electronics tutor. I have been learning about electronics pretty much non-stop the last few days, and my brain has sometimes been in information overload mode. I have been learning all sorts of things about power electronics lately, which my uncle is currently writing a book on.
Anyway, I have a lot more to say, but I’ll save it for a future post. I will at least attempt to write once in a while, and I’ll try to upload images some time.
Hello to all… Yesterday I finally graduated with a BS in Electrical Engineering after 2½ years at the University of Washington, Seattle. I don’t know if it would have been possible without the support of my friends and family, and especially my Mom and Dad. Anyway, here’s a small selections of photos from yesterday…
Right: Me with Dr. James Peckol, with who I’ve had for a total of four classes, EE 271, EE 399, EE 472, and EE 478. He has a reputation of being one of the most demanding professors in (especially in regards to documentation), although, he perhaps prepares you better for industry than most professors.
Now that I’ve graduated, I have to now do a lot of organization, moving, and preparing for my Summer ventures to Central America for a while.
Since my last post, our team has completed the final project. On Monday, we conducted the final demo, and just today, we submitted the lab report. Here is the final layout of the keyboard:
Completed keyboard project
As you could see, my lab partner Whitney did a fine job organizing all the electronics, securing them to the keyboard. He made a nifty stand for the LCD display using plastic risers and hot glue. As you can see, we’re now using a Seeeduino board instead of the Arduino board — which is for the most part the same circuit, except it has a few added features and a slightly different board design. Also, note the use of the infrared optoelectronic distance sensor on the lower left side of the board. We decided to make the circuit a little more complex, so we added what is known as a D-beam, and it is used in a lot of Roland synthesizers, for instance, the Lucina AX-09 (video — WARNING: click only if you can handle extremely cheesy product infomercials). We implemented the D-beam using a Sharp 2Y0A21 distance sensing device, and we freed up an analog input on the keyboard controller for the analog sensor signal. We programmed the keyboard to process the same range of pitch bend as the Roland model in the video clip I posted above, which is about a whole step of range. The analog data coming from the sensor is really noisy, so it adds kind of like a chorus effect to the sound quality which we really couldn’t filter out very well.
We reconfigured the entire keyboard to run off of USB power, which is 5 volts, 2.5 watts. The entire circuit ended up only running off of 1.2 watts. We could probably cut down on power even more, especially with the LCD, which consumed a half a watt.
Since our synthesizer output standard MIDI out, it was compatible with another group’s project, which was designing the actual synthesis. In the following video, I used our project as a keyboard interface to their synthesizer using our MIDI output. Here is a video I shot of us connecting our projects together:
Note: Video was deleted at some point. In process of trying to find it again…
The overall cost of all the circuit components is just short of $100, which is more than the original keyboard was worth. We actually probably had the cheapest circuit out of all the groups. If we had more time, ideas I had for further developing our design would be to add a recording / playback feature, which I could very easily do with an SRAM chip, integrating the controls into the LCD menu. Since we ended up getting the synthesizer chip working in serial mode, all the parallel signals could be freed up to drive an SRAM chip. Here are the files that we created for our project:
Some of the other groups in the class ended up creating really cool embedded projects. Perhaps the most expensive project implemented was a series of robots which implemented swarm intelligence. The robots would scan an area for a target of a specific color, and when it found the target, it would wirelessly broadcast a message the other robots that it found the target, and emit infrared radiation in all directions. The other robots would then turn and locate the robot, and move in towards it. Here are some photos I took of their project:
Another cool project was one group that worked with a touch-screen LCD, which had applications which allowed you to draw pictures, play music, and operate a remote-controlled toy car. Here are some images of their project:
Another group designed an automatic plant watering system, which allows you to automatically water your plants when it senses the soil is too dry. You can also monitor if your plants are being watered on Twitter. I thought this was a really creative design idea.
Also notice the very creative white-board artwork. Over the weekend, there was an art competition in the lab. Here are some examples of peoples’ creativity:
Notice that sleep is a common theme in the artwork. No doubt, many groups had to pull overnighters this weekend on their projects, and sleep deprivation seems to be a common theme in classes like this. Working on these projects, you completely lose perspective of time, and can easily spend over 10 hours on a project in one sitting. Well, continuing on with the artwork… One group decided to take their artwork a little further and etch their artwork onto a circuit board.
And here is my team’s artwork, which my lab partner drew. It isn’t nearly as creative, simply because we didn’t have to spend overnighters in the lab this weekend, since we had our entire circuit working last Monday and completed on Friday.
One of the most amusing pieces of art in the embedded classroom is the “Wall of Death”, which is a hodgepodge of broken microcontrollers, comic strips, and student artwork.
There were some other cool projects created this quarter, some which worked others that didn’t. Dr. Peckol usually publishes all of our embedded projects on his web page. Our projects should be up and running on his site within a week or two. You could visit our class project showcase here (if it is even up yet). More photographs can be found on my Flickr page.
Hello, this is just another update on our keyboard project. I feel we got a *LOT* done since the last time I posted. The project is now going very smoothly, and we feel we are meeting our schedule very well. I feel like we are around 80% done. Anyway, I wanted to share with you the following recording:
Okay, I guess that’s not my best recording yet, but after a few frustrating days of trying to get our ATSAM2195 Atmel synthesizer chip to work, we finally were able to produce sound output. This note was our first recording of the sound output off the chip.
Our final project circuitry actually fits on only one breadboard. We have a pic microcontroller, which has the task of reading all the key states, and generating NOTE ON and NOTE OFF commands to the synthesizer chip whenever a key changes value. The commands are then converted to MIDI messages, and sent to the ATSAM2195 synth chip.
Final project layout
In the image above, you can see our entire final project, minus the Arduino and LCD display, and minus the audio amplifier my lab partner built for this occasion. We decided to switch to parallel mode communication with the synthesizer chip, simply because we felt it was a bit easier to get going. Anyway, here is a quick and dirty c file we wrote for the PIC18LF4525, with which we were able to communicate with the synth chip:
Next we need to integrate all the code for the keyboard controller, so actual key events on the keyboard trigger MIDI commands.
What I spent most of my time on lately was creating drivers for the Crystalfontz CFA533-YYH-KL LCD screen, which is a 2-row 16-character LCD display with 6 navigation buttons. We’re having an Ardueno Duemilanove control the LCD through a RS-232 connection. The navigation menu allows configuration of various things such as instrument, master volume levels, reverb, and chorus. We uploaded a list of the 128 different instrument sounds incorporated on the synthesizer chip.
We also incorporated commands to save current settings into the Arduino’s EEPROM, and restore to default settings. The settings are coordinated with the keyboard controller via I²C connection.
Testbench for LCD display controller
The I²C communication ended up not being straight forward, since I had trouble getting the Wire.h Arduino library to trigger interrupts in the PIC controller when the Arduino is asking for a byte of data. I ended up writing my own Master I²C drivers, which pretty much bit-bang the SCL and SDA signals. Using my library, I was able to get the Arduino talking quite nicely with the PIC controller.
Our current code files for the LCD display and menu drivers are as follows:
arduino_module.pde – Arduino project main file
common.h – Shared constants between keyboard controller and LCD driver
As of now, the LCD driver is mostly complete, besides some later proof-reading. Also, I can think of a few more features I would like to incorporate if I find the time such as transposition, and I want to change some things about how the menu is displayed.
Anyway, next time I post, the project might be completely done, perhaps just over the 3-day weekend. I have just one more week to work on this project, during which time I’ll be finishing the final project, preparing a 20-minute presentation on the project, writing one of Dr. Peckol’s typically long lab reports, and conducting a demo of our design.