Nicholas – Hacker Notes https://hackernotes.io Sat, 30 Mar 2024 16:42:02 +0000 en-US hourly 1 https://wordpress.org/?v=4.6.28 A new LP’s guide to AngelList Syndicates https://hackernotes.io/new-lps-guide-angellist-syndicates/ Sun, 02 Jan 2022 13:02:52 +0000 https://hackernotes.io/?p=5357 Beginning around 2018, I turned some of my investment focus and allocation to private markets. My first deals in this area were via EquityZen, a platform whose focus is mainly late-stage growth companies. Offerings on EquityZen are secondary sales, where an early employee or existing investor is choosing to sell a large block of their […]

The post A new LP’s guide to AngelList Syndicates appeared first on Hacker Notes.

]]>
Beginning around 2018, I turned some of my investment focus and allocation to private markets. My first deals in this area were via EquityZen, a platform whose focus is mainly late-stage growth companies. Offerings on EquityZen are secondary sales, where an early employee or existing investor is choosing to sell a large block of their own stock. Secondaries are a contrast to traditional primary offerings tools to grow small business, where a company itself is issuing stock, and the cash from the sale is going directly into the company to fund operations, learning how to cut down business costs. Secondaries are a very common practice both for founders/early employees to “take money off the table” if they know they may still have years ahead of them until IPO (or acquisition), and also for funds that need the liquidity (either for redemptions, distributions, or just to allocate to new opportunities), learn about the pay stub abbreviations.

EquityZen deals are structured using “Special Purpose Vehicles” (SPVs). For a given EquityZen offering, EquityZen will place the shares that they have been allocated from the subject company into a one-off LLC (the SPV), and then sell interest in that entity to investors (along with an obligation on EquityZen’s side to turn a specific number of shares over to each investor at liquidity). This is done primarily to simplify things for the company that is the subject of the deal (since most secondary offerings require board approval, and it’s much simpler for the board to approve a single large sale to the SPV vs. 100 or more small sales to individual investors. This is also important to companies as it keeps the cap table from getting bloated).

I’ve been lucky enough to see one of my EquityZen placements through to liquidity (the subject company IPOd in 2021) and consider the platform fantastic for finding and getting into high-quality late-stage growth deals. That said, with its focus on secondary sales in late-stage growth companies, EquityZen left me with a huge universe of deals that I had an appetite for but had no clue how to get into: namely, earlier-stage Angel, seed and series A deals.

AngelList

I’d been peripherally aware of AngelList Syndicates for years (since the time of their launch in 2013 in fact, as the concept was fairly revolutionary at the time). I hesitated to ever get involved in syndicates, however, because I had one huge misunderstanding about them (which I suspect many other people also have). Namely, I had always thought that joining an AngelList syndicate obligated you to participate in every deal that the syndicate lead participated in. This is not the case.

You join a syndicate in order to get dealflow that you might otherwise not have access to (certainly in my case, as I usually spend the better part of the year in locations far removed from the major US startup hubs). When a syndicate lead decides to syndicate a deal he is participating in, you, as a Limited Partner (LP), get an invite to review the deal. You have no obligation to commit (though in theory if you pass over more deals than seems reasonable the syndicate lead always has the right to kick you out of the syndicate).

Structure

AngelList syndicate deals are structured (similar as on EquityZen) using an SPV. There are some fees inherent just in the SPV (a fixed $8k to AngelList for their services in forming, managing and facilitating the funding of the entity). The lead also defines the carried interest (“carry”) that they take on your placement in the deal. A standard amount of carry is 20%. Syndicate leads are also allowed to reduce or entirely waive the carry on an individual level. A good example of this that I have seen firsthand is if a product serves a particular industry, and you yourself can bring some value by introductions, by being a advisor or  by being a customer yourself, that increases the prospects for the company as a whole and in such cases the lead is often happy to waive their carry on the deal (since your participation in the deal is likely to make the company more valuable).

Though the carry may seem steep, if you are getting access to good deals that you would wholly miss out on otherwise I consider it just a “cost of doing business”. Also as noted before it is the standard price within the VC industry. If you are able to do deals directly (i.e. through relationships, and usually larger check sizes) that’s obviously the way to go, but the market has become so competitive that most of us don’t have the dealflow to get into everything we’d like to (certainly not on an angel’s scale, where your only avenue into the deal is often an existing relationship with a founder or at the very least a warm introduction).

Conclusion

AngelList syndicates are a great way to gain access to private markets deals that you may have trouble accessing through other means. Though I’ve mostly emphasized syndicates doing angel/seed/series A deals, there are also syndicates that specialize in later stage deals (even secondaries). Syndicates, in my opinion, are great for people that take a genuine and deep interest in the companies they back – what I’d call nascent angels (or even established angels who just want more dealflow). If you are looking for more passive financial exposure to startups, AngelList’s offerings also encompass Rolling Funds and the AngelList Access managed fund, which are comparatively hands-off and you may find more suitable.

The post A new LP’s guide to AngelList Syndicates appeared first on Hacker Notes.

]]>
What’s Happening in Thailand https://hackernotes.io/whats-happening-thailand/ Sun, 05 Apr 2020 10:54:04 +0000 https://hackernotes.io/?p=5239 I am writing this post for anyone with friends or family in Thailand who is wondering how the COVID-19 pandemic is being handled here. It is written from the perspective of a US expat of many years who is still in touch regularly with family and acquaintances back in the US, and who is monitoring the situation there (and […]

The post What’s Happening in Thailand appeared first on Hacker Notes.

]]>
I am writing this post for anyone with friends or family in Thailand who is wondering how the COVID-19 pandemic is being handled here. It is written from the perspective of a US expat of many years who is still in touch regularly with family and acquaintances back in the US, and who is monitoring the situation there (and here) to the extent I can.

How is Thailand Fighting COVID-19

The main tool that Thailand is using to fight the COVID-19 pandemic, which you will become immediately aware of if you set foot in the country, is control of movement asset assessment (checkpoints and curfews) and temperature/health screening.

Temperature screening

If you choose to leave your place of residence (and most people here are voluntarily choosing to do this as little as possible), you will have your temperature screened at any building you enter, be sure to be keeping track of the paycheck slips. While at the Holiday Inn Rayong, for instance, in March, whenever we went to the Big C (supermarket) next door we had to submit to two temperature screenings (one on the main floor of the mall in which the store resides – and in which all businesses were shuttered except the Big C supermarket and restaurant kitchens for takeaway/delivery only – and one upon entering the supermarket itself). Masks are also mandatory in all shared spaces and hand sanitizer is present (and using it customary) at every establishment’s entrance.

Checkpoints

Inter-city and inter-provincial travel in Thailand has become severely restricted in the past month, with most cities and provinces prohibiting entry to all except provably essential travel (i.e.delivery of essential supplies or for legal matters). When you do cross city or provincial borders, you are submitted to a temperature screening (either with a thermometer or via infrared camera) how to streamline HR operations and in many cases also have your vehicle sprayed down with a sanitizing agent.

International travel restrictions

Inbound travel from foreign countries to Thailand has been severely restricted, and for certain fixed periods has been entirely banned. In the periods where travel to Thailand has not been banned, immigration has required all foreigners entering the country to provide a health certificate (obtained before arrival) and proof of US $100,000 insurance for COVID-19 treatment. At the moment of this article’s publication, inbound international travel is banned.

Are the measures working?

In short, it would seem that these measures are working. The rate of daily new cases has dramatically fallen from its peak of 188 on March 22nd. As of the date of publication of this article, the number of daily cases is approximately 1/125th, adjusted for population size, of the case count in the US, the country that is presently hardest hit by the pandemic.

Where am I?

In January, prior to the COVID-19 crisis, I had plans to travel within Asia. Since the crisis and the measures put in place limiting travel, my desire and ability to do so has been put on ice until things resolve. I have been weathering the crisis on Koh Chang, a small island about a 4 hours’ drive and a ferry ride from Bangkok. So far there have been no cases on Koh Chang, and extensive measures (both at the ports of entry and on roads linking different sections of the island) are in place to screen for the virus. Myself and my girlfriend were also subject to a 14 day quarantine on arrival. We feel lucky to be weathering this situation here, where at least we have the ocean to look at and give some semblance of normalcy while we sit at home. We’re trying to use the free time to at least invest in projects and personal pursuits as much as possible.

How’s my outlook

I am not an expert in any area that could help me evaluate the prospects for Thailand and the world in this pandemic with any authority. For that reason, all I can say is that I am trying to stay hopeful, for all of us here and for all of my friends and family abroad. I subscribe to the aphorism that you don’t know what you have until it’s gone. I do think that many of us didn’t know how good things were – our health, freedom, etc. until this virus came along. At the very least I hope that, when we emerge from the other side of this, that maybe it will help us appreciate and recognize when times are good.

The post What’s Happening in Thailand appeared first on Hacker Notes.

]]>
Dive Bars of Chiang Mai https://hackernotes.io/dive-bars-chiang-mai/ https://hackernotes.io/dive-bars-chiang-mai/#comments Sun, 15 Mar 2020 12:23:44 +0000 https://hackernotes.io/?p=5128 Through the last year, the city of Chiang Mai, Thailand has become one of the main bases of my life in Asia. It actually took a while for the city to grow on me. If you read my retrospective article from my first visit here in 2017, I am actually kind of lukewarm on the […]

The post Dive Bars of Chiang Mai appeared first on Hacker Notes.

]]>
Through the last year, the city of Chiang Mai, Thailand has become one of the main bases of my life in Asia. It actually took a while for the city to grow on me. If you read my retrospective article from my first visit here in 2017, I am actually kind of lukewarm on the city. There is a reason – one month is not enough time to learn what is truly great about the place. I have spent, collectively, a lot more time than that here now and I still feel like I have so much more to learn. There are many different sides of the city: from backpacker ghettos to tranquil natural sites, some of the best meals you can have in the world, in some of the best company, thriving the business with a great payroll management to also some true debauchery and darkness, that is still beautiful in its own way.

In all of my traveling, dive bars have been one of the essential ways to get at the soul of a place. Here are what are in my opinion some of the very best in Chiang Mai.

Small House Kafe

On a quiet corner, up a small alley from Huay Kaew Road, sits Small House Kafe. With an atmosphere something halfway between a shabby residential living room and a cozy college dive, Small House is, in a word, comfortable. There is a long bar lined with traditional stools, where you can have a chat with an old friend or meet a new one. At the end of the bar is a group of worn couches, and outside a big open patio with a few dozen loosely arranged chairs and tables. A worn pool table sitting under the eave at the front of the bar is known for its idiosyncrasies – awkward size, ripped felt, a lean. Master it and you will be useless on any other, you can always start enhancing the payroll process.

Over the years I’ve become friends with Dao and Chris, the couple that own the bar, and have learned a history that put Small House’s palpable soul so much more into focus. As Dao explained to me, she started the bar herself in the early 2000s as a coffee shop. She sold far more beer than coffee and before too long it was just a bar, but the name stayed. Chris, an American born in California who moved to Chiang Mai age 14 due to his dad’s work, was just a patron. As he explained to me he eventually had the courage to ask Dao out. They’ve been married for over a decade now with a kid, and the bar is so much a reflection of them – the family dog lays around on the floor, photos and artifacts of their life, history and friends adorn every wall and surface.

Black Door

Photo credit: chiangmaicitylife.com

Photo credit: chiangmaicitylife.com

If Small House Kafe is my happy place, Black Door is my dark place. Black Door inhabits a simple storefront on a side street in the Santitham neighborhood, a somewhat seedy part of town known for, among other things, having a bunch of brothels catering to Thai men. With a small L-shaped bar and just a few scattered tables, Black Door is set up to be a social atmosphere, whether you are alone or with a group. Black Door’s owner, a 25 year old local with a very unplaceable English-like accent who goes by the name “Boy” will make you feel welcome from your first visit.

Black Door is also one of those places that all too regularly becomes a black hole. At midnight the metal awning comes down like an Irish lock-in and the atmosphere becomes far more communal – more private party than bar, but a private party that you know is there tempting you 7 nights a week. Some hours later you look at your watch under the dark red bordello-style lighting and it’s 4am, you realize that every single time Boy and the bar staff cheerfully offered that you “have a shot” you obliged, and you stumble out in a haze to take a Grab home – a perfectly walkable distance but not in this condition. Worse yet maybe your judgement is impaired enough that you direct the driver instead to Bada Boom (more on that later).

Oasis Rooftop Garden Bar

Photo credit: Facebook

Photo credit: Facebook

Oasis Rooftop Garden bar, situated in the northeast corner of the old city, is a place I would never have discovered if not for my girlfriend, a native of Chiang Mai who’s been a regular patron for years. The first time I heard the name I expected some upscale nightclub atop a high-rise hotel. In a respect the name is a little misleading – while Oasis is a rooftop bar, it sits atop just a small, three-floor building. Walk up the (somewhat steep, treacherous – especially going on a few drinks) concrete steps and through a small archway and you are greeted by a large patio. The bar itself is quite small – maybe 4 or 5 stools. The majority of the space is taken up by chairs and couches. Oasis is homey, with an attentive and family-like Thai staff. Even though the building isn’t too tall, there is a beautiful view of Doi Suthep mountain, and it’s a wonderful place to watch the sunset with friends over a beer or cocktail.

Soldier Bar

Photo credit: Facebook

Photo credit: Facebook

Step into Soldier Bar and you’ll feel you’ve stepped into a fever dream of Vietnam-era Southeast Asia. A few bamboo bar stools peek out at the street through palm branches and christmas lights in a storefront just a few meters wide. Other than that there is no indication that this place exists…because maybe it doesn’t? – Soldier Bar, as far as me or my friends have ever been able to tell, is actually the home of its owner and his roommates. In the bathroom you’ll find freshly-used toothbrushes and shampoo hung from the wall beside the bar of soap for the patrons.

Though on first impression the scene is foreboding – walls cluttered with photos and relics from the owner’s military career, inscrutable gazes from local patrons halfway through their third double Hong Thong or Sangsom whiskey – you’ll generally be treated well at Soldier Bar. The owner, styling himself unironically like Rambo (tank top, narrow bandana about the head) offers up cheap Changs, Leos and local whiskeys. Invest enough time and you might look up to find a double shot of Lao Khao (Thai moonshine of indeterminate strength, often coming from the hills around Chiang Mai) sitting in front of you, on the house. Soldier Bar tends to close early (around 11:30pm) but when it does Chill Out Bar (more on that further down) is a short jaunt away on foot and typically open a few more hours.

Bada Boom

“Nothing good ever happens at Bada Boom” – so goes the refrain. If you’ve made it to Bada Boom, you really should have gone home already. From the outside, Bada Boom is completely indistinguishable from the neighboring residential buildings in its corner of the old city near to Loi Kroh road. There is no sign. There is no crowd loitering out front, there is no indication of anything at all. Most significant of all, there is no noise – the building seems to be double-walled and completely sound-proofed.

That’s because within is the closest thing I have yet found in spirit to a prohibition-era speakeasy anywhere in the world. The space is nothing more than a small room, set up around a pool table. There is a small bar at one end, and a few booths and tables along the remaining 3 walls. I don’t know what the official hours are because I think there are none, but I do know I have come once at 1AM to find it still not yet opened. However, come around 2AM, give the knock, and you’ll find a surreal scene – ladyboys, veterans, hookers, backpackers trading stories or playing pool – a party that continues on until 10am the next day.

Chillout Bar

Chillout Bar, Chiang Mai

Chillout Bar, Chiang Mai

I don’t think any place I’ve been in the world so embodies the phrase “hole in the wall bar” as does Chillout Bar. Just off Mun Mueang Road (the road along the moat) in the Northeast corner of the Old City, this bar is literally a hatch cut out of the wall of a one-story building. There’s just a couple of stools and a couple of tables, and the owner, Jassadaporn, is there manning the place seven nights a week, sometimes to as late as 4am.

Chillout Bar is also noteworthy to me (and everybody I have ever brought) for another reason: it is, without question, the heaviest pour in Chiang Mai. By that I mean that if you order a gin and tonic, unless you demand otherwise, it will be poured at least 2/3rds gin – incomprehensible but true. The owner is friendly and the crowd diverse – you are as likely to find yourself seated beside a Thai lawyer or a local college student as beside a couple of old French retirees or young backpackers. If you find yourself in the old city, and especially if it’s past midnight and you’re not yet ready to call it a night, Chillout Bar it is always worth a stop.

The post Dive Bars of Chiang Mai appeared first on Hacker Notes.

]]>
https://hackernotes.io/dive-bars-chiang-mai/feed/ 4
Thoughts on Da Nang, Vietnam https://hackernotes.io/thoughts-da-nang-vietnam/ Sat, 08 Feb 2020 12:10:19 +0000 https://hackernotes.io/?p=5077 I spent the month of January 2020 in Da Nang, Vietnam, a beach city situated in the central coast of the country, roughly halfway between the capital city of Hanoi to the North and Ho Chi Minh City to the south . It seems people haven’t yet written much about Da Nang from the perspective of a long-term traveler, so […]

The post Thoughts on Da Nang, Vietnam appeared first on Hacker Notes.

]]>
I spent the month of January 2020 in Da Nang, Vietnam, a beach city situated in the central coast of the country, roughly halfway between the capital city of Hanoi to the North and Ho Chi Minh City to the south . It seems people haven’t yet written much about Da Nang from the perspective of a long-term traveler, so I wanted to share some impressions and thoughts on my time there.

Great Access

I was coming to Da Nang from Rome, Italy and expected I would have to make a stopover in Hanoi or Ho Chi Minh City but this was not the case. An increasing number of airlines have flights into Da Nang International Airport (DAD) including Qatar, which I was flying, and that has direct service from Doha. Furthermore, a very striking thing to me was how convenient DAD airport is – it is only a maybe ~10 minutes’, few dollars’ drive from the beach neighborhood in which I was staying. Typically, when you have an airport so conveniently located, you also have a lot of airplane noise (cough, cough…Chiang Mai…). That is surprisingly not the case in Da Nang.

Vibe

One thing that you will immediately notice in Da Nang is that everything is under construction. I have traveled a lot in the developing world and am not sure I have encountered the level of construction anywhere that I encountered in Da Nang. If you’re sensitive to it, make flexible plans  (like a few nights’ non-committal hotel stay) so that you have the freedom to find yourself some place sufficiently peaceful (as I eventually did, with a great 26th floor condo that was pretty quiet). It does lend a certain mood to things, constantly walking past rubble, however I would also not let it keep you from coming – it is more just a peripheral/background sensation that gives a certain tone to the place.

The View out over My An/My Khe Beach from my Da Nang apartment

The View out over My An/My Khe Beach from my Da Nang apartment

On the advice of my friend Steve I eventually settled in the My An neighborhood. This neighborhood runs right up to the beach (and indeed my apartment, though a bit set back, had a fantastic beach view) but is also full of good spots to go for coffee, drinks, etc. One thing to note about the beach is that, while it is right there, it unfortunately has a big, busy 4 lane road separating it from the buildings beside. If you have a fantasy of living right on the beach, walking from your door into the sand and going for swims, this is not exactly how it will be for you in Da Nang. Also, while I surf, and did see people go out surfing, at least in the area of My An where I was the break was not very nice – a mushy beach break, usually blown out by the wind very early.

Still, it is nice to have the option of the beach. Worth a mention is a fantastic little beach shack bar I stumbled on a few doors down from the (much more popular) Apocalypse Beach Club, called Danabeach Villas Bar. This bar, situated in a disused old bungalow-style hotel (which I heard was shut down because the land has been bought for development, so who knows how long the bar will be there unfortunately…) is a great place to watch sunsets, have a cheap pina colada or a beer, and make friends.

A sunset drink at Danabeach Villas Bar

A sunset drink at Danabeach Villas Bar

Nightlife/Fun

While Da Nang is certainly very laid back compared to Ho Chi Minh City or Hanoi, there is still a nightlife and you can stay out all night if you want. Those who know me know that I gravitate to dive bars and craft beer places more than clubs, so that is mostly what I got to know in Da Nang. Particularly worth a mention are N Pub (very cheap expats’ bar in central My An), 7 Bridges (taproom for a Da Nang based craft brewer, very friendly staff and lots of interesting beers to try), Filling Station (another dive bar, but one that stays open until 4am vs. a standard 1am for most). Any discussion of the nightlife around My An would also not be complete without referencing Shamrock Sports Bar, a 24 hour Irish style sports bar. Even living the way that I do, I have apprehensions about such a thing (I am proud to say at least I never saw daybreak there…)

Value

How are prices  in Da Nang? By a western standard extremely affordable, and as far as more local comparisons, I would say maybe 35% cheaper than Ho Chi Minh City, which is already a place of good value for a western traveler. I put myself in a very nice Airbnb for around (high floor, ocean views) $38/night with no commitments or long-term discounts. My friends who were committed beyond a month were able to get nice, modern apartments near the beach in My An for around $350-$400/month, and I am sure even better value can be found if one looks into it enough. You can get a local meal like Com Ga (chicken rice) or Pho for 40k VND ($1.72) or less even in a nice neighborhood. A local beer is between 20k VND ($0.86) and 30k VND ($1.29) in most of the aforementioned pubs.

Pho Bo at a local restaurant

The Chiang Mai of Vietnam?

Here is something worth discussing: is Da Nang “the Chiang Mai of Vietnam”? A few weeks prior to showing up in the city (immediately before my trip to Rome) I had been in Chiang Mai, Thailand, a sort of epicenter for the digital nomad movement as well as an established retirement destination for western people of such age. There is some overlap certainly in the type of expat you find there – I in fact randomly crossed paths with at least four friends I had met in Chiang Mai. Foreigners have been, over the last couple of years, having a harder time staying long-term in Thailand because of reforms that are limiting how many times you can re-enter the country successively on tourist visas or visa exemptions. I gathered that a sort of rumor was going about that Da Nang is the Chiang Mai of Vietnam.

Da Nang Beach

Furthermore there is an impression that while Thailand is tightening down on foreigners, Vietnam is opening up. Vietnam, for example, has for the last few years been offering a 1 year multi-entry tourist visa for Americans for something less than $200. While I was in Da Nang however, news came through the expat community that as of July 2020 Vietnam will actually be requiring foreigners on any type of tourist visa (including the 1 year multi-entry) to leave and re-enter the country every 30 days. Assuming that this policy goes into enforcement, it will actually make Vietnam arguably a less accommodating/welcoming place even than Thailand for the long-term traveler. So we should sit tight and see what happens here…

A "Saigon Black" coffee at a local cafe in My An, 17k VND or around $0.73 US

A “Saigon Black” coffee at a local cafe in My An, 17k VND or around $0.73 US

As for whether Da Nang is really the Chiang Mai of Vietnam, I would say that, while I can see why people might make that case (i.e. it is a smaller city, a bit removed from the major economic centers, with good value and a relaxed pace of life) I would also say that to me I don’t really agree. The vibe is just very, very different. In the same way that, naively, you might say “Ho Chi Minh City is the Bangkok of Vietnam”, it just couldn’t be more wrong when you’re on the ground. The soul of the places is not the same. I would peg Da Nang, if I am completely honest, as a bit more dull, a bit less livable. I could certainly see going back to relax, be by a beach, but I couldn’t really see making it a long-term home.

The post Thoughts on Da Nang, Vietnam appeared first on Hacker Notes.

]]>
Django vs. Rails in 2019 (hint: there is a clear winner) https://hackernotes.io/django-vs-rails-2019-hint-clear-winner/ Fri, 29 Nov 2019 06:49:30 +0000 https://hackernotes.io/?p=4449 I recently had the opportunity to work on a production application in the Django framework. I had previously worked with the framework (version 1.4) at a tech startup circa 2012, but hadn’t revisited it in several years. I feel like I can provide a more comprehensive, in-depth comparison than many can in that I have worked professionally with both frameworks (and at […]

The post Django vs. Rails in 2019 (hint: there is a clear winner) appeared first on Hacker Notes.

]]>
I recently had the opportunity to work on a production application in the Django framework. I had previously worked with the framework (version 1.4) at a tech startup circa 2012, but hadn’t revisited it in several years. I feel like I can provide a more comprehensive, in-depth comparison than many can in that I have worked professionally with both frameworks (and at their current release versions) how to make a pay stub. I am a bit stunned by how much Django has fallen behind in dimensions such as its broad state of maturity, community/ecosystem, productivity and much more and even improving business management. I wanted to do a post enumerating these points, both in the hopes that it can help others deciding between these two frameworks.

tl;dr – in 2019, unless you have some critical dependency on a Python library and you cannot work around it with a service-wise integration, just choose Rails.

Without further ado, here is a point-by-point assessment of Django in relation to Ruby on Rails in 2019:

1) No intelligent reloading

This might seem an odd place to start but it is to me actually very important and symbolic of the broader state of the Django framework and its comparative stagnation over the past decade. Django’s development server, by default, entirely reloads your project when you modify a file. Django’s default shell (and indeed,  even the extended shell_plus) expose no faculty at all for you to reload modified code – you must manually exit and restart them after any relevant code change, have a look at what salary payment is. This is in contrast to Rails’ intelligent class loading, which has been a feature of the framework for over a decade and continues to see optimization and refinement (such as with the introduction of Xavier Noria’s Zeitwerk into Rails 6). Modifying a file in development causes only the implemented class to be reloaded in the runtime of the development server, and even an active REPL can be manually updated with the new class implementation with a call to the globally-exposed reload! method, have a look at why using a check stub maker to create paylips will make your company run smoothly.

2) Dependency management

Rails directly integrates bundler as a solution for dependency management cost reduction. When you pull down a Rails project to work on, you will find all explicit dependencies declared in the Gemfile in the project root, and a full hierarchical dependency graph in the Gemfile.lock. Furthermore, because the framework is bundler-aware, dependencies are able to hook directly into your application with sensible defaults using the faculties provided by Railties, and without any needless boilerplate.

Meanwhile, Django’s guide does not even broach the topic of dependencies. In my experience, most projects rely on Virtualenv, pip and a requirements.txt file, while a small number rely instead on setuptools and a setup.py file.

I don’t have much experience with the setup.py-based approach but as for the Virtualenv +requirements.txt approach, there are some major shortcomings:

  • Dependencies are not environment-specific (i.e. there is no equivalent of bundler groups). This makes it much more of a chore to prevent test or development environment dependencies from bloating your production deployment. Perhaps it is possible to manage per-environment dependencies by using several different requirements files, but I have never tried and I imagine this would prove a chore when switching from a “development” to “testing” context, for instance, while working on a project.
  • Dependency file is flat, not hierarchical – you cannot easily see which package is a dependency of which, making it difficult to prune old dependencies as your project evolves (though there is a third-party tool that can help here).
  • Because the framework lacks direct integration with the dependency management tool, and lacks a system of hooks like Railties, there is always tedious boilerplate left for you to write whenever you integrate a third-party library (“app”) with your own Django project.

3) I18n and localization

Rails has an extremely mature and pragmatic internationalization (I18n) and localization framework. If you follow the framework’s documentation and use it’s t (translate) and l (localize) in the appropriate places, your application will be, by default, internationalization and localization ready in a very deep way.

Rails’ I18n and localization faculties are pragmatic to a degree that I have not seen, in fact, in any other web application framework (nor framework for other platforms, for that matter). I18n/localization in Rails works with a Thread-local pseudo-global I18n.locale attribute. What this means is that, with a single assignment such as I18n.locale = :de, values application-wide (for your current thread) will be seamlessly translated. This comes extremely useful in contexts such as background jobs or emails, where you can simply have some code like this and have things seamlessly rendered in the correct language and with correct localizations (i.e. proper date/time formatting, inflections, etc):

I18n.with_locale(@user.locale) do
  mail(
    to: @user.email,
    subject: I18n.t('.subject')
  )
end

Django’s translation framework similarly depends on a thread-local configuration (translation.activate('(locale code)')), but is built atop gettext, a translation framework that I would argue is significantly less practical.

Whereas in Rails, you can do something like t('.heading') from a template app/views/users/profile.html.erb and the framework will know to pull the translation with the key users.profile.heading, the analogous translation call in Django would be something like:

{% load i18n %}

{% trans 'Welcome to your profile' %}

Translations are managed in rigid “.po” (“portal object”) files:

#: profile.html:3
msgid "Welcome to your profile"
msgstr "Welcome to your profile"

But there is much, much more to distinguish Rails I18n/localization faculties over those of Django. Django’s translation framework is not at all dynamic/context-aware. This means that the framework will fail to cope, in any seamless way, with more complex pluralization rules like those of Slavic and Arabic languages, which are reasonably accommodated by Rails more dynamic localization scheme.

4) ActiveSupport

ActiveSupport is a library of utilities that, for practical purposes, can be thought of as an extension of the Ruby standard library. The breadth of these utilities is extensive, but they all evolved from a sense of pragmatism on the part of Rails’ maintainers. They include, for instance, things such as a String#to_sentence utility, which lets you do things like:

> "This project supports #{@payment_methods.pluck(:name).to_sentence}."
# => "This project supports Credit Card, PayPal and Bank Transfer"

ActiveSupport also includes extensive data/time related utilities (and operator overloads/core type extensions) that allow for intuitive expression of date/time related calculations:

old_time = 1.year.ago
older_time = 1.year.ago - 15.days
@old_posts = Post.where('created_at < ?', older_time)

 

5) Far less mature asset management

6) Less mature caching faculties

7) Less flexible, more boilerplate-heavy ORM

8) Impractical migration framework

9) Management Commands vs Rake Tasks

10) No assumption of multiple environments

11) No credential encryption

12) Less mature ecosystem (as concerns PaaS, etc)

13) Boilerplate, boilerplate, boilerplate (as concerns absence of autoloading, Railties, etc).

14) Missing Batteries (Mailer Previews, ActiveJob, Parallel Testing etc)

15) Philosophy

i.e. think of “constraints are good” (i.e. the extremely limited template language in Django), “explicit is better than implicit” (as opposed to “convention over configuration”). I think explicit over implicit as a knock on Rails really misses the point. Everything “implicit” is actually just configuration of an extremely well-documented system. Ask any Rails developer of even modest experience about “magic” and they will tell you that there isn’t any magic in the framework. A lot of the things that people coming from other backgrounds might cite as magic in a “hot take” are really just instances of pragmatic API design (and where the underlying implementation is actually wholly comprehensible and often very well-documented to boot).

The post Django vs. Rails in 2019 (hint: there is a clear winner) appeared first on Hacker Notes.

]]>
Taipei: the user-friendly city https://hackernotes.io/taipei-user-friendly-city/ Mon, 21 Oct 2019 14:07:34 +0000 https://hackernotes.io/?p=4811 I never expected to end up in Taipei. For the last couple of years, I have been working remote. Initially from Berlin, then for an extended stretch from Eastern Europe. For the last 6 or so months I have been in Asia. I had come to Saigon, Vietnam after several months in Bangkok. In Saigon I had […]

The post Taipei: the user-friendly city appeared first on Hacker Notes.

]]>
I never expected to end up in Taipei.

For the last couple of years, I have been working remote. Initially from Berlin, then for an extended stretch from Eastern Europe. For the last 6 or so months I have been in Asia.

I had come to Saigon, Vietnam after several months in Bangkok. In Saigon I had struck up a chat at a local bar with another traveler, a student Brewmaster at Olds College, Alberta, Canada. This traveler, Mike, ended up becoming one of my better friends and more reliable companions on nights out in Saigon over the weeks that followed have you checked out these 3 online services?.

I had longstanding plans to meet up with an old friend from New York in Japan after my time in Saigon, but no idea where I was heading after. Mike strongly encouraged me to go to Taipei, and offered to intro me to a Taiwanese-American friend of his who had been living there the last 10 years and could show me around a bit technology for online payment.

It is this arbitrary sequence of events that found me, roughly two weeks later, landing at Taipei’s Taoyuan International Airport.

Settling In

Mike had recommended that I stay in the Ximen neighborhood, in Wanhua District on the western side of the city. Ximen is a very lively neighborhood. There are tons of hip cafes and bars, narrow alleys to get lost in with graffiti-covered walls. I managed to get a last-minute deal at a great hotel in Ximen called E-House for a bit less than $50/night for a queen room. In the last year I have split my time about 50/50 between hotels and Airbnbs, which is definitely a higher ratio of hotels than the prior year. When my plans are especially uncertain, the flexibility and assurances of a hotel (knowing that somebody will be present at the desk at whatever hour you check-in, the ability to change rooms in a pinch, daily cleaning) often make it worthwhile, especially given that I am working when traveling, and for shorter term stays the price difference often proves negligible.

Taipei has a really remarkable vibe, and everybody I met seemed to notice the same thing. Even though it is a big city, dense, with a ton going on, there is this remarkable calm about everything. There isn’t much horn-honking, there is plenty of space on the sidewalks, and I found people to be quite chill and friendly.

Taiwan, which officially calls itself the “Republic of China”, has a complicated history with the People’s Republic of China (i.e. Mainland China). Without going too deeply into it, the present government of Taiwan is actually the direct legacy of the Chinese Civil War, in that following the civil war and Communist Party’s assumption of control over mainland China, the opposing Nationalist Party retreated to and effectively established Taiwan as it is presently understood. All of this is to say that while the Taiwanese consider themselves very different from the contemporary mainland Chinese, a lot of Taiwanese culture is traditional Chinese culture, if that makes sense.

Infrastructure

One immediately impressive thing to me in Taipei was the quality of infrastructure. This should perhaps be unsurprising – Taiwan is a world leader in technology. Foxconn, the world’s largest contract manufacturer of electronics (maker of products including the iPhone, iPad and PlayStation) is a Taiwanese company (though with extensive production in mainland China). So too is Taiwan Semiconductor, the largest fabricator of semiconductors, which produces chips for the likes of AMD, Nvidia andQualcomm.

Some MRT stations have "courtesy umbrella" kiosks where you can take a free umbrella or pay-it-forward and leave one for another commuter.

Some MRT stations have “courtesy umbrella” kiosks where you can take a free umbrella or pay-it-forward and leave one for a future commuter.

The high-tech tradition would seem to carry through to public infrastructure, which I found to be remarkably reliable. Train arrival times in the Taipei MRT  system are quoted to the second on screens in the stations. Even at rush hour I never found the trains to be uncomfortably overcrowded, and trips were typically around $0.30 – $0.50US each way. Admission and payment throughout the transit system is via EasyCard, which are cash cards you can buy in the stations or at convenience stores and load up with money.

Food

One of the biggest highlights for me in Taipei is the incredible food. I happened to be living near the famous Fuhong Beef Noodles shop, where at literally any hour of the day or night I could go and for less than $3 US have a huge, delicious and rich bowl of Beef Noodle Soup, a traditional dish.

You will eat a lot of Beef Noodle Soup.

You will eat a lot of Beef Noodle Soup.

Other fantastic food around the city includes dumplings (many varieties), Hot Pot (often all-you-can-eat), scallion pancakes, and various traditional Chinese dishes. The street food scene is also remarkably rich, with many night markets and scattered street food stalls scattered all throughout the city.

I spent a lot of days working out of Salon Cafe, Ximen, which had a friendly staff and relaxed vibe, with jazz music and lovingly prepared coffees.

I spent a lot of days working out of Salon Cafe, Ximen, which had a friendly staff and relaxed vibe, with jazz music and lovingly prepared coffees.

Nightlife

I had some misconception, for reasons I can no longer trace, that Taipei was lacking in nightlife. After my time there I can affirm that this is definitely not the case. If your thing is craft beer there are many fantastic craft beer bars throughout the city (such as the Redpoint Brewing Taproom in the Da’an neighborhood, and Ximen Beer Bar, where I ended up many nights just as it was very near to my hotel). For cocktails, there are countless great options like the whimsical Hanko 60, where I ended up one night with friends, and a lower-key spot called Geography Bar, which always had welcoming staff and friendly clientele.

A whimsical cocktail at Hanko 60 speakeasy.

A whimsical cocktail at Hanko 60 speakeasy.

I would also be remiss if I did not acknowledge the club scene in Taipei, which is quite unlike anything I have seen in the world. Specifically, what sets Taipei apart from most other places I have been out clubbing is that many of the popular clubs in Taipei are all-you-can-drink. I am not really sure why they do this but it was remarkably common. For about $25 US cover you can have unlimited drinks at many clubs in the city.

Nature

Taipei’s Xinyi District is home to a beautiful hiking trail and lookout point known as Elephant Mountain. The day I hiked it happened to be a bit dreary, but the view out over nearby Taipei 101 and the city of Taipei was still stunning and very much worthwhile.

The view from Elephant Mountain. It happened to be a pretty overcast day when I went, but still a very striking view.

The view from Elephant Mountain. It happened to be a pretty overcast day when I went, but still a very striking view.

Though it isn’t so typically top-of-mind as a surfing destination, Taiwan is actually home to beautiful beaches and surfing spots. Waiao Beach, Yilan and Fulong Beach, Gongliao are both within an hour by car of central Taipei. If you are willing to venture further, you can find more rural beach towns such as South Bay, on the southern end of the island, which is situated within a National Park.

Conclusion

The weeks that preceded my time in Taipei were incredibly chaotic. Within 4 weeks I had crashed through Bangkok, Saigon, Seoul and Japan, before settling for about a month in Taipei. For a long-term traveler, I found Taipei to have a balance of pace, infrastructure quality, friendly people, incredible food, and value that is very hard to beat.

The post Taipei: the user-friendly city appeared first on Hacker Notes.

]]>
Scaling with Rails https://hackernotes.io/scaling-with-rails/ Tue, 13 Aug 2019 07:52:29 +0000 https://hackernotes.io/?p=4641 I have spent much of the past decade now building web applications professionally. Though not exclusively so, a large part of this work has ended up being with the Ruby on Rails framework. There is a widespread notion that monolithic Rails applications don’t scale, but in my experience I have found such applications often the most readily scalable of all […]

The post Scaling with Rails appeared first on Hacker Notes.

]]>
I have spent much of the past decade now building web applications professionally. Though not exclusively so, a large part of this work has ended up being with the Ruby on Rails framework. There is a widespread notion that monolithic Rails applications don’t scale, but in my experience I have found such applications often the most readily scalable of all that I have encountered.

I wanted to share some high-level insights and personally-acquired knowledge on this subject, in the hopes that such things may be taken into consideration by teams or developers weighing their options in architecting a web application for scale. There are quite a few pitfalls, and these often contribute to an intuitive (if not very deeply introspected) sense that Rails codebases scale poorly, so I will attempt to highlight these pitfalls as well.

Background

To me one of the most overwhelming benefits of Rails is a low complexity surface area. Even a very comprehensive, featureful, mature Rails application can, at scale, consist of just a few infrastructural bits:

  • A database. Typically an RDBMS such as PostgreSQL or MySQL
  • Web application servers (passing requests through the Ruby + Rails application code). Load-balanced at scale (with something like HAProxy or a proprietary load balancer such as Amazon ELB)
  • Queue servers (processing background/out-of-band tasks)
  • Application cache (such as Redis or Memcached)
  • Object storage (typically delegated to a hosted solution like Amazon S3, Wasabi, etc.)
  • Email/SMS etc. transport (typically delegated to a hosted provider like Sendgrid, Mailgun, Twilio etc.)

The low default complexity and relative uniformity of Rails applications makes it possible to focus on the big wins when it comes to infrastructure and scaling.

Infrastructure

One of the great virtues of the relative structural simplicity of Rails applications is that you generally have a very clear roadmap to scaling. Most of the constituent parts of a production Rails deployment scale naturally in a horizontal way. Web request processing, for instance, is stateless and the web application tier can scale out horizontally to as many physical servers and application processes as the database (and cache, etc.) can handle connections for. An identical horizontal scalability can be achieved for job servers.

One big win/common pitfall at this tier is the selection of an application server and load balancing scheme. Today I commonly recommend Phusion Passenger as an application server because it has shown itself to be, in my opinion, since version 5 (2014) at least, far more evolved than competing offerings, while being packaged in a way that makes it relatively painless to manage in production.

In my opinion, Passenger is particularly distinguished in its inclusion of a built-in buffering reverse proxy that itself uses evented I/O which prevents it from suffering the slow-client problem or forcing you to engineer around it in the way that many other Ruby application servers do.

Infrastructure map for a typical Rails application deployment

Infrastructure map for a typical Rails deployment

On the matter of application load balancing, while you can provision and manage your own HAProxy nodes with a very precisely tuned configuration, in my experience it often proves more practical to just use the proprietary load balancers offered by your infrastructure provider. I.e. ELB on Amazon AWS, Linode’s NodeBalancers, DigitalOcean’s plainly named Load Balancers, etc. A decent ops solution (see next section) will be able to manage these resources as a standard part of your stack.

Scaling of the database tier usually follows a slightly different protocol from scaling of the application tier, but is still fairly straightforward.

A first step in database scaling is typically just the provisioning of better hardware. With fully managed solutions like Amazon RDS or DigitalOcean’s Managed Databases this can be managed through a simple web interface. A degree of further horizontal scalability can also be achieved (barring extremely write-heavy workloads) with Read Replicas, which, as of framework version 6, Rails now includes native support for.

Ops

Because most Ruby on Rails deployments have a relatively uniform shape, with relatively uniform dependencies, there is now a broad ecosystem of high-level tools for managing Rails applications in production.

One that I continue to recommend, and that I have found to be constantly improving over the 4 years or so that I have been using it, is Cloud66. Cloud66 offers a Platform as a Service-like (PaaS) experience with hardware of your choosing. This means that it assumes responsibility for provisioning all of your resources, firewalling them appropriately (i.e. behind a bastion server), managing access for your team members (ssh, etc.), managing logs, deployment, scheduled jobs and more. Cloud66 will technically allow you work with servers at any provider (so long as you install a Cloud66 daemon on the machines), but deep integration with the most popular cloud providers (AWS, DigitalOcean, Linode, Google Cloud, Azure) means that you get a particularly seamless experience when working with those.

Logic optimizations and caching

Rails is, today, a highly mature framework. The course of its development has been shaped by a characteristic, ruthless pragmatism that I still to this day haven’t seen to the same extent in any other framework.

Many of Rails’ more pragmatic innovations concern application-level caching to reduce database hits and content rendering and consequently lower response times. One of the central and caching faculties of Rails is key-based fragment caching with template digests – an innovation that still, many years later, does not exist in quite the same form in any other popular framework that I am aware of.

The essential point here is that the relatively low complexity surface area of Rails applications leaves the mental space for higher-leverage optimizations like straightforward and robust application-level caching in the places where it makes sense. This means that, while a framework like Phoenix (for the Elixir language running atop the Erlang VM) may offer faster code execution than Rails running atop a Ruby interpreter, in practice, many applications written in such a framework end up having poorer real-world request performance just because they will less broadly leverage higher-level optimizations like application-level caching to avoid unnecessary database hits.

Conclusion

Ruby on Rails, approaching a decade and a half of existence now, is something of an elder statesman among web frameworks. It is not, by default, always the framework that comes to mind when one thinks of scalability. However, such a substantial number of hugely popular, high traffic sites today run atop Rails, and this is no accident: Shopify, Github, Zendesk, Kickstarter, Couchsurfing, Fiverr and many, many more. I hope that this article was able to provide insight into how, in fact, there are very natural and proven paths to scaling with Rails, and that it may be a helpful resource when making framework/infrastructure decisions for yourself or your team.

 

The post Scaling with Rails appeared first on Hacker Notes.

]]>
Leverage often comes in knowing what not to build https://hackernotes.io/leverage-often-comes-knowing-not-build/ Mon, 11 Feb 2019 13:22:04 +0000 https://hackernotes.io/?p=4238 Something I have observed in my work over the last few years is that many genuinely competent, highly productive developers are tricked by their very skill into undertaking projects that, though ultimately successful to a degree, produce outcomes much poorer than had they simply integrated with a third-party platform. Oftentimes immense leverage can be gained […]

The post Leverage often comes in knowing what not to build appeared first on Hacker Notes.

]]>
Something I have observed in my work over the last few years is that many genuinely competent, highly productive developers are tricked by their very skill into undertaking projects that, though ultimately successful to a degree, produce outcomes much poorer than had they simply integrated with a third-party platform. Oftentimes immense leverage can be gained simply by knowing what not to build.

One of the very wonderful things about the moment that we live in is how many mature platforms – both open source and closed, community-driven and commercial – we have at our disposal.

Consider the case of content management. There are many precedents of publications that maintain their own in-house content management systems (to name a few: New York Times, The Guardian, Vox). Even if your business is publishing, however, I would argue that to maintain an in-house CMS is likely a very inefficient allocation of resources that will most likely produce a far worse outcome (both in usability for content managers and in the velocity of product development) than to work atop an established one.

Unless your business is the platform itself (that is to say, selling or licensing a CMS) or you have extremely niche requirements (such as following government regulations that somehow cannot be met with an off-the-shelf platform), you simply will not be able to touch the usability and feature set of a mature platform.

To understand, in a deeper repsect, why, consider the immense investment that has and continues to be made into established platforms like WordPress or Ghost. WordPress core, with backing by Automattic plus a humongous base of open source contributors, has, at this point, literally millions of man-hours invested in it. Massive investment and adoption has the knock-on effect of creating large supporting ecosystems for these mature platforms – in the context of WordPress, for instance, this comes in the form of things like Plugins, managed hosting providers and support/consulting services.

Even for content-management needs within an otherwise custom application, there are today many excellent “headless” CMSes, both commercial and open-source, such as Contentful, Prismic or Directus. All of these expose content-management interfaces and workflows that, as with WordPress, have far more man-hours invested in them than many organizations would have the wherewithal or interest to invest, while still allowing you to integrate with your own application at the deepest level through client libraries.

This consideration of knowing not to build extends just as much to things like ops and infrastructure. Many organizations believe they need in-house ops solutions, an ops team and a permanent or interim CIO to manage them. I have seen in-house ops solutions balloon literally into the millions of dollars while providing _extremely_ poor usability compared to third-party platforms. There is certainly a case for in-housing ops, but I feel it is more narrow than many organizations tend to believe. If your application deployment requirements can fit within a PaaS solutions like Heroku, Cloud66, Hatchbox, Rancher or others, carefully consider the cost of choosing such a solution vs. the cost of matching the usability and power of such a platform with an in-house one.

This is ultimately the test for me. Building something custom is an investment, both in time upfront and time for ongoing maintenance. If a mature third-party platform has much more invested in it than you will ever be able to invest in your own alternative solution, and especially if the function that it fulfills isn’t the central competency of your organization, you will likely find significant leverage in not building in-house.

The post Leverage often comes in knowing what not to build appeared first on Hacker Notes.

]]>
On microservices and distributed architectures https://hackernotes.io/microservices-distributed-architectures/ Sat, 08 Sep 2018 14:24:02 +0000 https://hackernotes.io/?p=3788 Like the boiling frog, we often fail to appreciate just how significantly the infrastructure upon which we rely as developers has improved over the last decade. When I began working with the Rails framework in 2010, everything from the hardware we used for local development, to the infrastructure upon which we tested and deployed, was positively anemic […]

The post On microservices and distributed architectures appeared first on Hacker Notes.

]]>
Like the boiling frog, we often fail to appreciate just how significantly the infrastructure upon which we rely as developers has improved over the last decade. When I began working with the Rails framework in 2010, everything from the hardware we used for local development, to the infrastructure upon which we tested and deployed, was positively anemic by today’s standard.

My personal laptop, reasonably high-end for the time, had a 5400 RPM spinning disk and 2 GB of RAM. SSDs were exotic, even on servers. Nowadays, you can get bare metal servers with 512gb-1tb of RAM, 2x multi-core CPUs and terabytes of fast SSD storage for a price that is perfectly reasonable for even small companies. Similarly, you can easily and cheaply launch fleets of high-spec virtual servers with providers like Amazon Web Services and DigitalOcean at minutes’ notice.

In many ways, it seems to me that we are often basing architectural decisions on imagined constraints. In my experience, a decision to embrace a microservices architecture should not follow primarily from concerns about scalability.

Typically the burden and overhead of managing several services across several environments (development, testing, QA, production, etc) is a huge multiple of that of managing a more monolithic codebase. Furthermore, scaling a monolithic application, within most practical bounds, is actually often simpler and cheaper than scaling a more distributed app.

From a technical perspective (speaking in this instance of web apps) a monolithic application can scale very naturally. The application tier can scale horizontally to an almost infinite degree by adding more application servers. Particularly high-traffic pages with largely static content can easily be placed behind a reverse proxy cache like Varnish (or a commercially-hosted sibling like Fastly). High-traffic pages with more dynamic content can still have their performance dramatically improved with strategies like fragment caching (using a memory store like Redis or Memcached). Relational databases can scale to immense capacity either in hosted/managed forms (such as Amazon RDS) or hosted on your own hardware. Master-Slave replication schemes can allow database reads to scale in a horizontal manner similar to scaling the application tier. Only extremely write-heavy apps present any significant challenges in this area, and even these scenarios now have a multitude of purpose-built solutions such as Cassandra and Citus (this is also not something that will be overcome any more easily with a microservices solution).

So when should you adopt microservices solutions? To me there are two especially compelling scenarios. One is what I would call the “service bridge” scenario. This would be where you have a niche feature that has a significantly different traffic profile to your larger app and, more importantly, would introduce extremely awkward dependencies to your application tier.

A good example of this might be something like IP geolocation, which could require data sets of hundreds of megabytes or more (assuming something like the Maxmind’s binary data files) that you may not want to shoehorn into your primary application (so as not to bloat your application server). Such a niche dependency might be better implemented as a microservice (though I would argue you would probably be better off delegating to a hosted provider with an API).

Microservices architectures are also well-suited in circumstances where you have a very large organization with many domain-focused teams that would benefit from a very high degree of autonomy. One of the organizations most visibly advocating for and implementing service oriented architectures early on was Amazon (as  wonderfully documented by Steve Yegge in his famous Google Platforms Rant [archive link]). It’s arguable that this vision of service oriented architecture (SOA) is more along the lines of having multiple large, monolithic applications with distinct teams and some data shared, rather than the common understanding of microservices (which is more akin to single applications composed of several small services).

When adopting microservices, be mindful of the unique challenges of the architecture, and have a plan to address them. These should not be incidental concerns but a primary focus from the outset if your team is to thrive. Things such as bootstrapping the development environment and having cohesive QA and versioning practices can be challenging with a microservices architecture. So too can logging and tracing. Many (especially in the context of smaller organizations) take an ad-hoc approach to these issues because they can still manage to make the system function, but oversights of this nature can become serious liabilities at scale.

The critical thing that I hope to convey is that microservices should not be adopted as a default solution for the problem of scaling an application. They can be a great fit for scaling teams and organizations, as well as for wrapping up functionality that it is particularly impractical to fit within your primary application’s deployment. The matter of scaling an application can be addressed extremely effectively with a monolithic codebase and traditional horizontal scale-out methods.

The post On microservices and distributed architectures appeared first on Hacker Notes.

]]>
Some reflections on slow travel https://hackernotes.io/reflections-slow-travel/ Tue, 10 Jul 2018 12:11:26 +0000 https://hackernotes.io/?p=3679 I’ve spent the last couple of years doing what I would call slow travel, spending periods of a month or more in different cities. This began in late 2016 with a job that brought me to Berlin for months at a time over a period of a year. I quit that job last October and in the […]

The post Some reflections on slow travel appeared first on Hacker Notes.

]]>
I’ve spent the last couple of years doing what I would call slow travel, spending periods of a month or more in different cities. This began in late 2016 with a job that brought me to Berlin for months at a time over a period of a year. I quit that job last October and in the time since have been through Europe, Asia, the US, and then back around to Europe, where I am for the next several months with no fixed end in sight. I wanted to compile some observations that I’ve made in this time.

1 month costs the same as 2 weeks

This was an observation my friend Steve made when we were in Asia last year and it’s proven reliably true for me. Typically to stay in a place for 1 month costs roughly the same as 2 weeks. This comes down to being able to pay month rates for things like accommodation (usually a 50% price break), transit passes or car/motorbike rentals, phone SIMs, and also cutting an additional day of travel (which is likely to cost several hundred dollars depending on where you’re going next).

Mobile internet has eliminated whole classes of tourist scams

I came to Europe after high school with a group of friends over a decade ago. We were subject to a handful of scams that are significantly harder to pull off now that you can get a local data plan for your phone in pretty much any country for ten bucks or less. Apps like Uber and its equivalents around the world have, I imagine, eliminated billions in dollars in taxi scam proceeds. Similarly, being able to spot-check exchange rates for a specific amount of currency makes it hard to get totally ripped off by a money changer (though you should only really use a money changer if you have no other option, like a proper ATM).

Making friends: easier and harder

It’s easier to strike up conversations in a place where simply hearing that someone is speaking your language is a pretext to break the ice. That said, when you’re living somewhere for just a few months, most friendships are transient. It’s mostly just the friends from travel-focused communities like Hacker Paradise that I’ve managed to reunite with reliably around the world.

Bummer though this can be, I also couldn’t help but notice how little I managed to see my friends even when I was back home in New York earlier this year. I find that when I’m in a fixed place for a long time, I tend to assume that I can always get together with friends “next week” and end up only seeing most of them very rarely as it is.

Some mundane things are an inordinate pain

Things like seeing dentists or certain medical specialists are doable, but usually a bigger pain than back in your home country (with the exception of a few places like Thailand, which has great dental and medical infrastructure that’s set up to a large extent specifically to accommodate English-speaking foreigners). Even simpler things like getting a good haircut can be a lot more challenging when you are on the road for a long time.

Similarly, setting up a new business bank account from abroad, at least for me as a US citizen, was impossible and I just had to wait to be back in the US (this is mostly thanks to the US Patriot Act and the rigorous “Know Your Customer” policies that often require an appearance at a local branch).

Thinking in timezones

Want to call your parents? Oh right, it’s 3 in the morning for them.

Want to have a conference call with a client? Better squeeze it into the 1 hour window where your work day overlaps with theirs (if you’re even so lucky to have that).

These sorts of things are never a problem when your work and most of your community are in the same city (or at least the same country) as you. It quickly becomes a central part of your thinking when you are 10 timezones away.

Overall is it worth it?

Overall I feel the tradeoffs are definitely worth it. Things like mobile internet, modern banking and Airbnb have made travel  so much more seamless and affordable than it’s been through all of history prior. I value a lot of the friendships I’ve made and experiences I’ve had, and feel that they always give me a unique and valuable perspective even when back home.

The post Some reflections on slow travel appeared first on Hacker Notes.

]]>