Preslav Mihaylov

Speaker, Software Engineer, Technical Trainer. Passionate about computer science, presentations and reading books

How to properly use macros in C

One strange phenomenon when coding in C is using macros.

This is not something which can be seen in other programming languages (other than C++). And that is for a reason.

Using macros can be extremely unsafe and they hide a lot of pitfalls which are very hard to find. However, as a C or C++ programmer, inevitably, you will encounter macros in your coding life. Even if you don’t use them in your own project, there is a high chance you will encounter them somewhere else, such as a library.

Your duty is to understand why using this programming feature is dangerous and what dangers it holds. If you don’t, then you can run into some pretty nasty errors which are hard to debug and discover.

Continue reading

The Productive Developer @ WordCamp Sofia 2017

After spending one great weekend at WordCamp Sofia 2017, I feel energized from all the great people I met there and all the awesome talks I saw.

It was a great event. WordPress people sure know how to make a conference. What also caught my attention was the professionalism of the speakers there.

Despite being a community event, most of the speakers had very professional slides and presented pretty well. On most of the events I go, I see those “Death by PowerPoint” presentations and I feel like that’s just how things are.

But at this event, I saw the tendency of many speakers getting literate in terms of their presentation design. They really put a lot of effort in their slides and presentations.  I even saw some things which were helpful for me as well and helped me improve my presentations!

It was a great conference. If you want to check out all the awesome talks from WordCamp Sofia 2017, visit this playlist.

My talk was less WordPress driven, but even so I believe it can be of great use to anyone who cares about being as great of a developer as he can get.

My talk is about Productivity. About the mindset behind being disciplined and performing in your work and using the right tools to help you achieve more.

It’s titled The Productive Developer.

The idea for this talk evolved through my blog and my original post with the same name.

So, if you care about advancing yourself and your career, give it a look:

The build process of programming languages


This article is part of the sequence The Basics You Won’t Learn in the Basics aimed at eager people striving to gain a deeper understanding of programming and computer science.

When I wrote my first program, my trainer told me I merely wrote the source code. Now, I have to translate it to a language understandable by computers. We call that compilation. It happens by clicking Ctrl+F5 (In Visual Studio). And there you have it, your program is now an executable.

That’s how they initially thought me what the build process of a program is. And that is a good enough explanation for beginners. But at one point, I realized that when I click Ctrl+F5, some processes happen behind the scenes which we don’t see. Those processes we will explore in today’s article.

And did you know, that when you click Ctrl+F5, the processes used are different for different languages? Have you ever wondered  why is it harder to code in C++ than it is in C#?

Well, we won’t be able to explore the whole details of the last question. That has a lot to do with language design and the decisions being taken during the years. But we will explore the fundamental difference between those languages. That difference lies in their build process.

Continue reading

My experience with “Future Is Code”

“Future is Code” is an initiative aimed to inspire the young people of Bulgaria to start learning programming by showing them how cool it is. Professionals from the IT industry usually go to their schools from their hometowns and make a 45 minute presentation on a topic of their choice.

Last year, I have visited more than 20 schools throughout the country and led various presentations in front of varied audiences. Next week, I am starting this initiative again.

I want to share with you my experience on this journey, what problems I have faced and how I have resolved them and tell you how you can take advantage of such an opportunity.

Continue reading

The ultimate challenge for aspiring developers

When I first started programming, I started creating some simple console applications following some course materials. I had to create some simple algorithmic-type programs such as implementing factorial, Fibonacci, etc. Although creating these programs might be fun at first, it’s not like creating your own project from scratch.

Shortly after that, though, I created my very own game. That was simply amazing! I never thought that you can create some of the most popular arcade games with so little knowledge. That’s what hooked me up for programming. It was the step that made me look at programming not simply as a vocation, but a calling.

But I realize that I was lucky to find someone from whom to learn how to make my own game and do it myself afterwards. Most of the newbie programmers don’t have this experience and I think that is a shame.

Today, I want to recreate this journey for you and help you create your own game.

Continue reading

Older posts »
BulgariaEnglish