<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ibrahim Ahmed</title><link>https://iahmed.me/</link><description>Recent content on Ibrahim Ahmed</description><generator>Hugo</generator><language>en-us</language><copyright>Ibrahim Ahmed</copyright><lastBuildDate>Sun, 05 Apr 2026 13:14:36 -0700</lastBuildDate><atom:link href="https://iahmed.me/index.xml" rel="self" type="application/rss+xml"/><item><title>Locally running languagem models</title><link>https://iahmed.me/note/llms/local/</link><pubDate>Sun, 05 Apr 2026 13:14:36 -0700</pubDate><guid>https://iahmed.me/note/llms/local/</guid><description>&lt;h2 id="using-llamacpp"&gt;Using llama.cpp&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-zsh" data-lang="zsh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;llama-server -hf MODEL_NAME
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Observed speeds on M5 pro (&lt;code&gt;brew install llama.cpp&lt;/code&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HauhauCS/Qwen3.5-9B-Uncensored-HauhauCS-Aggressive:Q6_K: 35 tok/s&lt;/li&gt;
&lt;li&gt;unsloth/gemma-4-26B-A4B-it-GGUF: 57 tok/s&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Observed speeds on RTX 4080 (&lt;code&gt;winget instal ggml.llamacpp&lt;/code&gt;):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;HauhauCS/Qwen3.5-9B-Uncensored-HauhauCS-Aggressive:Q6_K: 80 tok/s&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pointers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;--reasoning-budget 0&lt;/code&gt; to disable thinking&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-ngl 999&lt;/code&gt; to offload all layes to GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="using-huggingface-transformers"&gt;Using huggingface transformers&lt;/h2&gt;</description></item><item><title>Poor Man's Autograd</title><link>https://iahmed.me/post/poor_mans_autograd/</link><pubDate>Fri, 27 Mar 2026 22:57:59 -0700</pubDate><guid>https://iahmed.me/post/poor_mans_autograd/</guid><description>&lt;figure&gt;&lt;img src="https://iahmed.me/post/poor_mans_autograd/thumbnail.jpg"&gt;
&lt;/figure&gt;

&lt;p&gt;Join the discussion on &lt;a href="https://x.com/hazrmard/status/2040526958690447862"&gt;X&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I recently came across &lt;a href="https://gist.github.com/karpathy/8627fe009c40f57531cb18360106ce95"&gt;microgpt&lt;/a&gt; - a single-file, python-only training script for a GPT model.&lt;/p&gt;
&lt;p&gt;What stood out to me were 40 or so lines that implemented autograd. That is, calculating gradients of computations done in code, automatically. Autograd is not novel (&lt;a href="https://autograd.readthedocs.io/en/latest/background.html"&gt;python autograd&lt;/a&gt;). It underpins every single deep learning library (&lt;a href="https://docs.jax.dev/en/latest/automatic-differentiation.html"&gt;jax&lt;/a&gt;, &lt;a href="https://docs.pytorch.org/tutorials/beginner/blitz/autograd_tutorial.html"&gt;torch&lt;/a&gt;, &lt;a href="https://www.tensorflow.org/guide/autodiff"&gt;tensorflow&lt;/a&gt;, &lt;a href="https://github.com/HIPS/autograd"&gt;and yes, numpy too&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;No, the reason I was so taken aback was explicitly facing the simplicity of the mechanism that has fueled machine learning for decades now. It&amp;rsquo;s one thing to call &lt;code&gt;loss.backward()&lt;/code&gt;; it&amp;rsquo;s an entirely different thing to pause and examine what&amp;rsquo;s happening underneath.&lt;/p&gt;</description></item><item><title>Surprise! A derivation of entropy</title><link>https://iahmed.me/post/surprise-derivation-entropy/</link><pubDate>Thu, 04 Dec 2025 22:07:36 -0800</pubDate><guid>https://iahmed.me/post/surprise-derivation-entropy/</guid><description>&lt;p&gt;In this post, I will derive entropy from first principles. This requires no more than a high school-level understanding of mathematics. This derivation is based on Shannon&amp;rsquo;s original seminal paper, &lt;a href="https://people.math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy.pdf"&gt;&lt;em&gt;A mathematical theory of communication&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="a-derivation"&gt;A derivation&lt;/h2&gt;
&lt;h3 id="the-conditions"&gt;The conditions&lt;/h3&gt;
&lt;p&gt;We want a function, $H(n)$, which measures the uncertainty in a system in which we chose one of $n$ events that can occur. We would want it to exhibit the following three properties:&lt;/p&gt;</description></item><item><title>How to set up your personal server for projects</title><link>https://iahmed.me/post/2024-10-27-lab-server/</link><pubDate>Sun, 27 Oct 2024 07:54:24 -0600</pubDate><guid>https://iahmed.me/post/2024-10-27-lab-server/</guid><description>&lt;p&gt;I have often been stumped at one stage of personal software projects: sharing with others. It goes one of three ways:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;I come up with a fun idea and make a prototype. The repo is up on github. Anyone who wants to use it will clone it, recreate the environment, and execute on their machine. Many times the work to set up the project demo is not worth the utility of the actual demo.&lt;/p&gt;</description></item><item><title>Quran AI</title><link>https://iahmed.me/project/quranai/</link><pubDate>Fri, 06 Sep 2024 22:16:59 -0500</pubDate><guid>https://iahmed.me/project/quranai/</guid><description/></item><item><title>GenAI and my six degrees of separation from tensor products</title><link>https://iahmed.me/post/six-degrees-separation-tensor-product/</link><pubDate>Fri, 28 Jun 2024 09:30:04 -0500</pubDate><guid>https://iahmed.me/post/six-degrees-separation-tensor-product/</guid><description>&lt;p&gt;Lately I have been working with generative AI applications for work and personal projects. I learned a lot. But, I found learning and application stressful. I had envisioned going on a leisurly drive to sightsee and sample what GenAI has to offer. I quickly found myself in a golf cart on the Machine Learning freeway.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="./freeway.png"&gt;
 &lt;figcaption&gt;Made with GenHI (Human Intelligence)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;We are living in a gold rush of foundation models. Every week, new research quickly permeates into user space. Iterations of large language models (LLMs) beat last week&amp;rsquo;s benchmarks. The &amp;ldquo;state-of-the-art&amp;rdquo; label has a new, shorter, shelf life.&lt;/p&gt;</description></item><item><title>AI+Building Energy Modeling: IBPSA SimBuild 2024 Notes</title><link>https://iahmed.me/post/2024-05-simbuild/</link><pubDate>Sun, 02 Jun 2024 12:12:03 -0500</pubDate><guid>https://iahmed.me/post/2024-05-simbuild/</guid><description>&lt;p&gt;This was my first year at IBPSA SimBuild. Three days of interesting sessions on multidiscipinary domains. I and my colleague were presenting on the application of Large Language Models to Building Energy Modeling (BEM). The following are some quick and dirty notes. I naturally paid more attention to talks I found more interesting, given my background.&lt;/p&gt;
&lt;p&gt;I have a background in reinforcement learning and machine learning in general. I was particularly interested in the Data Science session. Large Language Models have quickly permeated into every industry where weakly-supervised automation is possible. LLMs, however, have penetrated faster in to areas with a bigger overlap with computer science professionals or a massive customer-facing online business (customer service). So I was very interested where BEM would use LLMs.&lt;/p&gt;</description></item><item><title>Drone physics</title><link>https://iahmed.me/post/drone-physics/</link><pubDate>Sat, 27 Jan 2024 19:22:34 -0600</pubDate><guid>https://iahmed.me/post/drone-physics/</guid><description>&lt;figure&gt;&lt;img src="https://iahmed.me/post/drone-physics/static/icon.png"
			alt="A friendly drone capable of awesome feats of aerodynamics." width="250px"&gt;&lt;figcaption&gt;
			&lt;p&gt;A friendly drone capable of awesome feats of aerodynamics.&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;This article describes drone physics. Audience should have familiarity with introductory linear algebra, introductory calculus, and introductory classical mechanics. This work was adapted from &lt;a href="https://iahmed.me/about/"&gt;my research in adaptive control&lt;/a&gt; and publication at &lt;a href="https://ieeexplore.ieee.org/abstract/document/9925862"&gt;AIAA DASC 2023&lt;/a&gt; about &lt;a href="https://multirotor.readthedocs.io"&gt;&lt;code&gt;multirotor&lt;/code&gt;&lt;/a&gt;, a python simulation framework for drones. The notation here borrows heavily from the excellent work by &lt;a href="https://github.com/charlestytler/QuadcopterSim"&gt;Charles Tytler&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Join the discussion on &lt;a href="https://x.com/hazrmard/status/2067012993003438469"&gt;X&lt;/a&gt;, &lt;a href="https://www.reddit.com/r/ControlTheory/comments/1u8e4q1/drone_physics_i_wrote_equations_of_motion_and/"&gt;Reddit&lt;/a&gt;, &lt;a href="https://news.ycombinator.com/item?id=48562521"&gt;HackerNews&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Running python on air-gapped systems</title><link>https://iahmed.me/post/python-air-gapped/</link><pubDate>Sat, 13 Jan 2024 12:32:13 -0600</pubDate><guid>https://iahmed.me/post/python-air-gapped/</guid><description>&lt;p&gt;In this post, I talk about running python code on a &amp;ldquo;soft&amp;rdquo; air-gapped system. For the final script, scroll to the end.&lt;/p&gt;
&lt;p&gt;For research with the Department of Defense (DoD) and the University of Tennessee, Knoxville (UTK), I worked with restricted data. The DoD was very strict about who had access to the data. After much negotiation and bureaucratic back-and-forth, the data were placed deep inside UTK&amp;rsquo;s high performance compute cluster&amp;rsquo;s (HPC) secure nodes (SN).&lt;/p&gt;</description></item><item><title>Helping fix aircraft - from NLP to Bayes Nets</title><link>https://iahmed.me/post/nlp-bayes-aircraft/</link><pubDate>Wed, 25 Oct 2023 10:55:00 -0500</pubDate><guid>https://iahmed.me/post/nlp-bayes-aircraft/</guid><description>&lt;figure&gt;&lt;img src="https://iahmed.me/post/nlp-bayes-aircraft/idime_cover.jpg"
			alt="Generated by DALL.E 3"&gt;&lt;figcaption&gt;
			&lt;p&gt;Generated by DALL.E 3&lt;/p&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Behind every strong, graceful aircraft is a mechanic. Likely a team of mechanics who work diligently to maintain the machine. Maintenance is not about fixing a problem after it occurs, but preventing one from occurring in the first place. That requires tracking the state of the vehicle and stepping in to fix things periodically.&lt;/p&gt;
&lt;p&gt;A research project I am contracted on is to streamline maintenance procedures for helicopters. My background is in electrical engineering/machine learning research with some application to aerospace.&lt;/p&gt;</description></item><item><title>ChatGPT x Tennis - a weekend hacking project</title><link>https://iahmed.me/post/chatgpt-tennis-project/</link><pubDate>Sun, 20 Aug 2023 14:29:52 -0500</pubDate><guid>https://iahmed.me/post/chatgpt-tennis-project/</guid><description>&lt;p&gt;I &lt;del&gt;like&lt;/del&gt; love playing tennis. One tennis event I go to is very popular. It gets posted online a week ahead, at a random time late in the morning. Within an hour of the post going online, all spots are taken up. I want to play every week.&lt;/p&gt;
&lt;p&gt;My current solution is to rely on a carefully cultivated clique of confidants who will text me when the next event is up.&lt;/p&gt;</description></item><item><title>Remote SSH into your home desktop</title><link>https://iahmed.me/post/remote-ssh-into-desktop/</link><pubDate>Wed, 07 Jun 2023 09:22:00 -0500</pubDate><guid>https://iahmed.me/post/remote-ssh-into-desktop/</guid><description>&lt;p&gt;Things you&amp;rsquo;ll need:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A dynamic DNS service&lt;/li&gt;
&lt;li&gt;A router&lt;/li&gt;
&lt;li&gt;A local desktop&lt;/li&gt;
&lt;li&gt;A remote computer&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Audience for this post: people who have used SSH before.&lt;/p&gt;
&lt;p&gt;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&amp;rsquo;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.&lt;/p&gt;</description></item><item><title>News</title><link>https://iahmed.me/about/news/</link><pubDate>Thu, 25 May 2023 16:28:09 -0400</pubDate><guid>https://iahmed.me/about/news/</guid><description>&lt;p&gt;&lt;strong&gt;News&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2025-04&lt;/strong&gt;: I joined Google in a Software Engineer role and moved to the San Francisco Bay area.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2025-01&lt;/strong&gt;: I gave a talk at Trane Technologies&amp;rsquo; Data Science Forum on anomaly detection algorithms and presented a case study using data from rooftop refrigeration units.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2024-11&lt;/strong&gt;: I spoke at &lt;a href="https://appliedai.mn"&gt;Applied AI&lt;/a&gt; conference in November. My talk was on optimizing differentiable supply chains and using GenAI to interact with Supply Chain prediction models.&lt;/p&gt;</description></item><item><title>multirotor</title><link>https://iahmed.me/project/multirotor/</link><pubDate>Fri, 30 Sep 2022 00:00:00 +0000</pubDate><guid>https://iahmed.me/project/multirotor/</guid><description/></item><item><title>Modern control: Solutions &amp; state transition matrices</title><link>https://iahmed.me/post/control-systems/5-modern-state-transition/</link><pubDate>Mon, 24 Sep 2018 14:17:46 -0500</pubDate><guid>https://iahmed.me/post/control-systems/5-modern-state-transition/</guid><description>&lt;p&gt;The state equation for a linear time-invariant system:&lt;/p&gt;
&lt;p&gt;$$
x&amp;rsquo;(t) = A x(t) + B u(t)
$$&lt;/p&gt;
&lt;p&gt;Can be solved for $x(t)$. We collect all terms in $x$:&lt;/p&gt;
&lt;p&gt;$$
x&amp;rsquo;(t) - A x(t) = B u(t)
$$&lt;/p&gt;
&lt;p&gt;Multiply equation by $e^{-At}$&lt;/p&gt;
&lt;p&gt;$$
x&amp;rsquo;(t) e^{-At} - A x(t) e^{-At} = B u(t) e^{-At}
$$&lt;/p&gt;
&lt;p&gt;Using product rule $d(f;g) = f;dg + g;df$, where:&lt;/p&gt;
&lt;div&gt;$$
\begin{align*}
df = - A e^{-At} \rightarrow &amp; f = e^{-At} \\
dg = x'(t) \rightarrow &amp; g = x(t) \\
\\
\therefore x'(t) e^{-At} - A x(t) e^{-At} &amp;= d (e^{-At} x(t))
\end{align*}
$$&lt;/div&gt;
&lt;p&gt;To give:&lt;/p&gt;</description></item><item><title>Modern control: State space equations</title><link>https://iahmed.me/post/control-systems/4-modern-state-space-equations/</link><pubDate>Mon, 24 Sep 2018 14:17:46 -0500</pubDate><guid>https://iahmed.me/post/control-systems/4-modern-state-space-equations/</guid><description>&lt;p&gt;In modern control approaches, systems are analyzed in time domain as a set of differential equations. Higher order differential equations are decomposed into sets of first order equations of &lt;em&gt;state variables&lt;/em&gt; that represent the system internally. This produces three sets of variables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Input&lt;/strong&gt; variables are stimuli given to the system. Denoted by $u$.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Output&lt;/strong&gt; variables are the result of the current system state and inputs. Denoted by $y$.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State&lt;/strong&gt; variables represent the internal state of a system which may be obscured in the output variables. Denoted by $x$.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="state-space-equations"&gt;State-space equations&lt;/h2&gt;
&lt;p&gt;A state-space model is represented by two sets of equations.&lt;/p&gt;</description></item><item><title>Classical control: Transfer functions</title><link>https://iahmed.me/post/control-systems/3-classical-transfer/</link><pubDate>Fri, 21 Sep 2018 15:17:40 -0500</pubDate><guid>https://iahmed.me/post/control-systems/3-classical-transfer/</guid><description>&lt;p&gt;A transfer function relates the output of a system to its input when it is represented in the Laplace domain. An assumption is made that initial steady-state response is 0. If $Y(s)$ is the output of a system, $X(s)$ is the input, then the transfer function is:&lt;/p&gt;
&lt;p&gt;$$
H(s) = \frac{Y(s)}{X(s)}
$$&lt;/p&gt;
&lt;h3 id="example---a-car"&gt;Example - A Car&lt;/h3&gt;
&lt;figure&gt;&lt;img src="https://iahmed.me/img/posts/ai-methods-for-control-systems/3-car.png"
			alt="A car as a system: The input is the acceleration. The output is the total distance travelled. Initial conditions are zero."&gt;&lt;figcaption&gt;
			&lt;p&gt;A car as a system: The input is the acceleration. The output is the total distance travelled. Initial conditions are zero.&lt;/p&gt;</description></item><item><title>Classical control: Transforms</title><link>https://iahmed.me/post/control-systems/2-classical-transforms/</link><pubDate>Mon, 10 Sep 2018 13:13:41 -0500</pubDate><guid>https://iahmed.me/post/control-systems/2-classical-transforms/</guid><description>&lt;p&gt;Classical control methods simplify handling of a complex system by representing it in a different domain. The equations governing system dynamics are &lt;em&gt;transformed&lt;/em&gt; into a different set of variables. A for a function $f(t)$ in the $t$ domain, an oft used transformation is of the form:&lt;/p&gt;
&lt;p&gt;$$
\mathcal{T}(f(t)) = F(s) = \int_{Domain} f(t) \cdot g(s, t); dt
$$&lt;/p&gt;
&lt;p&gt;Mathematically, the integral removes the $t$ variable and only leaves $s$, thus converting from the $t$ domain to the $s$ domain.&lt;/p&gt;</description></item><item><title>Control Systems: Overview</title><link>https://iahmed.me/post/control-systems/1-control-systems/</link><pubDate>Mon, 10 Sep 2018 11:34:21 -0500</pubDate><guid>https://iahmed.me/post/control-systems/1-control-systems/</guid><description>&lt;h2 id="overview-of-control-theory"&gt;Overview of control theory&lt;/h2&gt;
&lt;p&gt;A control system is a mechanism that dictates the behaviour of another system. A controller relies on signals it can measure to estimate performance of the system. In response it sends out signals that influence the system towards the desired state.&lt;/p&gt;
&lt;p&gt;A controller is designed by modelling a system as a set of differential equations in time. By analysing that model, a control strategy can be developed. There are two approaches to solving systems modelled as differential equatiosn:&lt;/p&gt;</description></item><item><title>Agents</title><link>https://iahmed.me/project/agents/</link><pubDate>Wed, 01 Aug 2018 13:16:05 -0600</pubDate><guid>https://iahmed.me/project/agents/</guid><description/></item><item><title>StarsBegone</title><link>https://iahmed.me/project/starsbegone/</link><pubDate>Sun, 06 May 2018 21:23:01 -0500</pubDate><guid>https://iahmed.me/project/starsbegone/</guid><description/></item><item><title>PoorMansNN</title><link>https://iahmed.me/project/poormansnn/</link><pubDate>Sun, 04 Mar 2018 13:06:06 -0600</pubDate><guid>https://iahmed.me/project/poormansnn/</guid><description/></item><item><title>A Poor Man's Introduction to Reinforcement Learning</title><link>https://iahmed.me/post/2017-11-13-poor-mans-reinforcement-learning/</link><pubDate>Mon, 13 Nov 2017 23:19:08 -0600</pubDate><guid>https://iahmed.me/post/2017-11-13-poor-mans-reinforcement-learning/</guid><description>&lt;p&gt;Reinforcement Learning (RL) is one of the many ways to implement artificial
intelligence (AI). AI is the design of &amp;ldquo;intelligent&amp;rdquo; 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>Escaping Echochambers</title><link>https://iahmed.me/post/2017-10-20-escaping-echochambers/</link><pubDate>Fri, 20 Oct 2017 20:59:42 -0500</pubDate><guid>https://iahmed.me/post/2017-10-20-escaping-echochambers/</guid><description>&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Echo_chamber_(media)"&gt;echochamber effect&lt;/a&gt; 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 &lt;em&gt;profile&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;On first glance, this seems convenient: a user does not need to explicitly search for content. The digital platform &lt;em&gt;assumes&lt;/em&gt; a user&amp;rsquo;s wants. You may even be shown interesting things you wouldn&amp;rsquo;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&amp;rsquo; 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.&lt;/p&gt;</description></item><item><title>Trials and Tribulations of Maintaining a Hugo Blog</title><link>https://iahmed.me/post/2017-09-30-maintaining-a-hugo-blog/</link><pubDate>Sat, 30 Sep 2017 17:29:58 -0500</pubDate><guid>https://iahmed.me/post/2017-09-30-maintaining-a-hugo-blog/</guid><description>&lt;p&gt;As of the writing of this post, I maintain this site using my very own theme created in hugo. &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; 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 &lt;em&gt;compute once, use many times&lt;/em&gt; approach saves on processing time and makes a site more portable. Case in point: this site is hosted on &lt;a href="https://github.com/hazrmard/hazrmard.github.io"&gt;GitHub&lt;/a&gt;, but I can easily move it to any hosting service.&lt;/p&gt;</description></item><item><title>Feature Track</title><link>https://iahmed.me/project/feature-track/</link><pubDate>Sat, 01 Apr 2017 13:09:45 -0600</pubDate><guid>https://iahmed.me/project/feature-track/</guid><description/></item><item><title>Algorithms: Balancing</title><link>https://iahmed.me/post/algorithms-balancing/</link><pubDate>Mon, 06 Feb 2017 18:47:26 -0600</pubDate><guid>https://iahmed.me/post/algorithms-balancing/</guid><description>&lt;p&gt;Balancing in algorithms refers to minimizing the complexity of an algorithm by
making sure that its constituent parts share the load efficiently. It is &lt;em&gt;not&lt;/em&gt; a
technique for solving problems. Instead it helps us understand how an existing
solution may be optimized.&lt;/p&gt;
&lt;h2 id="the-theory-of-balancing"&gt;The theory of balancing&lt;/h2&gt;
&lt;p&gt;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:&lt;/p&gt;</description></item><item><title>Optimizing static sites with hugo</title><link>https://iahmed.me/post/2017-02-06-optimizing-static-sites-with-hugo/</link><pubDate>Mon, 06 Feb 2017 10:07:58 -0600</pubDate><guid>https://iahmed.me/post/2017-02-06-optimizing-static-sites-with-hugo/</guid><description>&lt;p&gt;According to &lt;a href="http://httparchive.org/trends.php"&gt;httparchive&lt;/a&gt; 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:&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>Is cold the new hot?</title><link>https://iahmed.me/post/2017-01-31-is-cold-the-new-hot/</link><pubDate>Tue, 31 Jan 2017 11:00:25 -0600</pubDate><guid>https://iahmed.me/post/2017-01-31-is-cold-the-new-hot/</guid><description>&lt;p&gt;&lt;em&gt;Note: This article was originally published on
&lt;a href="astroibrahim.wordpress.com"&gt;astroibrahim&lt;/a&gt; on April 17, 2013.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Yes.&lt;/p&gt;
&lt;p&gt;A few days back, a friend shared an &lt;a href="http://www.nature.com/news/quantum-gas-goes-below-absolute-zero-1.12146"&gt;article&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;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).&lt;/p&gt;</description></item><item><title>Gravitational Slingshots</title><link>https://iahmed.me/post/2017-01-31-gravitational-slingshots/</link><pubDate>Tue, 31 Jan 2017 10:48:32 -0600</pubDate><guid>https://iahmed.me/post/2017-01-31-gravitational-slingshots/</guid><description>&lt;p&gt;&lt;em&gt;Note: This article was originally published on
&lt;a href="astroibrahim.wordpress.com"&gt;astroibrahim&lt;/a&gt; on Apr 10, 2013.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description></item><item><title>Urdown</title><link>https://iahmed.me/project/urdown/</link><pubDate>Tue, 01 Nov 2016 00:00:00 +0000</pubDate><guid>https://iahmed.me/project/urdown/</guid><description/></item><item><title>gobol</title><link>https://iahmed.me/project/gobol/</link><pubDate>Sat, 01 Oct 2016 00:00:00 -0600</pubDate><guid>https://iahmed.me/project/gobol/</guid><description/></item><item><title>Testing code with sensitive data</title><link>https://iahmed.me/post/2016-09-06-testing-code-with-sensitive-data/</link><pubDate>Tue, 06 Sep 2016 02:01:26 +0000</pubDate><guid>https://iahmed.me/post/2016-09-06-testing-code-with-sensitive-data/</guid><description>&lt;p&gt;I recently renewed work on my first ever &lt;a href="https://github.com/hazrmard/imgurPCA"&gt;github project&lt;/a&gt;. 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.&lt;/p&gt;
&lt;p class=""&gt;
 Anyways, my project requires API keys to imgur.com. However I do not want to hard-code them into my &lt;em&gt;&lt;a href="https://github.com/hazrmard/imgurPCA/blob/master/test.py"&gt;test.py&lt;/a&gt;&lt;/em&gt; file. But I also do not want to manually provide keys every time I run tests. So what do I do?</description></item><item><title>goinit</title><link>https://iahmed.me/project/goinit/</link><pubDate>Thu, 01 Sep 2016 13:07:40 -0600</pubDate><guid>https://iahmed.me/project/goinit/</guid><description/></item><item><title>A case study in choosing algorithms</title><link>https://iahmed.me/post/2016-08-13-a-case-study-in-choosing-algorithms/</link><pubDate>Sun, 14 Aug 2016 03:29:23 +0000</pubDate><guid>https://iahmed.me/post/2016-08-13-a-case-study-in-choosing-algorithms/</guid><description>&lt;p&gt;This past year, I have been crunching data from &lt;a href="https://github.com/hazrmard/DarkMatterHalos"&gt;dark matter simulations&lt;/a&gt;. 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.&lt;/p&gt;</description></item><item><title>AdEmbargo</title><link>https://iahmed.me/project/adembargo/</link><pubDate>Mon, 01 Aug 2016 00:00:00 -0600</pubDate><guid>https://iahmed.me/project/adembargo/</guid><description/></item><item><title>imgurPCA</title><link>https://iahmed.me/project/imgurpca/</link><pubDate>Mon, 01 Aug 2016 00:00:00 -0600</pubDate><guid>https://iahmed.me/project/imgurpca/</guid><description/></item><item><title>DarkMatterHalos</title><link>https://iahmed.me/project/darkmatterhalos/</link><pubDate>Fri, 01 Jul 2016 00:00:00 -0600</pubDate><guid>https://iahmed.me/project/darkmatterhalos/</guid><description/></item><item><title>Markov Chains – Random Text Generation</title><link>https://iahmed.me/post/markov-chains-random-text-generation/</link><pubDate>Fri, 29 Apr 2016 23:23:16 +0000</pubDate><guid>https://iahmed.me/post/markov-chains-random-text-generation/</guid><description>&lt;p&gt;This semester I am taking a course in &lt;a href="http://sc3260s16.github.io/"&gt;High Performance Computing&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;A popular method of generating random text (that is grammatically correct) is using &lt;strong&gt;Markov chains&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Markovia</title><link>https://iahmed.me/project/markovia/</link><pubDate>Fri, 01 Apr 2016 13:14:18 -0600</pubDate><guid>https://iahmed.me/project/markovia/</guid><description/></item><item><title>SatTrack</title><link>https://iahmed.me/project/sattrack/</link><pubDate>Fri, 01 Apr 2016 00:00:00 -0600</pubDate><guid>https://iahmed.me/project/sattrack/</guid><description>&lt;p&gt;SatTrack is the software-side of my senior engineering project at Vanderbilt
University. I led a team of 4 students to design a software-defined radio system
that can track and receive scientific data from cube satellites.&lt;/p&gt;
&lt;figure&gt;
 &lt;img src="https://iahmed.me/img/projects/SatTrack_poster.png"&gt;
 &lt;figcaption&gt;Poster for the project.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;em&gt;SatTrack&lt;/em&gt; provides the front/back end of the entire interface. The software
can be run from any system that supports Python. It calculates satellite position
in real-time based on current location. There is a companion module on an Arduino
which controls antenna servos using those coordinates.&lt;/p&gt;</description></item><item><title>Starting Android Development</title><link>https://iahmed.me/post/2016-03-04-starting-android-development/</link><pubDate>Sat, 05 Mar 2016 03:55:04 +0000</pubDate><guid>https://iahmed.me/post/2016-03-04-starting-android-development/</guid><description>&lt;p&gt;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?&lt;/p&gt;</description></item><item><title>ng-Résumé</title><link>https://iahmed.me/project/ng-resume/</link><pubDate>Tue, 01 Mar 2016 00:00:00 -0600</pubDate><guid>https://iahmed.me/project/ng-resume/</guid><description/></item><item><title>TIL</title><link>https://iahmed.me/project/til/</link><pubDate>Tue, 01 Mar 2016 00:00:00 -0600</pubDate><guid>https://iahmed.me/project/til/</guid><description/></item><item><title>Developing with C/C++ on console</title><link>https://iahmed.me/post/2016-01-29-developing-with-cc-on-console/</link><pubDate>Sat, 30 Jan 2016 04:30:28 +0000</pubDate><guid>https://iahmed.me/post/2016-01-29-developing-with-cc-on-console/</guid><description>&lt;p class=""&gt;
 I am taking a High Performance Computing course this semester. For that we have to &lt;span class="lang:default decode:true crayon-inline "&gt;ssh&lt;/span&gt; into the university&amp;#8217;s computing cluster. The interface is entirely console based. Now that might seem awesome at first: typing away commands like a &amp;#8220;hacker&amp;#8221;. And it is awesome. But after a while it gets tiring, particularly when I am writing code.</description></item><item><title>Talking With Satellites</title><link>https://iahmed.me/post/2015-10-14-talking-with-satellites/</link><pubDate>Wed, 14 Oct 2015 19:16:21 +0000</pubDate><guid>https://iahmed.me/post/2015-10-14-talking-with-satellites/</guid><description>&lt;p&gt;This year I am leading a senior design team in developing a software defined radio that can talk with a satellite that &lt;a href="http://www.amsat.org/?p=3689"&gt;Vanderbilt just launched&lt;/a&gt;. 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.&lt;/p&gt;</description></item><item><title>Personalized Group Mail</title><link>https://iahmed.me/project/personalized-group-mail/</link><pubDate>Thu, 01 Oct 2015 13:03:33 -0600</pubDate><guid>https://iahmed.me/project/personalized-group-mail/</guid><description/></item><item><title>Making a simple web app blindfolded, and with both arms tied…</title><link>https://iahmed.me/post/2015-09-20-a-simple-webapp/</link><pubDate>Mon, 21 Sep 2015 04:32:06 +0000</pubDate><guid>https://iahmed.me/post/2015-09-20-a-simple-webapp/</guid><description>&lt;p&gt;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).&lt;/p&gt;
&lt;p&gt;Objective: Display tips, event news, free food notifications provided regularly by RAs and faculty to residents on a website.&lt;/p&gt;</description></item><item><title>Parsing websites on a budget</title><link>https://iahmed.me/post/2015-07-22-parsing-websites-on-a-budget/</link><pubDate>Thu, 23 Jul 2015 01:32:40 +0000</pubDate><guid>https://iahmed.me/post/2015-07-22-parsing-websites-on-a-budget/</guid><description>&lt;p&gt;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:&lt;/p&gt;</description></item><item><title>UNIVERSE</title><link>https://iahmed.me/project/universe/</link><pubDate>Fri, 01 May 2015 21:24:37 -0600</pubDate><guid>https://iahmed.me/project/universe/</guid><description>&lt;p&gt;&lt;em&gt;UNIVERSE&lt;/em&gt; is an Agent Based Model of population dynamics of alien space-faring
civilizations in the galaxy. It simulates how civilizations may interact with
each other given limited resources. I developed this for my Modeling and
Simulation course with my partner Michael Schoenfield. The model considers
resources, technology, trade, and war when deciding on behavior of each
civilization.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/lx2XMPPomMI?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;p&gt;A presentation explaining the project can be found
&lt;a href="https://drive.google.com/file/d/0B_Qh0MNg09l0R1ZIaUFxRk13eE0/view?usp=sharing"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>