There are no goals to be reached if there’s no discipline

smallsteps

Goals are meant to be completed, but without discipline a person can easily lose sight of what he or she wants. Losing sight is quite easy, from wanting to build an empire to sitting on the couch watching TV series. I can’t say I blame you if you want to enjoy Breaking Bad, Game of Thrones, and many other awesome series. Take in moderation though.

I haven’t been this focused for a long time. I would say that it feels good to have a clear vision of where I want to initially start, to where I want to be at the end of the journey. Those who know me knows how much I’ve struggled, others can just assume. And yet I move forward, because we really need to move forward regardless of what people think of you or me. Cut them off and carry on as you don’t need them, I would say. I find that surrounding myself with positive individuals can actually be incredibly refreshing than the usual sassy crap you get on the internet. Even if you had the greatest bullshit filter at some point you will inevitable fall for bullshit.

Which is quite amusing, because you don’t know you are being treated like crap until someone starts treating you like a human being, and respect you for what you are. Then you know the difference; it’s why I say “cut them off, you don’t need them”.

As for the picture I’m happy to say that I’ve reached a new milestone on the application I’ve been building. I’ll be re-branding it pretty soon. I’m quite happy with the results I’ve been getting from Qt Quick and I feel like I’ve made the right decision to stick with it.

I’m still amazed at how fast and lean(may not be so lean to others) C++ can be under a language with no garbage collector showed me how amazing and painful it can be. Iterating through a numerical array from 1 to 100,000 in less than a second really makes you think, and yes I know, it’s pretty impractical to use that as a measure of speed.

I’ve more or less taken a liking to C++ and I hope to start a career out of it. I may not be the best, but I sure as hell am pretty fast on taking initiative on things that I don’t know.

Although, remember that learning is not linear. You can pour 2-3 hours a day and do all the activities you want. Grinding 12 hours a day is just a recipe to burnt out quickly.

With that said, I have revitalized my interest in programming and creating user-focused applications whether it’s making a intuitive user interface or bringing a competitive product to the table I’ve never felt so prepared, yet I can’t give in to this feeling as you all know programming is pretty big, incredibly big so I can’t just put my glove off and pretend I’m done learning.

Quick thoughts on GOG client

I’m a fan of GOG, and of course CD Projekt (makers of The Witcher games, Cyberpunk 2077, etc). As a person who will be finishing his bachelor’s degree it would be one a heck of a goal if I were to make it to GOG team. Sadly, I don’t think I have the experience enough to meet their criteria.

Initially, when Origin client came out I noticed one thing. Origin uses Qt, and as you would assume GOG does as well. The two don’t necessarily have to share the same backend. In fact, I think GOG may be a bit different from what I had in mind. For starters, I thought GOG client would be a QML application, which it isn’t. Alright, fine, so maybe it’s a Qt project that uses WebKit, custom JavaScript injections to communicate with the C++ backend back and forth? Close, but not so much!

GOG client apparently is a hybrid composed of Qt and Chromium Embedded Framework which caught me by surprise as including WebKit would be better in the long run, maybe. How are they maintaining the calls from their the HTML5/JS frontend to C++? Well, I have a couple of ideas but nothing concrete to write a small application to provide proof. The idea however shouldn’t be far from WebKit interaction with your Qt application internals.

As far as I know the GOG client is written in AngularJS primarily with some shades of jQuery, some custom fonts (mainly Lato). I would say that when a user wants to download a game either it uses CEF or Qt Network(module). Either way, I’m having a bit of trouble understanding the need of Qt, apart of using it for configuration (settings window).

I find it intriguing that they decided to go HTML5/JS on the frontend and use C++ as the backend. It’s not that different than going full QML (well, actually QML is a whole new world itself).

Update: 08/09/2015

Oh, apparently I’ve been out of the loop as of late. I completely forgot that QtWebkit is going to be deprecated and QtScript to be removed… now all the decisions on GoG client makes sense.

The journey so far

It’s been a while since I’ve last updated my blog on the current progress of my application, which I renamed to Crunchyfeed but it might fall into another revision of “brand”. I feel at ease fully knowing that things are going as I want them to; a few errors have been made as I wrote more C++.

Errors is sort of what “we live for” when it comes to programming, you make one you’ll know you have that issue tracker flooded. In my case I keep thinking that C++ is the same level of ease that is C#, Java, or Python. It isn’t, yet it is; depending on which perspective you see it. It’s a path of futility when you try to mimic, let’s say an ORM in C++. You could, but the framework Qt provides you makes it useless, and I don’t mean this in a bad way.

Don’t write PHP as if you were writing C#.

I think I wrote something around that line a few weeks back. I have come to reiterate the same line of thought. It’s not worth it, write C++ code that’s meant to be C++. In my case, I tried to separate classes, think separation of concerns and ORM-esque design. Except, C++ isn’t dynamic and trying to make things happen as if I was using Python can be extremely painful. It could also be my inexperience in the language.

Qt alleviates a lot of headaches. In my eyes, I never want to leave Qt land. Qt provides high-level classes to deal with plenty of use-cases, most of the time when it comes to “passing messages” you can just use the marvel that is QObject with connect(ions). I hope that one that I can get the certification. But this also means years of C++ ahead.

Web development, no more?

A few months ago I was really unhappy with web development. In truth, web development is my forte but I mostly focus on backends, not frontend. These days you gotta focus on both, and quite shamefully I don’t know as much JavaScript as many gurus out there. The logic is still the same though, after going at it for years not much changes in web development.

Recently, I think that my knowledge in web development may be a key to open new paths. So now I’m not feeling that bad about having these skills. I’m still aiming to become a C++ developer, and of course eventually jump to C# land.

The application

The features I’ve planned for the application are going quite neatly. I recently started devising a way to upgrade database schemas in my application and I think it might pay off quite nicely. There’s currently no “standard way” of upgrading database schemas, or how to interact with the database so it’s a burden we all have to carry.

Database stuff aside, there’s a lot to think about when managing GUI elements and its communications, for most of the part I’ve been wondering how to keep my application relying on well-intended communication and when to block such communication.

In Qt we obviously have connect and disconnect. These two are key that once learned you can create amazing responsive applications. We also have QSignalMapper which notifies all connected objects of said event.

Communication is important, yes. Everything’s been a challenge so far, and my greatest challenge right now is creating custom user interfaces. The first perception of reading the documentation feels like one of those tasks that will take a while to grasp.

You see that beautify user interface? It looks amazing! Oh yea? How long do you think it will take you to do something visually stunning? Let’s not cheat our way with QML this time.

Creating a decent user interface is hell, and I’m not talking about the creative process of putting things together. The programming part? That’s the challenge right there.

Application availability

Once I have something more concrete–because currently I’m still working with the internal parts of the application–I’m hoping to make the application pay what you want, you can even put $0.00 if you want.

First release will be for Windows, once I solve a few issues with deployment of executable and installer. Then move on to Linux.