Tumgik
amartyabanerjee · 6 years
Text
Fathom installation on a Ubuntu Server running NginX
Tumblr media
As we got closer to opening up TunePad to more classrooms, we wanted to have some web analytics set up. While Google Analytics is almost the default choice in such a scenario, we were looking for alternatives. Fathom seemed promising. 
This guide documents the installation and deployment process. It draws heavily from Fathom’s own excellent documentation, but hopefully, the screenshots and slightly more detailed notes would come handy for someone.  
Download and install Fathom
Before using the wget command below to download the file, go to this link to find the most recent release of Fathom for Ubuntu. In our case, we used version 1.2.1. Thereafter, unzip it /usr/local/bin and then add execute permission to it. 
wget https://github.com/usefathom/fathom/releases/download/v1.2.1/fathom_1.2.1_linux_386.tar.gz sudo tar -C /usr/local/bin -xzf fathom_1.2.1_linux_386.tar.gz sudo chmod +x /usr/local/bin/fathom
Run “fathom --version” to check if the installation was successful. 
Basic configuration 
Somewhere on the server create a directory.
sudo mkdir fathom-analytics sudo chown sadmin:www-data fathom-analytics/
Create fathom environment config file
vi .env
In that file enter the following config options:
FATHOM_SERVER_ADDR=9000 FATHOM_GZIP=true FATHOM_DEBUG=true FATHOM_DATABASE_DRIVER="postgres" FATHOM_DATABASE_USER="tunepad" FATHOM_DATABASE_PASSWORD=“XXXXXXX” FATHOM_DATABASE_NAME=“fathom" FATHOM_SECRET=“XXXXXXXXXXX”
Now, cd into the “fathom-analytics” directory (or whichever directory you created in above), and run
fathom server
you should see something similar to this. 
Tumblr media
Go to http://<your_domain>:9000 (for now, make sure you are not trying to use https) If this is not working, try changing the firewall settings.
sudo ufw allow 9000 sudo ufw status
Add a fathom user
fathom user add --email="[email protected]>" --password="XXXXXXXXX"
(this is the user name and password we shall use to log in to the analytics dashboard) To start fathom on boot (add it as a service)
sudo vim /etc/systemd/system/fathom-analytics.service
In the fathom-analytics.service file, add the following:
[Unit] Description=Starts the fathom server Requires=network.target After=network.target [Service] Type=simple User=sadmin Restart=always RestartSec=3 WorkingDirectory=/srv/projects/fathom-analytics ExecStart=/usr/local/bin/fathom server [Install] WantedBy=multi-user.target #then reload and start the service sudo systemctl daemon-reload sudo systemctl enable fathom-analytics sudo systemctl start fathom-analytics
Since we have HTTPS on our domains, we needed to do a couple of more steps Using NGINX with Fathom Create the following file:
sudo vim/etc/nginx/sites-enabled/fathom
add the following lines to it:
server { server_name tunepad.codes www.tunepad.codes; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:9000; } }
This is what what the directory structure looks like on our server 
Tumblr media
This is the fathom service file (Certbot added the https stuff, we cover that later): 
Tumblr media
Test NGINX configuration
sudo nginx -t (#to test NGINX configuration)
Reload NGINX configuration after adding symlink to sites-enabled
sudo ln -s /etc/nginx/sites-available/fathom /etc/nginx/sites-enabled  sudo service nginx reload 
Make sure that for the domain use for Certbot, has the Name and A-records set correctly (tunepad.codes looks like this on Namecheap). 
Tumblr media
Then, on the server, run Certbot
certbot --nginx -d tunepad.codes
Once this is done, try going to the domain (tunepad.codes in this case) and logging in with the credentials set using Fathom’s add-user command. 
Copy the Tracking snippet from the Fathom dashboard and add it to the pages that need to be tracked. If something went wrong, try going through the steps listed here: Fathom Github.
Tumblr media Tumblr media
0 notes
amartyabanerjee · 6 years
Text
Remote Unlocking the Acura Legend Using a BLE micro-controller and a solenoid
Tumblr media
Since the time I’ve had the “Red Dragon”, it has had a broken driver’s side door lock. Getting into the car meant I had to unlock the passenger’s side door, and then use the central locking system to unlock all four doors. Not any more.
With this project, I tried to kill two birds with the same stone. I wanted to learn how to write a Flutter app (since I already work with Dart, I was feeling fairly confident) and at the same time come up with a solution to unlock the door remotely.
For this project, I bought the following hardware components:
Bluetooth Low Energy Micro-controller from Adafruit ($25)
A solenoid that can take input from the car battery ($15, from Adafruit)
So the idea was to do the same thing I’ve been doing forever, that is, toggling the central locking system; only this time, the solenoid will do it for me. 
Tumblr media Tumblr media
I’ll add details of the circuit later, but I basically used this circuit diagram to connect the solenoid.
The Flutter app would run on my iPhone, and as I would walk closer to the car (or within range of the BLE micro-controller), I would connect to the BLE micro-controller and trigger the solenoid. 
Here’s a video that shows this in action:
vimeo
0 notes
amartyabanerjee · 7 years
Text
More front-end repairs on the Acura Legend
Tumblr media
While changing the rotors and brake pads, I had noticed that the rubber boot on the driver’s side CV-axle was broken. That side had been feeling a little “loose” when the wheel went over an expansion joint or a bump on the road. With the car getting old, and the right side having undergone repairs last year (CV-axle + upper control arm + tie-rod end), I was not surprised that a similar repair would be due on the driver’s side. 
The repair turned out to be a bigger endeavour than it should have been, and taught me a lesson. I had planned the initial repair to just be a CV-axle replacement, but as things turned out, there were a lot more parts that needed replacement.
Cost of Repair
Parts ($91.21)
CV-axle ($27.34)
Upper Control Arm ($38.09)
Stabilizer Bar link + bushings, both sides ($16.78)
Lower ball joint ($9)
Tools ($46.37)
Wheel Chocks ($10.59)
36mm Axle Nut Socket ($9.99)
Breaker Bar ($15.28) & Plumbing pipe ($10.51) for extra leverage
Consumables ($15.52)
Brake parts cleaner ($4.29)
Penetrating fluid: Liquid Wrench ($3.97) & PB B’laster ($3.76)
Work gloves ($3.50)
Workshop costs ($171.61)
Broken bolt removal at Shawnee Service Center ($113.61)
Lower ball joint removal + pressing in new one at Midas Orland Park ($58)
Total: $324.71 (a similar repair on the right side without the stabilizer bar repair cost $530 at year ago). While that equates to a $200+ saving, contrary to the brake repairs I’d done earlier, the time invested and the hassle has been tough to rationalize. In the hypothetical scenario where the repair went according to plan, the total amount would have been slashed in half ($324.71 - $171.61 = $153.10).
First things first, before getting the car on the jack, I had to loosen the axle nut. Easier said than done. After failing to take it off using an axle nut socket and breaker bar, it was time for a quick trip to the hardware store to purchase a longer pipe for more leverage. Sized to move a mountain, the pipe made short work of the axle nut.
Tumblr media
Next, I had to remove the two bolts on the V-fork that connected to the shock absorber on the top, and the lower control arm on the bottom (highlighted using blue circles below). Before attempting to undo these, I had liberally sprayed penetrating fluid and let things rest for a half hour.
Tumblr media
The bolt through the lower control arm came off easily enough.
Tumblr media
Unfortunately, this is where this repair exercise went pear-shaped. The upper bolt on the V-fork mount sheared off. Honda/Acura -- for some reason -- had decided not to use a normal bolt and a nut (with some sort of a locking mechanism, e.g. a castle nut with a cotter pin, or a nut with a split lock washer), but instead had used a pinch bolt that was screwed onto a thread cut on the inside of the V-fork bracket. Result: I had nothing to grab onto on the other side of this bolt that had sheared off. 
Tumblr media Tumblr media Tumblr media
Luckily for me, the car was parked in a garage that Nicole had recently started renting (at the time, she’d had it for just a couple of days!). I gave up on the repair for the time being to think about what, if any, steps could be taken to fix this. I reassembled the car and took it out of the garage and slowly drove the car back to my place (forums mentioned that the rusty bolt should hold for a while).
After a week or so, I had a plan. The plan was to disassemble the entire spring+strut assembly with the v-fork bracket on it, and then take it to a machine shop or a car workshop that might agree to help out.
So, to start, the knuckle had to be taken out. That meant trying to remove the lower ball-joint. The ball-joint uses a tapered fit to connect to the lower control arm. And it was well and truly stuck. I was using a pickle fork to try and pry it out, and I learned the hard way that it ruins the rubber boot that keeps the joint lubricated with grease. Later on, I rented a 2 Ton puller from Oreilly, and that did the trick.
Tumblr media Tumblr media Tumblr media
The pickle fork had mangled the rubber boot :(.
Tumblr media
Next, I used a Pitman arm puller (rental) to take out the tie-rod end.
Tumblr media
Aha! The knuckle was out of the way of the CV-axle.
Tumblr media
Then, I removed the three nuts holding down the strut assembly to the strut tower near the firewall.  With the brake hose routers undone and a bungee cord keeping the brake hose out of the way, only one more thing was in the way, the upper control arm (highlighted in blue).  
Tumblr media
By now, the CV-axle was already out. This created room to “drop” the spring+strut assembly and remove it.
Tumblr media
This is the transmission side of the CV-axle, and you see a transmission seal here too. Interestingly, I lost a little bit of transmission fluid (which in this case was simply 10W-30 engine oil). That surprised me because the service manual said that the driver’s side wouldn’t lose oil. As it turns out, my service manual was for a right-hand drive car, and they had implied that removing the CV-shaft on the right side would not lead to any loss of transmission fluid. 
Tumblr media
New vs. Old CV-axle.
Tumblr media
Here’s the view with the knuckle and the strut assembly taken out.
Tumblr media
The next step took about 9 days. Mostly because I was given a runaround by one repair shop in Orland Park that falsely promised to help me and then reneged on that offer. The car was stuck in the garage, and I decided to take the strut assembly back to Wilmette with me hoping that a machine shop in Evanston/Wilmette would help out. As luck would have it, Shawnee Service Center just a block from my apartment very kindly agreed to take on the job. They later said that it took some doing (lots of heat + an impact hammer), but they were successful. As you see in the photo below, they cleaned up the whole part and installed a new bolt too. Things were looking up :). 
Tumblr media
Well, while all the trouble with the broken bolt was being sorted out, I had ordered and received an upper control arm to replace the one on the car. Both the ball joint and the rubber bushings on the part mounted near the frame were toast.
Tumblr media
Here you see the busted ball joint.
Tumblr media
Old out, new one in! 
Tumblr media
By the way, I had forgotten to tighten the bolt on the swivel portion of the control arm (the one with the ratchet on it) because keeping it loose initially helps while installing the knuckle.
Tumblr media
The driveshaft/CV-axle replacement was a piece of cake because I had a lot of room to work with (you see the pickle fork on the bottom left of the photo. That had damaged the lower ball joint, but it came super handy as a pry bar).
Tumblr media
I had to take the knuckle to a repair shop to take out the lower ball joint. Even though I was able to rent a C-clamp press that is used to remove ball joints, I did not have a desk/vice grip to hold the knuckle in place. 
Tumblr media
This is the knuckle with the new ball joint (installed by Midas in Orland Park).
Tumblr media
By the way, I added a split washer and some thread locker blue (leftover from the brake job earlier) to the new nut+bolt of the V-fork bracket.
Tumblr media
A view of car with the new CV-axle, the spring+ strut assembly, and the new upper-control arm in place.
Tumblr media
Home stretch, just the rotor and the calipers left to be mounted :).
Tumblr media
After all of that, the car has been running quite well and has clocked close to 425 miles as of writing this report. This was a doozy, but I learnt a valuable lesson. On a 30 year old car that has chugged along on snow + copious amounts of salt, it is better to assume that rust could be the bane of a repair job.  From now on, I try to undo all fasteners very carefully, and try to weigh in the worst case scenario before getting into the weeds (e.g. I might undertake a brake hose replacement job soon, but I have already made sure that I can undo all the necessary fasteners easily). 
On a side note, since the stabilizer bar links + bushing were very worn out (and broken on one side, I replaced them as well the weekend after the CV-axle job was finished). Some photos of that 30-minute job below.
Tumblr media Tumblr media Tumblr media Tumblr media
0 notes
amartyabanerjee · 7 years
Text
Repairing brakes on a 1988 Acura Legend
Tumblr media
Did some work on the old “red dragon” over the last couple of days. Changed the rotors and brake pads on both the front wheels, and a caliper bracket on the driver’s side.
Cost of Repair
2 Rotors + 2 sets of pads = $56.22 (could have saved ~$7, because brake pads come in sets of 2-pairs, i.e. 4 brake pads). Ordered from Rockauto.com
Lubricants & chemicals/consumables = $20.17 (Brake cleaner + copper anti-seize + threadlocker + silicone lubricant). Ordered from Amazon.com
Special tools = $46.60 (torque wrench + metal brush)
Caliper Bracket + Brake pad spreader = $31.50. Bought from an Oreilly Auto Parts Store. The caliper bracket was the only unplanned cost that cropped up because I managed to strip one of the threads in the driver’s side caliper bracket. 
Total: $154.49 (a very similar job from Meineke cost $350 a couple of years back)
The “Red Dragon” (1988 Acura Legend) was showing signs of uneven rotor wear (or warped rotors) for the past couple of months. Braking from 50mph and higher caused the steering to judder/vibrate. There were two options: a) test if a rotor’s runout was within tolerances using a run-out indicator (also called a dial indicator), and b) replace both the front rotors and pads. I chose to go with replacing the parts because the brake pads were getting worn out anyway, and buying a dial indicator just to measure these tolerance did not make sense (especially with the replacement rotors being relatively inexpensive).
Starting with the driver’s side (left side), opening up the caliper showed a massive amount of rust buildup. It is not surprising in Chicago’s winter, but I found the rust on the caliper piston especially troubling. That repair would have to be for another day.
Tumblr media
Disassembling the old rotor took some doing. Even after using WD40, and having a decent sized ratchet/socket arm, the caliper bracket mounting bolts were hard to take off. 
Tumblr media
During this process, I managed to strip one of the threads in the caliper bracket (see the spring like/helical wire next to the bolt, that’s the thread :().  This meant that the repair would have to be completed the next day after buying a new caliper bracket from Oreilly Auto Parts.
Tumblr media
The new bracket did not come with caliper pins, so I had to take disassemble them from the old bracket, clean and lubricate them with silicone grease.
Tumblr media
Here you see the caliper bracket bolts with Threadlocker blue on them (it makes them less likely to work loose over time).
Tumblr media
Since I had to replace the caliper bracket, I had to remove the pad mounting brackets (they work like spring loaded mounts) from the old one to the new one. I was a little nervous doing this, because I expected them to be rusty and hence brittle/fragile. Liberal use of Brakecleen helped clear out the gunk and make this easier, but I will buy a new set of mounting brackets if I have to do this again. 
Tumblr media
Here’s a photo of the new bracket mounted with the new rotor. The new rotor is held in place with a wheel nut. I found that the CV half shaft on this side will need a replacement sometime soon too. A bummer, because that is a major repair. 
Tumblr media
The new brake pad on the bracket has some copper anti-seize on it (one has to be very careful to not get it on the rotor itself). It’s basically a very high temperature tolerant lubricant)
Tumblr media
The brake pad shims were rusty too. Perhaps worth replacing, but not critical to the repair.
Tumblr media
The new brake pads + new caliper mounting bracket + new rotor
Tumblr media
After carefully cleaning the caliper piston using Brakecleen (it’s bad for rubber parts), I used a break pad spreader to push the caliper piston in. I could have fashioned this simple tool myself, but decided to take the easier route of just buying it ($8 from Oreilly, available for about $6 on Amazon).
Tumblr media
Everything is in place and all bolts torqued to spec using the torque wrench I bought for this work. 
Tumblr media
The right side was much easier because I did not have to replace the caliper bracket. It was also very rusty (you can also see the CV shaft on this side was replaced very recently).
Tumblr media
And you see the new hub too!
Tumblr media
Very easy/smooth replacement.
Tumblr media
Red dragon has new teeth!
Tumblr media
And we are pretty much good to go.
Tumblr media
0 notes
amartyabanerjee · 7 years
Text
Article 5 for cyber-crime
Could NATO put in place an “Article 5 for cyber crime” into effect? Basically a modern day equivalent that could read “The parties agree that a cyber-attack against one or more of them in Europe or North America shall be considered a cyber-attack against them all …” (edits and highlights mine, but sourced from Article 5 on on www.nato.int). 
0 notes
amartyabanerjee · 7 years
Text
Maps, and self driving cars
What do Google Maps, Apple Maps and Bing Maps (Nokia Here?) mean for the future of mobility?
Reading Justin O’Beirne’s essays comparing cartography design between Apple and Google made me wonder whether Apple can compete with Google when self-driving cars are more the norm rather than the exception. Google is ahead of the game with respect to quantity and quality of map data (especially outside the U.S.); with maps being the basic input for a self-driving car’s route, Google/Alphabet probably has a significant advantage in this space. And this ignores the real-time computer vision based solutions that the cars would need (e.g. the one Waymo is developing).
UPDATE(Nov. 1, 2018): Apple now has much more granular map data for California. Encouraging to say the least.
0 notes
amartyabanerjee · 11 years
Text
Mount Olympus (Washington)
Tumblr media
  Climbing Mt. Olympus, August '13. 
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
0 notes
amartyabanerjee · 11 years
Text
TEI'13 (Barcelona, Spain)
Tumblr media
Spent a few days in Barcelona (10th -15th February '13). Attended a conference, but as is usual, one learns more from one's travels.
If you were to run into me on the 8th of February, you would have  encountered a grumpy and highly irritable individual; one frantically searching for a way to get to Barcelona. A snowstorm had put paid to my chances of reaching Barcelona in time for my presentation; 3000 flights were cancelled on that day.
For me, it wasn't about the conference or even about the chance of being able to spend a few days in a beautiful country, it was more about being able to meet two buddies of mine, Jesse and David after almost a year. Much to my relief, Delta was able to schedule me on a flight a couple of days later. Barcelona happened.
Tumblr media
Plaza de Catalunya
The flight was fairly uneventful and the customs and immigration check at Barcelona was painless. I was a little apprehensive about the immigration check, perhaps it had to do with the fact that my Spanish visa had my surname printed incorrectly. Can't blame them though, almost 50% (7 out of 15 letters) of my name is comprised of vowels, and they got one wrong.
The weather was kind and I took the airport shuttle (for 6 Euros) to Plaza de Catalunya, from where the tube would take me to my hostel.
Travel tip: The underground network in Barcelona is a great way to navigate through the city. For example, it'd take you within walking distance of the most famous of Gaudi's creations.
Tumblr media
Breakfast at Twentytú
The hostel, called twentytú (22) was a 5 minute walk from the conference venue. It was also remarkably cheap (20 Euros a night) for a shared room that was clean, had lockable cabinets to safely store belongings, had in-room washrooms and decently fast internet. Lest I forget, it also had complimentary breakfast, and it was a good breakfast (fruits, coffee, cereal, toast etc. See photo above)! 
Travel tip: Barcelona (and Spain in general) apparently has a pick-pocket problem, doesn't hurt to be extra careful.
Tumblr media
Conference Centre 
The conference I was at is called the Tangible, Embedded and Embodied Interactions (TEI' 13). TEI is not a large conference, and was held in Kingston, Ontario the previous year; I was able to help a little bit with organizing it. It's no surprise then, that I feel fairly close to the conference and its community. TEI also has the largest proportion of artistic submissions compared to other ACM HCI conferences. Being fairly artistically challenged, I find it to be quite inspiring.
Here are a couple of exhibits from the conference:
Tumblr media
Bestiary by Cabo San Roque
A dynamic musical exhibit that produces sounds from nature (streams, animal and insect sounds). Dynamic because those dangling microphones that you see are actuated, they swing around and that results in really interesting feedback, the animal skulls and the fish had actuated jaws as well. I highly encourage you to check out their other installations.
Tumblr media
  Gyro and accelerometer augmented knitting needles
The fairly whimsical knitting needles that were networked (so your knitting partner ?!?! can see what you've been upto?)
Then there was this:
Tumblr media
Zé Meatgrinder.
The only give is the wire that you see snaking around the body of the meatgrinder. Turning the handle results in sounds that could range from animals, to children being fed through the the grinder, the pitch of the sound changed based on the rate at which one turns the handle. Mildly disturbing, but I think the artist was trying to see how far people can go before they became really uncomfortable. An interesting social experiment, because I saw some people turning the handle a little bit and jumping away, while some turned it as if there was nothing the matter with the world. 
Since you'll find the conference proceedings on ACM's digital library, the rest of the post is about the sights I saw. 
Tumblr media
  la Sagrada Família
About a twenty minute walk from the conference centre is one of Antonin Gaudi's most famous creations, la Sagrada Família. The sheer scale of this church is hard to convey with pictures, let alone words. Maybe the fact that its construction started in 1882 and other than a break during the Spanish Civil War in the 30s has continued to this date (with a projected completion date of 2026!) should offer a clue.
Jesse and I went back to this place twice, and it took us a total sightseeing  time of about four hours to take it all in and I am not even sure we actually saw everything.
Tumblr media
    Note the difference in the colour of the stone? A hundred year construction cycle will do that.
Tumblr media
Some windows on the east side of the church, I wish I had the morning sun, it would have played off these quite nicely, I think.
Tumblr media
Zooming in on the walls, one is amazed by the intricacy of the design and the craftsmanship. Gaudi was apparently part of the Modernista movement in the late 19th to 20th century, but developed his own style that was highly inspired by organic shapes and nature.
Tumblr media
The church had a lovely walkway close to it, where one could sit down and enjoy a cool drink while staring at Gaudi's masterpiece.
Tumblr media
  It is also worth mentioning that Spain has delicious food, and while Tapas (snacks/finger food!) is becoming quite popular throughout the world, things like the traditional seafood paella can be absolutely delightful. Even thinking about it makes my mouth water.
There was a lot packed into the last day in Barcelona for me. A second visit to the Sagrada Família, followed by a visit to Park Güell, and finally Casa Batlló. I'll save you the trouble of looking up the links and tell you that all of them are Gaudi's works. One a park (!) and the other a castle (nope, just a house, but quite distinctive as you shall see).
If you though the Sagrada Familía was okay from the outside, the inside would blow your mind.
Tumblr media
The pillars on the inside are supposed to be like tree trunks, and when one looks upwards, the facets on the roof intersect in a way that makes it seem like one is standing under a forest canopy. That Gaudi was indeed inspired by nature is quite clear, isn't it? He even tried to match it in its scale.
Tumblr media
More photos of the inside of Sagrada Familía
Tumblr media
Jesus!
Tumblr media
The stained glass certainly played its part in making the space seem almost spiritual. I have often wondered why some man made spaces seem to affect us spiritually; the best guess I can come up with is that it's a combination of scale (somewhat related to acoustic characteristics), incredible art and most importantly, the stories and history associated with that space. This definitely ticked all those boxes.
Tumblr media
  More stained glass. 
Tumblr media
View from one of the towers.
After the Sagrada Familia, David joined Jesse and me to visit Park Güell. Getting to Park Güell involved a half hour subway ride followed by a lovely walk up a hill through narrow winding streets.
Tumblr media Tumblr media Tumblr media
  Park Güell offers a terrific view of the city with the ocean in the distance.
Tumblr media Tumblr media Tumblr media
On the way back from Park Güell, we were on the lookout for a small dive/bar where we could grab a quick beer, but it was early afternoon and most shops seemed to be closed. I guess it was siesta time.
Next up, Casa Batlló. We did not go inside, but it did look quite interesting and "skeletal" from the outside. Skeletal, because the building is also known as the House of Bones because of its organic and bone like protrusions.
Tumblr media Tumblr media Tumblr media
Like I said earlier, this visit was mostly about meeting old friends, and wherever old friends meet, there usually is a story.
On the way back from Park Güell, once we hit the city centre, we bought a few cans of beer. David had recently been in Madrid and apparently drinking beer in public was perfectly okay. It helped that beer was quite cheap and that it was an absolutely gorgeous evening. The sun was just warm enough to encourage one to have a cold drink, and made lounging outside a very attractive proposition. This is us enjoying a drink (The three amigos?):
Tumblr media Tumblr media Tumblr media
Nice right?
Well at least until we were busted by the police for drinking in public. A few apologies in broken Spanish by David, some questions about whether we knew what we were doing, and three full and three half-empty beer cans in the garbage bin later, we were on our way; thankfully with nothing more than a hint of embarrassment along for the ride.
Good friends, good food, good sights and some good stories later, I said goodbye to Barcelona. Adios!
0 notes
amartyabanerjee · 12 years
Text
Introducing Dart to an HCI Class
Tumblr media
I got an opportunity to teach an undergraduate course with my research advisor (Mike Horn) during the winter quarter (Jan. 7th to Mar. 16th, 2013) at Northwestern University. This post is mainly about why we opted for Dart, and the experience of teaching it to students with minimal web development experience.
About the course (Introduction to HCI, EECS 330)
Behind the fairly nondescript course name were principles for designing and analyzing interactive systems; topics included user-centered design, an overview of human cognitive and physical abilities, prototyping techniques, and information visualization. This was a project based course, where students were to work in teams of 3-4 to design and test a user interface for a web application.
A total of 65 students enrolled, 7 students dropped out. The class had approximately 50% computer science students, while the rest were a diverse bunch from mechanical engineering, electrical engineering, and even a few from the school of music.
Why Dart?
A lot of factors played into choosing to introduce the class to Dart.
1. With approximately 11 weeks of teaching time, half of which was to be spent by the students designing and prototyping (topic for another post, we experimented quite a bit with this), students would be left with five and a half weeks for implementation —- a really short development cycle.
2. While there were many non-computer science students enrolled in the class, most engineering students were taught object oriented programming with Java in their first year. It seemed to us that Dart would be a more familiar (object-oriented!) and structured way of getting into web programming.
3. Without even looking at performance numbers, and purely from a software engineering point of view (e.g. structured, object-oriented way of doing things), we were really excited by Dart’s promise. The option of using dart2js to convert the dart code to javascript and running it on any browser on any platform was a very compelling feature as well.
In fact, compelling enough to use Dart to write major chunks of two NSF funded research projects at our lab.
4. Dart came with an IDE and a debugger. For students new to web development (or any development for that matter), having an IDE lowers the barrier to entry. The built in web-server also helped.
5. For students wishing to use hardware sensors on mobile devices, PhoneGap was an option, and I had already gotten PhoneGap to work with Dart. This did not pan out, we ran out of time.
In short, we believed that the students would find Dart easier to learn and we were excited enough about it to give teaching Dart a shot.
Parts of Dart taught in class
— Dart basics mostly culled from the “A Game of Darts” tutorials.
— Using the HTML5 canvas with Dart to draw interesting shapes, and animating them.
Feedback from students
Almost all computer science students liked it. Those who had programmed in Javascript found the structured, object oriented approach a welcome change from regular web development.
The rest were more of a mixed bag; we had a few students complaining about the rapid release cycle and a few breaking changes. Streams were changed somewhere between our preparing the course documents, and the students using them in class, which meant a lot of window.setIntervals were no longer working :) (in fact, the HTML5 canvas tutorial linked above still hasn’t been fixed … will do so soon). However, most of these students were quickly comfortable with Dart’s syntax and development process.
Also, almost everyone liked having a fairly light weight IDE and debugger. The datum for most students was Eclipse though, so naturally, the DartEditor seemed much friendlier.
Shall we teach Dart again ?
Absolutely!
Of course, it wasn’t all smooth sailing this time around, but we sort of knew that going in. Also, I personally was learning Dart as we were going along (and still am). That meant that there were lots of tiny details that could have gone a long way in making it easier for the students.
For a product under development, Dart was remarkably easy to get off the ground with and our basic assumption that the students would find structured web development easier to assimilate was completely validated. Also, since this class is next scheduled for 2014 winter, we expect Dart to be significantly more mature by then.
NOTE: Even before that, the recent M4 release stabilizes the Dart core and collection libraries (Link). Seems like a solid foundation to start from.
Misc. Notes.
No one in class had heard of Dart before we introduced it. Since Google experiments with lots of new technology, it’d be good to know that Dart is here for the long run. Not sure if that’s even possible to guarantee, but some example of Google products built with Dart on the official blog would be nice (e.g. the world wide maze had a loader that looked a bit like the Dart logo, but I might completely mistaken).
Notification of breaking changes could be better. Release notes on SDK/IDE upgrades with links to appropriate developer documentation would be nice.
Students want to pull in Javascript libraries from time to time, the js-interop documentation (at the time of this writing) needs a little more work.
Tight integration with App-Engine? For example, one-click upload for the Dart project, and App engine serves the Javascript version automatically?
Credits: Thanks Mike for helping me figure out the content for this post.
0 notes
amartyabanerjee · 13 years
Text
Japan (Kobe,ITS Conference)
Tumblr media
Went to Japan in Nov. 2011 to present a paper at ITS. Officially work, unofficially a tour of Japan. Japan knocked it out of the park on all of the following: the food, the sights and the people.
Tumblr media
  Japan. Make that somewhere close to Tokyo (Narita) airport. Admittedly, this may look like Honolulu, but further proof awaits you.
Tumblr media
  From my room at the Stargate Hotel. In a tiny place, Rinku-Town, just one train-stop from Osaka (Kansai Int.) airport. The train journey took 10 minutes; finding the way to the hotel took half-an-hour. Most of that involved vigorous gesturing and making odd sounds trying to communicate with a cab driver. He kept pointing upwards, I should have guessed, Stargate had to be the highest building in this small town.
Tumblr media
Same window, clearer view. Luckily, it seems, no jetlag.
Tumblr media
There was a direct connection from the railway station to the hotel, definitely felt foolish for the previous night's bungling about trying to find the hotel. The green sign, is the Japanese sign for Exit. Similar figures are used at traffic lights for pedestrians. Gives you a sense of the Japanese being fast movers.
Tumblr media
The Stargate hotel in 'half' its glory.
Tumblr media
  About to check-out from the hotel and go to Kobe. Spent an hour on Google Maps trying to figure out the trains. Note, Google Maps in Japan is quite inaffective since Google decided that once I am in Japan, I now can magically read Japanese. This implied constantly switching between Maps and Google Translate. More travel strategies, courtesy a friend, later.
Tumblr media
Rinku-Town station. Japan has two major railroad companies, JR (Japan Railways) and Nankai. I took the Nankai to Kobe with a changeover in between. Takes about an hour and forty minutes.
Tumblr media
  Sannomiya Station, yup, this is Kobe. My hotel was a 10 minute walk from here.
Tumblr media
At the banquet, on the evening of the first day of the conference. The owl is significant, as you'll see later.
Tumblr media
The location for the banquet was quite fantastic. It was a curious mix of a botanical garden and a bird park, I say curious, since the only birds there, were owls; lots of them.
Tumblr media
The dinner table had these square 'cups'. Came to know later that this was to be used to drink Sake. In fact, the conference chair personally doled out Sake from a smallish barrel he was toting.
Tumblr media
Woot. As I found out later, owls are venerated birds in Japan. There are apparently 12 indigenous species of owls. Also,  Japanese for ‘owl’ is ‘fukurou’, which means ‘no hardship’ or ‘no trouble’.
Tumblr media
Woot 2. Quite the gaze.
Tumblr media
Woot 3. Those talons can definitely do serious damage.
Tumblr media
Going to Kyoto. In a hurry, grabbed breakfast at McDonalds (ashamed). Direct train from Sannomiya (Kobe) to Kyoto. Takes approx. 45 minutes.
Tumblr media
Trains run bang on time. 11am was the scheduled arrival.
Tumblr media
Subway map. From Kyoto, I went to Karasuma Oike (K08) and then changed routes to Uzumasa Tenjingawa (T17). I cite the numbers because the subway announcements actually quote them. It's easier to distinguish the number within the flurry of Japanese accent'ed English.
Tumblr media
Outside the Uzumasa Tenjingawa subway station. Google Maps and Google Translate told me to board the Thunder Electric ?? This is where the expert tip from a Japanese friend who said that most Japanese can read English, even if they can't speak/understand, came in handy. The iPad too was godsent, showed a couple of people this "Thunder Electric" stuff and they pointed me towards a tram station. By the way, "Ramden" was the name of the tramway corporation, perhaps it does translate to Thunder Electric.
Tumblr media
Thunder Electric station.
Tumblr media
The Thunder Electric. Definitely electric, Thunder I'd find out.
Tumblr media
 Kitano-Hakubaicho, the tram station for  Kinkaku-ji temple. Liked the name of the flower shop, succint.
Tumblr media
Ah So! A ten minute walk from the train station.
Tumblr media
Inside the temple yard. Beautifully manicured gardens.
Tumblr media
It's Fall in Japan, in another week or so, the colours would have been even prettier.
Tumblr media
Kinkaku-ji. Weather not-so-good. Started to rain.
Tumblr media
The money shot.
Tumblr media
From another angle.
Tumblr media
This pond was full of swimming sushi, i.e. fish.
Tumblr media
Japanese mafia boss; or so I presume. Had an air of importance, some of it lent by the guy carrying the umbrella.
Tumblr media
I did as the sign advised.
Tumblr media
I used to think that Buddha encouraged asceticism. Apparently, he can compete with some Hindu gods.
Tumblr media
A winding path leads to another temple, where prayers are offered; Kinkaku-ji rears its head.
Tumblr media
I wonder if they whack that drum during a ceremony. Would have loved to see that.
Tumblr media
The same place that had the "Don't Enter" sign. The weather had turned and become gorgeous.
Tumblr media
 Money shot-2 I'd say.
Tumblr media
Tourists; they are funny.
Tumblr media
"Damn these tourists, they block my view all the time. Then there's my Dad, who is enjoying an icecream without sharing it with me. I wish I could Samurai chop my way out of this stupid pram".
Tumblr media
No longer swimming sushi. On the way back from Kinkaku-ji.
Tumblr media
Koryu-ji entrance again. This place is old, really old. How old does 603 sound to you?
Tumblr media
The perimeter fence and partial shot of the entrance. Yup, it rained here too, obvious from the water droplet on the lens.
Tumblr media
Inside the temple compound. Time for some history lessons, mainly gleaned from trawling Wikipedia before deciding to visit this place.  Built in 603 by Hata no Kawakatsu. This Kawakatsu may have been a Chinese immigrant, hence forming the link to Shingon Buddhism. Shingon translates to "true words" in Japanese.
Tumblr media
The I-was-here shot.
Tumblr media
 The temple compound had 3 major structures. This was NOT one of them. This was behind the first major structure / prayer hall.
Tumblr media
….quite chuffed to be here. Thought about trying to sound the gong behind me......then chickened out. No need to earn any Samurai wrath.
Tumblr media
The soil was layered with moss, and looked quite exquisite.
Tumblr media
The first prayer room.
Tumblr media
Inside the first prayer room. Photo taken through a mesh protecting the contents of the room; I hate these meshes.
Tumblr media
The first prayer room again. Fall is a great time to visit Japan. Also, Japan has a lot of maple trees, quite the connection.
Tumblr media
The second structure, the main temple.
Tumblr media
The main temple again..
Tumblr media
The structure on the right in the previous shot had this contraption. Use the ladles to drink water.
Tumblr media
The porch on the main temple.
Tumblr media
Inside the main temple. Again shot through the mesh.
Tumblr media
Main Temple again, walking past it.
Tumblr media
Going towards the "treasure" museum and looking back at the main temple. Really excited, since the treasure museum is supposed to have some fabulous artifacts.
Tumblr media
Towards the treasure museum.
Tumblr media
There's the museum.
Tumblr media
Not very impressive up-close, eh? Wait till you see what's inside.
Tumblr media
Damn@#$@#%@$#% No photography allowed. Anyway, this is a zoomed shot from the outside. There were 3 gigantic Buddha statues exquisitely carved in wood, in one, Buddha had multiple heads with each head sprouting more. I guess that has to do with wisdom, or it has something to do with being sneaky. Another one showed Buddha having multiple hands, in fact, more than 15. I am used to gods having multiple hands, but this seemed quite odd for Buddha. Naturally there were 40 or more of these scary looking fellows surrounding the main statues. Note, everything's carved out of tree trunks.
Tumblr media
On the way out from the temple premises.
Tumblr media
One more (half) shot of the main temple.
Tumblr media
On the way back to Thunder Electric station. Some sort of a kids park entrance. Yup, cannons make kids go ballistic.
Tumblr media
And….. we are back in Kyoto, proper. This tower looks very similar to the CN Tower. Canadian-Jap ties seem to go beyond maple.
Tumblr media
My friend Akifumi. Studies in Tokyo and was really kind to show me around Kobe. We are standing in front of a memorial for the 2001 earthquakes.
Tumblr media
Akifumi rented a car to drive us up a nearby hill (umm near as in 21 kms, so not so near). The hill is a very famous lookout spot, because one can also see Osaka from here. The name of the hill (Kikusei des) translates to "Catch the stars". It's obvious why.
Tumblr media
That's the Kobe port.
Tumblr media
Parts of Kobe merge into Osaka.
Tumblr media
Walkway to the observation point.
Tumblr media
A scarlet moon decides to add to the eye candy.
Tumblr media
Moon shot again.
Tumblr media
The car that we drove-up in. It was a Wagon-R rebadged as a Mazda.
Tumblr media
Well, I didn't take too many photos of food. However, food in Japan is exemplary. This is my breakfast at the Tokyo airport. Flew out from Tokyo after a few hours.
42 notes · View notes
amartyabanerjee · 13 years
Text
Stawamus Chief, Vancouver
Tumblr media
Right after the CHI conference was over, Tre came over from Victoria and we went on a hike to the Stawamus Chief.
Tumblr media
I was in Vancouver for CHI 2011 where Bill Buxton showcased his collection of devices;  providing a crucial hands-on lesson in the evolution of computing devices (he has the Simon in his hand). Tre was able to chat with his former boss (yup, Bill B. himself) on the last day as well.
Tumblr media
First we took a walk near Stanley Park. Seemed like a popular spot, wasn't hard to see why.
Tumblr media
Really old trees and gorgeous weather was perfect for a stroll.
Tumblr media
Later on Rob was supposed to come pick us up and drive us to Squamish, where we'd hike up the Big Chief.
Dating back millions of years, the Chief stands as the 2nd tallest freestanding granite monolith in the world, after the Rock of Gibraltor. Most popular activity seems to be the  the steep hike - a solid 7-10 kilometres - up it's side to any one of its three peaks.
Tumblr media
Rob picked us up in a truck with 3 of his friends (Katelyn, Andrew and Carolyn). This was after Tre and I were almost run over by a mad cyclist! He was cycling at 40mph on the sidewalk and we didn't see (or hear) him coming. Crazy!
Anyway, here are some photos from the hike. Quite picturesque.
Tumblr media
Quite steep.
Tumblr media
Tre's carrying his Macbook Air in that small backpack. An affirmation of Apple's claim that the Air is ultra portable.
Tumblr media
Almost at the top. Luckily we reached before it was dark.
Tumblr media
360 degree views from the top.
Tumblr media Tumblr media
From left: Caroline (I might be mistaken), Andrew, Carolyn (fairly convinced this is correct), Katelyn, Rob, Tre, Lake and Mountain.
Tumblr media
I gotta get in there!
Tumblr media Tumblr media Tumblr media
Just made me realize again how easy it is to meet nice people on a hike. I only knew Tre and Rob, but by the end of the hike, it seemed like I was among old friends.
A salute to the Stawamus Chief!
2 notes · View notes
amartyabanerjee · 14 years
Text
Pindari Glacier (Indian Himalayas)
Tumblr media
A trek to Pindari Glacier: May 2008. A couple of weeks of alluring sights, clean air and meeting the finest people in India.
What's worse than trying to synchronize holiday schedules between two software engineers? Make that number three.
Since an account of this trek exists, it is fairly obvious that the holiday schedules did work out, despite one of us having to fly down at the last minute.  Kamlesh, Swapnil and I spend a wonderful couple of weeks in the foothills of the Himalayas, and trekked to the Pindari Glacier.
Pindari glacier is located in a valley known as the Pindar valley (Kumaun Himalaya). It lies between the Nanda Devi and Nandakot mountains at an altitude of 3627 metres. The Glacier is about 3 kilometers long and is fed by the South-Western slope of the Outer wall of the Nanda Devi Sanctuary. The trekking route runs along the southern wilderness of the Nanda Devi Sanctuary and is bordered by beautiful landscapes and breathtaking views of mountains like Panwali Dhar (6683m) and Maiktoli (6803m).
Tumblr media
Off-to Loharkhet (From left: Me, Swapnil and Kamlesh).
Loharkhet was the last village before the real trek started. That doesn't mean that there are no stories to share. The previous day, sometime in the mid-afternoon, a bone rattling and nausea inducing Mahindra Jeep dropped us off at a village called Song. Yes, nice name. We were supposed to hike for a couple of kilometers and spend the night in a tourist rest house at Loharkhet. Little did we know that this 2km hike would leave us bushed, so bushed in fact, that we almost spent the evening at the wrong place. A PWD (public works department) building looked exactly like all government structures we'd encountered in the hills, and in our weakened state of comprehension, we proceeded to simply walk in and dump our bags, in what seemed to be the least crumbling part of the building.
We were convinced we were at the right place when a chowkidar (caretaker) came running and asked us if we wanted some food. Startled by what seemed like a benevolent apparition, we said yes and proceeded to gobble down the lentils and rice that the caretaker cooked for us. It was delicious, but probably only for tired, unfit, software engineers. The meal relaxed us, so relaxed, that we proceeded to fall asleep on the wooden floor for the next couple of hours; still oblivious to the fact that we weren't where we were supposed to be on the first day.
That changed later in the evening. We paid heed to my Dad's advice about chalking out the next days plan in advance, and perhaps embark on a recon. After walking for 10 minutes or so, we saw a sign... "KMVN Loharkhet resthouse, 800 metres ahead".
We came back to the PWD resthouse, thanked and paid a small bakshish (token of gratitude, like a tip) to the caretaker - who was really confused when we said we weren't going to stay the night - and walked up those 800 metres in the evening, to what was supposed to be our stop for the night.
***
Tumblr media
Starting off from Loharkhet towards Dhakuri.
Well rested - the beds in the KMVN(Kumaun Mandal Vikas Nigam) rest house were far more comfortable than the PWD's wooden floor - we started our walk to Dhakuri at 6 o'clock. Usually I cannot wake up early, and making me do so results in a surly "you will pay for this" sort of stare. There's something about the hills that makes one really want to get going. Must be the crystal clear air, the lack of noise and the presence of awe inspiring vistas after each bend on a trail.
Tumblr media
It is a full day's trek to Dhakuri. One reaches by crossing the Dhakuri Pass (2800 mt) and the trek leads through very dense forests, with fairly steep uphill sections at the very end. Dhakuri has a beautiful meadow and is full of sylvan charm.
Tumblr media
That's the KMVN rest house at Dhakuri. By the time we reached Dhakuri, it was nearly evening, and the mist had started to roll in. The meadow was really beautiful and later on in the evening, some campfires were set up. Dhakuri was the last place where there was access to a telephone, not a mobile phone, but rather a battery powered (with solar powered charging) land line; as it turns out, Kamlesh's favourite haunt, sneaking out every half hour to try and contact his girlfriend (UPDATE, now wife).
Tumblr media
Caught red-handed! Kamlesh making his way out of the place with the phone.
Tumblr media
Dhakuri seemed nice enough, but we could barely make out some distant mountains behind the mist, so it didn't really feel like we were in the Himalayas.
Next morning, we woke up to this.
Tumblr media
And this.
Tumblr media
The skies had cleared and the Himalayas were resplendent in all their glory. That day we were supposed to trek to Dwali (about 8 kms), however, feeling particularly adventurous we decided to try and reach Khati (about another 17 kms from Dwali). The plan was to try and minimize the time it would take us to reach Pindari glacier from the final stop on the way (Phurkia). There were also some cloudy weather forecasts if we reached Pindari glacier a day later (after stopping at Dwali) and we wanted to avoid it at all costs.
Tumblr media
The walk from Dhakuri to Dwali was picturesque. Most of the trails were through beautiful pine forests with the Pindar river meandering through a gorgeous valley (on our left).
Tumblr media Tumblr media
We were making good time and had reached Dwali fairly quickly. The climb wasn't very steep and we paused intermittently to soak in the scenery and gobble up some trail mix. Chocolates and trail mix, the secret to a happy hike!
Tumblr media
Kamlesh forging ahead on trail mix power!
Tumblr media
Old ice. The weather was beginning to turn grey, in the mountains, rains can start at a moment's notice. In fact, a few minutes later, we were in our ponchos. and the trail started quickly degenerating from being well worn, but dependable,  into a slippery, sometimes hazardous path. Naturally, the idea to cover two stops on one day, didn't seem that smart. By this time, we had already traveled atleast 5 kilometres from Dwali and it didn't make sense to turn back.
It was nearly dark when we saw the KMVN tents at Khati. The immense relief - we were tired, hungry, cold and wet - was short lived the final obstacle in front of us was a ramshackle wooden bridge with big warning signs nailed to it. We spent a good 15 minutes trying to figure out what to do. Eventually, we tried to find a route where there was none, and after somehow managing to cross the stream, we were faced with a very steep (and slippery) incline. Slipping and sliding on all fours, we somehow clambered up this slope to reach the tents, where were greeted by friendly onlookers (one of them was the caretaker) who clearly thought that we were crazy to try and pull the stunt we just did.
So apparently did the mule; yes, one of the mules that carried supplies to the camp stared at us, ambled over to the edge of the slope from where we'd just emerged...then took a couple of steps back... turned around and slowly shook his head ... clearly he thought our conduct was unbecoming of good trekkers. Note to self, always ask yourself the following question on a trek before doing something: "Would the mule shake his head if he witnessed your performance?". Even a slight hesitation before saying "no" implies that whatever you were thinking of doing was a bad idea.
Tumblr media
We spent the night in the granary. Due to the bad weather, the camp tents were full.Naturally, we didn't sleep very well, this is 5 in the morning, we were about to start off for Phurkia (another 16 kms from Khati).
Though we were really tired the previous evening, hunger overshadowed everything else. We gobbled up rice and lentils (standard fare) in the evening, a lot of it. The caretaker gave us the meal, and when he came back later to collect the utensils, he was a little surprised that we'd managed to plow through food that could have fed 5 people. Imagine his surprise when we enthusiastically said yes to his offer of roti (flat bread), dal (lentil soup/stew) and sabzi (mixed vegetable curry) later at night.
Tumblr media
Yes, that's food again. But we are already in Phurkia. it was a fairly smooth climb and we reached well before darkness fell.
Tumblr media
Swapnil and Kamlesh playing weathermen. Hoping for good weather in the final segment of the trek.
Tumblr media
With the caretakers at Phurkia. They manage to rustle up fantastic meals with very meagre resources. 
Next morning, we were greeted with crystal clear skies. Our decision to skip the break at Dwali and saving a day seemed to have paid off.
Tumblr media
The mist rises from Panwali Dwar. Spectacular.
Tumblr media
Nanda Khat. Couldn't believe how close the mountains felt.
Tumblr media
You can see Traill's Pass near the left edge. We walked along the ridge that seems to run towards Traill's pass.
Tumblr media
Almost there, taking a break. Pindari Glacier is just around the corner. Some more mountain shots coming up.
Tumblr media
Looking back at the valley. Breathtaking.
Tumblr media
A closer look at Traill's Pass. We were now at Pindari Glacier.
Tumblr media
Coming back after spending a couple of hours on the glacier. There was a Baba (priest/monk) who'd set up base nearby. We were also told by the caretakers in Phurkia that he feeds hungry trekkers.
Tumblr media
BABA! It was great fun talking to him, and he did feed us, just about the tastiest meal one can dream of having at this altitude. The Baba even had an e-mail address! Apparently once winter sets in, he makes his way down the valley and comes back when spring comes around.
The rest of the photos were taken on the way back.
Tumblr media
Met with these shepherds near Khati, the dogs were fantastic (and looked like bears!). Each dog had a metal collar with jagged metal teeth sticking out; apparently that's to ward off snow leopards, who seem to really relish snacking on dogs.
Tumblr media
Nanda Devi East soars above the shoulder from Nanda Khat to Traill's Pass. This view is from the camp at Khati. We stopped here again on our way back. Again, we were put up in the granary. Can't complain.
Tumblr media
On the way back from Khati to Dwali, this time, we were in no rush and stopped for the evening at the KMVN rest house in Dwali. We were treated to Maggi (instant noodles) with omlettes.
Tumblr media
The Pindar river.
Tumblr media
We are back again at Dhakuri. End of the trip, things went fairly downhill from here. Quite literally. We went back to our sedentary jobs and there's no point talking about it. The trek was fun. Mountains are fun. They are more fun, with great friends for company.
P.S. I wasn't supposed to be the one to write this account, Kamlesh was supposed to. He diligently carried a notebook and a jotted down notes and told us that he'd pen a travelogue once we were back. Swapnil and I were well aware of the intended audience for the travelogue (hint, phone call) and since it's turned out fairly well for Kamlesh, I decided to take up the slack and write this up.
4 notes · View notes