Posts
Subsections
Surprise! A derivation of entropy
I explain entropy to myselfHow to set up your personal server for projects
Categories: DevOps,
GenAI and my six degrees of separation from tensor products
My experiences getting up and running with GenAI and views on code interpretability.AI+Building Energy Modeling: IBPSA SimBuild 2024 Notes
Notes from attending the SimBuild conference, especially sessions on data science and modeling.The physics of multicopter drones [In Progress]
[In Progress] Equations governing flight of a UAVRunning python on air-gapped systems
How to reproducibly run python code on a system with no internet access.Helping fix aircraft - from NLP to Bayes Nets
NLP to help aircraft mechanics reason about maintenance actionsChatGPT x Tennis - a weekend hacking project
Categories: Developer,
Remote SSH into your home desktop
Categories: DevOps,
Things you’ll need:
- A dynamic DNS service
- A router
- A local desktop
- A remote computer
Audience for this post: people who have used SSH before.
Often times I have found myself wanting to access a computer at home while I am traveling. There are options like TeamViewer, which let me control my computer’s screen from afar. But, I want something more convenient over the command line, like SSH. That way I can drop in and out of my home machine without breaking my flow.
A Poor Man's Introduction to Reinforcement Learning
Categories: Engineering,
Tags: Artificial Intelligence, Reinforcement Learning,
Reinforcement Learning (RL) is one of the many ways to implement artificial intelligence (AI). AI is the design of “intelligent” agents that maximize their chances of success at some goal. The goal can belong to any problem: from winning a game of tic-tac-toe, to recognizing speech, to steering a car.
A problem can be approached in many different ways. An agent can search for all possible options and choose the best. Or the problem can be formulated as a set of logical rules which the agent then applies at each step. The former way may require searching too many options. The latter may require meticulous representation of the nuances in a system.
Escaping Echochambers
Categories: Machine Learning,
Tags: Machine Learning, Principal Component Analysis, Visualization,
The echochamber effect is a worrisome issue in social media. It risks isolating users in exclusive groups as they repeatedly subscribe to content that reinforces their biases. To keep users engaged, websites expose users to content similar to their history. You will get recommendations for movies you may like, or peoply you may befriend, or communities you may join - all based on some measure of similarity with your profile.
On first glance, this seems convenient: a user does not need to explicitly search for content. The digital platform assumes a user’s wants. You may even be shown interesting things you wouldn’t have known to look for. As users consume more content, their digital footprints become more accurate descriptors of their preferences. It becomes easier to navigate the world wide web: users’ interests are served on a platter. However, this is not a unitateral benefit. An exchange is being made in the currency of data: convenience for autonomy. At some point, users may find themselves in concord with everything they see online. Gradually, all their new Facebook friends share their views. According to news articles on their social feeds, the world seems to be going in the exact direction they predicted. Every new movie recommendation is a romcom - their guilty pleasure. Uncanny.
Trials and Tribulations of Maintaining a Hugo Blog
As of the writing of this post, I maintain this site using my very own theme created in hugo. Hugo is a static site generator. It takes a bunch of plain text, applies a theme, and renders it as HTML. This is opposed to applications like Wordpress that assemble a page each time its served, to put it simply. This compute once, use many times approach saves on processing time and makes a site more portable. Case in point: this site is hosted on GitHub, but I can easily move it to any hosting service.
Algorithms: Balancing
Balancing in algorithms refers to minimizing the complexity of an algorithm by making sure that its constituent parts share the load efficiently. It is not a technique for solving problems. Instead it helps us understand how an existing solution may be optimized.
The theory of balancing
Say there is a problem of size \(n\). The problem is such that it can be broken down into a sequence of smaller problems. There are many ways the problem can be broken down:
Optimizing static sites with hugo
Categories: Developer, Meta, DevOps,
Tags: Hugo, Javascript, Web Development,
According to httparchive the average size of a web page in 2016 was around 2.5MB. Now this may not seem a lot in this age where the internet is the primary media delivery platform - but it is worth noting that most web pages serve text as their primary content. Looking at the report sheds light on what constitutes an average web page:
The HTML content takes up around 50-60kB. Images, understandably, make up the biggest chunk with ~1.6MB. Around another ~200kB are taken up by CSS and Font files. What is surprising to me is that the next biggest chunk, at above 400kB, is JavaScript.
Is cold the new hot?
Note: This article was originally published on astroibrahim on April 17, 2013.
Yes.
A few days back, a friend shared an article with me. It talked of how scientists had managed to achieve temperatures below absolute zero. Does it mean that temperature has to be redefined? Has our understanding of thermodynamics been flawed for the past hundred years. No, it turns out. It is all a matter of semantics.
Absolute Zero. This is the temperature at which a particle has the minimum possible energy. The energy is NOT zero because that would violate the Heisenberg uncertainty principle (that you cannot know the energy and its duration with absolute certainty). However that zero-state energy is a quantum quantity, so for all intents and purposes, the particle itself appears stationary. Classically, it is impossible to go below absolute zero because for all the matter that we know of, it will never have negative energy (because the zero state energy prevents energy from going past zero and into the negative).
Gravitational Slingshots
Note: This article was originally published on astroibrahim on Apr 10, 2013.
I always wondered why doesn’t the sun slow space probes down when they are leaving the Earth for outer planets. Isn’t there a risk that the probe might change its trajectory and fall into the sun? There is. You see, the more distant the space probe gets from the Sun, the more potential energy it gains. However, energy must be conserved at all costs. Therefore the probe loses its Kinetic energy (and therefore its speed) in order to get away from the sun. It is the same as when you throw a rock up into the air.
Testing code with sensitive data
I recently renewed work on my first ever github project. Over the course of a whole year when that project was dormant, I’d learned some new tricks. I now try to focus on writing tests for my projects. It is immensely convenient when I add features here and there and need to check the whole code for errors.
Anyways, my project requires API keys to imgur.com. However I do not want to hard-code them into my test.py file. But I also do not want to manually provide keys every time I run tests. So what do I do?
A case study in choosing algorithms
This past year, I have been crunching data from dark matter simulations. Data size can get pretty large when it comes to scientific computing. As I write this post, I have a script running on 3.8 TB (that’s right – 3,700 gigabytes) of cosmic particles. At these levels one starts thinking about parallelizing computations. And therein lay my dilemma and a soon to be learned lesson.
Markov Chains – Random Text Generation
This semester I am taking a course in High Performance Computing where I get to work with multi-core systems like computing clusters and graphics cards. For my final project I decided to develop a random text generator and see if I could speed it up.
A popular method of generating random text (that is grammatically correct) is using Markov chains.
Starting Android Development
I have always been fascinated with mobile app development. Over the last couple of years in college, I made a few attempts to get started with Android applications. I watched tutorial series, reading blogs, attending introductory workshops. Nope. Nothing seemed to stick. What was wrong?
Developing with C/C++ on console
I am taking a High Performance Computing course this semester. For that we have to ssh into the university’s computing cluster. The interface is entirely console based. Now that might seem awesome at first: typing away commands like a “hacker”. And it is awesome. But after a while it gets tiring, particularly when I am writing code.
Talking With Satellites
This year I am leading a senior design team in developing a software defined radio that can talk with a satellite that Vanderbilt just launched. Compared to a normal radio, an SDR has most of the signal processing functions implemented virtually. This means that it can change its operation on the fly. An interesting application of SDRs is cognitive radio: that is, radios communicating with other radios in their vicinity and adjusting their frequencies to maximize their use of the bandwidth.
Making a simple web app blindfolded, and with both arms tied…
Over the last weekend, I was looking to brush up my web-dev skills (what little I had learned on the side). I decided to make a simple web app for my residents to use (I am a Resident Advisor).
Objective: Display tips, event news, free food notifications provided regularly by RAs and faculty to residents on a website.
Parsing websites on a budget
Categories: Developer,
Tags: Javascript, Web App, Web Development, Web Scraping, Yql,
Say you are an up and coming web developer. You want to make a web app that can access content on other sites. Perhaps you want to make a word cloud from a news article on BBC. Or you want to see what videos a site has embedded within itself. You could achieve that by doing some server side voodoo. The ‘standard’ way to go about it would be to download the site to your server and then serve its contents to your webpage. But that would require two things: