• Singapore

    06 November 2019

    I had the chance to go to Singapore twice recently. The first time was in June for one week, and the second time in the last two weeks. It was for work, but all in all, I still had almost 3 full week-ends to discover the city properly.

    Singapore is really incredible. It's full of surprises, with gigantic skyscrapers, mind-blowing structures and some ancient places hidden inside the districts (although not as frequently as what you can find in Japan, for example).

    It mixes many asian cultures. The official language is English, but many others are spoken everywhere (chinese, indian, malay, indonesian, etc.). Food is available in abundance and diversity1. The city is really busy during the day (a lot less at night in my opinion), and everything seems to change quite often (eg. governement and companies are not afraid to tear down a building to build another one 10 years later). Men presence is omnipresent: new lands are created on the sea, and nature is tightly contained. It's fascinating, even though the country is an environmental aberration (overuse of air conditioning, for example).

    There's no season, and it's always the same weather: 28-32°C (probably around 40°C felt), warm, extremely humid, and cloudy with occasional rains or thunderstorms. Even at night (which starts around 19:30), it will still be warm (just 2-3°C cooler if you are lucky). You could be in short and t-shirt all year, and if you stay 30 min outside, you'll inevitably sweat.

    There are tunnels and malls everywhere, so if you want to avoid the heat, you just have to go inside a building to cool down2, "thanks to" the overabondance of AC3.

    Finally, Singapore is really, really, safe. As a man, I don't feel unsafe most of the time, but still, you can feel the difference there. It can be 3:00 at night and you'll never feel threatened. You can forget something and go back one day later and find it again. It's when you go back home that you can really grasp how nice it is to walk so peacefully.


    • Foodcourts (gathering of stalls serving a few different meals each) are everywhere. Some of them can be a bit dodgy — you will have a rating on each stall, from C to A. From what I've understood, even a A is not necessarily clean. However, I never got sick (but I never tried a C either).
    • Grab a tourist SIM at the airport (you'll need your passport as a foreigner). For a cheap 12 SGD (~8 EUR), you'll get 100GB of data for 7 days. I recommend the M1 plans - for iPhone users, you can also get one as an eSim.
    • You can manage without cash, but still, I would recommend to withdraw 20-40 SGD for a week to eat in the cheap foodcourts (many of them don't accept credit cards). As a Singaporean, I don't think it's as necessary thanks to other types of payments (like Nets), but for a tourist, you'll find yourself blocked if you don't have a little bit of cash. This is a surprise, because there are so many payment methods available everywhere.
    • You don't need to buy city transport tickets (subway or bus). Just use your contactless credit card at the entries and exits, and you'll be debited at the end of the month (or week, I don't really know) automatically. This is so handy.
    • Taxis are cheap. Going from the airport to the city center is like 20 SGD (14 EUR). In some places, you'll find one really easily, but it's not always the case at certain moments of the day. There are some applications to do that, but it seemed a bit of a pain to use as a foreigner.
    • Restaurants don't show the final prices in the menus. You'll have to add some taxes at the end (I would say around 15%-20%). I'm not sure it's everywhere, but it happens often.
    • I never tipped for anything. I didn't feel like I was supposed to. Which is nice4.
    • Meals can vary a lot in price. In the foodcourts, you can usually find something around 4 SGD (2.5 EUR). In "normal" restaurants, it's more around 15-25 SGD. But it can also be way higher.
    • The Singaporean Dollar is very interesting for us Europeans (1 SGD is around 0.66 EUR). It reduces the costs significantly at the time of this writing. Life is not cheap in Singapore, so this helps.
    • Buy some Tiger Balms. You can find the white and red for 3-5 SGD (2-3 EUR) each. Which is 4-5 times cheaper than in France.


    Some places I went to:

    • Marina Bay Sands: the 3-towers skyscraper with a "boat" at the top, and probably the most famous building in Singapore. I went to "Cé La Vi" rooftop, which has a nice view on Gardens By The Bay. Go to the mall nearby (The Shoppe at Marina Bay Sands) to climb to the Skydeck and watch the light show during the evening. The ArtScience Museum is a pretty building too.
    • Buddha Tooth Relic Temple: a brand new Buddhist temple that does not look new. The interior is really nice, and there's an interesting museum inside.
    • Chinatown: very nice neighbourhood with lots of restaurants, close to the previous temple.
    • Thian Hock Keng Temple: this temple is surrounded by skyscrapers in a moody district to walk in.
    • Gardens By The Bay: a park near the CBD, with artificial supertrees (the skyway at the top of the tree gives a nice view around) and two domes to visit. I really love this place. It's unique. There's also a great foodcourt in the park called "Satay By The Bay".
    • Jewel: it's an artificial park in the center of the airport. They built a huge fountain coming from the ceiling… it's crazy and superb at the same time.
    • Zoo: I wouldn't recommend this. My trip and safaris in Tanzania has probably destroyed any interest I could have in a zoo.
    • Haw Par Villa: it's a bit outside the city center. It was designed by the family who invented the Tiger Balm onguent. Creepy as hell5, but worth a visit.
    • Botanic Gardens: a big park loved by Singopereans and families. It's ok.
    • Southern Ridges: a long walk in the south of the city. I started from Kent Ridges until the Harbourfront MRT station. The section between Kent Ridges to Alexandra Arch is boring. The part after Henderson Waves (to the MRT station) is not interesting either. But from Alexandra Arch (included) and Henderson Waves (included), it's really great.
    • CBD and Lau Pau Sat: a famous foodcourt in the CBD (Central Business District), surrounded by high towers and business(wo)men.
    • 1-Altitude: one of the highest tower with a rooftop. Panoramic view of Singapore.

    There are many other places I still need to do (Little India, Pulau Ubin, a few temples, MacRichie, etc.). And I still didn't try a Kaya toast breakfast… That will be for another time!

    1. Just try a Chicken Rice or black or white Chai Tow Kway (Carrot Cake) if you want something "typical".

    2. In an interesting way, I would compare the city to Montréal during the winter - you can navigate almost exclusively in man-built structure to avoid the harsh weather, but in Singapore, it will be from the heat, not the cold and snow. And all year, not just the winter.

    3. It often happens that it will be too cold inside buildings.

      It's also probably one of the reasons behind the economical success of the country:

      ITV: Anything else besides multicultural tolerance that enabled Singapore's success?

      Lee Kuan Yew: Air conditioning. Air conditioning was a most important invention for us, perhaps one of the signal inventions of history. It changed the nature of civilization by making development possible in the tropics.

      Without air conditioning you can work only in the cool early-morning hours or at dusk. The first thing I did upon becoming prime minister was to install air conditioners in buildings where the civil service worked. This was key to public efficiency.

    4. Tipping is such a stupid custom. The sole purpose is to not pay the employees correctly by default. Include the cost of the salaries in the f* price, and boom, done. Period.

    5. There's actually a Hell Museum inside, btw.

  • Nice, Clear and… Secure

    13 October 2019

    Federico Viticci:

    So security, obviously, and authentication, these are complicated topics, and they are complicated to engineer, they are complicated to explain. But I think, for security to be effective, and maybe this sounds a little too simplistic but bear with me.

    For security to be effective, it needs to be used, and for good security practices to be used, they need to be nice, they need to be elegant, they need to be clear.


    If you are a security engineer, you are gonna say "who cares about being nice, it needs to be secure", yes! It also needs to be nice! […] You need to understand that being nice is just as important as being secure, because if it's not a nice experience, people are just not gonna care and they are not gonna use it, and they are just gonna click "OK" and they are not gonna know what it means. So, is it really more secure… if it's not nice?

  • Software Disenchantment

    29 September 2019

    Nikita in “Software disenchantment”:

    So everything is just a pile of barely working code added on top of previously written barely working code. It keeps growing in size and complexity, diminishing any chance for a change.

    To have a healthy ecosystem you need to go back and revisit. You need to occasionally throw stuff away and replace it with better stuff.

    See also: “The Sad State Of Web App Deployment” and “Something Slightly Less Terrible”.

    I think the article is a bit short-sighted, and even wrong on some points: there's a difference between today's software and the one from 10 or 15 years ago — we do have progress. But the overall sentiment is fundamentally correct.

    Something is broken, and that's probably because we are still using code to build software.

    There's also a slight contradiction when he says we need to delete code, but still need to be able to run things from twenty years ago. If we were more thoughtful with what we build, it could be possible, but to keep a sane and manageable codebase in our current world, we need to accept that we will lose compatibility and devices over time.1

    That is not engineering. That’s just lazy programming. Engineering is understanding performance, structure, limits of what you build, deeply. Combining poorly written stuff with more poorly written stuff goes strictly against that. To progress, we need to understand what and why are we doing.

    I'm also guilty of that. Look, this website uses Gatsby to generate a few static pages, and this requires 242M of dependencies to build it (not run it, hopefully).

    However, the result is extremely fast and satisfying for the user, and the developer experience is top-notch, at the expense of an increase in size of the exported bundle on initial (and uncached) load. Is this a reasonable tradeoff?

    At the end:

    Business won’t care. Neither will users. They are only learned to expect what we can provide. We (engineers) say every Android app takes 350 MB? Ok, they’ll live with that. We say we can’t give them smooth scrolling? Ok, they’ll live with a phone that stutter. We say “if it doesn’t work, reboot”? They’ll reboot. After all, they have no choice.

    There’s no competition either. Everybody is building the same slow, bloated, unreliable products. Occasional jump forward in quality does bring competitive advantage (iPhone/iOS vs other smartphones, Chrome vs other browsers) and forces everybody to regroup, but not for long.

    So it’s our mission as engineers to show the world what’s possible with today’s computers in terms of performance, reliability, quality, usability. If we care, people will learn. And there’s nobody but us to show them that it’s very much possible. If only we care.

    On this, I don't completely agree. Yes, in general, people are mostly stuck with what we provide, but users are way too forgiving, and most of the time, don't even see the quality problem2 — only a fraction perceives it.3 Even engineers working on products don't necessarily see that something's wrong. How many engineers don't care about design, visual consistency, coherence, and speed, for example?4 How many don't see that their users are struggling?

    But there's a choice to be made by users: choose carefully, invest and learn, accept to spend a bit more on something better and more durable, change less often, and don't restrict yourself to the most ugly and cheap solution all the time, just because that was the first and easy choice.

    1. That's a shame and such a waste, though. I don't know if we can do better with our current tools.

    2. Case in point: Windows is still a complete mess — the average bar of software quality on this platform is abysmal, and most people are completely okay with that — they don't even care. The only thing that raised the bar on Windows is Electron apps, and these came with their own set of tradeoffs, and are almost universally considered as subpar and second-tier citizens on other OSes. It's a vicious cycle: if the platform owner doesn't care, the developers won't care, thus the users too.

    3. This, though, poses another question: should we care about high quality if it doesn't matter for 80% of the users? I do think we should and I'm happy we still have craftsmanship in this world, but maybe it's only us, designers and nerds, that spend too much time pondering about that.

    4. And it's a bit easy to say this without knowing the business constraints. Our society pushes for fast at the expense of doing things right and correctly — by taking the time. This gives us progress at an incredible and ruthless pace, but also a ton of waste.