Autumn in London, Stockholm’s Nordic charm and the independence dilemma in Catalunya

Last week has been pretty eventful with conferences & travel.

First, I got to spend some time in London on the weekend. It was nice to be home and not travelling for once. After travelling all around, I now feel like a tourist coming back to London and as a result, I get to plan my time much better and I’ve been enjoying London more lately. A good side effect of travel is the appreciation of your own city, I suppose 🙂

One of the things that I truly love about London is the amazing parks. I don’t know any other big city with some much green space. When I first moved to London, I chose to live in Greenwich and the Greenwich park played a big part in that decision. It also felt like an interesting place with the Prime Meridian and the Royal Observatory. I’m still in Greenwich, so I must have made the right decision.

I hadn’t been to the Greenwich park lately, so I decided to pay a visit with a good friend. The park was beautiful and peaceful, as it always is. The changing colours of the leaves reminded me that we are unmistakably in autumn.

A post shared by Mete Atamel (@meteatamel) on

I also visited Regent’s Park, another great park in London with another friend. I always visit this park at least once in the summer to see the fantastic rose garden. This time around, there were no roses left.

Two parks in one weekend got me ready for the busy week ahead. On Monday, I flew to Stockholm for Google Cloud Summit. Back in February 2016, Stockholm was the first city I travelled to for a conference as a Googler, so it’s kind of special for me. My co-worker, Ray, took me there for a conference called JFokus. At the time, I had no idea about JFokus but it’s one of the best Java and Software Engineering conferences in Europe. I applied to speak at JFokus in 2018, who knows, maybe I’ll get to visit again.

The Google Cloud Summit was on Tuesday. It was in a big waterfront conference hall in downtown. This time I wasn’t speaking but just helping with the Kubernetes booth and demo. It was nice to enjoy a conference once without the stress of a talk.

IMG_20171003_112530-01

I also had a very nice surprise in Stockholm. Whenever I visit a place, I usually try to ping people I know in that place. This time I pinged Jacob, an ex-coworker of mine from Skype, who is from Sweden but he now lives in Thailand. I had zero hope that he’d be around but turns out, he was visiting Sweden for a few days and he happened to be in town! We ended up meeting after probably 3 years, had a drink and talked about the good old Skype days.

A post shared by Mete Atamel (@meteatamel) on

On Wednesday, I was back in London and I was due to speak at IPExpo Europe. It was at Excel, one of the biggest conference halls of London. I love visiting Excel because it’s literally across the Thames river from my flat, so very close to me. Better yet, I get to take the Emirates Cable Car from my side of the river to the other side where Excel is 🙂 The views of Greenwich, Docklands and Canary Wharf from the cable car never get old.

IMG_20171004_132638-01IMG_20171004_162414-01

IPExpo was a big conference with a unique setup. It was pretty much a big technology fair with lots of booths from different companies. The talks happened in the big expo area out in the open. People in my talk had to wear headsets to hear me because there was a lot of background noise from hundreds of people around. To be honest, it was quite distracting and challenging for me to speak in an open area with all the background noise. I also had only 30 minutes for my talk, but in the end, I think I did a good job.

IMG_20171004_160831
I was in the office on Thursday after a couple of weeks but it was only for one day. On Friday, I flew to one of my favorite cities in Europe: Barcelona. This was my third time in Barcelona but I can visit this city many more times. The city has a good vibe, friendly people, amazing food and the weather is always nicer than London! This Barcelona song captures my mood every time I go there.

When I arrived to Barcelona, it was already late afternoon and I was starving, so I visited my favorite tapas place: Maitea. This is a small tapas place that I discovered when I first visited Barcelona 5 years ago. They have amazing tapas and my favourite Pimientos did not disappoint.

IMG_20171006_165006-02

On Saturday, I spoke at Polycon Conference. Polycon is a mid-size software conference. It does not have a strong theme. There were talks on different kinds of topics and programming languages and they had workshops in the afternoon. I had the first talk of the day which is always nice. I talked about containers, Kubernetes and Google Cloud. The good food and the 8 hours of sleep the day before definitely helped me to deliver a good relaxed talk and I got feedback from attendees afterwards.

IMG_20171007_091521

After the conference, I got to explore Barcelona more. The weather was good, so I walked all over the city. When I got tired, I got to the beach and had a couple of drinks on the beach.

A post shared by Mete Atamel (@meteatamel) on

Like Stockholm, Barcelona had a nice surprise for me in store. Sevki, a friend whom I met in my first visit to Stockholm back in 2016, saw my status on Facebook and messaged me. He apparently moved from Stockholm and now lives in Barcelona and asked if I wanted to have a drink. We ended up having not one but many drinks in the end. It was nice to catch up with him.

Sunday, I had a little more time to walk around the city before my flight. There were demonstrations all over the city about the Catalan independence referandum. This time, pro-Spain and pro-European Union people were demonstrating against independence. I was amazed how many people were out in the streets with Spanish and Catalan flags.

A post shared by Mete Atamel (@meteatamel) on

It was also good to see the other side of the story. I was under the impression that every Catalan wanted independence but the huge number of people in the streets against independence showed me that it’s actually not that clear cut.

I wrapped up my Barcelona trip with a visit to the beach and of course to The Sagrada Familia.

A post shared by Mete Atamel (@meteatamel) on

Wow, this was a much longer post than I expected but I guess it’s a sign of a good week with 3 conferences in 3 great cities and 2 unexpected friends…

Advertisements

Istanbul: The city where the East and the West meets

Last year, I started sharing some of my travel pictures on Instagram. It’s been always on my mind to talk about my travels in a longer form via my blog but life has been busy (excuses, excuses!) and I never got around to it, until now 🙂 I don’t know how long this will last or how consistent I will be but it’s my intention to talk about places I visit, conferences I attend on my blog once in a while in order to inspire others to travel and learn.

With that, I want to talk about my latest travel to the great city of Istanbul last week. Istanbul has a special place in my heart because it’s the first big city I ever visited as a kid. I was born and raised in Nicosia, Cyprus. Nicosia is now a mid-size city but when I was growing up, it was quite small and felt like a town rather than a city. My parents took me to Istanbul when I was probably around 10 years old and I remember how amazed I was with the sheer size and complexity of Istanbul.

Since then, I visited Istanbul many times as a tourist. It’s a great city with rich history, fantastic shopping and one of the food capitals of the world. It sits on two continents and it’s a place where the East and the West comes together in a unique way. I don’t know why but food in Istanbul (and Turkish cuisine in general) is so under-rated. In every corner, every street, there is some kind of food in Istanbul and usually, that it is very very good. The Turkish cuisine is so diverse, colourful and it’s so much more than the usual kebab/doner that people think about.

This time, my main reason to be in Istanbul was for Cloud Onboard, a full day training for Google Cloud. Normally, I don’t get involved in Cloud Onboard trainings but I wanted to help with this one because I can speak Turkish (Cypriot dialect of Turkish to be precise) and we thought that it’d be a good idea to have a Turkish speaker as a co-instructor for the course.

The class was on Tuesday but I arrived on the weekend to spend time with friends in Istanbul. I met with guys from Google Developer Group in Istanbul for drinks in Besiktas. I first met these guys at DevFest Ukraine in Lviv a year ago and since then, we’ve been in touch whenever I visit Istanbul.

On Saturday, I spent the day as a tourist. I went to sites that I first went 20 years ago as a kid such as Agia Sophia museum, The Blue Mosque, The Grand Bazaar. Then I took the ferry from Sirkeci to Uskudar and watched the sea gulls follow the ferry to Uskudar. I love ferries in Istanbul, they are quick, cheap and they provide a little escape from the craziness of the city. I met with a long time high school friend for dinner in a traditional Turkish meze place which was nice.

A post shared by Mete Atamel (@meteatamel) on

On Sunday, my mum and sister flew from Cyprus (which is only 1.5 hour flight away) so we could spend some time together. We ended up taking a Bosphorus cruise tour that I highly recommend. We explored Istanbul from the sea and the views were amazing. We ended up having dinner in a steakhouse called Nusret. The owner of this place is a famous chef and an internet sensation.

A post shared by Mete Atamel (@meteatamel) on

I was in Google office on Monday, meeting with the Google Cloud team there and getting ready for the class the next day. Tuesday was the show time with the Cloud Onboard training. I co-presented with Nigel who is an awesome instructor. It was the first time I presented such a long workshop to an audience of almost 500 people. I loved how interested and attentive were people during the class. We received so many questions on Google Cloud during breaks, so much so that I could not have lunch 🙂

A post shared by Mete Atamel (@meteatamel) on

On Wednesday, I was back in the Google office. This time we had a half a day workshop on Google Cloud and running .NET apps on Google Cloud with 20+ customers. Pinar, a customer engineer from the Istanbul office, did a great intro presentation on Google Cloud and I followed with a more specific presentation on running .NET apps on Google Cloud. After the talks, we did a couple of codelabs to finish off the session.

Thursday was my last day in Istanbul and I spent it at DevOps Days Istanbul. DevOps Days is a global conference that happens all over the world. It’s a conference with topics on software engineering and operations as well. This was the first time I presented at a DevOps conference. It was also an ignite talk, 5 minute high speed talk on a certain topic. I presented Stackdriver, Google Cloud’s monitoring/tracing/debugging service. It was quite challenging to present 20 slides in 5 minutes with slides changing every 15 seconds but in the end I loved the adrenaline rush! I will definitely look forward to doing more ignite talks in the future. Ahmet Alp Balkan, another Googler, also presented a talk on building cloud-native apps. Overall, I enjoyed DevOps Days Istanbul, organisers did a good job of putting together an interesting conference.

Of course, no Istanbul trip would be complete without shopping and trying some awesome food. I spent the evening of Thursday doing some shopping and I also went to Sultanahmet Koftecisi. This is a Turkish meatball place in Sultanahmet region. My dad took me to this place once years ago. When I went there, I realised there were 5 other places with similar names, so I had a difficult time remembering which one is the authentic one. Eventually, with some memory searching, I recognised the small two-story building and went in. I had the Turkish meatballs and “piyaz” which is basically a bean salad. I don’t know what they put into that bean salad but it was amazingly tasty. The grilled meatballs were light and super tasty as well.

I had my flight to London early on Friday. As I flew out of Istanbul to London, I reflected on the week. It was a busy and productive week at work with Cloud Onboard, .NET workshop, customer meetings. It was also nice to catch up with friends in Istanbul and see my mum and sister. Istanbul is so dynamic and inspiring, so much so that I decided to start documenting my travels with Istanbul. Rain and traffic jam greeted me when I arrived to London on Friday but hey, that’s the price you pay to live in London 🙂

Deploying ASP.NET Core apps on Kubernetes/Container Engine

In my previous post, I talked about how to deploy a containerised ASP.NET Core app to App Engine (flex) on Google Cloud. App Engine (flex) is an easy way to run containers in production: Just send your container and let Google Cloud figure out how to run it at scale. It comes with some nice default features such as versioning, traffic splitting, dashboards and autoscaling. However, it doesn’t give you much control.

Sometimes, you need to create a cluster of containers and control how each container is deployed and scaled. That’s when Kubernetes come into play. Kubernetes is an open source container management platform that helps you to manage a cluster of containers and Container Engine is Kubernetes managed by Google Cloud.

In this cloud minute, I show how to deploy an ASP.NET Core app to Kubernetes running on Container Engine.

If you want to go through these steps yourself, we also have a codelab for you that you can access here.

Deploying ASP.NET Core apps on App Engine

I love how easy it is to deploy and run containerized ASP.NET Core apps on App Engine (flex). So much so that, I created a Cloud Minute recently to show you how, here it is.

It basically involves 3 steps:

  1. Create your ASP.NET Core app using dotnet command line tool inside Cloud Shell and publish your app to get a self-contained DLL.
  2. Containerize your app by creating a Dockerfile, relying on the official App Engine image and pointing to the self-contained DLL of your app.
  3. Create an app.yaml file for App Engine and use gcloud to deploy to App Engine.

That’s it! If you want to go through these steps yourself, we also have a codelab for you that you can access here.

Capture

Windows and .NET on Google Cloud Platform

 

Originally published in SDN Magazine 131 in February 2017.

Introduction

Until recently, there were two distinct camps in the software world: the Windows (A.K.A. closed) world and the Linux (A.K.A. open) world. In the Linux world, we had tools like the bash shell, Java programming language, Eclipse IDE, MySQL database, and many other open-source projects by Apache. In the Windows world, we had similar, yet distinct tools mainly developed by Microsoft, such as the C# programming language, Visual Studio IDE, SQL Server and PowerShell.

picture0

These two worlds existed side-by-side for many years with minimal interaction. You had to pick your side and stick with it. If you had to switch sides, you had to go through a slow process of readjusting your existing tools with similar-yet-quite-different counterparts and it was painful.

In the last few years, the tech world has gone through a gradual revolution. In 2014, Microsoft open-sourced the .NET framework to everyone’s surprise. This was followed by OpenSSH running on Windows in 2015. 2016 was probably the most exciting year with SQL Server and PowerShell running on Linux, Bash running on Windows, and most imporantly ASP.NET Core, the new cross-platform version of ASP.NET, running on Linux, Mac and Windows.

As Microsoft opened up its technology to the world, we were very busy at Google ensuring that .NET has first-class support on Google Cloud Platform (GCP). In 2016, we added support for deploying traditional ASP.NET apps to Windows Servers on Compute Engine. We introduced a Visual Studio plugin and PowerShell cmdlets to manage GCP resources. We made Microsoft SQL Server available on Compute Engine. Last but not least, we started supporting containerised ASP.NET Core apps on App Engine and on Kubernetes running on Container Engine. I cover both in detail later in the article. As a result of our work, Google joined the .NET foundation in November 2016. It was a busy year!

It is very exciting that the Windows and Linux worlds are coming together, and opening up many opportunities for .NET developers. In the rest of the article, I want to talk specifically about what GCP is doing for .NET.

Google Cloud Platform

GCP provides a number of services and tools for developers to build on top of Google’s infrastructure. Java, Python, Go, Node.js, Ruby, PHP and of course C# are some of the supported languages. Let’s take a look at the options you have when it comes to application development.

picture1

At top of the chain is Cloud Functions. This is the serverless platform for event-driven microservices. It currently supports Node.js functions. The beauty of Cloud Functions is that you only need to worry about writing and deploying your function and Google takes care of running that function at scale. This is perfect for simple apps with a limited number of specialised microservices.

Sometimes, you need more than a function. You need an application with frontend and backend talking to different services. For those kind of apps, GCP offers App Engine. The idea behind App Engine is similar to Cloud Functions, in that you write your app and let Google manage and auto-scale it as required. The underlying infrastructure is abstracted away from you which means you don’t have to deal with DevOps.

If you already made the switch to containerised apps using Docker and need more control in how your app is structured and run, there’s Kubernetes and Container Engine (GKE). You can very easily get a Kubernetes cluster running on GKE with a single command and deploy your containers in any configuration you like.

Finally, if you want full control, GCP has Linux and Windows Server virtual machines (VM) running on Compute Engine. Since they are VMs, you have full control on what gets installed however, you also have full responsibility which means that you need to manually configure auto-scaling, patch software, and so on.

GCP provides a number of ways to support your app development. Let’s take a look at how GCP specifically supports .NET apps.

Windows Server, SQL Server, traditional ASP.NET on Compute Engine

If you have a traditional ASP.NET app running on Windows, you can easily take that app and migrate it to Compute Engine on GCP.

First, you need a Windows Server with the ASP.NET framework installed. Thankfully, GCP has Cloud Launcher which makes it really easy to explore, launch, and manage production-grade solutions. It is literally a couple of clicks to get a Windows Server with ASP.NET framework installed in a Compute Engine VM.  

picture2.png

If your app uses SQL Server, there are pre-configured SQL Server images that you can install on Compute Engine VMs and you can use Visual Studio to publish your ASP.NET app to your Compute Engine VMs.

picture3

ASP.NET Core on App Engine and Container Engine

ASP.NET Core is the next generation, multi-platform version of ASP.NET. It is the leaner version of traditional ASP.NET framework and runs on Linux, Mac and Windows.

picture4

App Engine has been around as a PaaS offering from Google for a while but it wasn’t available to .NET developers until ASP.NET Core came along. It is now possible to wrap an ASP.NET Core app into a Docker container and deploy that container to App Engine to run. The main advantage of App Engine is that it abstracts away the infrastructure, so developers simply deploy their app and the day-to-day running and scaling of that app is done by Google.

If you want more fine-grained control on how your containers are structured and deployed, you can always create a Kubernetes cluster on Container Engine (GKE). GKE makes it trivial to create a cluster and Kubernetes makes running containers easier by providing a high level API to automate deployment, scaling and running of containers in production.

.NET libraries for Google Cloud services

Once you have your app running in Google Cloud, many services automatically become available to your app through native .NET client libraries.

picture5

You can integrate with services like Cloud Storage for binary storage, Pub/Sub for messaging, BigQuery for incredibly fast queries, Vision API to detect images, and many other machine learning APIs such as the Natural Language Processing API, Speech API, and Translate API.

By running on Google Cloud, you will automatically gain access to these new capabilities as new services are added, and that’s the beauty of the cloud.

Cloud Tools for Visual Studio

GCP has a Visual Studio plugin to manage cloud resources directly from Visual Studio. It is available from the Visual Studio Gallery and can be installed directly within Visual Studio. It provides some ASP.NET MVC and Web API templates to work with GCP projects. It also has a Google Cloud Explorer where you manage see and manage Compute Engine and Cloud SQL instances, as well as Cloud Storage resources.

picture6

Cloud Tools for PowerShell

PowerShell is a command-line shell and associated scripting language built on the .NET Framework. It’s the default task automation and configuration management tool used in the Windows world.


Cloud Tools for PowerShell is a collection of cmdlets for accessing and manipulating Google Cloud resources such as Google Compute Engine, Google Cloud Storage, Google Cloud SQL and Google Cloud DNS —with more to come!

picture7.png

Conclusion

We’re going through some exciting times. With Windows ecosystem opening up and ASP.NET Core’s multi-platform story, there are a lot of new opportunities for .NET world. At Google, we’re serious about supporting Windows and .NET workloads on Google Cloud Platform. It’s a great time to be a .NET developer for sure!

Links

https://cloud.google.com

https://cloud.google.com/dotnet

https://cloud.google.com/windows

https://codelabs.developers.google.com/windows