<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Andrew Callahan]]></title><description><![CDATA[Andrew Callahan]]></description><link>http://andrewcallahan.com/</link><generator>Ghost v0.4.2</generator><lastBuildDate>Mon, 06 Apr 2026 19:39:30 GMT</lastBuildDate><atom:link href="http://andrewcallahan.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[My Hopes and Fears for the 2020s]]></title><description><![CDATA[<p><center><iframe width="560" height="315" src='https://www.youtube.com/embed/NDmgsV8aL9s'  frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center></p>

<p>Today is January 1st, 2020 - the start of a new decade! Should we call this the twenty twenties, the two thousand twenties, the twenties, or something else? In a short time, this will be sorted out, so please forgive me for wondering about this minor detail on the first day of this decade. My head is always in the clouds, so I don't need an excuse to reflect on the past and ponder about the future but I'm not going to pass up on this once in a decade opportunity to lay down my thoughts in a formal way. Anyway, I spent a few hours jotting down a few thoughts today (in no particular order), and I'm anticipating thoroughly enjoying reading through this post 10 years from now.</p>

<h2 id="infrastructure">Infrastructure</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/infrastructure.jpg'  alt="" />
If there were ever a no brainer public investment it would have to be infrastructure. It's like a giant Archimedes Lever for the economy and keeps people, goods, and services moving. It's the one thing that makes me jealous of China being run by authoritarian engineers. However, it's something the US does way too little of and at a terribly high cost. I <strong>hope</strong> that in the 2020s the US can figure out <a href='http://nymag.com/intelligencer/2019/07/why-we-cant-figure-out-why-infrastructure-is-so-expensive.html' >how to bring our infrastructure costs in line with the rest of the developed world</a> and make massive public investments in rail, bridges, tunnels, internet connectivity, ports, subways, and beyond. I <strong>fear</strong> that nothing will change and the US will lag further and further behind its peer countries.</p>

<h2 id="immigration">Immigration</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/immigration.jpg'  alt="" />
In the last decade, the global movement of people became a huge flashpoint - from Syrian refugees in the EU to Brexit to the asylum seekers at the US Southern Border. Humans have always migrated, and there is no reason to see that stopping any time soon. However, the current global governance system of nation-states is falling short in providing legal opportunities for people to relocate to seek a better life. Furthermore, for every one person who illegally immigrates across borders, I'd guess there are 10 or 100 times more people who want to but are too risk-averse to do so. It's a shame that most people are trapped in their country of birth, especially because far too many countries are not places of abundance and opportunity like the US is. My <strong>hope</strong> for the 2020s is that we as a global community find new and creative solutions to this pent up demand for immigration, instead of letting it tear us apart over nasty political fights about how to handle people showing up illegally. My <strong>fear</strong> is that immigrants will be further demonized, legal avenues to immigration will be shut down, and everyone will be a loser in a world with less freedom of movement.</p>

<h2 id="healthcarecosts">Health Care Costs</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/health_care_costs.png'  alt="" />
The US has outrageous health care costs - double to the OECD. The past decade was spent engaging in an enormous political fight over expanding health care access and instituting some basic protections. Things are definitely better today than 10 years ago - tens of millions more people have access to health care, and hundreds of millions can breathe a sigh of relief knowing they can't be kicked off their plan if they get cancer. Having said that, the fundamental problem of controlling health care costs remains unresolved and must be dealt with. My <strong>hope</strong> is that we can finally put the fight over the Affordable Care Act to rest and do something to not just "bend the cost curve" but <a href='https://www.youtube.com/watch?v=J-rxmk6zPxA' >break it</a>. My <strong>fear</strong> is that the status quo wins and health care costs will be worse 10 years from now.</p>

<h2 id="health">Health</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/health.jpg'  alt="" />
Separate from the issues surrounding health care costs and how to pay for it, the US population is extraordinarily unhealthy. The US is a leader when it comes to obesity and chronic diseases such as diabetes. People in the US have shorter lives with even shorter healthspans than other OECD countries. This isn't just something that can be waved away with a magic wand - unhealthy diet and exercise habits are deeply embedded into the culture. The portions are outrageous, everything is fried, most of the food consumed is processed, people "cook" via the microwave or delivery on the off chance they don't eat out, and instead of walking and moving and exercising people are sedentary and even fight over parking spaces at the gym (for the few that go)! Other countries are not like this, but the US has unfortunately exported this lifestyle and it's <a href='https://www.cnn.com/2019/03/19/health/china-obesity-kids-intl/index.html' >slowly growing around the world</a>. I <strong>hope</strong> that in the 2020s that more people, myself included, embrace a lifestyle centered around health, wellness, exercise, and self-love. I <strong>fear</strong> that the ubiquity of cheap delicious processed food is going nowhere, obesity and its related diseases will continue to rise, people will care more about fat-shaming than obesity reduction and that the only way to avoid becoming part of the obese majority is to either win the genetic lottery or literally leave the country.</p>

<h2 id="education">Education</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/education.jpg'  alt="" />
I live in a bubble surrounded by well-educated people so I was a bit caught off guard when I learned that only <a href='https://www.washingtonpost.com/blogs/govbeat/wp/2014/09/18/only-36-percent-of-americans-can-name-the-three-branches-of-government/' >36% of Americans can name the three branches of government</a>. At the same time the US population seems alarmingly uneducated, more people than ever are going to college and being crushed in debt by <a href='https://www.higheredjobs.com/Articles/articleDisplay.cfm?ID=1807' >rising tuition</a> (<a href='https://twitter.com/elonmusk/status/1211054942192119808' >even preventing a young Elon Musk from buying a 2nd PC back in the day</a>). My friends in the K-12 education world think dysfunctional school culture is at the heart of poor primary and secondary education performance. I was one of the first people crazy enough to attend a coding boot camp back in 2013, so I'm bullish on the prospects of new forms of education such as <a href='https://www.nytimes.com/2016/09/29/upshot/an-online-education-breakthrough-a-masters-degree-for-a-mere-7000.html' >Georgia Tech's online Masters degree in Computer Science</a>. I <strong>hope</strong> that in the 2020s discussions around education reform center around school culture for primary and secondary schools, and radical cost reduction for higher education and lead to real positive changes in the quality and cost of these two forms of education respectively. I <strong>fear</strong> that the status quo of arguing about testing, teacher's unions, and funding levels will distract from the hard work that needs to be done to change school culture and replace large swaths of overpriced colleges with online or hybrid options.</p>

<h2 id="racerelationsintheus">Race Relations in the US</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/race_relations.jpg'  alt="" />
It's impossible to think about the history of the US without thinking about race - the genocide of the natives, hundreds of years of slavery, the Chinese exclusion act, Jim Crow, the internment of Japanese during WWII, and on and on. We treat each other better today, but the wounds of the past are not healed and may never heal. One of the most shocking and depressing things about the 2010s was the deterioration of race relations. I was elated and extremely proud to be an American when Barack Obama was elected in 2008. But, unbeknownst to me, the resentment that his election triggered is ultimately what propelled Donald Trump - <a href='https://www.theatlantic.com/magazine/archive/2019/06/trump-racism-comments/588067/' >a bona fide racist</a> and <a href='https://www.vox.com/policy-and-politics/2017/11/29/16713664/trump-obama-birth-certificate' >birther</a> - into office. I'd argue that the US's biggest strength is that we are a nation of ideas and ideals, not a single people. This freedom to be yourself, not to conform to rigid cultural practices of the past, and to interact with people very different from you has amazing benefits. I <strong>hope</strong> that in the 2020s people in the US calm down, turn down the anger, listen to each other, try to heal the wounds of the past and address the relevant racial issues of today such as the <a href='https://www.washingtonpost.com/outlook/2019/06/19/why-racial-wealth-gap-persists-more-than-years-after-emancipation/' >wealth gap</a>. Instead I <strong>fear</strong> that tribalism will continue to rule the day, that Americans will turn on each other, that the scourge of White Supremacy will keep rising, and that as bad as things are today - race relations will continue to get worse.</p>

<h2 id="china">China</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/china.jpg'  alt="" />
Probably one of the most important trends of this century is the rise of China. That obviously will continue in the 2020s, but the question is how. Will China rise peacefully, or will there be conflict? Will China prematurely take over Hong Kong or honor the 2047 date? Will China continue to <a href='https://www.washingtonpost.com/opinions/2019/10/07/nba-is-only-latest-chinese-government-hostage/' >export authoritarianism</a> or become a democracy? Will China overtake the US as the global economic and military superpower, or will we revert to a bipolar world like during the Cold War? There are a million more questions along these lines on trade policy, intellectual property, scarce resource usage, carbon emissions, Tibet, Taiwan, North Korea etc - but make no mistake what China does will be central to how the world operates. I <strong>hope</strong> that in the 2020s that China rises peacefully and is gentler to its own citizens. I <strong>fear</strong> that China's treatment of its Uyghur minority population is just the canary in the coal mine and things could get really bad really fast, especially if there is some sort of crisis.</p>

<h2 id="narrowai">Narrow AI</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/ai.jpg'  alt="" />
There's been a ton of hype around narrow artificial intelligence and machine learning, and some small wins in the 2010s, but I suspect that the 2020s will see a lot more useful applications of narrow AI. Self driving cars being the obvious one, and I'm optimistic that we will finally see some long awaited medical breakthroughs using big data. I <strong>hope</strong> that narrow AI starts delivering more substantial innovations in the 2020s and that we have a political system that can constructively incorporate these gifts instead of treating them with hostility. I <strong>fear</strong> that narrow AI will either disappoint and not deliver or we will be too petty and close-minded to make use of the abundance it can unlock.</p>

<h2 id="cryptocurrency">Cryptocurrency</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/cryptocurrency.jpg'  alt="" />
I found an email from 2013 I sent to one of my friends asking to set up a time to talk about bitcoin. I didn't end up having that discussion or buying any bitcoin then - major oops. <a href='https://twitter.com/cdixon' >Some</a> <a href='https://twitter.com/balajis' >people</a> I really respect are extremely bullish on cryptocurrency, especially as a hedge against an increasingly chaotic world. As of now, cryptocurrency remains a speculative investment, not a true currency. I'm extremely ambivalent about its future, which maybe is a signal in and of itself that I just don't know how to interpret. I'm toying with the idea of setting aside a few percent of each paycheck into cryptocurrency but have yet to actually implement that. I <strong>hope</strong> that in the 2020s cryptocurrency will either become a widespread, useful currency or just die out so we can end this endless speculation. I <strong>fear</strong> that cryptocurrency will dramatically increase in value and I didn't buy enough while it was still "cheap in 2020".</p>

<h2 id="arresteddevelopment">Arrested Development</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/arrested_development.jpg'  alt="" />
The last decade was shaped by the aftermath of the Great Recession, which <a href='https://www.npr.org/sections/thetwo-way/2016/05/24/479327382/for-first-time-in-130-years-more-young-adults-live-with-parents-than-partners' >resulted in more young adults living with their parents than their partner</a>. This, in turn, seems to be part of the reason <a href='https://slate.com/human-interest/2017/05/cdc-data-says-women-in-their-thirties-are-having-more-babies-than-women-in-their-twenties.html' >people have kids later</a> - <a href='https://www.npr.org/2019/05/15/723518379/u-s-births-fell-to-a-32-year-low-in-2018-cdc-says-birthrate-is-at-record-level' >if at all</a> and <a href='https://www.pewresearch.org/fact-tank/2019/02/13/8-facts-about-love-and-marriage/' >marrying later than ever</a>. We are well out of the Great Recession, and times are relatively good for young people in terms of economic opportunities, yet these life milestones are still being delayed. Perhaps it's due to the burden of student debt or the high cost of housing that's holding young people back. However, I suspect this is a longer-term trend of extending the period of our lives that we are fully biologically grown but deemed not mature enough by society to be an adult. This can be seen in <a href='https://www.axios.com/fda-raises-tobacco-buying-age-21-smoking-vaping-451a89b9-1130-4eec-b53b-d773f43ef7d6.html' >the recent ban of purchasing tobacco for those under 21</a> as just the latest example of our society deeming young people unable to make decisions for themselves (notice there was not a smoking maximum age, which honestly makes more sense since older people are more fragile and shouldn't inhale toxic fumes). While I'm all for the freedom to have this extended adolescence, I <strong>hope</strong> that in the 2020s at least some of these trends such as living with your parents into your 30s reverse and age-related discriminatory laws get wiped off the books - but I'm not holding my breath. I <strong>fear</strong>, and strongly suspect, that this is just the new normal, and as a result, young people will suffer from what George W. Bush would call the "soft bigotry of low expectations".</p>

<h2 id="innovation">Innovation</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/innovation-1.jpg'  alt="" />
The rise of smartphones over the past 10 years has been exciting to watch and extremely empowering to the billions of us who use them hundreds of times per day. They've changed so much, but thinking about the large picture it doesn't seem that the 2010s, like the past few decades before it, produced many fundamental innovations outside "the world of bits". As Peter Thiel quipped, "We wanted flying cars, instead we got 140 characters". I <strong>hope</strong> that the 2020s produce some breakthrough innovations akin to penicillin, the space race, and the atom bomb. I <strong>fear</strong> that we will continue to hear a lot of hype about biotechnology, nanotechnology, quantum computation, space travel, nuclear fusion, and curing cancer, but that this "great stagnation" will continue and we will once again be let down by the slow pace of innovation.</p>

<h2 id="programminglanguages">Programming Languages</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/programming.png'  alt="" />
It's unfathomable that as of today Java is the most popular backend language and JavaScript practically runs the world. Year after year I keep wondering when the tide will shift in favor of more developer-friendly languages, but year after year I'm continually flabbergasted at the enduring popularity of some truely awful languages. I <strong>hope</strong> emerging languages such as Elixir, Swift, and Rust as well as a much faster Ruby 3 on the backend will gain steam while WebAssembly delivers and JavaScript is finally <em>finally</em> dethroned on the browser. I <strong>fear</strong> that large enterprise companies are too short term oriented and will continue to invest in languages that are "proven" and "hirable" instead of languages that make developers happy to work with.</p>

<h2 id="longevity">Longevity</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/longevity.jpg'  alt="" />
A highly under-discussed topic is longevity. Maybe it's because we are all afraid of death and just avoid talking about it, but I'm convinced that huge incresases in the average lifespan (and healthspan) are <a href='https://www.amazon.com/Lifespan-Why-Age_and-Dont-Have/dp/1501191977' >totally achievable if we have the will to unlock the secrets of our own biology</a>. One of the most alarming trends of the late 2010s, however, was the <a href='https://www.reuters.com/article/us-health-life-expectancy/us-life-expectancy-declining-due-to-more-deaths-in-middle-age-idUSKBN1Y02C7' >3 year in a row decrease in lifespan in the US</a>. Looking at this optimistically, this was due to behavioral factors such as drug overdoes, alcoholism, and obesity. Unfortunately, we don't a great understanding of how to induce changes in these behaviors. Furthermore, many of those self-destructive behaviors point to a larger societal-level pain as the root cause that we don't fully understand let alone know how to ease. I <strong>hope</strong> that the 2020s usher in a new era of longevity focused thinking - getting rid of "easy to avoid" deaths from things like cars, tobacco, and alcohol, while also achieving some breakthrough medical innovations in areas around heart attacks, cancer, and diabetes and somehow helping people avoid self-destruction. I <strong>fear</strong> that we will live in a bifurcated world where the haves continue to live longer and the have nots will continue to suffer from pollution, lack of access to medical care and engage in more and more self-destructive behavior. Life is the most beautiful thing in the universe, and we need to do everything we can to cherish and extend it.</p>

<h2 id="environment">Environment</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/environment.jpg'  alt="" />
I am pleased with the progress that was made on clean energy technology in the past 10 years. Solar power and electric cars are finally here and are superior to their fossil fuel counterparts. There is a lot more to do in other sectors such as agriculture and construction, but I think we will win this fight in the long run. I <strong>hope</strong> that Michael Bloomberg makes good on his <a href='https://www.nytimes.com/2019/06/06/climate/bloomberg-climate-pledge-coal.html' >promise to shut down every single Coal-Fired Powerplant in the US by 2030</a>. That would be a game-changer and is the fastest single way we can decarbonize our economy (with the added benefit of <a href='https://www.scientificamerican.com/article/the-other-reason-to-shift-away-from-coal-air-pollution-that-kills-thousands-every-year/' >literally saving lives</a>). I <strong>fear</strong> activists will press for <a href='https://en.wikipedia.org/wiki/Climate_justice' >climate justice</a> (whatever that means) over decarbonization, <a href='https://www.vice.com/en_us/article/a357wp/isra-hirsi-ilhan-omar-daughter-climate-strike-profile' >inject identity politics</a> into an issue that is fundamentally about technological innovation and international governance, engage in <a href='https://www.vox.com/energy-and-environment/2018/11/14/18094452/alexandria-ocasio-cortez-nancy-pelosi-protest-climate-change-2020' >ridulous counterproductive protests of climate champions</a> instead of lobbying state legislatures, <a href='http://www.startribune.com/what-if-we-tax-plastic-straws-instead-of-ban-them/512858122/' >push for controversial and rigid bans instead of simple and effective taxes</a>, <a href='https://en.wikipedia.org/wiki/Green_New_Deal' >conflate implementing socialism with decarbonizing the economy</a>, <a href='https://www.youtube.com/watch?v=TMrtLsQbaok' >call economic growth a fairy tale instead of harnessing capitalism to solve problems</a> and thus set back progress, alienate would-be-allies, and turn climate change from the crisis that it is into some sort of quasi-religion.</p>

<h2 id="wokeness">Wokeness</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/woke.jpg'  alt="" />
The 2015 Supreme Court decision in <a href='https://www.nytimes.com/2015/06/27/us/supreme-court-same-sex-marriage.html' ><em>United States v Windsor</em></a> was a watershed moment ushering in marriage equality across the entire US, which has been the greatest civil rights achievement in my lifetime. My understanding of how this happened was that activists opened up the hearts and minds of their friends and family to see them as people fully deserving of equality, not just someone exclusively (and usually negatively) defined by who they love. Once a critical mass of people changed their minds, politics followed, and what was once unthinkable became the law of the land. Bizarrely in the late 2010s following this amazing victory, there was a rise of "woke" people who threw away this successful playbook and instead weaponized language and demonized anyone who crossed them. Ostensibly "the woke" are fighting for justice, civil rights, and a better future. In reality, they have abandoned the tried and true tactics of love, compassion, and openness and have instead embraced a form of liberal fascism. They would rather thow a person away than try to change their mind. It's impossible to have productive discussions around topics of identity in public spaces without getting scolded by "the woke". For someone like myself who wants our society to continue to evolve into a more inclusive one, it pains me that "the woke" are so wrapped up in winning arguments on twitter and canceling people that instead of making social progress they are instead creating resentment and hatred and preventing any progress from occuring. Like <a href='https://www.youtube.com/watch?v=qaHLd8de6nM' >Barack Obama, I think that "being woke" is obviously ridiculous</a> and I <strong>hope</strong> that "being woke" is a fad that finally dies out in the 2020s. I <strong>fear</strong> that I'm a dinosaur and that my views of the world are now embarrassingly obsolete and that the best thing I can do is shut up.</p>

<h2 id="antisemitism">Anti-Semitism</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/antisemitism.jpg'  alt="" />
When I was younger I bought into the notion of progress only going in one direction - forward. I was inspired by the Martin Luther King Jr quote that <em>"the arc of the moral universe is long, but it bends toward justice”</em>. That worldview was overly simplistic and wrong, as the last 20 years have proven, with many bad things and setbacks that have occurred in the world at large. One of those things I thought was "only in the history books" was anti-Semitism. That was not only wrong at the time, but should be painfully obvious now that anti-Semitism is unfortunately on the rise. Despite being a tiny minority in the US, <a href='https://www.adl.org/news/press-releases/adl-urges-a' >60% of religious-based hate crimes were directed against Jews</a>. From the right, there was the infamous <a href='https://www.washingtonpost.com/news/acts-of-faith/wp/2017/08/14/jews-will-not-replace-us-why-white-supremacists-go-after-jews/' >"Jews will not replace us"</a> white supremacist rally in Charlottesville, Donald Trump claiming that the <a href='https://www.cnn.com/2017/08/15/politics/trump-charlottesville-delay/index.html' >neo-Nazis and white supremacists at that rally were very fine people</a>, and of course the terrible 2018 incident where <a href='https://en.wikipedia.org/wiki/Pittsburgh_synagogue_shooting' >11 Jews were killed at the Tree of Life Synagogue in Pittsburg</a>. On the left <a href='https://www.washingtonpost.com/dc-md-va/2019/09/16/womens-march-cutting-ties-with-three-original-board-members-accused-anti-semitism/' >3 of the 4 Women's March founders were ousted for being anti-Semitic</a>, a <a href='https://www.wsj.com/articles/can-ilhan-omar-overcome-her-prejudice-11562970265' >democratic member of congress engaged in anti-Semitic behavior</a> and instead of being censured she was rallied behind, in the UK Jeremy Corbyn has turned the Labour Party into <a href='https://www.theatlantic.com/international/archive/2019/12/british-jews-are-worried-jeremy-corbyn-and-labour-party/603259/' >an anti-Semitic organization</a> while in New York City, near daily attacks against Jews have occured, many by <a href='https://www.tabletmag.com/jewish-news-and-politics/287821/orthodox-jews-attacked-brooklyn-hate-crime' >non-white youth</a>. And as Fareed Zakaria has pointed out <a href='https://www.washingtonpost.com/opinions/global-opinions/anti-semitism-has-spread-through-the-muslim-world-like-a-cancer/2019/02/14/1ba5b91a-30aa-11e9-8ad3-9a5b113ecd3c_story.html' >anti-Semitism has spread through the Islamic world like a cancer</a>. Unfortunately the hate is coming from all sides, and it is reaching a fever pitch. I <strong>hope</strong> that the 2020s bring a renewed fight to one of the oldest hatreds around and a better understanding of the importance of <a href='https://en.wikipedia.org/wiki/Zionism' >Zionism</a> and the safe haven Israel provides Jews. I <strong>fear</strong> that this is just the start of a long term trend of increasing hostility towards Jews and that people will dither by pointing to the "other side's anti-Semitism" instead of confronting it within their own communities.</p>

<h2 id="cities">Cities</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/cities.jpg'  alt="" />
San Fransisco should be the greatest city in the world right now. It is the epicenter of major technological innovation, contains highly open-minded and educated people, and is a place where risks are taken and failure is celebrated and learned from. However, due to political dysfunction the housing, transportation, and homelessness situations have made San Fransicso a place to be avoided. I have family living there and went 5 times in 2019, and I love the place, but it is hontesly a mess. New York, the city I love the most and I've called home for a long time now, is another city that should be a candidate for the best in the world. It's walkable, has a lot of energy and opportunity and a million things to do. However, under a <a href='https://nypost.com/2019/05/01/de-blasio-meets-big-bird-at-sesame-street-anniversary-celebration/' >hapless mayor</a> and <a href='http://secondavenuesagas.com/2018/09/11/andrew-cuomo-hates-the-subway-and-isnt-going-to-save-it/' >uninterested suburban overlord</a>, it is dirty, unaffordable, <a href='https://www.nytimes.com/2019/02/14/nyregion/amazon-hq2-queens.html' >hostile to business</a>, and <a href='https://www.newyorker.com/magazine/2017/07/24/public-transits-summer-of-hell' >literally breaking</a>. My pet theory is that these two cities are the poster child for failed liberal governance. I <strong>hope</strong> that in the 2020s something jolts these cities into action - either by electing a <a href='https://en.wikipedia.org/wiki/Corey_Johnson_' (politician)">competent new mayor in NYC</a>, or by a state initiative in CA to force SF into a sort of conservatorship run by a <a href='https://en.wikipedia.org/wiki/Scott_Wiener' >technocratic urbanist</a> until it can self govern again. I <strong>fear</strong> that come 2030 these cities (once the crowning jewels of America) will still be resting on their laurels and stagnant while up and coming cities like Austin will continue to eat their lunch by absorbing all the population growth in the country.</p>

<h2 id="freedomofconsciousness">Freedom of Consciousness</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/freedom_of_consciousness.jpg'  alt="" />
It's political malpractice that a politican or party hasn't run on and enacted nationwide legalization of Marijuana with public support hovering at <a href='https://news.gallup.com/poll/267698/support-legal-marijuana-steady-past-year.aspx' >66% in favor of this</a>. The emerging research for other psychedelics such as MDMA, LSD, and Psilocybin are sure to change a lot of minds to the point where at least decriminalizing and perhaps legalizing them (at a minimum in a clinical setting) will be just as popular soon. I'm not sure the term "freedom of consiousness" will be used at all - but since there has yet to be a "marriage equality" caliber term for this movement that's what I'm calling it for now. I <strong>hope</strong> that in the 2020s all of these conscious altering substances are legalized, regulated, and responsibly used. I <strong>fear</strong> that <a href='https://www.courant.com/politics/capitol-watch/hc-pol-ct-marijuana-legalization-20190904-vp4inhumine4rdb475tc7b5m54-story.html' >fear, uncertainty, and doubt</a> or <a href='https://buffalonews.com/2019/04/08/the-sticking-points-to-legalizing-marijuana-in-new-york-state/' >greed over the bonanza of tax revenue</a> will ruin this and stall progress for part of if not the entire decade.</p>

<h2 id="loomingcatastrophe">Looming Catastrophe</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/9-11.jpg'  alt="" />
The single most earth-shattering event of my life was 9/11. I'll never forget seeing the towers collapse live on national TV, and am still furious at the <a href='http://andrewcallahan.com/we-should-not-have-invaded-iraq/' >unnecessary Invasion of Iraq</a> that followed. Luckily, no single event remotely as bad happened in the 2010s, although many slow-moving crises such as the <a href='https://en.wikipedia.org/wiki/Syrian_Civil_War' >Syrian Civil War</a> were still devasting. Maybe I'm just as shaped by 9/11 and the Great Recession as my grandparent's generation was by the Great Depression and WWII, but I'm still waiting for "the other shoe to drop" and some catastrophe to befall us again. I <strong>hope</strong> that there is no such disaster in the 2020s (caused either by humans or nature). I <strong>fear</strong> that every day there is not such an event, the likelihood it comes tomorrow increases.</p>

<h2 id="trumpism">Trumpism</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/ezgif-2-8cc99ae34692.jpg'  alt="" />
The US must rid itself of Donald Trump immediately. When many <a href='https://www.youtube.com/watch?v=vk_QnKtBH8w' >thought he was a joke</a>, I was <a href='http://andrewcallahan.com/never-play-chaos-roulette/' >terrified of him</a>, and unfortunately I was right. He <a href='https://www.washingtonpost.com/politics/2019/12/16/president-trump-has-made-false-or-misleading-claims-over-days/' >lies at an unprecedented rate</a> and with unnerving ease, is <a href='https://www.usatoday.com/story/opinion/2019/12/30/trump-impeachment-porn-star-hush-money-2019-year-of-scandal-column/2769080001/' >historically corrupt</a>, is unpredictable, <a href='https://www.youtube.com/watch?v=vlxmiFF85yU' >embarrasses the US constantly</a>, <a href='https://www.nytimes.com/2016/07/31/us/politics/donald-trump-khizr-khan-wife-ghazala.html' >degrades himself and others on a daily basis</a>, <a href='https://www.cnn.com/2018/07/11/opinions/trump-treats-putin-like-a-buddy-and-allies-like-enemies-bergen/index.html' >sides with geopolitical enemies over allies</a>, is surrounded by <a href='https://en.wikipedia.org/wiki/Stephen_Miller_' (political_advisor)">sadistic incompetent sycophants</a> (not to mention the hordes of <a href='https://www.cnn.com/2019/11/15/politics/trump-associates-convicted-in-mueller-related-investigations/index.html' >former associates now in jail</a>), is <a href='https://www.politico.com/news/2019/12/22/debbie-dingell-husband-donald-trump-089301' >cruel seemingly for the fun of it</a>, <a href='https://www.youtube.com/watch?v=Hd6eRRjthxY' >intentionally sows the seeds of division between Americans</a>, <a href='https://www.nytimes.com/2019/12/18/us/politics/trump-impeached.html' >abused his power and then tried to cover it up</a>, and most terrifyingly is a charismatic demagogue that a significant minority of Americans support with eyes wide open to all of that. I haven't even mentioned the countless policy disagreements I have with Trump since this is bigger than that. People in the US take its stable political system for granted, but Trump's success has exposed its fragility and should give everyone pause. I <strong>hope</strong> that Donald Trump does not get reelected and that Trumpism dies and never comes back. I <strong>fear</strong> that win or lose, the forces that animated Trump will be harnessed by either an unhinged reelected Trump or by someone much more cunning and knowledgable about wielding power in the future.</p>

<h2 id="minoritarianruleintheus">Minoritarian Rule in the US</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/gerrymandering.jpg'  alt="" />
In the US the 2010s felt like a setback for the ideals of democracy that I still hold onto. The unfair but hard to change rules governing elections (gerrymandering, the electoral college, the existence of the US Senate) in the US has led to an empowered minority (the Republican party) running the government while the frustrated majority have been sidelined. In numerous election cycles Democrats won more votes for house and senate seats but found themselves in the minority. California (with a population of 40 million), a Democratic state, has two senate seats while the former Dakota Territory (with a population of under 2 million), both Republican states, has 4. Two of the last five presidential elections have gone to the loser of the popular vote (both Republicans). It is unsustainable to have this sort of mismatch that continues to give power to a minority political faction and has driven many to lose faith in "the system". I <strong>hope</strong> that by 2030 the US solves a large chunk of this problem through political reforms such as the <a href='https://en.wikipedia.org/wiki/National_Popular_Vote_Interstate_Compact' >National Popular Vote Interstate Compact</a>, adopting state-based nonpartisan redistricting processeses, and even admitting new states such as DC and Puerto Rico. I <strong>fear</strong> that political reform will not be a top priority the status quo will hold for another frustrating decade.</p>

<h2 id="islamvstheworld">Islam vs The World</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/islam_vs_the_world.jpg'  alt="" />
Most discussion around Islam in the US is centered around 9/11 and the subsequent War on Terror. While this focus is unfortunately narrow and the history is indeed complicated, the threat of radical Islamic jihadists is very much real, as the families of the <a href='https://en.wikipedia.org/wiki/Casualties_of_the_September_11_attacks' >3,000 people who died on 9/11 know all too well</a>, and seemingly <a href='https://www.washingtonpost.com/national-security/despite-baghdadi-raid-some-analysts-question-us-ability-to-prevent-isis-resurgence/2019/10/27/6f6eeaf4-f8d6-11e9-8190-6be4deb56e01_story.html' >intractable</a>. However, zooming back and thinking just about the last few years alone there has also been a troubling trend around <a href='https://www.axios.com/muslim-repression-china-india-trump-857889c3-8517-4718-9664-a30cc48f03de.html' >Muslim minorities in countries around the world - being subjected to repression</a>. From the <a href='https://www.npr.org/2019/11/23/782255231/chinas-treatment-of-uighurs' >internment camps for Uyghurs in China</a>, to the <a href='https://www.washingtonpost.com/opinions/the-rohingya-are-victims-of-ethnic-cleansing-the-world-has-failed-them/2018/07/10/08cab8a0-8447-11e8-9e80-403a221946a7_story.html' >ethnic cleansing of the Rohingya in Myanmar</a>, to the emerging situation in India with respect to <a href='https://www.theatlantic.com/international/archive/2019/11/india-diverging-paths-kashmir/600676/' >Kashmir</a> and the <a href='https://www.nytimes.com/2019/12/16/world/asia/india-citizenship-protests.html' >Citizenship bill</a>, not to mention <a href='https://qz.com/1736809/statistics-show-that-trumps-travel-ban-was-always-a-muslim-ban/' >the travel ban in the US</a>. This is all very worrying and headed in a seemingly worse and worse direction every day. I <strong>hope</strong> that in the 2020s the idea of peaceful coexistence reemerges as a potent political force and at least a cold peace is achieved. I <strong>fear</strong> that my hopes are a pipe dream from a <a href='https://en.wikipedia.org/wiki/Bed-Ins_for_Peace' >John Lennon bed-in</a> and that we are in a vicious cycle of radical Islamists engaging in terror against non-Muslim countries, who in turn treat the Muslim minorities within their countries crueler and crueler until something unimaginably terrible happens.</p>

<h2 id="democracyaroundtheglobe">Democracy around the Globe</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/democracy.jpg'  alt="" />
My thinking around democracy has changed a lot. I used to believe in a sort of <a href='https://en.wikipedia.org/wiki/The_End_of_History_and_the_Last_Man' >End of History</a> where all countries would eventually become a democracy and then things would be great. Obviously that is not what happened, and in fact, a third of the world lives in a country with <a href='https://www.washingtonpost.com/news/monkey-cage/wp/2018/07/03/one-third-of-the-worlds-population-lives-in-a-declining-democracy-that-includes-americans/' >democratic backsliding</a>. It used to be easy to identify (and of course mock) dictators claiming to run a democracy yet conveniently would always win <a href='https://en.wikipedia.org/wiki/1995_Iraqi_presidential_referendum' >99% of the vote</a>. But it's not so simple today. For example, Vladimir Putin seems legitimately popular, but his political opponents also seem <a href='https://www.washingtonpost.com/news/worldviews/wp/2017/03/23/here-are-ten-critics-of-vladimir-putin-who-died-violently-or-in-suspicious-ways/' >to die under mysterious circumstances</a>. America believes in "one person, one vote" yet as I wrote above, two of the last five presidential elections went to the loser of the popular vote. Brexit was supported by a majority of British voters (and recently reaffirmed with the election of Boris Johnson), yet there was a <a href='https://www.bbc.com/news/blogs-trending-48356351' >disinformation campaign run in favor of it</a> that perhaps helped put it over the top in the first place. Democracy is a frustrating mess, and these type of murky issues make it that much harder to wade through, but for now, it's the best political system we've got. I <strong>hope</strong> in the 2020s democracy will be restored, expanded, and renewed - most likely by a coalition of idealistic young people, who strive for something better, and older people, who've seen better days and want a restoration. I <strong>fear</strong> that many people will give up on democracy and give their support to radical forms of government such as dictatorship, communism, or nationalism.</p>

<h2 id="globalpoverty">Global Poverty</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/poverty.jpg'  alt="" />
Muhammad Yunus had a goal of eradicating poverty so that by 2030 the world could literally create a <a href='http://content.time.com/time/world/article/0,8599,1546100,00.html' >poverty museum to explain to future generations what poverty was</a>. We have been able to make huge strides in this fight over the last few decades, but there are still major hurdles preventing us from accomplishing this in the next 10 years, especially in some African countries. I <strong>hope</strong> that the world will act constructively and provide the necessary resources and display the political courage to make poverty a thing of the past. I <strong>fear</strong> that too many rich countries will continue to provide aid instead of expand trade and that too many poor countries are simply too dysfunctional or corrupt to make the necessary changes fast enough, leaving hundreds of millions of humans still suffering in poverty at the end of this decade.</p>

<h2 id="seeyouin10years">See you in 10 years!</h2>

<p><img src='http://andrewcallahan.com/content/images/2020/Jan/nasemstudyimagesmaller.jpg'  alt="" />
Anyway, I'll check back on this 10 years from now. I'm curious what I got right, what I got wrong, and what I missed. Hope the next decade is amazing!</p>]]></description><link>http://andrewcallahan.com/my-hopes-and-fears-for-the-2020s/</link><guid isPermaLink="false">52014781-c2fa-4f3a-b981-47a86b17eca2</guid><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Wed, 01 Jan 2020 17:55:00 GMT</pubDate></item><item><title><![CDATA[To Have A Future, Ember Must Kill Its Past]]></title><description><![CDATA[<p>For the second year in a row the Ember core team is <a href='https://blog.emberjs.com/2019/05/20/ember-2019-roadmap-call-for-posts.html' >asking for developers</a> in the Ember community for input into what the future of Ember should look like. I gave my thoughts <a href='http://andrewcallahan.com/a-road-to-ember-4-0/' >last year</a> and am excited to do so again this year. Developing in Ember and being part of the Ember community are both a joy, and the least I can do is contribute a few ideas on where I think the framework should go. But first, I think we need to be honest about where Ember is and why.</p>

<h3 id="emberlost">Ember Lost</h3>

<p>The “Framework Wars” are long over. Angular self imploded with the switch to version 2, Ember hibernated during the (still ongoing) Glimmer transition, and despite the recent rise of Vue, React has become the undisputed King of Javascriptland. When companies and startups are deciding which UI technology to adopt, the question they ask is “<em>I guess we should use React, right?</em>”. There has been a power law distribution of framework adoption with React on top and the rest significantly behind. This has had an enormously positive affect for React’s ecosystem - lots of jobs, a vast array of tutorials and addons, relevant stackoverflow results, numerous meetups and conferences all around the world, being taught in every coding bootcamp, and of course the joyous feeling of <em>momentum</em>.</p>

<h3 id="emberdeservedtolose">Ember Deserved To Lose</h3>

<p>The same can’t be said of Ember, which has not really grown at all and is in danger of shrinking into irrelevance. There are a lot of theories thrown around about why Ember lost. Some point out that React is backed by a giant corporation while Ember is independent. Some say Ember is opinionated which irks developers who love to bikeshed. Others say that Ember isn’t bleeding edge which turns off developers who only want to “sling code using the newest hotness”. I think those are all false, and more importantly miss the point. <strong>React beat Ember because React is simple and intuitive while Ember is complicated and confusing!</strong></p>

<p>The market has spoken, and by a large margin developers prefer React over Ember. This might trigger some people who love Ember and are attached to the notion of Ember being the best. I used to be one of these people. I had convinced myself of Ember’s superiority by saying Ember is a “<em>batteries included framework</em>”, how it’s “<em>the Apple of frameworks</em>”, how it’s “<em>better than React, which after all is just a view layer</em>”. I would look at all the great things about Ember from the RFC process, to the story around testing, to the magic of Ember CLI, to Ember Data working so well with CRUD APIs, to the incredible people in the Ember Community and think “case closed”. But what I was missing, and what I’m realizing now, is that Ember has a fundamental flaw holding it back. To those outside of Ember, it’s obvious, but for those in the Ember Bubble™ it’s invisible.</p>

<p>Ember's biggest problem?</p>

<h1 id="componentsareanafterthought">Components Are An Afterthought</h1>

<p>The biggest breakthrough in conceptualizing how single page apps (SPAs) work has got to be the concept of Components. Using them for the first time back in 2015 when I was on a <a href='https://www.doorsteps.com/' >team</a> transitioning an app from JQuery to React was a moment of mental clarity. Instead of sifting through deeply nested divs and JQuery soup in giant HTML files, I could now just take a wireframe from a designer and effortlessly translate it into React Components. The tagline “React is just JavaScript” is cute, but a more accurate tagline would be “React is just Components”.</p>

<p>React, more than any framework, has embodied the philosophy that SPAs should just be a bunch of Components. This simple yet powerful idea is at the heart of why React spread like wildfire and has yet to be dethroned. <strong>In React <em>everything</em> is a Component and everything <em>happens</em> in Components. It’s a really simple mental model that maps onto reality quite well, and developers <em>love</em> it</strong>. Ember, on the other hand, has had Components for a very long time, but they play a much smaller role than in React.</p>

<h4 id="wanttowriteacomponentinember">Want to write a Component in Ember?</h4>

<p>In Ember there are two different kinds of Components - legacy Components, and Glimmer Components, which have been promised to be the future for years. In fact the past 3 EmberConf keynotes have talked up the new Glimmer format...but nobody really uses it to this day, so you should just stick to writing the old style for now ¯\<em>(ツ)</em>/¯. </p>

<h4 id="wanttorenderacomponentbasedontheurlinember">Want to render a Component based on the URL in Ember?</h4>

<p>No need for Components, Ember uses Templates for that! Templates are kind of like Components, but use this other thing called Controllers for managing its state and defining its actions. If you still insist on using Components, you could just render a single top-level Component <em>in</em> the template, but it’s discouraged. For years, the Ember Community was promised Routable Components, but Yehuda Katz <a href='https://github.com/emberjs/rfcs/pull/38' #issuecomment-355800759">waved the white flag of surrender</a> to that notion in 2018, forever trapping many Ember developers in an unending loop of sadness.</p>

<h4 id="wanttousequeryparamsinember">Want to use Query Params in Ember?</h4>

<p>No need for Components, Ember uses the previously mentioned (and semi-defunct) Controllers for that! They have an awkward interface for Query Params that nobody likes, but it's a low priority so nobody is doing anything about it. Sorry, it’s just an Ember quirk that you need to deal with.</p>

<h4 id="wanttoloaddatainember">Want to load data in Ember?</h4>

<p>No need for Components, Ember uses Routes and Templates for that! If you do nothing, Ember will automatically try and load data for you based on the route (whether you want to or not). Otherwise you’ll need to create a file in the route folder with the exact name as the route you specified in <code>router.js</code>, and define a function called <code>model</code> to load data. The use of the word <code>model</code> assumes you are making a simple CRUD application and loading a single model, not an “<em>Ambitious Web Application</em>” which could load multiple models or something else entirely like a GraphQL query. While you can technically load data from anywhere such as Components, it is discouraged to the point of feeling <em>subversive</em>, since loading data in the <code>model</code> hook is <em>The Ember Way</em>. Oh and also lest I forget, Ember also loads data when you call a model’s relationship from a <code>.hbs</code> file in an <code>n+1</code> fashion which is shockingly appalling and poorly documented.</p>

<h4 id="wanttopostdatainember">Want to post data in Ember?</h4>

<p>No need for Components, Ember uses those infamous Controllers for that! Just as in loading data, you can also post data back to the server from anywhere in an Ember application...but you shouldn’t. Instead you should define <code>create</code>, <code>update</code>, and <code>delete</code> actions on those pesky Controllers and pass the actions all the way down to the Components that need them. Even though Ember says “Data Down, Actions Up”, in the wild there is a <em>lot</em> of “Actions Down” in application code.</p>

<h4 id="wanttoshowloadinganderrorstateinember">Want to show loading and error state in Ember?</h4>

<p>No need for Components, Ember uses Templates and Actions for that! You could define a <code>try/catch</code> function in the Route’s <code>model</code> hook, or maybe define an error action on the Controller, or try your luck at creating a Template with the right naming convention (I believe it is <code>[route_name]-loading.hbs</code> and <code>[route_name]-error.hbs</code>). In this case there is no <em>Ember Way</em>, but there is a lot of confusion!</p>

<h4 id="wanttomanageacomponentsstateinember">Want to manage a Component’s state in Ember?</h4>

<p>Great - we have a special javascript file just for that which provides some nice separation of concerns from the template file. Unfortunately the two files are about 6 folders away with the Component <code>.hbs</code> folder naturally tucked in as a subfolder of Templates, since after all Components aren't that important. Get used to spending extra time navigating between files - hope you don’t use vim ;)</p>

<p>A bit tongue and cheek...but the point is that Ember is fundamentally not a Component based framework. Ember has Components, but their role is subservient to a confusing array of legacy concepts such as Routes, Controllers, and Templates. <strong>Ember is trapped in the outdated mindset of MVC in a world that has long moved on to Components</strong>. When people talk about Ember’s steep learning curve - what they are trying to say is that they have been accustomed to <em>thinking in Components</em> thanks to React et al, and are <em>confused when they can’t use Components as expected</em> in Ember.</p>

<p>To those outside the Ember Bubble™, Ember developers kind of look like this: <br />
<img src='http://andrewcallahan.com/content/images/2019/Jun/source.gif'  alt="" /></p>

<p>So, how does Ember solve this problem?  </p>

<h1 id="emberitsjustcomponents">Ember: It’s Just Components™</h1>

<p>Instead of asking “what do we need to <em>add</em> to Ember to make it better” we should instead be asking “what do we need to <em>remove</em> from Ember to make it better”. <strong>Specifically I believe that Ember 4.0 should eliminate the concepts of Routes, Controllers, and Templates in favor of Components</strong>. Components are the perfect building block to build apps from. They encapsulate business logic that is understood by everyone from designers to developers, and even business people! Components are a universal language, and for Ember to thrive, it must fully embrace them.</p>

<p>My thinking on this is heavily influenced by the best post of 2018’s Ember Call For Blog Posts - <a href='https://medium.com/@pzuraq/emberjs-2018-ember-as-a-component-service-framework-2e49492734f1' >EmberJS 2018: Ember as a Component-Service Framework</a>. After reading that post, I felt more confident in my choice of putting as much logic as possible into Components. I’ve also started to relearn React in the past few months which really made me remember the beauty of just using components. Both have made me reach a tipping point where I now believe that elevating the importance of Components is critical to Ember's future.</p>

<p>Here is how it would (roughly) work, using code from the <a href='https://github.com/ember-learn/super-rentals' >Super Rentals</a> Ember tutorial.</p>

<p>In the router file Components are specified using the arguments <code>path</code> and <code>component</code>. Params (and query params) are automatically passed into the specified Component using <code>params</code> and <code>queryParams</code> as prop names.  </p>

<pre><code>Router.map(function() {  
 this.route(path: 'rentals/:rental_id', component: 'rentals/show');
});
</code></pre>

<p>The <code>.js</code> and <code>.hbs</code> files for Components live in the <code>/components</code> directory, which assumes some sort of Module Unification has landed. Glimmer Components are now the default, since legacy Components have been deprecated. The word <code>data</code> is used instead of <code>model</code> because that is a much more accurate and agnostic representation of what is happening (even in JSONAPI, the top level key is <code>data</code>). Since this is a routable Component, URL params were automatically passed in and can be called using <code>this.params</code>. </p>

<pre><code>import Component from '@ember/component';  
import { action } from '@ember/object';  
import { inject as service } from '@ember/service';

export default class RentalShow extends Component {  
 store: service(),

 @action
 fetchData() {
   this.set('data', this.store.findRecord('rental', this.params.rental_id));
 }
}
</code></pre>

<p>The <code>.hbs</code> file renders the Component and also allows for Components to have 3 special props using newly reserved keywords: <code>fetchData</code>, <code>loading</code> and <code>error</code>. First, <code>fetchData</code> is a function that will suspend loading of the Component and its children until it resolves - similar to what a Route’s <code>model</code> hook does today and what React Suspense aims to do. To make things simpler, <a href='https://embermap.com/notes/83-the-case-against-async-relationships' >all Ember Data models are now NOT async by default</a> so that the data loading happens exclusively in the <code>fetchData</code> function, and not in some random line in the <code>.hbs</code> file. This also makes it super simple to swap Ember Data for another library, like Orbit or GraphQL. Loading and Error state are now just passed in as Components and will be rendered depending on the result from <code>fetchData</code>. Other than that, it’s just a normal Glimmer Component ;)</p>

<pre><code>&lt;RentalShow  
 fetchData={{action 'fetchData'}}
 loading={{component 'rental-show/loading'}}
 error={{component 'rental-show/error'}}&gt;
 &lt;h2 class="title"&gt;{{this.data.title}}&lt;/h2&gt;
 &lt;div class="content"&gt;
   &lt;div&gt;
     &lt;img src={{this.data.image}}&gt;
   &lt;/div&gt;
   &lt;div class="detail-section"&gt;
     &lt;div class="detail owner"&gt;
       &lt;strong&gt;Owner:&lt;/strong&gt; {{this.data.owner}}
     &lt;/div&gt;
     &lt;div class="detail"&gt;
       &lt;strong&gt;Type:&lt;/strong&gt; {{this.data.category}}
     &lt;/div&gt;
     &lt;div class="detail"&gt;
       &lt;strong&gt;Location:&lt;/strong&gt; {{this.data.city}}
     &lt;/div&gt;
     &lt;div class="detail"&gt;
       &lt;strong&gt;Beds:&lt;/strong&gt; {{this.data.bedrooms}}
     &lt;/div&gt;
     &lt;div class="description"&gt;
       &lt;p&gt;{{this.data.description}}&lt;/p&gt;
     &lt;/div&gt;
   &lt;/div&gt;
 &lt;/div&gt;
&lt;/RentalShow&gt;  
</code></pre>

<p>In this hypothetical example, Ember has no more use for Routes, Controllers or Templates. Everything happens in Components, in a way that is extremely easy to understand, and gives up nothing. Quibbles about the details of every choice I made in the example code aside, everything we love about Ember is maintained, while superfluous concepts are eliminated. Ember has half the surface area to learn yet substantially better ergonomics to develop in. <strong>The only thing we have to give up to reach this Component Utopia is the past, specifically Ember’s past use of Routes, Controller and Templates</strong>. It’s a small price to pay to open Ember up to the wider world of Component-centric UI developers and I sincerely hope this happens.</p>

<p><strong>Make no mistake: Ember is at a crossroads. It needs to grow or it will die. It can’t grow unless it attracts more developers. It can’t attract more developers until it meets them where the are at - which is thinking in Components.</strong></p>

<p>My dream is that this becomes a reality, and not just a quickly ignored blog post. I’m imagining the March 2020 EmberConf keynote in Portland. Yehuda and Tom are walking up to the stage, Tom in his signature suit, and Yehuda wearing an Ember hoodie. Jokes are told, memes are spread, and finally they get to the heart of their presentation. This year it’s not a cheerful retrospective on the previous year with a dash of vague directional hints at multiple possible futures. This year they have one clear message: Ember is now a Component based framework.</p>

<p>While that dream is possible, <strong>the Core Team won’t do this unless they hear from more than just one person shouting into the wind on their blog</strong>. If you’ve read this and agree with the broad strokes of what I’m saying - <strong>speak out</strong>, let the Core Team know you also feel this way. I’m hoping there are more than just <a href='https://www.youtube.com/watch?v=lKie-vgUGdI' >dozens of us</a>, and that with a ground swelling of support, our message is delivered and change happens!</p>]]></description><link>http://andrewcallahan.com/to-have-a-future-ember-must-kill-its-past/</link><guid isPermaLink="false">cb3fcc70-fa41-4e41-befb-7f78e790b8af</guid><category><![CDATA[coding]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Mon, 03 Jun 2019 14:02:44 GMT</pubDate></item><item><title><![CDATA[A Road to Ember 4.0]]></title><description><![CDATA[<p>I've been building ambitious web applications with Ember since 2014. Overall I'm very satisfied with how productive I am, and how seamless the framework has improved without breaking old code. There are, however, some major areas that I think Ember can improve on if it wants to stay relevant and perhaps even win over some more converts as we advance from Ember 3.x to Ember 4.0.</p>

<h2 id="embercore">Ember Core</h2>

<h4 id="allownativenpmpackages">Allow Native NPM Packages</h4>

<p>I think a massively overlooked downside of Ember is that in order to import NPM packages, they either need to be specially wrapped as an Ember addon, which limits choice or imported using browserify, which is confusing to developers, especially newcomers to Ember. I think the goal of being able to just <code>npm install</code> or <code>yarn install</code> any package and having it "just work" should be high on the TODO list.</p>

<h4 id="replacecontrollersandtemplateswithroutablecomponents">Replace Controllers and Templates with Routable Components</h4>

<p>Ember has a lot of concepts that make it hard to learn - controllers and templates being two specifically that I think are hard to grasp, and due to routes and components, could be made unnecessary. This absolutely needs to be a priority when thinking of the future of Ember, which needs to be made simpler and easier to grasp, especially for developers of other frameworks that only really deal with components.</p>

<p>The saddest moment of my time as part of the Ember community was when Yehuda Katz closed the <a href='https://github.com/emberjs/rfcs/pull/38' #issuecomment-355800759">Routable Components RFC</a>. At the end of his comment, he mentioned that some things <em>should</em> be worked on towards something resembling Routable Components, but there was no solid commitment or even a timetable. Overall it was a pretty big blow since this was such a needed feature that had also been promised and hyped up for a long time. I completely understand the core team's focus on <a href='https://glimmerjs.com/' >gilmmer</a>, which has been great and made all of our Ember apps faster. However, I think now is the time to get back to basics and simplify the core functionality of the framework by finally eliminating controllers and templates.</p>

<h4 id="chooseoneortwowaybinding">Choose One or Two Way Binding</h4>

<p>The phrase "Data Down Actions Up" (DDAU) is said a lot in the Ember community - but two-way binding is still used extremely frequently. I can't really say that DDAU is really "The Ember Way" - in fact, I would say it is not. I think this is one of the biggest disconnects between what Ember says it does, and how people use it. I think it is important to bring what Ember says it does and how people use it into alignment but am ambivalent as to which path is best.</p>

<h2 id="emberdata">Ember Data</h2>

<h4 id="supportnonrestfulactions">Support Non-Restful Actions</h4>

<p>On every Ember app I've worked on eventually there are API calls that don't neatly fall into a RESTful action. From <code>capturing</code> and <code>voiding</code> charges, to <code>sending</code> a reminder email - these are all perfectly logical API calls but are not supported by Ember out of the box the way <code>save</code> or <code>createRecord</code> are. I've used the excellent <a href='https://github.com/mike-north/ember-api-actions' >ember-api-actions addon</a> from Mike North that solves for this, but I think this should something the framework supports in a super easy way natively.</p>

<h4 id="eliminateasyncrelationships">Eliminate Async Relationships</h4>

<p>One of the best blog posts I've read in the past year was <a href='https://embermap.com/notes/83-the-case-against-async-relationships' >The case against async relationships in Ember Data</a> by Ryan Toronto. In the post Ryan clarified that all of the confusion I've had around the ambiguous nature of the <code>.get</code> call to an ember data relationship property was due to it having multiple purposes.</p>

<blockquote>
  <p>Our main gripe with this API is that it combines the concerns of local data access with remote data fetching into a single method call. This makes it harder for developers to write expressive, intention-revealing code, especially because data loading is such a non-trivial part of developing Ember applications.</p>
</blockquote>

<p>He's spot on, and EmberMap's <a href='https://github.com/EmberMap/ember-data-storefront' >Ember Data Storefront</a> is a fairly well thought out vision for an async relationship free ember future.</p>

<h4 id="fullyembracegraphqlasanoption">Fully Embrace GraphQL as an Option</h4>

<p>Ember predates GraphQL by a few years, so it's no surprise that it hasn't been officially supported yet.</p>

<p>However, it's impossible to ignore the meteoric rise that GraphQL has been on in the last year or so. Its benefits are immense yet in the Ember community, it is a <a href='https://github.com/bgentry/ember-apollo-client' >niche addon</a> at best, and a joke at worst.</p>

<blockquote class="twitter-tweet" data-lang="en"><p lang="en" data-conversation="none" dir="ltr">GraphQL will replace REST in the same way MongoDB replaced PostgreSQL.</p>&mdash; Tom Dale (@tomdale) <a href='https://twitter.com/tomdale/status/786954892342681600' >October 14, 2016</a></blockquote>

<p>Having used GraphQL myself, I've been blown away. Being able to declare exactly what data needs to be loaded leads to an extremely efficient query, with only one round trip to the server, a faster response time, and seamless navigation of deeply nested relationships. Even with the incredible  <a href='http://jsonapi-resources.com/' >JSONAPI::Resources gem</a> on my Rails server, it's just not even close to how powerful GraphQL is.</p>

<p>I'm not alone in my love for GraphQL either, so many developers and companies are switching over to using it. Ember can't afford to ignore this game-changing technology any longer. Ember needs to include GraphQL as a first-class option for how Ember consumes API data - on par with JSONAPI. Furthermore, combining GraphQL with robust Ember Data models would actually be a superior developer experience than using GraphQL alone - which is something Ember can use to lure in new developers whose backends are GraphQL. </p>

<h4 id="addnativewebsocketsupport">Add Native Websocket Support</h4>

<p>I've been playing around with Elixir and Phoenix, which has awesome support for websockets. Building real-time web applications is tantalizing, and in many instances could fundamentally change how web applications are built. If Ember is to live up to its slogan of "A framework for ambitious web developers" then native Ember Data support for websockets is a must.</p>

<h2 id="embertesting">Ember Testing</h2>

<h4 id="fixtherunloop">Fix The Run Loop</h4>

<p>I was lucky enough to attend last month's <a href='https://www.youtube.com/watch?v=PwQAj5UU9ng' >testing focused Ember NYC meetup</a> with Robert Jackson. He said that one of his favorite recent additions to Javascript was <code>async/await</code>, which I wholeheartedly agree with! Unfortunately, I've had to regress to using callbacks many times because the Ember Run Loop breaks when testing code written with <code>asnyc/await</code>. He mentioned that this was something that needed to be fixed, and I would suggest it become a priority.</p>

<h4 id="improvethefundamentals">Improve The Fundamentals</h4>

<p>Ember prides itself on being the best framework when it comes to testing, however, I think there is a lot of room here to be even better. Here are four things Ember could do:</p>

<ol>
<li>The testing page could really use a visual refresh.  </li>
<li>The testing page should be able to be usable while the app is testing, which is not the case now due to constant screen jitters.  </li>
<li>Eliminate the requirement to import services and components to get the tests to pass - this should just happen automatically.  </li>
<li>Have a better code organization than just naming tests with strings <code>Unit | Component | component name</code> - having the metadata about tests as real variables set in the test would allow for this.</li>
</ol>

<h4 id="improveerrorhandling">Improve Error Handling</h4>

<p>At times the error messages from Ember are cryptic and have a poor stack trace. Here are three ideas on how to make it better:</p>

<ol>
<li>Enable ember apps to optionally send test failure metadata to an as-yet-to-be-created central repository so that the Ember community can see aggregate statistics of what is failing. People can then upvote common failures or common confusing failures they don't know how to fix.  </li>
<li>Have a help button next to each failing test that will gather the needed data and start a thread on the <a href='https://discuss.emberjs.com/c/testing' >ember discuss forum</a>.  </li>
<li>Treat improving error messages and traceability as important features of new Ember releases and make a note of them in each release notes blog post.</li>
</ol>

<h4 id="defaulttoendtoendtesting">Default to End-to-End Testing</h4>

<p>Ember apps can't really be decoupled from the API that they consume. If the API changes, then the Ember app will break. However the way the Ember community has coalesced around "best practices" of testing is not to do true End-to-End tests, but instead to build out an entire mock API on each of their Ember apps using <a href='https://www.ember-cli-mirage.com/' >Mirage</a>.</p>

<p>This is extremely time-consuming, a nightmare to maintain, hard to upgrade, easily falls out of sync with the real API, and at the end of the day doesn't actually test if the app works in the real world.</p>

<p>I think mocks have a time and a place, especially for third-party services, but they shouldn't be the center stage of "best practices" for how to test a single page app.</p>

<p>Instead, I think that true End-to-End testing, as laid out in this <a href='https://dockyard.com/blog/2017/11/15/how-to-add-concurrent-transactional-end-to-end-tests-in-a-phoenix-powered-ember-app' >excellent blog post</a> by Estelle DeBlois at DockYard should become the norm.</p>

<p>From the perspective of changing code in Ember to make this happen, I don't think there is really much to do. This is more of a mindset change within the Ember community of what constitutes good testing. To accomplish this, there would need to be guides, tutorials, blog posts, and real-life examples of companies that use Ember that do true End-to-End testing with a variety of backend technologies.</p>

<h4 id="keepaneyetowardsthefuture">Keep an Eye towards the Future</h4>

<p>I've been using <a href='https://percy.io/' >Percy</a> for over a year, and I'm very bullish on visual integration testing. I think a case could be made that it is a solid replacement for many tests that are currently manually written. At the very least, I'd love to see a tighter integration of visual integration tests into Ember as one of the core "best practices" methods that Ember apps are tested. There are some full-blown fancy solutions such as <a href='https://www.cypress.io/' >Cypress</a> which does screenshots and video recordings so you can play back each step of a test, but even just tighter integration with Percy would be great.</p>

<h2 id="closingthoughts">Closing Thoughts</h2>

<p>Overall I'm still a huge fan of Ember and use it in my job as well as my side projects. I think the community is top notch, and the philosophy of progress with stability is pretty spot on. There is a lot of work to be done to keep Ember relevant in a competitive landscape of view libraries and other frameworks. I've laid out some of my ideas, but the thing that gives me the most hope is the fact that I was <a href='https://emberjs.com/blog/2018/05/02/ember-2018-roadmap-call-for-posts.html' >asked by Ember to give my ideas in the first place</a>. I'm really excited to read what other people in the community have to say and am hopeful that the core team will take some of our advice to heart when building the official 2018 Ember Roadmap. I'm hopeful that with time and forward progress Ember will bring in more developers, and continue to realize its vision of being "A framework for ambitious web developers" in an ever-changing world.</p>]]></description><link>http://andrewcallahan.com/a-road-to-ember-4-0/</link><guid isPermaLink="false">e5e44911-8ed4-46f7-9493-c7b5c0523a07</guid><category><![CDATA[coding]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Thu, 03 May 2018 17:50:01 GMT</pubDate></item><item><title><![CDATA[This is what Change Looks Like]]></title><description><![CDATA[<p>I woke up on Friday and started making breakfast. Although I rarely watch TV, I was away from my apartment and out of my normal routine, so I decided to put the news on and see what was happening in the world. I catch a glimpse of what looks like the ocean from a tropical place, and quickly go back to cooking my eggs. Then I hear an all too familiar voice speaking about Cuba. It was Secretary of State John Kerry, and he was in Cuba reopening the US embassy.</p>

<iframe width="560" height="315" src='https://www.youtube.com/embed/IX9kxlBj1No'  frameborder="0" allowfullscreen></iframe>

<p>I went back to cooking my eggs and just smiled. I knew that this day would be coming after President Obama announced the <a href='http://andrewcallahan.com/thoughts-on-the-cuba-detente/' >détente with Cuba late last year</a>. Reopening our embassy in Cuba is just a small step, and is part of a long term process that will eventually lead to fully normalized relations between the US and Cuba. While I agree with this policy change, that’s not why I was smiling. I was smiling because it was exactly moments like this - small moments that bring about positive change in the world - that are seemingly commonplace these days. In the last few months alone we’ve seen <a href='http://www.nytimes.com/2015/06/27/us/supreme-court-same-sex-marriage.html' >marriage equalty become the law of the land</a>, <a href='http://www.nytimes.com/2015/07/11/us/south-carolina-confederate-flag.html' >confederate flags being taken down all across the country</a>, and <a href='http://www.nytimes.com/2015/06/26/us/obamacare-supreme-court.html' >access to basic healthcare upheld</a>. </p>

<p>Today’s embassy reopening, along with so many other moments, is exactly what America was hoping for when it elected Barack Obama in 2008. It saddens me though, when I see so much disillusionment with our political system from people who feel that President Obama hasn’t lived up to the hope of Candidate Obama. It’s like they expected one election to instantly transform America overnight, and then checked out when the going got tough. The fact is that change is hard. Change can take time. In order to realize change you need to understand and accept that progress isn’t a steady stream of victories. Change is messy and it’s pace is uneven. I would have loved for this day to come 7 years ago at the start of President Obama’s term, or frankly at any time in the past 54 years. But change finally came today, and now we can move forward with Cuba and put our silly travel restrictions on the ashbin of history.</p>

<p>Seeing Secretary Kerry fly the US flag over our Embassy in Cuba after over half a century of foolish isolation is extremely satisfying. Today’s events are proof that change, seemingly unthinkable change, can be made, and that President Obama is delivering the change we all hoped for. In order to see more days like this, people should soak in these small moments of change, and reaffirm their commitment to get involved and vote and make their voices heard - there is too much work left to do for people to just check out and give up.</p>]]></description><link>http://andrewcallahan.com/this-is-what-change-looks-like/</link><guid isPermaLink="false">9c941bc3-1699-4eb6-830e-bfdf0a9e1655</guid><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Mon, 17 Aug 2015 16:44:00 GMT</pubDate></item><item><title><![CDATA[Companies Should Conduct Job Interviews Outside Of Business Hours]]></title><description><![CDATA[<p>Most job interviews are held during regular business hours (9-5). This makes sense, as the people doing the interview are generally working during that time. However, many of the best candidates for a job are also busy at their current job during business hours. To me, it seems like a worthwhile effort to be open to conducting interviews outside of business hours in order to accommodate these candidates. However, I’ve been shocked at how rigid and even offended some companies are at this idea. To them, not willing to make big personal sacrifices in order to interview for a job is a signal that you aren’t serious about working at their company. This kind of thinking is absolutely wrong, to the point of belligerence.</p>

<p>The purpose of a job interview is to get both sides to figure out if they would work together well. The potential employer needs to make sure that the candidate has the required skills to perform the work. The potential employee needs to figure out if they could see themselves working there. Both sides need to figure out if they get along with each other. That’s it.</p>

<p>A lot of the time the best candidates for open positions already have a job. For these candidates, most likely their employer requires a conversation about taking a few hours or a full day off of work, as well as the reason that the person is doing so. This means the candidates will either have to tell their boss they want to take a last minute one day vacation, or need to take a half day for a last minute “doctor’s appointment”. Vacation time is precious, and it’s completely unfair to expect someone to take 1 of their 10 or 15 days just to interview at a single company with no guarantee of a job. Lying to your boss about needing to go to a “doctor’s appointment” isn’t the most morally objectionable thing, but is still something that should be avoided. After All why would you want to hire someone who has to deceive their current employer? When interviewing at multiple companies with multiple rounds, all of this time off of work can quickly get out of hand - to the point of being infeasible.</p>

<p>By forcing candidates to interview during business hours, employers are foolishly punishing a lot of the best candidates for no reason. The obvious answer is that companies should allow interviews to occur during non-working hours. This means super early in the morning, in the evening, and on the weekends. For companies this may mean requiring employees to put in some extra work, or conversely allow them to switch up some of their hours (ie: get in for an early interview at 7, but leave at 3). This is a small price to pay to accommodate some great candidates. Lowering the pain of interviewing should yield a higher quality pool of applicants, and eventually allow companies to make better hires. The ability of a company to attract the best talent is what makes it or breaks it. Instead of putting candidates with job in a compromising situation, companies would be wise to be flexible on the timing of their interviews - it would go a long way towards win these candidates over and building a great company.</p>]]></description><link>http://andrewcallahan.com/companies-should-conduct-job-interviews-outside-of-business-hours/</link><guid isPermaLink="false">a1da465b-a0d3-458e-a925-89266bfe030f</guid><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Thu, 13 Aug 2015 16:53:00 GMT</pubDate></item><item><title><![CDATA[A New Alphabet]]></title><description><![CDATA[<p>I was intrigued at Google’s decision today to undergo a <a href='http://googleblog.blogspot.com/2015/08/google-alphabet.html' >massive corporate restructuring</a>. For years Google has been ploughing profits from its monopoly advertising business into some radically ambitious projects. From upending the telecom industry with <a href='https://fiber.google.com/' >Google Fiber</a>, reimagining transportation via <a href='http://www.google.com/selfdrivingcar/' >self driving cars</a>, and even extending the human lifespan with <a href='http://www.calicolabs.com/' >Calico</a> - some huge innovations are happening at Google. However, these have all been sideshow projects regulated to be small divisions of what is becoming a massive bureaucracy.</p>

<p>I’m extremely excited about this move for two reasons.</p>

<p>First, I think it’s a great idea to separate Google the advertising business from all of these moonshot projects. Instead of projects like Google<sup>[x]</sup> being a quirky little team lost in the Google Zoo, it is now an independent entity. Being it’s own company with it’s own leadership will give Google<sup>[x]</sup> and it’s corporate siblings will presumably allow more focus, more autonomy, and a better defined mission. These are the exact kinds of things that are important for a team to succeed, and thus for Google’s long term innovative efforts to succeed. </p>

<p>Second, I am very pleased that CEO title of Google is being handed to <a href='https://en.wikipedia.org/wiki/Sundar_Pichai' >Sundar Pichai</a>. By extricating themselves from the day-to-day operational management of Google, Larry and Sergey's energy can now be focused on starting new things instead of maintaining and growing their existing business endeavors. The value of this can not be understated. Having one let alone two brilliant, experienced, and extremely well financed individuals focused on creating future instead of meeting expectations on quarterly financial reports is, outside of Elon Musk, almost unheard of. Larry and Sergey will essentially be spending all of their time making a series of audacious bets with billions of dollars of profits. I can’t think of two better people to be tasked with such a job, and can’t wait to see what these two geniuses accomplish in the later half of their careers.</p>

<p>Bravo Google, or as they are now known, Alphabet!</p>]]></description><link>http://andrewcallahan.com/a-new-alphabet/</link><guid isPermaLink="false">bb1b7b20-4844-4071-b446-15eb41b1e12f</guid><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Mon, 10 Aug 2015 15:07:00 GMT</pubDate></item><item><title><![CDATA[The Call To Cancel Scam]]></title><description><![CDATA[<p>I recently got my apartment cleaned through an app called <a href='https://www.handy.com/' >Handy</a>. Their app was slick, the service was great, and my apartment is now spotless. In order to get preferential pricing, I had to sign up for a “subscription” for ongoing cleaning services, which they said I could easily cancel any time without penalty. I did just that, and the next day attempted to cancel the subscription, since I don’t actually need my apartment cleaned regularly. I fumbled around the app, was able to cancel a month's worth of scheduled cleanings, but couldn’t find a way to actually cancel the cleanings indefinitely. I finally stumbled across a paragraph in the app that said that I had to call to cancel.</p>

<p>I immediately knew this was a bad sign. Unless you are a startup strapped for cash and releasing an MVP, you should have the resources to build a cancelation feature into your app. Handy may be a startup, but they’ve received over <a href='https://www.crunchbase.com/organization/handybook' >$60 million in venture capital funding</a> and surely can afford the engineering time to add in this feature. Not only did they refuse to let me cancel conveniently online, they disabled clicking or copying the phone number they provided so that I was forced to manually enter it in order to place the call.</p>

<p>Handy’s goal was to make canceling as difficult as possible. They had obviously concluded that it was ‘better for business’ to pay for an entire call center than to just let people cancel on their own. Every barrier they put up making cancelling more difficult has probably lead to fewer cancellations, and thus more revenue for the company. I was seriously debating whether to place the phone call at all, at first out of anger for even having to do this in the first place, and then realizing how much I was dreading having to hear a hard sales pitch, or get guilt tripped into staying on as a customer. Luckily the phone call didn’t go too bad and was relatively quick, but the fact that they made me go through this hoop left me with a sour taste in my mouth.</p>

<p>I can understand why Handy is so desperate to keep customers. They are competing in a difficult market, where a <a href='http://techcrunch.com/2015/07/31/why-homejoy-failed-and-the-future-of-the-on-demand-economy/' >large rival has just gone bankrupt</a>, partly because it failed to retain customers at a high enough rate. However their need to stay in business in no way justifies the use of underhanded tactics to lure people into continuing their service. Customer retention through inconvenience is no way to grow a company. Good companies should be able to keep customers without fine print, tricks, or shenanigans. Handy and all other companies who force customers to call to cancel should stop this immediately and let their customers cancel on their own over the internet.</p>]]></description><link>http://andrewcallahan.com/the-call-to-cancel-scam/</link><guid isPermaLink="false">1287f297-9c9a-4734-a3aa-310cf17bd263</guid><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Thu, 06 Aug 2015 17:34:00 GMT</pubDate></item><item><title><![CDATA[Chipotle Failure]]></title><description><![CDATA[<p>I get lunch at Chipotle very often. It’s hard to beat the convenience, taste, price, and healthiness of a burrito bowl. Last week I was running an errand at lunch, and while on my way back to my office I stopped at a Chipotle a little further away than the one I normally patronize. I ordered my usual burrito bowl, but for some reason the person making my burrito didn’t quite get the meaning of ‘tiny’ amount of salsa, and lobbed on a ton of it. I get less salsa primarily because I prefer a lower ratio of salsa to non-salsa ingredients, but also because a lot of salsa can make the whole bowl quite soggy. I wasn’t too upset at the mess up, and figured I could always just scrape off the extra salsa when I sat down to eat it.</p>

<p>I started walking back to my office, which was about half a mile away. When I was about 2 blocks away all of a sudden I felt something drop. I look back and see my entire burrito bowl smashed on the ground - like it had been dropped from the top of a building. The juices from the extra salsa must have leaked from the bowl and eventually deteriorated the entire bottom of the bag, which was now a giant hole.</p>

<p>The site of my lunch splattered on the sidewalk was so sad that for a moment I thought I would just have to walk sullenly back to the office and forgo lunch.</p>

<p><center><iframe src='http://giphy.com/embed/B8ody8egx8JkA'  width="480" height="266" frameBorder="0" style="max-width: 100%" class="giphy-embed" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></center></p>

<p>But this brief bout of hopelessness soon gave way to an overwhelming feeling of hangryness. I was not about to let this bag failure prevent me from eating my lunch. An extra $13 and 15 minutes of my life isn’t really that big of a deal - certainly not enough to make me upset all afternoon. I scooped up the contents of my burrito bowl from the ground, and marched right back to Chipotle to get another. I made sure that they put very little salsa on it, and of course had them double bag it. After the first few bites I was happy just to eat, and soon realized how funny my dropped burrito bowl must have looked.</p>

<p>The moral of the story is twofold. First, Chipotle needs to improve the structural integrity of their bags. Second, don’t fret over dropped burrito bowls - laugh it off and just get another.</p>]]></description><link>http://andrewcallahan.com/chipotle-failure/</link><guid isPermaLink="false">cce5f4a2-7e9e-4126-9eb6-311fd9c26e44</guid><category><![CDATA[life]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Mon, 03 Aug 2015 15:05:00 GMT</pubDate></item><item><title><![CDATA[Never Play Chaos Roulette]]></title><description><![CDATA[<p><img src='http://andrewcallahan.com/content/images/2015/Jul/trump.jpg'  alt="" />
Today <a href='https://en.wikipedia.org/wiki/Bruce_Bartlett' >Bruce Bartlett</a>, a well respected and (normally) very serious economist who served in the Reagan and Bush administrations but has recently supported President Obama, <a href='http://www.politico.com/magazine/story/2015/07/moderate-republicans-donald-trump-tea-party-conservative-fringe-2016-120675.html' >made the case for why he wants Donald Trump to win the Republican nomination for president</a>. He believes that if Donald Trump won the Republican nomination, he would lose the general election by a landslide (his preferred outcome) and permanently silence his supporters (who he vehemently disagrees with).</p>

<p>Rooting for the craziest person to win the opposing party’s nomination as a strategy to achieve your preferred electoral outcome has sadly become somewhat commonplace - luring in even the most sober and serious among us like Bruce Bartlett. Statistically speaking, those who advocate for this type of political strategy stand on solid ground. It’s very unlikely that a candidate as polarizing as Donald Trump could win a general election, and therefore pushing for him to win the Republican nomination is a fairly good way to achieve a general election victory for his Democratic opponent. However, I still find this strain of thought highly irresponsible and the whole idea of electoral gamesmanship dangerous.</p>

<p>Next year the country will be faced with a choice between a Democrat and a Republican when it comes time to electing a new president. Given his past actions and toxic rhetoric, it’s highly likely that if the Republicans nominate Donald Trump he will lose. However, even if on paper someone like Donald Trump should lose a general election, just being one of two main choices gives him at least a fighting chance to win. How the economy performs, developing security threats, and unexpected events can all significantly impact an election. Imagine a domestic tech sector cooldown and a bursting real estate bubble in China throw us into another global recession. Throw in another Ebola outbreak, an unpredictable uprising in the Middle East, a tragic border incident, or even just some stumbles by his opponent. All of a sudden the conditions are so favorable for a Republican to win that we could soon be stuck with President Trump.</p>

<p>This would be a disaster. Donald Trump is erratic, extremely divisive, ignorant, and advocates for many very unwise policies. He would not be good for the country, and in fact is very likely to cause many large scale disasters if actually elected. The Presidency carries enormous power and responsibilities - something that we can’t risk falling into the wrong hands. Donald Trump is chaos incarnate, and even the smallest chance that he could seize such enormous power is very alarming. Realizing this danger and still hoping that Donald Trump wins the Republican nomination, and is thus in a position to be elected President, is extremely irresponsible. Regardless of partisan affinity, it is the right thing to hope that both parties nominate a candidate most likely to do right by the country. Donald Trump is not such a person. Serious people like Bruce Bartlett shouldn’t be advocating for his candidacy on the bet that he will implode. The stakes are too high to gamble with the future of our country.</p>]]></description><link>http://andrewcallahan.com/never-play-chaos-roulette/</link><guid isPermaLink="false">39bd50ee-7cf4-40e7-8a99-7fa68743961c</guid><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Thu, 30 Jul 2015 16:26:00 GMT</pubDate></item><item><title><![CDATA[A Tale of Two Cabbies]]></title><description><![CDATA[<p>I don’t normally take taxis, but in the past week I found myself doing so a few times. Most of the time taking a taxi is great - it gets me where I need to go fast and efficiently. However for some reason two of my taxi rides this week were complete failures. These failures both stemmed from a misuse of technology, but for opposite reasons.</p>

<p>The first failed taxi ride was in a standard yellow cab that I flagged down while trying to make my way to Brooklyn. I got into the taxi and told the driver the street address and cross streets. As we drove the driver kept muttering how he didn’t know where that was. I asked him if he a smartphone or GPS that he could use, and he said no. I tried showing him the map on my iPhone, but for some reason he refused to look at it. When I finally asked him if he could take me where I wanted to go, he said no. I left the cab and quickly found another that took me to where I needed.</p>

<p>The second failed attempt was surprisingly with Uber. I needed to get to Long Island City fast, so I ordered an Uber. What was supposed to be a 3 minute pickup window turned into 10 as the driver circled around seemingly every adjacent block before finally heading down mine. I even saw a few yellow cabs pass me by while I was waiting - but I felt that I had already committed to taking the Uber, so I waited. When I was finally in the Uber, we headed to Queens, but the driver kept misreading the GPS and took a series of wrong turns that doubled the time of the trip. Once we were finally headed in the right direction, he couldn’t quite figure out where exactly the final location was in comparison to our car. Having made the trip before and exhausted with helping him navigate I told me to stop the car, let me out, and I just walked the last half mile to my destination.</p>

<p>In the first instance the taxi driver was probably one of those old school drivers who had <a href='http://www.wired.com/2011/12/london-taxi-driver-memory/' >literally seared a map of the streets of NYC into his brain</a>. While this is an extremely impressive form of knowledge retention, his refusal to incorporate modern navigational technology rendered him unable to take me to where I needed to go. On the other hand, the Uber driver was a total n00b, and probably had very little NYC driving experience and no clue about any of the streets in NYC. He was totally reliant on the GPS with nothing to fall back on when the directions given by the GPS became ambiguous.</p>

<p>Both of these taxi drivers failed because they didn’t utilize technology appropriately. The first driver refused to use technology at all, while the second was entirely reliant on it. The ideal driver would have a balance - the experience and wisdom of the first driver, with the open mindedness to use technology of the second driver. Hopefully the next time I’m taking a taxi to an outer borough, I’ll be lucky enough to get such a driver.</p>]]></description><link>http://andrewcallahan.com/a-tale-of-two-cabbies/</link><guid isPermaLink="false">3d0110fb-fd92-45f7-9179-cf24fe7c29f1</guid><category><![CDATA[life]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Mon, 27 Jul 2015 16:36:00 GMT</pubDate></item><item><title><![CDATA[Complexification]]></title><description><![CDATA[<p>I work on a small nimble team that is part of a <a href='http://andrewcallahan.com/i-now-work-for-rupert-murdoch/' >giant multinational corporation</a>. Our team can move fast, adapts to change easy, and has almost no bureaucracy. On the contrary, our corporate headquarters (like so many large organizations) moves at an overly cautious pace, struggles with change, and has created a bonanza of bureaucracy over time. As a result, there is often a natural tension that arises between the clashing of cultures. At times folks over at headquarters can be a bit skeptical and even envious of our how our team operates. We are often frustrated and downright perplexed sometimes at how things operate over at headquarters. But does it really have to be this way?</p>

<p>I went to a technology ‘all hands’ meeting today and our company CTO spoke directly to this issue. He said that we as company tend to undergo a process of complexification for every decision that needs to be made, and as a result things take way too long to be decided. While this kind of self-awareness shouldn’t really surprise me since he seems like a bright guy, it nonetheless was a pleasant revelation. I’ve encountered many instances of this when dealing with the larger organization, and each time it leaves me in a state of exasperation bordering on despair.</p>

<p>It’s easy to sit where I am in the peanut gallery, on a small team that has a narrow responsibility that operates very independently, and lament about the inefficiencies and shortcomings of the larger organization. However, the truth is, it’s really hard to orchestrate dozens of different teams, stakeholders, business objectives, and market realities, which is what the executives at the company I work for must do. There is a reason why it is the default behavior of large organizations to suffer from indecision, and operate inefficiently.</p>

<p>But at the end of the day, even these natural tendencies can be overcome. Individuals, especially those in leadership positions, don’t just have to accept things the way they are - they can change them. In the meeting today my company CTO went on to say that from now on it is his expectation that all decisions have to be made quickly (for better or worse), and that he’d rather fail and change course than avoid acting in the first place. In other words, he wants to stop complexifying things and start simplifying things, which is music to my ear. It’s not clear to me yet whether these are just words, or if this is the new Law of the Land. I’m hopeful that he actually follows through with this new style of decision making, and am eager to see if things get simpler, or if the vast maze of bureaucracy continues to grow unabated.</p>]]></description><link>http://andrewcallahan.com/complexification/</link><guid isPermaLink="false">48c10044-52f3-4f01-b5ee-6935da2359a2</guid><category><![CDATA[work]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Thu, 23 Jul 2015 16:47:00 GMT</pubDate></item><item><title><![CDATA[Documentation is Paramount]]></title><description><![CDATA[<p>In the last few weeks I’ve come worked on quite a few technical projects with no or poor documentation. First, at my job I’ve had to install analytics into our recently launched application and the internal documentation for how to do that left more questions than answers. On another project I started working on, the previous developer left only two lines of documentation for the entire repository, which proved to be utterly useless. Finally as I am deploying my first application to Apple’s App Store I’ve struggled big time to decipher their overwhelming but very unclear documentation. In each instance what could have taken me a few minutes quickly ballooned into hours, and in some cases entire days of extra work.</p>

<p>As a software developer, my time is very expensive, and wasting time onboarding is quite costly. It’s also very frustrating and demoralizing to spend so much time banging your head against the wall trying to figure mysterious things out, especially since I know that at one point all the knowledge that was needed was in someone else's head - they just failed to communicate it properly to me via documentation. Furthermore, even after I’ve been able to bootstrap myself up to the bare minimum level of knowledge needed to complete a task on these new projects, not good documentation has left me lacking a more holistic understanding needed to really be productive and add value going forward. </p>

<p>The case for writing and maintaining good documentation is a slam dunk. It saves money, prevents developer frustration, allows new developers to join a project with ease, and creates the necessary shared understanding on a team to ensure everyone is very productive. As a rule I make sure to write extensive and clear documentation, <a href='http://www.reddit.com/r/explainlikeimfive' >explaining things like my intended audience is the equivilant of a five year old in developer terms</a>. I would ask all my fellow software developers to always be documenting - it would <a href='https://www.youtube.com/watch?v=IXuFrtmOYKg' >make the world a better place</a>.</p>]]></description><link>http://andrewcallahan.com/documentation-is-paramount/</link><guid isPermaLink="false">69ff0730-16d9-4e6c-8f38-a44e220c0915</guid><category><![CDATA[coding]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Mon, 20 Jul 2015 16:56:00 GMT</pubDate></item><item><title><![CDATA[It Feels Good To Launch]]></title><description><![CDATA[<p>I’ve been working on a <a href='https://rent.doorsteps.com/' >project at work</a> for over a year now. We have a great team, lots of interesting ideas, and a fairly good balance of support and independence from the company at large. We are also well versed in agile development, conduct lots of user research and experiments, and are generally comfortable playing the long game and incrementally rolling out innovations over time. We have about all we need to succeed in building a new product. However, for some reason we only ‘launched’ the product today - after a year of building!</p>

<p>We could have launched in 3 months, but we kept postponing. All the deadlines were soft, and there was no consequence for pushing back the launch. We added features to make the experience more complete. We redesigned the site a few times based on user testing. We redid the codebase and application architecture a few times as well to keep up with the ever evolving design. Despite having a largely functional site for many months, we kept pushing off launch until we had everything super polished.</p>

<p>While I of course support the team and the decisions we make, I had been pushing to launch at every chance I got. Every few weeks we would have a ‘retro’, where we said what went right and wrong on our team recently. WIthout fail I would mention that we hadn’t launched, and that even though we didn’t feel ready it would be better to just do it than to keep postponing. A few months ago my dream came true, and the business lead on our team committed to the rest of the company we’d launch in early July. That set the first firm deadline for us to actual launch our product, and it’s something we’ve actually stuck to this time.</p>

<p>While it’s been a rough road, I’m so glad we have finally arrived. It feels good to actually get something done, to get out of perpetual development mode, and launch our product into the world. The second that we pushed the code to production tonight I felt both relieved and proud. The last week has been hectic, scrambling to get all the last minute features in and squash any remaining bugs. We worked really hard, and have produced a product that while still only a fraction of what it could become, functions well and looks great.</p>

<p>My team will now be able to serve and learn from real live users instead of conducting endless tests in a vacuum. We can now show everyone else in our company that we can actually deliver a product instead of just dreaming about one. We can now point our friends and family to an actual website to show them what we do all day. Most of all, our team now has a sense of accomplishment. We were tasked with making a new product for our company, and we have finally delivered it. It feels good to launch, and now the real work begins of trying to actually turn our new product into a real winner in the marketplace.</p>]]></description><link>http://andrewcallahan.com/it-feels-good-to-launch/</link><guid isPermaLink="false">639d4185-d269-4dcc-99bb-f22bb7afcf1f</guid><category><![CDATA[work]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Thu, 16 Jul 2015 16:56:00 GMT</pubDate></item><item><title><![CDATA[Workcation]]></title><description><![CDATA[<p>I’ve been in upstate New York for a few days now. This was originally supposed to be my summer vacation. I had gotten a bit stressed, and anxious to get out of the city, so spending a week hiking, trekking, and just being outside seemed like a good idea. However, with a looming deadline at my job, and a very demanding side project, I’ve actually had to work most of the time I’ve been up here!</p>

<p>This has mean that I haven’t been able to be fully present in the moment. Instead of sleeping in, I’ve woken up super early to do some <a href='http://andrewcallahan.com/first-impressions-of-airpair/' >AirPair sessions</a> with an expert from India. Instead of eating dinner with my friends one night, I was stuck on a conference call. Instead of joining my friends on an all-day <a href='http://www.wvrta.org/' >23.7 mile walk</a>, I was regulated to just being their driver so I could work during the day.</p>

<p>Even though I’m obviously not on vacation (and thus not having to take any vacation days!), in a sense I still feel like I am. I’m out of the city, and in a wonderful cottage. All my city routines have gone out the window. I’m cooking and eating good healthy food instead of scarfing down chipotle and a protein bar. I’ve visited a few farms, an antiques store, and even made time for a <a href='http://www.mohonkpreserve.org/' >15 mile hike</a> on Saturday! I’m having a really good time, and am very glad I’m here. Even though I have so much work to do, it somehow feels way less stressful just being here.</p>

<p>This is kind of what I imagine life could be like if I worked remotely full time and traveled, which has long been a dream of mine. I would still be able to generate income and have purpose through work, while also getting to see and experience new things, places and people. Besides getting permission to work remotely in the first place, balancing work and play while on the road seems to be the most challenging aspect of it all. What these last few days have shown me is a template of how I can achieve this. For that reason I’m really grateful that this vacation turned into a working vacation. Hopefully there will be many more of these workcations to come in the future.</p>]]></description><link>http://andrewcallahan.com/workcation/</link><guid isPermaLink="false">211ac9d9-2e14-4773-9f73-e47c42bad58f</guid><category><![CDATA[life]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Mon, 13 Jul 2015 16:30:00 GMT</pubDate></item><item><title><![CDATA[The Bus Wasn’t So Bad]]></title><description><![CDATA[<p>I’m going on a week long hiking, camping, and yoga adventure in The Catskills next week with some friends. I first had to go to Connecticut to pick up my car, as we will be needing it pretty much everyday next week. I normally go to Grand Central and take metro north to New Haven, and then get picked up driven home - which is about a 45 minute ride.</p>

<p>I really enjoy taking the train. I get to walk through Grand Central Terminal, which is quite beautiful. There are tons of trains going very often at peak hours, and I don’t have to do any planning or ticket buying in advance. The new <a href='https://en.wikipedia.org/wiki/M8_' (railcar)">M8 trains</a> have comfortable seats and power outlets in every row. The trains never get stuck in rush hour traffic, which gets horrendous at rush hour near NYC. Plus I just love trains, and get to ponder endlessly about the possibilities of an upgraded super-fast-maglev-hyperloop future.</p>

<p>But tonight I couldn’t take the train. The logistics just didn’t work out in terms of getting picked up. I had to take the bus home, and was not a happy camper. At first I was fairly annoyed, and was even momentarily angry that no one would spend an hour and a half picking me up from New Haven. I was upset that I had to buy my bus ticket in advance. I was dreading having to navigate the labyrinth of the Port Authority Bus Terminal. I was stressed out that I had to catch the one and only bus leaving NYC that would drop me off closer to my house. I was concerned that the bus would get stuck in endless traffic and I wouldn’t get home until far, far later than the schedule said.</p>

<p>Now I’ll admit, finding the bus gate at the Port Authority Bus Terminal wasn’t exactly easy. But the bus ride itself...was actually enjoyable. I managed to snag the emergency row seat that had double leg room. The bus left on time, hit no traffic (which was a minor miracle that I didn’t think was even possible), and we arrived at my drop off location 2 minutes early! My Dad ended up picking me up, and for him it was only a 20 minute round trip from our house. I’m a sucker for efficiency, and saving that much time for whoever has to pick me up has me seriously considering making the bus my default way to get home.</p>

<p>The bigger take away from tonight’s bus ride though isn’t just that the bus wasn’t as bad as I thought it would be. That flash of anger I had because I couldn’t find someone to spend an hour and a half of their time fetching me isn’t something I’m proud to have felt. In the end the bus was a great way to get home, and made it so much easier for me to get picked up. I feel like a selfish fool now in retrospect for having had that sort of anger in the first place. I’m pretty lucky to have someone able to pick me up, even if they couldn’t make a longer trip. I of course am also lucky to have a place to go home, a car to pick up, the ability to take a vacation (while still getting paid!), and friends to enjoy my time with. Hopefully next time something like this happens I’ll keep all this in mind and just be more chill - after all the bus wasn’t so bad.</p>]]></description><link>http://andrewcallahan.com/the-bus-wasnt-so-bad/</link><guid isPermaLink="false">b8978575-f227-492d-bb1c-0eb4026668a4</guid><category><![CDATA[life]]></category><dc:creator><![CDATA[Andrew Callahan]]></dc:creator><pubDate>Thu, 09 Jul 2015 16:10:00 GMT</pubDate></item></channel></rss>