Skip to main content

Posts

Part 3 of writting an experimental code analyzer and sort of interpreter for C#

This is the final part of the series about the C# code analyzer and interpreter that I created a while back. The actual execution and interpretation of the C# code are explained in this post. It is the last post in this series. To begin with, in very simple terms each word in the C# code can have an associated action that needs to be executed when the code is read by the analyzer in the proper order. For example, a word in the code might be a variable name. In this case, the reference corresponding to that variable is located and stored in a temporary buffer once the word is read. After that, it can be used from the buffer for another operation like invoking a method on the object/objects that the reference references. In case it has to call a method, it needs to locate the body of the method and jump to the method implementation and start reading it. With constructors, it is pretty much the same thing with the only difference being the fact that it always returns a single object and...

Why having a single "technical lead" to make all the technical decissions in a team might not be such a good idea

Over the past years I had some interesting experiences at work, interesting as in not bad, and I learned some curious facts about working as a team on features from their technical design to coding them. I am not a technical leader and  I didn't implement any of these concepts, I just noticed them. But I still need more experience with these. That's why I am writing about this. I also have to do a presentation about this and this post is a bit of practice for the presentation. There might be other better approaches, but currently this is what seems best to me. So I had to work on the same team with two different approaches: one in which a single person was designed as a technical lead making all the important decisions and the other in which there was no person that made all the technical decisions. In the first approach that person had to come up with the entire technical solution for something and all the other people had to follow and code that design blindly. In techn...

How to get the CoreCLR source code, compile it and some really interesting things found inside

A couple of months ago I had the chance to look a bit into the famous CoreCLR source code and actually compile it. It took me a while to understand it and how use it. This is probably some really advanced stuff that most of the time you don't need to know. It is actually composed of 2 main parts. One is the actual virtual machine which takes and runs the intermediate language code. The other part is the actual core .net library called "System.Private.CoreLib.dll" with the base types such as the string type or the numeric types. The second  These 2 parts are strictly related together. They need to have the same version and build type, release or debug. The second part that contains the source code for the core type in .Net is actually a separate assembly written in C#. The unusual thing here is that people expect the types to be in "System.Core.dll" but it's not. That assembly is just a stub for the real assembly containing the actual implementation for the...

Repost about job descriptions and what they might actually mean in the worst possible cases

I initially posted this as a post on facebook but decided to also add it here. Warning, it contains bad language. Still, I won't change it because it suits the context really well. I repeat, it contains bad language. Take it as a bit of a joke with some truth to it. So over the course of the years, I have listened to a lot of actually bad experiences from various developers and reading between the lines I came up with the following conclusions about job descriptions and what they actually mean sometimes. Most of the time the things listed in the descriptions are alright but sometimes there is something really fishy behind the bullet points on a job description. These pretty much point the worst possible meaning behind them in a funny and sarcastic way. "Dynamic" or "agile" environment = we are disorganized as fuck so we expect you to figure out by yourself what to do, how to do it and what's important to do. Also, you have to constantly adapt yo...

Speeding up request processing on a server

So lately I had to speed up the server with my colleagues at work so it could process requests faster. In our case we have a lot logic that needs to be executed which takes a bit of processing power, it's not a normal web server that just renders a simple page. There are tens of thousands of lines of code that need to be executed and not a couple of hundreds or a few thousands in the case of a normal web server. And to successfully process a request a lot of times the server needs to put the request on-hold until it receives all information about that request freeing that thread to process another request. This is the first place where performance issues can arise because of context switching. Once a request is put on-hold and after that reprocessed, all the context must be restored. This can involve loading heavy stuff from the database. Ideally you should make sure that you load the context from the database once a request is actually ready to be processed and once all the requ...

My 2 cents on 6 aspects of a developer's job

Over the past years or so I has the chance to speak with some developers from many different areas and countries. After all those talks and some introspection I came with the conclusion that programming usually involves 6 aspects to varying degrees. These aspects are in no particular order: Technologies: This relates to what technologies you use at your job. Some jobs require that you know in depth because most of them have their quirks and pitfalls. Or maybe they are hard to to learn or use in general. Usually I would  include here stuff like programming languages, database types, various ORMs, IDEs, frameworks and prebuilt libraries to make your life easier. This doesn't really involve a lot of creativity and thinking but rather knowledge. You don't really need an innate ability and talent for these things. Just curiosity. Architecture/Software design: This is related more to object oriented programming and how you structure your code into various modules and components....

Simple tutorial about configuring and using a virtual machine in Microsoft Azure

Lately while doing some kind of homework for my master's degree I wanted to try something which I haven't done in a long time. So I bough a virtual machine on Microsoft Azure using their pay-as-you-go billing scheme. I forgot how easy it was and useful is to do this, so I decided to write this simple tutorial. If you just want an extra machine to use from time to time with a bit of power this is the way to go. People that do 3D graphics and stuff can benefit a LOT from this. Imagine having a 16 core powerhouse at your disposal. Actually the people at Azure made some dedicated cloud services just for rendering. Currently only Maya and 3D Max are supported. You can find more information about the service here: https://rendering.azure.com/ Their pay-as-you-go billing scheme is brilliant. You just pay the time the virtual machine is online. When you don't need it anymore you just can stop it and you won't be billed anymore.If you don't use it that often it is actual...