How to be a C# developer

C# has never been considered as a cool language (fact: It was initially called COOL – C-like Object Oriented Language) – it’s a good language, very good indeed, but because of it is “created by Microsoft” and then “tied to .NET platform”, it lost the coolness to other languages – JavaScript, C, Scala, you name it.

The table has turned and the wind has changed. Microsoft has been making bold moves with all the open source projects that run multi platforms. Once known as the “evil” of software industry, Microsoft is changing their image to be good again. And with Xamarin being free – C# is the language to learn now – if you have not already. Being a very good OOP language with powerful functional programming features, and built on a mature platform and excellent tools and library, you can use C# for almost everything these days – mobile, desktop, server, and even client.

So how?

Visual Studio Community:

Visual Studio is simply one of the best IDEs out there, and while missing some of the features, Visual Studio Community is free – so it’s perfect choice if you are a student or simply learning the language. It can be downloaded from here:

https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx

Continue reading “How to be a C# developer”

Articles software developers should read, at least once

… if not twice.

These days, almost every software developer has a blog – so it’s sh*tloads of content around the Internet. Truth is, the good, accurate, long-lasting contents are hard to be found. Most contents are supposed to be obsolete very soon – and it’s OK, because many contents are for a very specific situation in a very specific time. But can we have a collection of the precious contents that are useful not only today, this week, this month, but ten years from now?

This is supposed to be a definitive collection of great contents that will be helpful for your entire career as a software developer. It’ll be updated frequently, with new link as I found it.

The Log: What every software engineer should know about real-time data’s unifying abstraction (Jay Kreps)

Logging is essential to every serious software system. But it’s not easy – getting it right can be indeed hard, especially in real-time. This article provides a deep knowledge about the concept.

http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (Joel Spolsky)

It’s been 26 years since Unicode was introduced and still, not all people can get it right. This article gives you – as the tittle suggests – a minimum knowledge about Unicode, and how to not get it wrong.

http://www.joelonsoftware.com/articles/Unicode.html

What Every Programmer Should Know About Memory (PDF) (Ulrich Drepper)

This is a pretty low-level paper, you will learn about how memory works at hardware level. Still interesting and useful. Who knows someday you’ll have to get your hands dirty with some memory stuffs?

Continue reading “Articles software developers should read, at least once”

Hiring process might suck, and how to fix it

I recently read this post F*** You, I Quit — Hiring Is Broken
found it interesting. If you have time – read it (and of course you should have, because this blog is far less famous than medium – the combination of page views for post in this blog is very likely to be much smaller than that single post).

I feel bad for the author for being in such situation – getting rejected 5 times in a row, is a hard thing to swallow. Especially when he is considered famous in developer’s world/ and has big passion in coding. And it’s not the first time, we hear someone rants about the hiring process, and it’s very unlikely to be the last. Let’s agree that the hiring process for developers might suck.

But then, it’s the way it works.

The first time no offer given, it’s probably their fault. The second time no offer given, it’s probably a bad luck. The third time no offer given, it’s probably your fault.

Continue reading “Hiring process might suck, and how to fix it”

Understand the retry policies in Episerver

This is pretty internal stuffs – you will almost never use it yourself (you technically can, but there is no guarantee of backward compatibility whatsoever). I learned the stuff recently and found it interesting enough to share.

No matter how powerful your server(s) are, and how reliable SQL Server is, there are chances that a query can result in error. Hell, there are bunches of error codes that can be returned (and I never remember one, Google made a pretty bad habit of forgetting everything). But they can be divided into two categories:

  • The un-retry-able errors, such as a grammar error in your stored procedure, or a parameter is missing, or mismatch. These errors need human-interaction to correct them before continuing.
  • The retry-able errors, which means if you re-run the query, there is a chance that it would eventually succeed. Compared to the un-retry-able errors, these are in smaller number. A deadlock can be considered as retry-able (with the hope that the deadlock conditions are no longer present, the other threads finished their works and released the locks). A timeout error can be considered as retry-able (with the hope that the server can run the query faster, this time). In the end, your query can succeed, after some tries.

You might ask, why retry? The question is, why not? Retrying the query can make it works, and as it’s transparent from end-users perspective, it might provide a smoother experience for them. Say, they are trying to place an order. Because of your highly successful campaign, there are a lot of customers trying to do the same thing at the same time, resulting in some occasionally deadlocks. You’ll be much happy to silently retry and have another order in place, than showing “Something went wrong” to the customers. Of course, the previous errors will still be logged for further analytic, but you’re good for now.

Continue reading “Understand the retry policies in Episerver”

The free courses of computer science and programming

One of the most wonderful impacts of Internet is it makes many knowledge freely available. You can still attend the courses from the best universities in the World, without having to spend a bunch of money to get into US. You can now access the precious contents from the other half of the world. Of course, it’s still far from effective as when you come to classes, having friends and assignments, for real, but it’s undeniably a huge benefit.

The knowledge is yours!

Introductory courses:

MIT 6.00.1x: Introduction to Computer Science and Programming Using Python
MIT 6.00.2x: Introduction to Computational Thinking Data Science
MIT 6.00: Introduction to Computer Science and Programming
Harvard CS50(x): Intensive Introduction to Computer Science

Continue reading “The free courses of computer science and programming”