<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://agnishom.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://agnishom.github.io/" rel="alternate" type="text/html" hreflang="en" /><updated>2026-04-22T11:59:20+00:00</updated><id>https://agnishom.github.io/feed.xml</id><title type="html">blank</title><subtitle>A simple, whitespace theme for academics. Based on [*folio](https://github.com/bogoli/-folio) design.
</subtitle><entry><title type="html">an opinionated critique of duolingo</title><link href="https://agnishom.github.io/blog/2025/duolingo/" rel="alternate" type="text/html" title="an opinionated critique of duolingo" /><published>2025-09-30T00:00:00+00:00</published><updated>2025-09-30T00:00:00+00:00</updated><id>https://agnishom.github.io/blog/2025/duolingo</id><content type="html" xml:base="https://agnishom.github.io/blog/2025/duolingo/"><![CDATA[<p>During the stay-at-home grim days of 2020, I started learning Spanish on Duolingo. Having a working understanding of Spanish seemed like a sensible first step towards opening a taco truck in Mexico, in case I had to run away from my doctoral studies. This July, after about 5 years I decided to end the 1800 day streak that I managed to drag on with numerous streak freezes and minimal effort lessons. While Spanish words look less foreign, and with some focus, I am able to decipher small paragraphs of grammatically simple sentences; the effort was less than a smashing success – I certainly could not be writing this essay in Spanish.</p>

<p>If Duolingo is known for anything, it has to be <strong>their gamification approach</strong>. There is no shortage of gamification mechanics on the platform: XP; potions to double your XP; leagues of gold, silver, and all sorts of other metals and minerals; treasure chests; quests; monthly quests; and so on. I have only ever paid little attention to these mechanics. While I still haven’t entirely rejected the idea that a good RPG could be a good scaffolding to teach a language, I do not think Duolingo is one.</p>

<p>Games worth their salt are not created by bolting together a collection of numerical statistics. That is how you get <a href="https://en.wikipedia.org/wiki/Cookie_Clicker">cookie clicker</a>. I did not have a good understanding of how the mechanics work: if I learn 10 words, how many XP do I get for my hard work? Is the Diamond League higher or lower than the Obsidian League? I could have viewed their documentation to figure it out, but there was nothing motivating me to do so. If I collect 100 XP, what does it mean for my language skills? For that matter, why do I collect extra XP when I receive a potion? Can the XP I collect be used in a way to carefully guide me towards the specific language skills I would explore next? Navigating the mechanical <em>gameplay</em> of Duolingo is neither rewarding for its own sake, nor is it helpful towards actually learning a language.</p>

<p>Duolingo is not just a poor simulacrum of the mechanical aspects of a game, but also of <strong>the social aspects</strong> of one. Who are all these people I am on the Silver league with? Having a comparable amount of XP does not give me a sense of social connection with them. When I click a button to congratulate a friend on Duolingo, I do not truly engage with their learning journey. Indeed, it is worse than hearting an instagram photo, or upvoting a reddit thread. In those cases, I am reacting to a sliver of expression from my acquaintance. Here, I am presented only with a pre-rendered text with an abstract numerical statistic. Reacting to it is deliberately frictionless: I am presented with a wall of buttons allowing me to click them with ease and without thought. When Duolingo tells me that so and so sent me a message saying “Hey, come back and learn Spanish with me!”, I don’t admire how thoughtful and encouraging my friend is; I just notice that they clicked a button to send me a pre-generated message.</p>

<p>Interactions on Duolingo were not always of the push-button variety. Duolingo <a href="https://duolingo.hobune.stream/">had forums</a> where users would discuss different aspects of their language learning journey. In fact, Duolingo <a href="https://streakchaser.com/language/duolingo-forums-cant-comment/">would link</a> each sentence to its own forum thread for discussion – discussion, which was at the very least, helpful, and at times, eye-opening. At first, these discussion threads were locked, and later removed. My hypothesis is that for the business geniuses running Duolingo, <strong>the forums</strong> were assesed to be a liability, having to moderate which were not worth spending the dollars for. The nature of interacting with people – friends or strangers, in person or online – is that sometimes bad things would happen. Even when there is no abuse or harassment going on, there is always the risk that the other person might greet you with disagreement, or worse, apathy. <a href="https://web.archive.org/web/20250916150051/http://omegle.com/">Many</a> <a href="https://web.archive.org/web/20250803104055/https://www.lfgss.com/conversations/401475/">people</a> tend to think that the risks outweigh the benefits.</p>

<p>The gamification mechanic that I did latch on to was <strong>the Streak</strong>. I generally have been critical of the green owl, but I do think that it did help me form a good habit – a net positive, despite the minuscule magnitude. Regular Duolingo users will know that the streak can be gamed away in more than one ways. <em>Streak Freezes</em> can be bought using gems (of which I happen to have 24,053 of, somehow) or be gifted by your friends, and equipped 2 at a time. Streaks wouldn’t have their social effect if there weren’t enough people with a moderate number of people with decent streaks to be sprinkled around. Maintaining the streak, even without freezes, does not have to mean that you are learning – repeating a simple lesson from several units ago would work. My 1800 day streak didn’t mean that I spent 1800 days learning Spanish; it meant that I spent a large number of days <em>engaging with the platform</em>. I later started peeking into the Japanese and Finnish courses, and the 1800 day number includes them. If you loose interest in languages, Duolingo <a href="https://blog.duolingo.com/new-subjects/">tells us</a> that spending time with math or music will count towards your Streak.</p>

<p>The deficiency of Duolingo’s pedagogy was first made obvious to me by the excellent audio lessons produced by <a href="https://www.languagetransfer.org/">Language Transfer</a>. Going through the first few lessons of Language Transfer, I was unfazed, observing that I had already learnt what was being taught. Soon, what shocked me was how quickly Language Transfer caught up to what I had managed to learn in a couple years of time. While Duolingo is great at making sure that the user comes back to the app everyday, <strong>their pedagogy</strong> is subpar. Remaining true to gamification, Duolingo prefers to throw users head-first into translation exercises. If you do not know a word, you hover over it and you arrange a given bag of words into a sentence that is hopefully meaningful. Grammar lessons are extremely minimal. The removal of the forums dedicated to the discussion of specific sentences did not help. Understanding the course outline – knowing what is taught where, or reviewing lessons – is not easy.</p>

<p>Supposedly, <strong>the Duolingo philosophy</strong> is that if you are exposed to enough sentences, you will eventually learn how to use them. I do believe this is true, and I do believe the exercises are indispensable. However, the whole process could be greatly improved by a few more lessons interspersed in the curriculum telling the student what is going on. To see this, I would ask myself, did I always internalize the grammatically correct structures even in my own mother tongue? I think not, and my language skills have improved when my parents or teachers would point out simple grammatical mistakes. <a href="https://en.wikipedia.org/wiki/Eggcorn">Eggcorns</a> are a closely related amusing phenomena.</p>

<p>I cannot tell if Duolingo repeats different concepts in exercises adaptively based on your mastery, or are simply fixed in the course material. Repetition is <a href="https://en.wikipedia.org/wiki/Spaced_repetition">good for learning</a> but Duolingo’s repetition can be frustrating. The platform’s interface is largely built around clicking <strong>a bag of jumbled</strong> words one at a time to input a translation. Once you learn a concept well enough, most of your mental energy is spent on the finding and clicking of the words rather than the translation. Thankfully, this situation can be made better by dictating your answer, as pointed out by the <a href="https://blog.duolingo.com/sneaky-pronunciation-practice/">official blog</a>.</p>

<p>Duolingo does include a few other formats for their lessons. There are some stories, which are interspersed in the course. The stories are short, but silly and enjoyable. There are also audio only lessons, which are also shorter and unfortunately, not as fun. From time to time, the regular lessons also ask you to speak to the microphone but in my experience, the audio recognition seems to accept the answer even if I mumble through the words. Duolingo is also known for its usage of bizarre phrases, whose shock value generates <a href="https://www.reddit.com/r/shitduolingosays/">social media buzz</a> and may or may not have a positive pedagogical effect.</p>

<hr />

<p>Duolingo is a neat case study in Silicon Valley ideology. Big tech embraces <a href="https://hbr.org/2016/04/blitzscaling">blitz-scaling</a>: the primary goal is neither financial sustainability nor the quality of materials but making the number of users grow. The faux gamification and <a href="https://www.ft.com/content/3a9d6a6c-3681-4c93-9b8f-e6e41bea30dc">passive-aggressive messaging</a> may be helpful with little else, but is good for user retention. The expansionism does not stop at growing the number of users; Duolingo has decided that they must loop in <a href="https://blog.duolingo.com/new-subjects/">music and math</a> learners as well. As we have discussed, the maxim of <em>friction reduction</em> has guided them towards optimizing away authenticity in the user interactions on the platform.</p>

<p>In April 2025, Duolingo <a href="https://web.archive.org/web/20250516041748/https://www.linkedin.com/posts/duolingo_below-is-an-all-hands-email-from-our-activity-7322560534824865792-l9vh/?rcm=ACoAAADRbfMBYDgBD6CKFgJZnb27n5NLn5v-LAo">decided</a> to go AI-first. Supposedly, “to teach well, [they] need to create a massive amount of content” – so much so that “doing [it] manually does not scale”. For <a href="https://blog.duolingo.com/2024-duolingo-language-report/">the top ten languages</a>, I cannot imagine any reasonable person saying that the lack of study material is the main obstacle towards learning. This statement spells out what the Duolingo executives value. The Duolingo CEO is not shy to admit it. In an <a href="https://www.npr.org/transcripts/1197997573">interview with NPR</a>, he said the following.</p>

<blockquote>
  <p>[I]f it’s our content, as in, like, our learning content, there’s so much of that - thousands and thousands and thousands of kind of sentences and words and paragraphs. That is mostly done by computers, and we probably spot-check it. But if it’s things like the user interface of Duolingo, where we say - like, you know, the button says quit, and we have to translate, that is all done with humans. And we spend a lot of effort on that, but that’s because each one of those is highly valuable.</p>
</blockquote>

<p>Yes, <em>the button that says ‘quit’</em> is more valuable than the learning material, which is only ‘probably’ spot-checked.</p>

<hr />

<p>After I moved to Japan, I dialed up my efforts to learn Japanese. For a while, I shifted over my Duolingo habits to Japanese. Because Duolingo wasn’t my only learning material for Japanese, it was glaringly obvious very soon that the Duolingo pedagogy is unhelpful and often misleading. While the Spanish learner has to introduce themselves to a few new concepts (e.g, <em>ser vs estar</em>, or reflexive verbs), the Japanese learner faces an explosion of differences. Japanese has a <a href="https://en.wikipedia.org/wiki/Japanese_writing_system">writing system with three components</a>; generally uses a <a href="https://en.wikipedia.org/wiki/Topic_and_comment">topic-comment structure</a> and often omits the topic; has a <a href="https://en.wikipedia.org/wiki/Subject%E2%80%93object%E2%80%93verb_word_order">subject-object-verb order</a>; has <a href="https://en.wikipedia.org/wiki/Japanese_adjectives">adjectives which conjugate</a>; a lot of <a href="https://en.wikipedia.org/wiki/Japanese_counter_word">counting suffixes</a>; <a href="https://en.wikibooks.org/wiki/Japanese/Grammar/Sentence_ending_particles">sentence ending particles</a> and famously, a <a href="https://en.wikipedia.org/wiki/Honorific_speech_in_Japanese">complex honorific system</a>. Duolingo does not break its gamification façade to teach the user some of these concepts head-on. Instead, it pretends that translating between Japanese and English is a matter of substituting phrases and shuffling them around.</p>

<p>Since I gave up on my Duolingo streak, I have started exploring <strong>other avenues</strong> to continue learning Japanese. I participate in group lessons with a tutor once a week for an hour. Believe it or not, the tutor has more charm than <a href="https://duolingo.fandom.com/wiki/Falstaff">Falstaff</a>. I regularly do my flashcard kanji study with <a href="https://www.wanikani.com/">Wanikani</a>. A newer addition to my study routine is <a href="https://bunpro.jp/">Bunpro</a>. My progress has been slow but evident: when I recognize that the names of the metro stations I frequent break down into simple words, they lose a little bit of their mystery but it is a satisfying revelation.</p>

<p>These platforms are a welcome contrast against the techno-accelerationist attitude of Duolingo. Instead of trying to do it all, they are extremely niche: they only teaching one language and Wanikani is focused at teaching a very specific element of it. Wanikani maintains a <a href="https://docs.api.wanikani.com/20170710/">public API</a>, which makes third-party <a href="https://community.wanikani.com/t/the-new-and-improved-list-of-api-and-third-party-apps/7694">apps and scripts</a> possible. I praise them for their welcome attitude towards interoperability instead of trying to build a closed ecosystem. Both <a href="https://community.wanikani.com/">Wanikani</a> and <a href="https://community.bunpro.jp/">Bunpro</a> have vibrant user forums. Bunpro makes actual lessons part of their critical path, instead of hoping that the user will <em>eventually figure it out</em>. When a Bunpro user feels that their lesson was not adequate, they do not have to rely on AI generated slop – Bunpro directs users to carefully-crafted lessons by <em>other people</em> (see the ‘resource’ section at the end of this <a href="https://bunpro.jp/grammar_points/%E3%81%AD">page</a>, for example).</p>]]></content><author><name></name></author><category term="enshittification" /><summary type="html"><![CDATA[beyond the green owl, from streaks and potions to pedagogy and politics]]></summary></entry><entry><title type="html">how indian colleges casually violate human rights</title><link href="https://agnishom.github.io/blog/2025/indian-colleges/" rel="alternate" type="text/html" title="how indian colleges casually violate human rights" /><published>2025-05-05T00:00:00+00:00</published><updated>2025-05-05T00:00:00+00:00</updated><id>https://agnishom.github.io/blog/2025/indian-colleges</id><content type="html" xml:base="https://agnishom.github.io/blog/2025/indian-colleges/"><![CDATA[<p>The freedom of physical movement is the prototypical example of a fundamental human right. To affirm this, you do not have to go as far as <a href="https://www.un.org/en/about-us/universal-declaration-of-human-rights">Article 13</a> of the Universal Declaration of Human Rights. Instead, look at prisons: taking away the physical liberty of people is among the most serious punishments that is exercised only after careful judicial review.</p>

<p>At <a href="https://en.wikipedia.org/wiki/Vellore_Institute_of_Technology">Vellore Institute of Technology</a> (VIT), and presumably many other Indian colleges, students are not free to leave. If a student walks up to the gate, a guard in uniform tells them that they may not leave. If the student tries to leave anyway, we can speculate what happens – the guard presumably would physically stop them, or the students would get into trouble with the college authorities. To exit the campus, the student must obtain permission from their parents, which they must communicate to a faculty member, who would then notify the guards. When the student leaves or re-enters the campus, the parents are notified in real time via text. These students are not in the campus for just a few hours – some of them live in the (in-campus) college hostel, and have to abide by these rules for a semester at a time.</p>

<p>Why might the colleges be interested in tightly regulating the movement of their students? The conventional wisdom among the admirers of these systems seems to be that <em>this keeps the students safe</em>. If the student doesn’t go out, then they aren’t going out drinking. They aren’t going out to do drugs, participate in casual sex or associate with gang members, either. Inside the premises, the campus security can keep students under constant surveillance. The <a href="https://www.youtube.com/watch?v=tGv0plOw2uM"><em>red-tag annas</em></a> call out couples spending quality time. Not only can the rooms of students’ can be searched, but they can be peeked into via miniature windows which are required to be kept uncovered.</p>

<p>These students are adults. They deserve no less dignity than the college authorities, the security personnel, the faculty or their parents do. Colleges can and should work to keep students safe – but when a choice needs to be made between safety and another goal, the student should be empowered with the agency to make that choice.</p>

<p>Children are human and therefore have human rights. When a child, there is an inherent tension between their autonomy and the safeguards that must be put around them to keep them from harming themselves or others. In modern society, the way we resolve this dilemma is by declaring humans to be <em>adults</em> at a certain age. Regardless of how we feel about the decisions these individuals make or the activities they engage in, we must respect their autonomy. Younger adults, like anybody, have a lot to learn from older adults; but this doesn’t give older adults the license to curtail their autonomy. An argument for violating the autonomy of young adults with the excuse that they are unwise is no better than an argument for discriminating against older people because they are not physically dexterous. Contrast with slavery; all slavery is bad: even if the master is kind and wise and the slave is an imbecile.</p>

<p>If the basic human right of freedom of physical movement is not honored, these colleges are jails, even if they are jails with a reasonable quality of classes.</p>

<p>It is reasonable to suspect that the reason colleges care for the safety of the students is not because of their paternal affection, but their desire to avoid liability. The rhetorical question goes “But who will be responsible if something happens?”. Is the college liable for unsavory off-campus incidents that the students are involved in? It doesn’t matter what the legal answer is. Even if this is so, it doesn’t ethically justify taking away the rights of students as a moral hazard in the way of protecting themselves. The other part of the observation, which is equally morally reprehensible, is that far too many parents would have indeed blamed the college; and the college is simply listening to them since they pay the bills – sacrificing the autonomy of the students, again, as a moral hazard.</p>

<p>Neoliberal ideology reduces citizens to ambulatory wallets who must vote with their wallets or feet, instead of participating in civic dialogue. Certain people are of the opinion that the students should have attended a different college if they do not like these rules. Attending a quality college is often an important step towards a career that one desires. Getting admitted into a decent college require the stars to line up: the student must be able to afford it and they must have cleared the admission exams. Having to choose between reasonable expenses, a desirable career and basic human rights is not a good choice at all.</p>

<p>The colleges happen to have the negotiating leverage to make the student sign away their rights, but that does not make it okay. This is the same argument as “If you don’t like the way they collect data, why don’t you stop using an iPhone/GMail/Social Media”. <a href="https://en.wikipedia.org/wiki/Digital_Markets_Act">Reasonable legislation</a> eventually notice that this extreme form of libertarianism can hurt people, because of the imbalance of the negotiating power. Note that car manufacturers must install seat belts; they don’t get to say “if you think our car is unsafe, just buy another”.</p>

<p>In <a href="https://en.wikipedia.org/wiki/Maslow's_hierarchy_of_needs">Maslow’s Hierarchy of Needs</a>, ‘Esteem’ sits on top of ‘Belonging’, which sits on top of ‘Safety’. The Indian society is still struggling at the <em>safety</em> layer. While many families understand the need to keep their children safe, they do not fully appreciate the aspect of appreciating their freedom. As a part of the broad pattern of a lack of appreciation for individual freedom, we can see the Indian government <a href="https://www.wired.com/story/vpn-firms-flee-india-data-collection-law/">forcing VPN companies to keep logs</a> and Indian courts moving to ban <a href="https://techcrunch.com/2025/04/29/indian-court-orders-blocking-of-proton-mail/">Proton mail</a>. This behavior of these Indian colleges, is unfortunately, very consistent with this ethos.</p>]]></content><author><name></name></author><category term="freedom" /><summary type="html"><![CDATA[some colleges keep students confined, in the name of safety]]></summary></entry><entry><title type="html">living car-free in houston</title><link href="https://agnishom.github.io/blog/2024/car-free-houston/" rel="alternate" type="text/html" title="living car-free in houston" /><published>2024-11-07T00:00:00+00:00</published><updated>2024-11-07T00:00:00+00:00</updated><id>https://agnishom.github.io/blog/2024/car-free-houston</id><content type="html" xml:base="https://agnishom.github.io/blog/2024/car-free-houston/"><![CDATA[<p>On my second day in Houston, I decided to walk to the nearest <a href="https://en.wikipedia.org/wiki/H-E-B">HEB</a> (a supermarket chain in Texas) to get groceries. It was a 1.5 kilometer walk, of about 20 minutes – which was not so bad, although it was slightly inconvenient while carrying things back home. What was somewhat surprising to me was the lack of interesting buildings during my walk: there were no restaurants or shops – just a lot of houses.</p>

<p>Among the first things I noticed in Houston was how far one location is from another. Within a strip mall, the distance I would have to walk from one shop to another struck me as odd. In most parts of the town, I would only see buildings that were one – or at most two – stories tall. I had the expectation that cities constitute high-rise buildings, and that Houston was a city. All the roads in Houston were rather wide (which I thought was a sign of having “good roads”).</p>

<p>I did find the neighborhoods with the interesting buildings in Houston eventually. I also did find the neighborhoods with the tall buildings. The roads remained wide, however – and as of the time of writing, I can truly think of one passage which would count as an “alleyway”. The unusually large interstitial distance between the shops of the strip malls also remained. I also started noticing that these spaces around the city were not necessarily characterized by their human-friendliness (such as parks or public squares) but rather by roads (generally well-maintained) and parking lots.</p>

<p>It wasn’t very long after which I realized that many folks in the city perceive their car as an essential part of their urban life: similar to the essentiality of housing and having a cellphone. I soon found that this is not a quirk of Houston, but of North American urban planning in general – so much so that there are entire <a href="https://www.reddit.com/r/fuckcars/">online communities</a> dedicated to <a href="https://www.youtube.com/watch?v=uxykI30fS54">belittling it</a>. While I understand that there is more to a city than its infrastructure for transportation, this is what I will talk about here since this is what has bothered me the most. Many people suggest that the car-first mode of urban design is a matter of cultural choice, and I agree. What I do not agree with, however, is the idea that cultures are beyond criticism.</p>

<p>I was a graduate student at <a href="https://en.wikipedia.org/wiki/Rice_university">Rice University</a>, which is how I came to spend 5 years in Houston. Rice happens to be located very close to the center of the two concentric rings which feature on every map of Houston. It is in the museum district, and close to the medical centre (which has tall buildings!) and is perhaps among the “nicer” and wealthier parts of the town. The university and the medical center are to the west of the <a href="https://en.wikipedia.org/wiki/METRORail_Red_Line">METRORail Red Line</a>. The “nice” neighborhood ends east of the Red Line and the Hermann Park, which is where the “rough” neighborhood begins. Close to the university is a residential area with beautiful houses: if one looks carefully, some restaurants, cafés and an <a href="https://www.murderbooks.com/">indie bookstore</a> can be found within walking distance. No groceries are to be found, however. Also within walking distance is the <a href="https://en.wikipedia.org/wiki/Rice_Village">Rice Village</a>, a collection of bars, restaurants and novelty shops but again, no reasonable place to buy your groceries. If you expand your definition of “walking distance” a little bit, the Freed-Montrose Neighborhood Library also become accessible.</p>

<p>During my first year, I lived in <a href="https://housing.rice.edu/graduate-housing/rice-graduate-apartments">Rice Graduate Apartments</a>, which is very close to the university itself. I had no problem walking to the university, and in particular <a href="https://www.cs.rice.edu/~keith/DuncanHall/">Duncan Hall</a>, which I could do in 5 - 10 minutes. The university also very generously operated shuttles to and from our apartments to the university. The matter of weekly groceries were also resolved by these shuttles. On Saturdays, the university operated shuttles to a <em>Target</em>, and a strip mall containing a <em>Fiesta</em> and a <em>ROSS</em>. There was a fairly frequent <a href="https://www.ridemetro.org/riding-metro/transit-services/local-bus/route-details/65-bissonnet">bus route</a>, connecting you to an HEB about 15 minutes away.</p>

<p>Later, I moved to an apartment which was about 2.5 kilometers from the University. It was also 2.5 kilometers away from <a href="https://en.wikipedia.org/wiki/Montrose,_Houston">Montrose</a> Boulevard, a neighborhood known for its thrift stores and gay bars. Fortunately for me, this is arguably the most walkable area of Houston. Unlike the Rice University area, this area had no shortage of groceries. There was a <em>Trader Joe’s</em> just behind my apartment, a <em>Whole Foods</em> about 10 minutes away, and an HEB about 15 minutes away. (All these distances are walking minutes, as you would have guessed.) There was a <a href="https://www.bollohouston.com/">Pizzeria</a> and a <a href="https://www.duohouston.com/">Café</a> on the same street (and same block) on which my apartment was. (I highly recommend the pizzeria, but disrecommend the café unless you are wealthy.) There was also a Target, a Pet Store, several hair salons, a Children’s Hospital, a branch of Chase Bank, and a GoodWill (a thrift store) within a radius of 5 minutes. And indeed, there were many bars and restaurants scattered throughout the neighborhood. These included chains like Torchy’s, a taco truck and upscale restaurants like <a href="https://dorismetropolitan.com/houston">Doris Metropolitan Steakhouse</a>.</p>

<p>During the pandemic, I started developing a habit of going out on long walks in my neighborhood. Most often, they would be a 30 - 40 minute walk around the residential area to the north of my apartment. Doing so, I have found many <a href="https://littlefreelibrary.org/">Little Free Libraries</a> around the neighborhood. (These are little boxes where neighbors are encouraged to leave a book for other neighbors to take, for free, at a later time.) I was quite fond of these since they were testimony that Americans haven’t lost <em>all</em> their compassion towards neighbors or books. On occasion, I have walked to <a href="https://en.wikipedia.org/wiki/The_Galleria">The Galleria</a> or <a href="https://en.wikipedia.org/wiki/Buffalo_Bayou">The Buffallo Bayou</a>, which would take me on a walk more than an hour long.</p>

<p>While walking around Houston, I could not help but notice that the city feels dead – especially for the <a href="https://en.wikipedia.org/wiki/List_of_United_States_cities_by_population">fourth largest city</a> of the United States. There aren’t really people on the streets. When I did come across people on the streets, there was a good chance that they’d either be homeless or appear less fortunate in some way. Despite my neighborhood being rather walkable, the streets did not seem livelier. My suspicion is that this is because a majority of Houstonians use their cars to travel around, even for short distances. I suspect that this phenomena is so extreme that the infrastructure they build aims to minimize the time not spent indoors or inside a car. This is what has led to the development of drive-throughs. Instead of parking your car, walking to the ATM, and walking back to the car, a drive-through ATM lets you get the job done without leaving your car. During the COVID pandemic, I had a COVID test-center at a <em>walkable</em> distance from my apartment. Unfortunately, it was of no help to me, since it was a drive-through only service!</p>

<p>Not only does Houston seek to improve the quality-of-life for drivers, but it also does indeed neglect matters of infrastructure for their pedestrians. Unlike what <a href="https://www.youtube.com/watch?v=uxykI30fS54">Not Just Bikes</a> mentions, most parts of Houston do have sidewalks. However, they indeed do sometimes vanish, and often pedestrians are left with no choice but to walk in a rather dangerous manner by the edge of a busy road or a bridge. Even when the sidewalks exist, they do not necessarily enjoy great maintenance – very often they comprise a sequence of slabs which are not laid out evenly. Wearing open-toe sandals have been rather risky for me: I managed to hit my toes rather hard several times on the slabs of the sidewalk near my apartment. While the sidewalks are definitely worse off, it is true that Houston roads themselves are not necessarily well-maintained either. Consider what happens when the potholes on the roads of Houston (of which there are many) are filled after a bout of heavy rain: cars spray water on the pedestrians while they drive over these potholes. This is not necessarily out of malice – the idea that there are no pedestrians on the sidewalks is the default assumption of the city. Construction agencies in the city do not mind making this assumption either. When they wanted to carry out some construction work on Westheimer Street, very close to my apartment, they just blocked a non-insignificant part of the sidewalk. They simply instructed pedestrians to use the other side of the street. This was not very easy for two reasons. First, you cannot just cross a busy street anywhere you want. And second, there was a similar construction very close to this place, <em>on the other side of the street as well</em> – which meant that you’d have to cross the road twice in order to be safe. Constructions are an important part of building the urban infrastructure, but this does not have to be this way. On my very short trip to New York City, I noticed a similar situation on the sidewalk, except for the fact that they did curve out a detour for pedestrians so that they still have an way even if the sidewalk was partially blocked.</p>

<p>As I alluded to earlier, Houston does have some <a href="https://www.ridemetro.org/">public transit</a>. The most expansive part of this network is the bus system. I was lucky to have access to two fairly decent bus routes close to my apartment: <a href="https://www.ridemetro.org/riding-metro/transit-services/local-bus/route-details/27-shepherd">27 Shepherd</a> and <a href="https://www.ridemetro.org/riding-metro/transit-services/local-bus/route-details/82-westheimer">82 Westheimer</a>, which ran at a frequency of 8 minutes and 15 minutes, respectively. Route 82 would connect Downtown Houston with Midtown and the Galleria, while Route 27 would go to Rice University towards the south. Both these routes connected to some nightlife strips: Washington Street for Route 27 and Downtown for Route 82. Occasionally, I would take 27 to the University. This would be a 10 minute ride to the Stadium, followed by a 15 minute walk to Duncan Hall. In my experience, commuting within from one point to another within the inner loop of Houston is not very difficult using the bus network. This may require walking 10 - 15 minutes to and from the bus stop, which is reasonable (except for the fact that many neighborhoods in Houston seem sketchy). If your trip does not fit within the inner loop, or if you lived in a neighborhood less blessed with walkability than mine, you may have had to exchange buses. While most of my trips were to the grocery store, or to some establishment downtown, I would occasionally have to go to some administrative office and have to face this situation. Exchanging buses would usually not be very pleasant. This is because the first and the second bus would rarely line up properly in terms of their timing. You may also have some difficulty finding the next bus stop (which may not be very close), or might catch the other bus in the wrong direction: to be fair, this isn’t necessarily the fault of the transit agency. Buses in Houston do have a timetable, and there is a tracking system – available over SMS and several apps – which you can use to track them. However, for some reason unbeknownst to me, the “real-time” arrival information of many buses in many routes are often not available.</p>

<p>Also as mentioned earlier, Houston METRO does have a some light-rail connectivity. The most notable of this is the Red line, which connects Downtown Houston to Rice University and the Texas Medical Center. The light rail is also much more reliable in terms of its frequency. While there is a fairly reliable bus route that connects the downtown to the airport, I would really like to see the Red Line expanded to connect to the airport in the future. There are also the green and the purple lines which are rather short, and which I have not used very much. There is also the <a href="https://en.wikipedia.org/wiki/METRORapid_Silver_Line">Silver Line</a>, a bus line with its dedicated passage, which operates somewhere around Galleria. In my experience, the Silver Line does not seem to have many riders: so I do not know what warranted the construction for this specific route. On the other hand, it would be nice to see a dedicated light rail route replacing Route 82, given the large number of riders on that route (at the expense of shutting down Westheimer to regular cars, if necessary).</p>

<p>The public transit system in Houston is fairly affordable. A ride costs USD 1.50 and is defined to last 3 hours. This means that the rider is free to exchange as many buses or trains as they wish for the next 3 hours, as long as they have paid for the first one. Students get a discount which makes it USD 0.60. My university further subsidized this – they would provide USD 500 METRO cards for USD 50. The payment on the buses had to be done using either prepaid cards, cash to the driver, or using an app. While I obtained my card from the university, it is not clear to me if there are kiosks which can print out these sorts of cards.</p>

<p>While the vast majority of passengers on the buses would be perfect gentlemen (or well-mannered non-men), it was not out of the ordinary to encounter certain unpleasant characters, especially on the popular routes. These individuals would sometimes yell very loudly, or try to bother other fellow passengers, and so on. On occasion, they’d be asked to get down from the bus. From what I have seen, these situations albeit unpleasant, were never physically violent. Sometimes the buses would be smelly – especially when crowded. Other times, the buses wouldn’t be very clean – you’d see pieces of food left here and there on some seats.</p>

<p>On most days, I would go to the university on my bicycle. This would usually be a 20 minute ride. Many students in the university use their bikes. Some students use standing scooters and skateboards inside the campus. The university does have decent bike infrastructure. There are a large number of bike racks throughout the university, and also a <a href="https://www.ricebikes.com/">bike shop</a> run by students. In all fairness, there are bike racks available next to a number of establishments and at numerous strip malls throughout the city. The METRO buses are equipped with racks for carrying bicycles in front of them as well. As a bicyclist, you may choose to either ride your bike on the road itself, or the sidewalk. Unfortunately, on a number of roads, especially the busy ones, the bicyclists do not feel particularly welcome, as the car-driving users of the road treat them as second-class citizens. The city has marked a few streets as part of a <em>Bike Route</em>, although the meaning of this is not entirely clear. On certain roads, however, there are truly dedicated bike-lanes which are clearly separated using obstacles. For my ride to the university, I could find a route through the marked bike routes, with about 30% of my route passing through the non-marked part of the roads. However, I suspect that a lot of Houston Residents will be able to take advantage of the bike routes.</p>

<p>Houston did have a bike share program ran by <a href="https://en.wikipedia.org/wiki/BCycle">BCycle</a>. While this was very affordable, and had student discounts, they didn’t have a bike-station close to my apartment. I was still really sad to see BCycle close their operations in Houston in 2024. I bought my first two bikes second-hand at a price close to around USD 100, and my third bike from Rice Bikes for a price close to USD 250. I bought my third bike because my second bike was not a very good fit for me. I bought my second bike because my first bike was stolen. Indeed, bike-theft is a significant issue in the city. During our orientation, we were told that this is the most common kind of crime on campus. The University Police encourages us to <a href="https://rupdadmin.rice.edu/bikes/register/">register our bikes</a> with them. Me, my roommate and our neighbor – all three of us have had bike stolen from inside our apartment complex.</p>

<p>When one hears about Houston, they might recall that the city is associated with the glory of having one of NASA’s mission control centers. Unfortunately for me, there are no bus rides from the heart of Houston to NASA. The only way to go there was a USD 40 Uber Ride. When one is in Houston, they may feel an urge to be somewhere else. Galveston is a small island beach town, not very far from the city. I would really liked to have made a solo trip to Galveston on a Saturday morning and come back in the evening on the same day. However, based on what Google Maps would tell me, there was only one bus-route to Galveston per day, involving multiple not-very-convenient exchanges. The only way for me to go to Galveston was to hope that someone with a car would take me with them.</p>

<p>Without having to bother my car-owning friends, I have indeed commuted to College Station (a college-town in the vicinity of Houston) a few times. I did so using the ride sharing app <a href="https://www.hitch.com/">Hitch</a>. I was also told that there are Facebook groups where students arrange rides for each other to their way to College Station. On a few occasions, I have travelled by <a href="https://www.greyhound.com/">GrayHound</a> or <a href="https://www.flixbus.com/">Flixbus</a> to Austin, San Antonio and Corpus Christi. (Corpus Christi has <em>far</em> worse public transit compared to Houston.) Unfortunately, I have noticed that the quality of service on these bus services have somewhat detoriated over the years. In Houston, I found that the downtown terminal for GrayHound was closed, and reinstated at a location with much more remote location. The new location also had infrastructure that was poorly maintained, and lesser connectivity to public transit. There is an Amtrak train line from Houston to New Orleans, which takes about 9 hours, but I haven’t been so fortunate to use it.</p>

<hr />

<p>Given my experience, should I have <em>just bought a car</em>? It would have been an option, and I did manage to learn to drive and get myself a driving license. An important aspect would be costs. It is no secret that graduate students do not make a lot of money: but nonetheless, some of them manage to own and drive their own cars. This would require that I bear the cost of buying the vehicle, but also pay for car insurance, fuel, maintenance of the car, and parking fees from time-to-time. But more importantly, buying a car would have meant that I would resolve the class struggle in my favor by simply joining the other class.</p>

<p>The essence of an ideology which enshrines the free market as an instrument of social decision making is that individuals participating freely in activities is the best way for them to show how they want society to be. When you tell people to use the public transit, they tell you that it isn’t convenient enough. When you request the authorities for better public transit, they tell you that it wouldn’t be of help to many people. By buying a car, I would be prioritizing my convenience over my values and feed into this perpetual fly-wheel. My understanding is that when people buy a car, the lack of public transit stops being an important issue for them. Instead of demanding that the city build better public transit, they tell their friends to <em>just get a car</em>. If I bought a car, instead of getting my clothes sprayed on from the water in the potholes, I would probably be the one doing the spraying. Instead of riding my bicycle, I would be the one impatiently honking at the fellow bike-riders. Let us consider another concrete case: there is restaurant A, which is not very accessible by public transport and then there is restaurant B, which is. Restaurant A has good parking, but Restaurant B does not. Based on my principles, I would rather go to Restaurant B, because I want to support businesses which are close to decent public transit. But if I had a car, I would care about my selfish need to park my car, and would probably choose Restaurant A. Anyone in a traffic congestion would know that car-drivers are also a cause of inconvenience for each other. When possible, it would be morally preferable to take public-transit to avoid the clogging of the road so that it can be used by other drivers, perhaps even other car-drivers, who may have a greater need.</p>

<p>When people say that no-one in Houston is using the pubic transit, they are being ignorant. I have taken buses on several routes several times, and I have seen people use it. In fact, during Rush Hours, almost all the seats are often taken on Route 82. My suspicion is that the individuals making these claims just happen to be in a different social class than the daily commuters on the public transit. While using the public transit is an equalizing experience where you share your ride with strangers from other social classes, the experience of driving is quite the opposite. Perhaps wealthy people do not feel the desire to sacrifice the comfort and convenience of their car and endure being in a closed space with numerous smelly strangers. I have seen some people argue that having good public transit connectivity to Sugarland (a suburb of Houston) would be a bad idea, since it might help homeless people get to their neighborhood. Clearly, keeping their neighborhood ‘safe’ was more important. When people are advocating the <em>just get a car</em> strategy over public transit, they are excluding people who can’t afford cars or have some disability preventing them from driving.</p>

<p>The car-centric lifestyle has given rise to the famous American suburban lifestyle. American suburbs are neighborhoods far away from the city center and consist of blocks upon blocks of single-family homes. While it is true that living in the suburbs, one can afford a large house with a lawn and plenty of space to park their car, it is unclear to me if this living situation is ideal. It appears that this would be a good setting for residents to take frequent walks in the neighborhood, or socialize with their neighbors. I am not sure if this is something suburban dwellers enjoy. Living in the suburbs further solidifies their car dependency – they now have no choice but to suffer long commutes to work everyday. While some people seem to think that cars are a symbol of freedom, I fail to see how this wouldn’t be hours of stress and frustration. Because there are no groceries, pubs or restaurants nearby, the practical reasons for the suburban dweller to get out of their house for a quick walking trip are also minimized. Does this make for a good place for the children of the dwellers to grow up? It could, if they had a chance to meet other kids, or go to nearby parks and play. In this setting, they cannot walk to their schools, and have to rely on their parents to drive them around. Adults blame children for being on their phones and consuming toxic content on TikTok, but what else could they do? They have no way of organizing any social gathering with their friends without the help of some adults constantly driving them around.</p>

<p>Living in the suburbs may be cheaper, but the personal expenses paid by motorists (in the form of taxes, parking fees, tolls and so on) <a href="https://www.journaldequebec.com/2021/05/20/le-transport-routier-coute-5-fois-plus-cher-a-la-societe">fail to cover</a> <a href="https://www.sciencedirect.com/science/article/abs/pii/S0921800918308097?via%3Dihub">the cost that it imposes</a> <a href="https://youtu.be/qp75-46PnMY">on society</a>. The society sees this cost in terms of money it has to pay for the upkeep of roads, but also lost revenue from the better utilization of parking lots, loss of productivity from individuals suffering from accidents or other health conditions. Having a sparser living arrangement means that the city has to maintain longer roads and other infrastructure with taxes from fewer people. Walkable neighborhoods are better for small businesses. When people are walking around, they get a chance to discover a new neighborhood cafe, a mom-and-pop pizzeria or an independent bookstore. Indeed, these places could act as <a href="https://en.wikipedia.org/wiki/Third_place">third places</a> where people of different social classes bump into each other, and slowly pave the way towards a more egalitarian society. Businesses are also required to have a minimum amount of parking available – either legally, or because of the simple fact that they are not located in a walkable neighborhood. This is something that rises the cost of operation for these businesses. I suspect that there are poverty-stricken individuals without a car who could find employment only if they could commute to their workplace. Once, I did meet a tea-seller in the Montrose market who lived in the Galleria area: she said that she has to rely on her friend to give her a ride because her car was met with an accident.</p>

<p>Some of the issues with a car-centric lifestyle should be obvious. Driving cars increase the per-capita carbon footprint of the population. When one drives, they are being potentially lethally dangerous to themselves, other drivers and pedestrians. Every-time one drives, they are missing out on an opportunity to walk, or even just stand for a while. Finally, the parking spaces, vast oceans of concrete and asphalt, are an eyesore; we’d be better off with parks and gardens.</p>

<p>I want to end with an anecdotal legal theory (not supposed to be taken seriously). Rice University, a private university, sensibly bans people from bringing in firearms into their property (i.e, the campus). However, in Texas, cars are considered an extension of your home. Thus, while it is not okay to carry a gun walking into the campus, it is fine to have a car which you drive into the campus.</p>]]></content><author><name></name></author><category term="urbanism" /><summary type="html"><![CDATA[my experience of living in Houston without a car, and the North American obsession with them]]></summary></entry><entry><title type="html">the steam deck is not evil and thats why I like it</title><link href="https://agnishom.github.io/blog/2024/steam-deck/" rel="alternate" type="text/html" title="the steam deck is not evil and thats why I like it" /><published>2024-08-03T00:00:00+00:00</published><updated>2024-08-03T00:00:00+00:00</updated><id>https://agnishom.github.io/blog/2024/steam-deck</id><content type="html" xml:base="https://agnishom.github.io/blog/2024/steam-deck/"><![CDATA[<p>The <a href="https://store.steampowered.com/steamdeck">Steam Deck</a> is a great gaming system. This isn’t because of it’s great battery life. A Nintendo Switch would probably have better battery life. It’s not because of its great performance. I don’t usually play AAA games, so I wouldn’t know. The Steam Deck is great because of the philosophy on which it is built.</p>

<p>The popularity of Steam Decks is directly tied to the betterment of support for games on Linux. This is because the Steam Deck really is a linux computer in a handheld form-factor with a gamepad, among other things, attached to it. According to <a href="https://www.protondb.com/">ProtonDB</a>, over 5000 PC games are certified Verified on the Steam Deck, and over 15,000 games are considered playable. This means that there are tens of thousands of games that can be run on Linux in some way.</p>

<p>Thanks to Steam’s efforts, the state of compatibility of games on Linux systems have heavily improved. Not all these thousands of games running on the Deck have binaries that run natively on Linux. Pivotal to the success of the Deck is Proton, a middle-layer compatibility software, that makes this (mostly) seamless emulation possible. Nonetheless, the greater the adoption of Decks, the likelier we are to normalize prioritizing game-builds for Linux.</p>

<p>We run software because it serves us some purpose. In this, running software is no different from utilizing everyday objects, and playing games are no different from running software. Yet, this teleological view of computing would miss a lot of context. When picking an operating system, we may want to make a choice that aligns with the goals of transparency or software freedom. But this would not be realistic if the programs we would like to run on top are not supported in such an ecosystem. Since large parts of Proton is open-source, and are released under permissive licenses, gaming on a Deck takes us closer to using a principled software stack for daily use.</p>

<p>Purchasing everyday objects give us ownership over them. With media, software and computing equipment, this is less so. When you buy a book, you may lend it to others, sell it, earmark the pages and even rip it in two if you like. This is very different from the experience of buying a smartphone. You can’t run arbitrary programs of your choice on an Android phone without rooting, or on an iPad or an iPhone without jailbreaking. In most scenarios, you’d be forced to sign away your legal ability to root or jailbreak before you can engage with the device in any meaningful way.</p>

<p>The Steam Deck does not engage in this practice. It runs a heavily customized version of Arch Linux. This means that you can plug in a keyboard and mouse into it, and pretend that it is your desktop computer. If you like, you can install the LibreOffice suite on it, and prepare presentations.</p>

<p>The matter of using your computers the way you like is more than just a symbolic debate about the nature of ownership. It is a political matter of freedom of expression. When they control the apps that you run on your device, they are in charge of deciding which content is Kosher, and which content is obscene. It is also an economic matter of having efficient markets. The mythological power of the free market works only when the consumers can switch between different producers at will. When the operators of the market themselves try to capitalize on chokepoints and direct the consumers to buy products from their allies, this is no longer the case.</p>

<p>Switch owners buy games from the Switch Store not because that is the best market, but because that is the only marketplace from which they can install games. This is thankfully, less of a case with the Steam Deck. The Steam Deck encourages you to buy and play Steam games, of course. Nonetheless, I had <a href="https://github.com/moraroy/NonSteamLaunchers-On-Steam-Deck">no issues</a> installing <a href="https://store.epicgames.com/en-US/">Epic Games</a>, <a href="https://www.gog.com/en">GoG</a> or even <a href="https://itch.io/">itch.io</a> launchers on my Deck and playing games from them. The Deck also includes a “non-steam game” tab in its UI to let users conveniently access them.</p>

<p>When your shoe tears up, you are welcome to visit the cobbler of your choice. They all understand the internals of a shoe. And when they need to fix them, they all can gather the nails, glue and the pieces of fabric that they might need. This is less so for many computing products. Many manufacturers try to discourage third party vendors from repairing them. Worse, they sometimes purposely use proprietary parts in their products, replacements of which would be hard to find. Thankfully, Valve has been different. Valve has released <a href="https://store.steampowered.com/news/app/1675180/view/3011210954776539264">a video</a> explaining the internal organization of the Steam Deck and how one should approach replacing parts, should they wish to do so.</p>

<p>This post is not really necessarily about the Steam Deck (or Valve Corporation) itself. That said, the Steam Deck is an excellent demonstration that the commercial interest of making profit does not necessarily have to overpower the civic interests of the people.</p>

<hr />

<p>Valve’s libertarian ideology has not always been an unquestionable force for good. <a href="https://www.youtube.com/watch?v=s9aCwCKgkLo">Some</a> <a href="https://www.youtube.com/watch?v=eMmNy11Mn7g">people</a> have criticized that their company culture of libertarianism sometimes takes precedence over other important values including equity and inclusion. During the peak of the ‘Black Lives Matter’ movement, Valve was pressured to make a statement. Valve responded by giving each of their employees an amount of money which they were free to donate to a charity of their choice. This was regarded as a non-statement by many since there may have been employees who have donated their shares to an organizations with interests opposing the cause.</p>

<p>Valve has also generally refused to take a stance against gambling websites which plug into their ecosystem, despite the allegation that this harms many users (including minors). This maybe a consequence of their libertarian philosophy, but the worse possibility is that they are disinterested in tuning down a part of their system that <a href="https://www.youtube.com/watch?v=eMmNy11Mn7g">profits themselves</a>.</p>

<p>A very large share of the PC gaming market is Steam, which is a fact I do not admire. They do take a 30% cut on the sales of Steam games, which can arguably be considered <a href="https://en.wikipedia.org/wiki/Rent-seeking">rent seeking</a>, even if it is the industry standard. I do hope the marketplace of game distribution sees more healthy competition. Nonetheless, I appreciate Valve for not pursuing aggressively anti-competitive tactics.</p>]]></content><author><name></name></author><category term="enshittification" /><summary type="html"><![CDATA[in an era where tech giants increasingly control our digital experiences, the Steam Deck stands as a beacon of user freedom]]></summary></entry><entry><title type="html">on the philosophy of rating systems</title><link href="https://agnishom.github.io/blog/2022/rating-systems/" rel="alternate" type="text/html" title="on the philosophy of rating systems" /><published>2022-02-06T00:00:00+00:00</published><updated>2022-02-06T00:00:00+00:00</updated><id>https://agnishom.github.io/blog/2022/rating-systems</id><content type="html" xml:base="https://agnishom.github.io/blog/2022/rating-systems/"><![CDATA[<p>We encounter rating systems on such a frequent basis that we do not stop to consider their philosophical implications. I do not mean the political questions of how much we should be influenced by them, or the technological question of how to produce reccomendations based on them, but the fundamental questions of what makes an appropriate rating system and how the rational users should rate objects they consume.</p>

<h2 id="what-axioms-should-a-rating-system-satisfy">What axioms should a rating system satisfy?</h2>

<p>Reviews are a manner by which consumers can express their opinions on objects they have consumed. While reviews can be generally informal, in the sense that they do not adhere to a particular form, a rating system is a formal framework for reviews. Popular examples are the N-Star Rating System, the like/dislike system, the out-of-N rating system, multi-scale rating sytem, and the like-button rating system.</p>

<p>A rating system is a formal framework, and therefore is a lossy representation of the users opinion of the object. We are forced to consider how the user’s opinions/feelings on the object and the rating of the object are related. Looking at the most popular rating systems, we notice that all of them are discrete bounded linear orders. In this light, we can consider the following axiom that we may want our rating systems to satisfy:</p>

<blockquote>
  <p>If the user rates object $x$ higher than object $y$, then the user believes that $x$ is superior to $y$.</p>
</blockquote>

<p>(For now, we will consider the ratings of several different objects given by the same user. We will consider the complication of having multiple users in a moment. We will also set aside the question of what it means for the user to believe that an object is superior to another.)</p>

<p>There are several questions this interpretation raises:</p>

<ol>
  <li>If the user has rated two objects equal, what should we infer about the user’s opinion of the objects? One possibility is that the user is indifferent about the objects. The other possibility is that the user things one of the object is superior to another, but her ratings do not reflect that. Our axiom does not really force one way or another. However, our intuition says that we would not like the scenario where the ratings are indifferent between the object, but the user isn’t.</li>
  <li>Most rating systems are bounded. For instance, in the 5-star rating system, the user can give no rating which is higher than 5 and no rating which is lower than 1. Consider what happens when our user gives some object $x$ a rating of 5 stars. This means that the user loses her ability to show that she values some object $y$ higher than $x$.</li>
  <li>The user must, at some point in time, rate her very first object $x$. Let us say that there is a collection of objects $Y$ that she will encounter in the future such that she feels that any $y \in Y$ is superior to $x$. Now, consider the information she can provide about her opinion on elements of $Y$ via the rating system. The possible structures are rather limited. How can the user possibly rate $x$ if she does not know anything about the objects in $Y$?</li>
</ol>

<p>I can think of some alternate axioms that might do a better job.</p>

<p>The first one is a probabilistic version of what we discussed.</p>

<blockquote>
  <p>Suppose user rates objects $x_1, x_2, x_3, \ldots$, at time $t_1 &lt; t_2 &lt; t_3 &lt; \ldots$. For a fixed $i$, consider the proposition $P_i$ that [the user has rated object $x_j$ higher than $x_i$ if and only if he believes that $x_j$ is better than $x_i$]. The higher $i$ is, the higher the probability that the proposition $P_i$ is true.</p>
</blockquote>

<p>Another possibility is that we decide that the user’s opinion of objects and the ratings of the objects are connected in a somewhat weaker sense. In particular, there are certain emotional states that the object can put the user is in and the ratings map to the user’s emotional state. This is easiest to understand with the like/dislike system. By suggesting that the ratings map to emotional states rather than elements of some linear order, the above issues of determining how an user should rate something can be avoided. But this raises the question of how other people can infer information from the ratings of a particular user. Perhaps there is an axiom that relates the emotional states of the user to a more linear order like structure?</p>

<h2 id="alternative-rating-systems">Alternative Rating Systems</h2>

<p>As we observed in the previous section, in one way or another, all widely used rating systems are bounded discrete linear orders. Most of the objections we raised in the previous section are related to this fact. In this section, we consider some alternative possibilities for rating systems. Most of these are not commonly used. Perhaps, this is for good reasons of practicality and because we are not capable of mapping our mental states accurately into mathematical objects. Nonetheless, they make for an interesting philosophical discussion.</p>

<ol>
  <li>Unbounded Discrete Linear Orders: This will be very likely represented using integers. The user gets to assign an integer to each object they want to rate.</li>
  <li>Dense Linear Orders: In this system, the user would instead represent their ratings using rational numbers. This way, she always has a chance of expressing the sentiment that she likes object $x$ better than object $y$ but worse than $z$.</li>
  <li>Permutations/Ranking: In this rating system, the user maintains a ranking of the objects she has rated. When she wants to rate a new object, she does a kind of sorted insert into the ranking. The difference between using a rational number to represent ratings and the permutation system is that the former allows for a kind of quantification.</li>
  <li>Partial Orders: So far, all the rating systems we have considered force the user to arrange their rated objects in some linear order. But perhaps, we can think of a rating system that allows for partial orders. This will allow us to express the user’s opinion of objects in a way that is more general than a linear order, in that she could say she is indifferent about the comparison between some objects. For instance, the user might be able to express a sentiment such as $x_1 \prec x_2 \prec x_3$ and $x_1 \prec y \prec x_3$ without having to say how she compares $x_2$ and $y$. A three star rating system would allow for three tiers, but one would be forced to put $y$ in a position that would determine its comparison with respect to $x_2$.</li>
  <li>Multiscale Rating: This is a specific instance of the partial order rating system. For example, a book reviewer might consider scales such as <em>Plot</em>, <em>Characters</em>, <em>Writing</em> and assign a rating to each of these scales, without having to say how she compares the scales.</li>
  <li>Scaled Like/Dislike: This is essentially a bounded dense linear order. Here, the user would assign a rating by picking a real number between -1 and 1. A version of this is actually already seen on instagram stories. People express their opinion by dragging the slider on an emoji.</li>
</ol>

<p>Are there any interesting rating systems which are not related to some order theoretic structure? Consider Facebook’s reaction system for example: an user rates an object by choosing one of <em>Like</em>, <em>Laugh</em>, <em>Angry</em>, <em>Sad</em>, <em>Wow</em>. It is not clear how such a rating system can be considered a partial order at all. Perhaps, this system is more closely connected to the emotional axiomatization that we considered in the previous section.</p>

<h2 id="aggregating-ratings">Aggregating Ratings</h2>

<p>So far, we have considered the role of rating system as a formal framework for expressing opinions. However, the most important component of a rating system is a mechanism that summarizes how objects have been rated by <em>multiple</em> users. For instance, in the like/dislike system, we see the ratings summarized by the number of likes and the number of dislikes. It is also common to summarize the star ratings by the number of average stars together with a histogram of the number of stars given.</p>

<p>In each of this scenarios, the aggregation mechanism always summarizes the data in a lossy manner. For example, in the case of the like/dislike system, one could potentially learn more information by knowing answer to this question: [If this object was liked by a person $x$, then what else did $x$ like?]. When we choose to summarize data, we have to understand the lossy nature of the aggregation and prioritize the information we want to our aggregation mechanism to present in the foreground.</p>

<p>Suppose a book reviewer has ratings for a book along the scales of <em>Plot</em>, <em>Characters</em> and <em>Writing</em> seperately. Should she consider an average of these scores? But what if she values one of these characteristics more than another? Is a weighted average of the scores more appropriate?</p>

<p>XKCD has several interesting comics critiquing rating systems. Here is one.</p>

<p><img src="https://imgs.xkcd.com/comics/tornadoguard.png" alt="XKCD 937" /></p>

<p>Some more can be seen in <a href="https://xkcd.com/1098/">XKCD 1098</a> and <a href="https://xkcd.com/2329/">XKCD 2329</a>.</p>

<p>For the novel rating systems I discussed in the previous section, there are multiple issues with choosing an appropriate aggregation mechanism.</p>

<ol>
  <li>Unbounded Discrete Linear Orders: If the users are attaching integers to the objects by themselves, how can we combine them? For example, suppose the ratings of one user is in the interval $[0, 100]$ and the other is in the interval $[-7, -1]$, is it fair to compare them? Should we normalize them before comparing them? What if the users <em>are</em> aware of one anothers ratings?</li>
  <li>Permutations: In the case of the ranking rating system that we proposed in the last section, we already know that it is impossible to device an aggregation mechanism that compiles the ranking of several users into a single ranking without creating problematic policies. This is the <a href="https://en.wikipedia.org/wiki/Arrow's_impossibility_theorem">Arrow’s Impossibility Theorem</a>.</li>
  <li>Partial Orders: One could combine partial orders by considering a lexicographic order. However, it is questionable whether this summary will be very useful.</li>
</ol>

<h2 id="final-thoughts">Final Thoughts</h2>

<p>This article can be summarized in two main points.</p>

<ol>
  <li>A rating system is a formal framework that maps mental states about feelings for objects into ratings. Since mental states are complex, our formal framework should encompass a rich space of mathematical structures.</li>
  <li>Aggregating information from rich mathematical structures can be difficult.</li>
</ol>

<p>However, in many cases, the existing rating systems are doing a great job of helping us understand which objects we desire. Perhaps, mental states are not as complex as we might think.</p>]]></content><author><name></name></author><category term="rating-systems" /><category term="philosophy" /><summary type="html"><![CDATA[what makes an appropriate rating system and how to rate]]></summary></entry><entry><title type="html">a post with diagrams</title><link href="https://agnishom.github.io/blog/2021/diagrams/" rel="alternate" type="text/html" title="a post with diagrams" /><published>2021-07-04T17:39:00+00:00</published><updated>2021-07-04T17:39:00+00:00</updated><id>https://agnishom.github.io/blog/2021/diagrams</id><content type="html" xml:base="https://agnishom.github.io/blog/2021/diagrams/"><![CDATA[<p>This theme supports generating various diagrams from a text description using <a href="https://github.com/zhustec/jekyll-diagrams" target="\_blank">jekyll-diagrams</a> plugin.
Below, we generate a few examples of such diagrams using languages such as <a href="https://mermaid-js.github.io/mermaid/" target="\_blank">mermaid</a>, <a href="https://plantuml.com/" target="\_blank">plantuml</a>, <a href="https://vega.github.io/vega-lite/" target="\_blank">vega-lite</a>, etc.</p>

<p><strong>Note:</strong> different diagram-generation packages require external dependencies to be installed on your machine.
Also, be mindful of that because of diagram generation the fist time you build your Jekyll website after adding new diagrams will be SLOW.
For any other details, please refer to <a href="https://github.com/zhustec/jekyll-diagrams" target="\_blank">jekyll-diagrams</a> README.</p>

<h2 id="mermaid">Mermaid</h2>

<p>Install mermaid using <code class="language-plaintext highlighter-rouge">node.js</code> package manager <code class="language-plaintext highlighter-rouge">npm</code> by running the following command:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>npm <span class="nb">install</span> <span class="nt">-g</span> mermaid.cli
</code></pre></div></div>

<p>The diagram below was generated by the following code:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>{% mermaid %}
sequenceDiagram
    participant John
    participant Alice
    Alice-&gt;&gt;John: Hello John, how are you?
    John--&gt;&gt;Alice: Great!
{% endmermaid %}
</code></pre></div></div>

<div class="jekyll-diagrams diagrams mermaid">
  <svg id="mermaid-1776859173987" width="100%" xmlns="http://www.w3.org/2000/svg" height="100%" style="max-width:450px;" viewBox="-50 -10 450 231"><style>#mermaid-1776859173987 .label{font-family:trebuchet ms,verdana,arial;color:#333}#mermaid-1776859173987 .node circle,#mermaid-1776859173987 .node ellipse,#mermaid-1776859173987 .node polygon,#mermaid-1776859173987 .node rect{fill:#ececff;stroke:#9370db;stroke-width:1px}#mermaid-1776859173987 .node.clickable{cursor:pointer}#mermaid-1776859173987 .arrowheadPath{fill:#333}#mermaid-1776859173987 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-1776859173987 .edgeLabel{background-color:#e8e8e8}#mermaid-1776859173987 .cluster rect{fill:#ffffde!important;stroke:#aa3!important;stroke-width:1px!important}#mermaid-1776859173987 .cluster text{fill:#333}#mermaid-1776859173987 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-1776859173987 .actor{stroke:#ccf;fill:#ececff}#mermaid-1776859173987 text.actor{fill:#000;stroke:none}#mermaid-1776859173987 .actor-line{stroke:grey}#mermaid-1776859173987 .messageLine0{marker-end:"url(#arrowhead)"}#mermaid-1776859173987 .messageLine0,#mermaid-1776859173987 .messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}#mermaid-1776859173987 #arrowhead{fill:#333}#mermaid-1776859173987 #crosshead path{fill:#333!important;stroke:#333!important}#mermaid-1776859173987 .messageText{fill:#333;stroke:none}#mermaid-1776859173987 .labelBox{stroke:#ccf;fill:#ececff}#mermaid-1776859173987 .labelText,#mermaid-1776859173987 .loopText{fill:#000;stroke:none}#mermaid-1776859173987 .loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#ccf}#mermaid-1776859173987 .note{stroke:#aa3;fill:#fff5ad}#mermaid-1776859173987 .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}#mermaid-1776859173987 .section{stroke:none;opacity:.2}#mermaid-1776859173987 .section0{fill:rgba(102,102,255,.49)}#mermaid-1776859173987 .section2{fill:#fff400}#mermaid-1776859173987 .section1,#mermaid-1776859173987 .section3{fill:#fff;opacity:.2}#mermaid-1776859173987 .sectionTitle0,#mermaid-1776859173987 .sectionTitle1,#mermaid-1776859173987 .sectionTitle2,#mermaid-1776859173987 .sectionTitle3{fill:#333}#mermaid-1776859173987 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px}#mermaid-1776859173987 .grid .tick{stroke:#d3d3d3;opacity:.3;shape-rendering:crispEdges}#mermaid-1776859173987 .grid path{stroke-width:0}#mermaid-1776859173987 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-1776859173987 .task{stroke-width:2}#mermaid-1776859173987 .taskText{text-anchor:middle;font-size:11px}#mermaid-1776859173987 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px}#mermaid-1776859173987 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-1776859173987 .taskText0,#mermaid-1776859173987 .taskText1,#mermaid-1776859173987 .taskText2,#mermaid-1776859173987 .taskText3{fill:#fff}#mermaid-1776859173987 .task0,#mermaid-1776859173987 .task1,#mermaid-1776859173987 .task2,#mermaid-1776859173987 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-1776859173987 .taskTextOutside0,#mermaid-1776859173987 .taskTextOutside1,#mermaid-1776859173987 .taskTextOutside2,#mermaid-1776859173987 .taskTextOutside3{fill:#000}#mermaid-1776859173987 .active0,#mermaid-1776859173987 .active1,#mermaid-1776859173987 .active2,#mermaid-1776859173987 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-1776859173987 .activeText0,#mermaid-1776859173987 .activeText1,#mermaid-1776859173987 .activeText2,#mermaid-1776859173987 .activeText3{fill:#000!important}#mermaid-1776859173987 .done0,#mermaid-1776859173987 .done1,#mermaid-1776859173987 .done2,#mermaid-1776859173987 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-1776859173987 .doneText0,#mermaid-1776859173987 .doneText1,#mermaid-1776859173987 .doneText2,#mermaid-1776859173987 .doneText3{fill:#000!important}#mermaid-1776859173987 .crit0,#mermaid-1776859173987 .crit1,#mermaid-1776859173987 .crit2,#mermaid-1776859173987 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-1776859173987 .activeCrit0,#mermaid-1776859173987 .activeCrit1,#mermaid-1776859173987 .activeCrit2,#mermaid-1776859173987 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-1776859173987 .doneCrit0,#mermaid-1776859173987 .doneCrit1,#mermaid-1776859173987 .doneCrit2,#mermaid-1776859173987 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-1776859173987 .activeCritText0,#mermaid-1776859173987 .activeCritText1,#mermaid-1776859173987 .activeCritText2,#mermaid-1776859173987 .activeCritText3,#mermaid-1776859173987 .doneCritText0,#mermaid-1776859173987 .doneCritText1,#mermaid-1776859173987 .doneCritText2,#mermaid-1776859173987 .doneCritText3{fill:#000!important}#mermaid-1776859173987 .titleText{text-anchor:middle;font-size:18px;fill:#000}#mermaid-1776859173987 g.classGroup text{fill:#9370db;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:10px}#mermaid-1776859173987 g.classGroup rect{fill:#ececff;stroke:#9370db}#mermaid-1776859173987 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-1776859173987 .classLabel .box{stroke:none;stroke-width:0;fill:#ececff;opacity:.5}#mermaid-1776859173987 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-1776859173987 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-1776859173987 #compositionEnd,#mermaid-1776859173987 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1776859173987 #aggregationEnd,#mermaid-1776859173987 #aggregationStart{fill:#ececff;stroke:#9370db;stroke-width:1}#mermaid-1776859173987 #dependencyEnd,#mermaid-1776859173987 #dependencyStart,#mermaid-1776859173987 #extensionEnd,#mermaid-1776859173987 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-1776859173987 .branch-label,#mermaid-1776859173987 .commit-id,#mermaid-1776859173987 .commit-msg{fill:#d3d3d3;color:#d3d3d3}</style><style>#mermaid-1776859173987 {
    color: rgb(0, 0, 0);
    font: normal normal 400 normal 16px / normal "Times New Roman";
  }</style><g></g><g><line id="actor0" x1="75" y1="5" x2="75" y2="220" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="75" dy="0">John</tspan></text></g><g><line id="actor1" x1="275" y1="5" x2="275" y2="220" class="actor-line" stroke-width="0.5px" stroke="#999"></line><rect x="200" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="275" dy="0">Alice</tspan></text></g><defs><marker id="arrowhead" refX="5" refY="2" markerWidth="6" markerHeight="4" orient="auto"><path d="M 0,0 V 4 L6,2 Z"></path></marker></defs><defs><marker id="crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="16" refY="4"><path fill="black" stroke="#000000" stroke-width="1px" d="M 9,2 V 6 L16,4 Z" style="stroke-dasharray: 0, 0;"></path><path fill="none" stroke="#000000" stroke-width="1px" d="M 0,1 L 6,7 M 6,1 L 0,7" style="stroke-dasharray: 0, 0;"></path></marker></defs><g><text x="175" y="93" class="messageText" style="text-anchor: middle;">Hello John, how are you?</text><line x1="275" y1="100" x2="75" y2="100" class="messageLine0" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="fill: none;"></line></g><g><text x="175" y="128" class="messageText" style="text-anchor: middle;">Great!</text><line x1="75" y1="135" x2="275" y2="135" class="messageLine1" stroke-width="2" stroke="black" marker-end="url(#arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"></line></g><g><rect x="0" y="155" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="75" y="187.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="75" dy="0">John</tspan></text></g><g><rect x="200" y="155" fill="#eaeaea" stroke="#666" width="150" height="65" rx="3" ry="3" class="actor"></rect><text x="275" y="187.5" dominant-baseline="central" alignment-baseline="central" class="actor" style="text-anchor: middle;"><tspan x="275" dy="0">Alice</tspan></text></g></svg>
</div>]]></content><author><name></name></author><summary type="html"><![CDATA[an example of a blog post with diagrams]]></summary></entry><entry><title type="html">a distill-style blog post</title><link href="https://agnishom.github.io/blog/2021/distill/" rel="alternate" type="text/html" title="a distill-style blog post" /><published>2021-05-22T00:00:00+00:00</published><updated>2021-05-22T00:00:00+00:00</updated><id>https://agnishom.github.io/blog/2021/distill</id><content type="html" xml:base="https://agnishom.github.io/blog/2021/distill/"><![CDATA[<p><strong>NOTE:</strong>
Citations, footnotes, and code blocks do not display correctly in the dark mode since distill does not support the dark mode by default.
If you are interested in correctly adding dark mode support for distill, please open <a href="https://github.com/alshedivat/al-folio/discussions">a discussion</a> and let us know.</p>

<h2 id="equations">Equations</h2>

<p>This theme supports rendering beautiful math in inline and display modes using <a href="https://www.mathjax.org/">MathJax 3</a> engine.
You just need to surround your math expression with <code class="language-plaintext highlighter-rouge">$$</code>, like <code class="language-plaintext highlighter-rouge">$$ E = mc^2 $$</code>.
If you leave it inside a paragraph, it will produce an inline expression, just like \(E = mc^2\).</p>

<p>To use display mode, again surround your expression with <code class="language-plaintext highlighter-rouge">$$</code> and place it as a separate paragraph.
Here is an example:</p>

\[\left( \sum_{k=1}^n a_k b_k \right)^2 \leq \left( \sum_{k=1}^n a_k^2 \right) \left( \sum_{k=1}^n b_k^2 \right)\]

<p>Note that MathJax 3 is <a href="https://docs.mathjax.org/en/latest/upgrading/whats-new-3.0.html">a major re-write of MathJax</a> that brought a significant improvement to the loading and rendering speed, which is now <a href="http://www.intmath.com/cg5/katex-mathjax-comparison.php">on par with KaTeX</a>.</p>

<hr />

<h2 id="citations">Citations</h2>

<p>Citations are then used in the article body with the <code class="language-plaintext highlighter-rouge">&lt;d-cite&gt;</code> tag.
The key attribute is a reference to the id provided in the bibliography.
The key attribute can take multiple ids, separated by commas.</p>

<p>The citation is presented inline like this: <d-cite key="gregor2015draw"></d-cite> (a number that displays more information on hover).
If you have an appendix, a bibliography is automatically created and populated in it.</p>

<p>Distill chose a numerical inline citation style to improve readability of citation dense articles and because many of the benefits of longer citations are obviated by displaying more information on hover.
However, we consider it good style to mention author last names if you discuss something at length and it fits into the flow well — the authors are human and it’s nice for them to have the community associate them with their work.</p>

<hr />

<h2 id="footnotes">Footnotes</h2>

<p>Just wrap the text you would like to show up in a footnote in a <code class="language-plaintext highlighter-rouge">&lt;d-footnote&gt;</code> tag.
The number of the footnote will be automatically generated.<d-footnote>This will become a hoverable footnote.</d-footnote></p>

<hr />

<h2 id="code-blocks">Code Blocks</h2>

<p>Syntax highlighting is provided within <code class="language-plaintext highlighter-rouge">&lt;d-code&gt;</code> tags.
An example of inline code snippets: <code class="language-plaintext highlighter-rouge">&lt;d-code language="html"&gt;let x = 10;&lt;/d-code&gt;</code>.
For larger blocks of code, add a <code class="language-plaintext highlighter-rouge">block</code> attribute:</p>

<d-code block="" language="javascript">
  var x = 25;
  function(x) {
    return x * x;
  }
</d-code>

<p><strong>Note:</strong> <code class="language-plaintext highlighter-rouge">&lt;d-code&gt;</code> blocks do not look well in the dark mode.
You can always use the default code-highlight using the <code class="language-plaintext highlighter-rouge">highlight</code> liquid tag:</p>

<figure class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kd">var</span> <span class="nx">x</span> <span class="o">=</span> <span class="mi">25</span><span class="p">;</span>
<span class="kd">function</span><span class="p">(</span><span class="nx">x</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">return</span> <span class="nx">x</span> <span class="o">*</span> <span class="nx">x</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>

<hr />

<h2 id="layouts">Layouts</h2>

<p>The main text column is referred to as the body.
It is the assumed layout of any direct descendants of the <code class="language-plaintext highlighter-rouge">d-article</code> element.</p>

<div class="fake-img l-body">
  <p>.l-body</p>
</div>

<p>For images you want to display a little larger, try <code class="language-plaintext highlighter-rouge">.l-page</code>:</p>

<div class="fake-img l-page">
  <p>.l-page</p>
</div>

<p>All of these have an outset variant if you want to poke out from the body text a little bit.
For instance:</p>

<div class="fake-img l-body-outset">
  <p>.l-body-outset</p>
</div>

<div class="fake-img l-page-outset">
  <p>.l-page-outset</p>
</div>

<p>Occasionally you’ll want to use the full browser width.
For this, use <code class="language-plaintext highlighter-rouge">.l-screen</code>.
You can also inset the element a little from the edge of the browser by using the inset variant.</p>

<div class="fake-img l-screen">
  <p>.l-screen</p>
</div>
<div class="fake-img l-screen-inset">
  <p>.l-screen-inset</p>
</div>

<p>The final layout is for marginalia, asides, and footnotes.
It does not interrupt the normal flow of <code class="language-plaintext highlighter-rouge">.l-body</code> sized text except on mobile screen sizes.</p>

<div class="fake-img l-gutter">
  <p>.l-gutter</p>
</div>

<hr />

<h2 id="other-typography">Other Typography?</h2>

<p>Emphasis, aka italics, with <em>asterisks</em> (<code class="language-plaintext highlighter-rouge">*asterisks*</code>) or <em>underscores</em> (<code class="language-plaintext highlighter-rouge">_underscores_</code>).</p>

<p>Strong emphasis, aka bold, with <strong>asterisks</strong> or <strong>underscores</strong>.</p>

<p>Combined emphasis with <strong>asterisks and <em>underscores</em></strong>.</p>

<p>Strikethrough uses two tildes. <del>Scratch this.</del></p>

<ol>
  <li>First ordered list item</li>
  <li>Another item
⋅⋅* Unordered sub-list.</li>
  <li>Actual numbers don’t matter, just that it’s a number
⋅⋅1. Ordered sub-list</li>
  <li>And another item.</li>
</ol>

<p>⋅⋅⋅You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces (at least one, but we’ll use three here to also align the raw Markdown).</p>

<p>⋅⋅⋅To have a line break without a paragraph, you will need to use two trailing spaces.⋅⋅
⋅⋅⋅Note that this line is separate, but within the same paragraph.⋅⋅
⋅⋅⋅(This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)</p>

<ul>
  <li>Unordered list can use asterisks</li>
  <li>Or minuses</li>
  <li>Or pluses</li>
</ul>

<p><a href="https://www.google.com">I’m an inline-style link</a></p>

<p><a href="https://www.google.com" title="Google's Homepage">I’m an inline-style link with title</a></p>

<p><a href="https://www.mozilla.org">I’m a reference-style link</a></p>

<p><a href="../blob/master/LICENSE">I’m a relative reference to a repository file</a></p>

<p><a href="http://slashdot.org">You can use numbers for reference-style link definitions</a></p>

<p>Or leave it empty and use the <a href="http://www.reddit.com">link text itself</a>.</p>

<p>URLs and URLs in angle brackets will automatically get turned into links. 
http://www.example.com or <a href="http://www.example.com">http://www.example.com</a> and sometimes 
example.com (but not on Github, for example).</p>

<p>Some text to show that the reference links can follow later.</p>

<p>Here’s our logo (hover to see the title text):</p>

<p>Inline-style: 
<img src="https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png" alt="alt text" title="Logo Title Text 1" /></p>

<p>Reference-style: 
<img src="https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png" alt="alt text" title="Logo Title Text 2" /></p>

<p>Inline <code class="language-plaintext highlighter-rouge">code</code> has <code class="language-plaintext highlighter-rouge">back-ticks around</code> it.</p>

<div class="language-javascript highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">var</span> <span class="nx">s</span> <span class="o">=</span> <span class="dl">"</span><span class="s2">JavaScript syntax highlighting</span><span class="dl">"</span><span class="p">;</span>
<span class="nf">alert</span><span class="p">(</span><span class="nx">s</span><span class="p">);</span>
</code></pre></div></div>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">s</span> <span class="o">=</span> <span class="sh">"</span><span class="s">Python syntax highlighting</span><span class="sh">"</span>
<span class="k">print</span> <span class="n">s</span>
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>No language indicated, so no syntax highlighting. 
But let's throw in a &lt;b&gt;tag&lt;/b&gt;.
</code></pre></div></div>

<p>Colons can be used to align columns.</p>

<table>
  <thead>
    <tr>
      <th>Tables</th>
      <th style="text-align: center">Are</th>
      <th style="text-align: right">Cool</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>col 3 is</td>
      <td style="text-align: center">right-aligned</td>
      <td style="text-align: right">$1600</td>
    </tr>
    <tr>
      <td>col 2 is</td>
      <td style="text-align: center">centered</td>
      <td style="text-align: right">$12</td>
    </tr>
    <tr>
      <td>zebra stripes</td>
      <td style="text-align: center">are neat</td>
      <td style="text-align: right">$1</td>
    </tr>
  </tbody>
</table>

<p>There must be at least 3 dashes separating each header cell.
The outer pipes (|) are optional, and you don’t need to make the 
raw Markdown line up prettily. You can also use inline Markdown.</p>

<table>
  <thead>
    <tr>
      <th>Markdown</th>
      <th>Less</th>
      <th>Pretty</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><em>Still</em></td>
      <td><code class="language-plaintext highlighter-rouge">renders</code></td>
      <td><strong>nicely</strong></td>
    </tr>
    <tr>
      <td>1</td>
      <td>2</td>
      <td>3</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>Blockquotes are very handy in email to emulate reply text.
This line is part of the same quote.</p>
</blockquote>

<p>Quote break.</p>

<blockquote>
  <p>This is a very long line that will still be quoted properly when it wraps. Oh boy let’s keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can <em>put</em> <strong>Markdown</strong> into a blockquote.</p>
</blockquote>

<p>Here’s a line for us to start with.</p>

<p>This line is separated from the one above by two newlines, so it will be a <em>separate paragraph</em>.</p>

<p>This line is also a separate paragraph, but…
This line is only separated by a single newline, so it’s a separate line in the <em>same paragraph</em>.</p>]]></content><author><name>Albert Einstein</name></author><summary type="html"><![CDATA[an example of a distill-style blog post and main elements]]></summary></entry><entry><title type="html">a post with github metadata</title><link href="https://agnishom.github.io/blog/2020/github-metadata/" rel="alternate" type="text/html" title="a post with github metadata" /><published>2020-09-28T21:01:00+00:00</published><updated>2020-09-28T21:01:00+00:00</updated><id>https://agnishom.github.io/blog/2020/github-metadata</id><content type="html" xml:base="https://agnishom.github.io/blog/2020/github-metadata/"><![CDATA[<p>A sample blog page that demonstrates the accessing of github meta data.</p>

<h2 id="what-does-github-metadata-do">What does Github-MetaData do?</h2>
<ul>
  <li>Propagates the site.github namespace with repository metadata</li>
  <li>Setting site variables :
    <ul>
      <li>site.title</li>
      <li>site.description</li>
      <li>site.url</li>
      <li>site.baseurl</li>
    </ul>
  </li>
  <li>Accessing the metadata - duh.</li>
  <li>Generating edittable links.</li>
</ul>

<h2 id="additional-reading">Additional Reading</h2>
<ul>
  <li>If you’re recieving incorrect/missing data, you may need to perform a Github API<a href="https://github.com/jekyll/github-metadata/blob/master/docs/authentication.md"> authentication</a>.</li>
  <li>Go through this <a href="https://jekyll.github.io/github-metadata/">README</a> for more details on the topic.</li>
  <li><a href="https://github.com/jekyll/github-metadata/blob/master/docs/site.github.md">This page</a> highlights all the feilds you can access with github-metadata.
<br /></li>
</ul>

<h2 id="example-metadata">Example MetaData</h2>
<ul>
  <li>Host Name :</li>
  <li>URL :</li>
  <li>BaseURL :</li>
  <li>Archived :</li>
  <li>Contributors :</li>
</ul>]]></content><author><name></name></author><category term="sample-posts" /><category term="external-services" /><summary type="html"><![CDATA[a quick run down on accessing github metadata.]]></summary></entry><entry><title type="html">a post with twitter</title><link href="https://agnishom.github.io/blog/2020/twitter/" rel="alternate" type="text/html" title="a post with twitter" /><published>2020-09-28T15:12:00+00:00</published><updated>2020-09-28T15:12:00+00:00</updated><id>https://agnishom.github.io/blog/2020/twitter</id><content type="html" xml:base="https://agnishom.github.io/blog/2020/twitter/"><![CDATA[<p>A sample blog page that demonstrates the inclusion of Tweets/Timelines/etc.</p>

<h1 id="tweet">Tweet</h1>
<p>An example of displaying a tweet:</p>
<div class="jekyll-twitter-plugin"><blockquote class="twitter-tweet"><p lang="sv" dir="ltr">jekyll-twitter-plugin (1.0.0): A Liquid tag plugin for Jekyll that renders Tweets from Twitter API <a href="http://t.co/m4EIQPM9h4">http://t.co/m4EIQPM9h4</a></p>&mdash; RubyGems (@rubygems) <a href="https://twitter.com/rubygems/status/518821243320287232?ref_src=twsrc%5Etfw">October 5, 2014</a></blockquote>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

</div>

<h1 id="timeline">Timeline</h1>
<p>An example of pulling from a timeline:</p>
<div class="jekyll-twitter-plugin"><a class="twitter-timeline" data-width="500" data-tweet-limit="3" href="https://twitter.com/jekyllrb?ref_src=twsrc%5Etfw">Tweets by jekyllrb</a>
<script async="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>

<h1 id="additional-details">Additional Details</h1>
<p>For more details on using the plugin visit: <a href="https://github.com/rob-murray/jekyll-twitter-plugin">jekyll-twitter-plugin</a></p>]]></content><author><name></name></author><category term="sample-posts" /><category term="external-services" /><category term="formatting" /><summary type="html"><![CDATA[an example of a blog post with twitter]]></summary></entry><entry><title type="html">a post with comments</title><link href="https://agnishom.github.io/blog/2015/comments/" rel="alternate" type="text/html" title="a post with comments" /><published>2015-10-20T15:59:00+00:00</published><updated>2015-10-20T15:59:00+00:00</updated><id>https://agnishom.github.io/blog/2015/comments</id><content type="html" xml:base="https://agnishom.github.io/blog/2015/comments/"><![CDATA[<p>This post shows how to add DISQUS comments.</p>]]></content><author><name></name></author><category term="sample-posts" /><category term="external-services" /><summary type="html"><![CDATA[an example of a blog post with comments]]></summary></entry></feed>