“Taking a break”, I wish!

There’s a lot I want to talk about over this month. I think I have enough time to do so, but today I want to talk about letting go projects. Or rather, focusing on delivering. I was supposed to deliver my first app a month ago. I couldn’t due to a lot of complications with Qt/QML in general. TextAreas with images would go up to 200-300mb in memory.

It was insane nonetheless.

I applied workarounds that were quite fragile… in the sense that “I’m doing something I know I shouldn’t because this technology should support it”. I mean, who would have thought parsing and traversing the DOM in C++ would be a giant PITA? I didn’t. A lot of setbacks were because I kept pushing on with the pretense that it was all well worth it since it was C++. I mean, yes, there was a certain leverage using a low-level language. However, does it even matter? I mean, with QML you can easily reach 60-80mb without doing anything.

On the bright side, I never gave up trying to deliver the app.

The last few days I have been researching on Universal Windows Platform (UWP), UWP JavaScript bindings, WinRT Components, integration with Windows Phones. I must say that I am extremely impressed with Microsoft’s work. I’ve read plenty of developers mixed feelings about UWP, heck, even I found the whole thing confusing. UWP, WinRT, metro, whatever buzz name they’d come up.

2016-07-04 (2)

2016-07-04 (1)

As you see in the images. I’ve been cooking up something, something that I really hope to release eventually. When I jumped to C++ I didn’t know anything about it. I didn’t know much about C++, or about Qt for that matter. With UWP, a lot of things comes “naturally”. The permissive nature of UWP with JavaScript bindings is insane. I thought, “wow, QML is awesome!” without ever batting an eye to UWP. When I used UWP JS engine, it was of course a browser. I think at best I used like 20mb of memory. It even ran embedded flash…. something that QML is quite incapable at the moment.

UWP reference (mostly WinRT API reference) feels pretty solid so far. There are times where an implementation won’t work, for example, grabbing my profile picture from the OS. But, in a way this is why WinRT components exists. You can create components in VB, C++, or C#; these components are the bridge for anything that requires intensive processing. Let’s say, “video processing” or “audio processing”.

After spending a whole day poking UWP I feel like this is the right direction. The only thing is that I won’t be able to target Android, sadly. I could fix that with Apache Cordova… but, for now I’m just gonna target Windows devices.

Toying with VS Emulator, Hyper-V + Linux, Apache Cordova, and Windows 10 Virtual Desktops

You know this weekend I took my time to explore a few things in Windows 10 and Visual Studio 2015. For starters, every time I installed Windows, being a Windows Pro version owner I never bothered checking the features it offered, such as BitLocker.

Hyper-V

So, the thing about Hyper-V is that it’s something really, really abstract to the Windows user. Unless you poke the bear you won’t really know what’s in there. Hyper-V is a solution similar to Virtual Box, VMWare, it provides virtualization capabilities to your Windows. Now, why I mention Hyper-V is because it was almost a routine for me to always install Virtual Box after installing Windows, then it occurs to me that we already had Hyper-V to begin with.

I loaded up OpenSUSE Leap ISO and to my surprise everything worked flawlessly.

2016-05-15 (1)

2016-05-15

2016-05-15 (2)

You still need to configure the network through the Virtual Switch Manager in Hyper-V else the network won’t work, it only takes a couple of clicks.

Virtual Desktops

I’m a big fan of virtual desktops, every time I winded up using Windows part of me wanted to use virtual desktops because it was a way for me to organize my applications through tasks. Windows 10 finally, after many years, went ahead and added virtual desktops to the mix.

2016-05-14 (2)

2016-05-14 (1)

2016-05-14

Apache Cordova

In my internship I worked with Angular JS extensively to the point that I became interested in making mobile applications using HTML/JavaScript. I know of the existence of Cordova, however I’ve never used it mostly due to no interest in it. Curiosity took the best of me, I launched Visual Studio 2015, installed the required components and within an hour I started my little adventure on playing with Cordova.

I have mixed feelings about it. At first sight it feels like the application structure will crumble apart in any moment. It’s not the same having a set of widgets to work with, as in there’s: ListView, WebView, TableView, Layout controls, Buttons, Combo Boxes, and so much more available programmatically through an API. With Cordova you have HTML5/JavaScript and pretty much 9000000 javascript scripts available. Does it mean it’s “stable”? If you stick to jQuery, AngularJS, etc then sure.

Either way, Cordova is new to me and things like debugging, poking around seems too loose at the moment.

Visual Studio Emulator

I have a beef with this emulator… I can’t deploy Qt applications with it as the shader program is not linked. I want to deploy Qt applications because else I would have to disable Hyper-V and I don’t want to do that because it requires me to reboot every time.

Overall my experience with VSE has been nice, it’s straightforward, I just wish it played with Qt nicely. The best part? Qt Creator can automatically detect VS Emulator emulators running so you don’t have to do any extra work.

What’s next in programming?

So basically I’m at my wits end. I haven’t had the time to finish my application. There are two things that have demotivated me greatly. First, the overhead of QML is too much to the point that I might have to drop it. This means I’ll have to come up with a way to build a new interface out of html/js/websockets.

I’m up for the challenge, I really am, yet I feel awful about it because I’m scrapping a large portion of the presentation for something that takes time to do. I don’t think the Qt team can optimize the QML Engine in less than two months. The original schedule was to release at March, yet due to circumstances (doing internship, loss of motivation due to the fact that I have to scrap code) I haven’t sat down to work on the app.

I think at worst this is the part I’m just banging my head against the wall since I don’t want to lose my work in vain.

I hate reformatting.

en-APAC_PDP_Win_8_Pro_LE_UPG_6PR-00002_P5

I messed up my Windows 10 installation a month ago. Basically, the booting time was 2-3x times slower because Windows 10 decided to

  • Installing the boot loader in HDD 2
  • Installing/Configuring the BCD files in HDD 3
  • All so it can load SSD 1

It feels like it doesn’t make sense at first but it does. I tried to fix it myself but the task was pretty much daunting. I don’t know how it ended up like that.

So today, mostly because I could no longer turn an eye at it I decided to fix the issue. I went ahead backed up my three storage devices because I was also planning to use Bitlocker. Basically, once I backed up the files I unplugged the HDD cables and made the installation on the SSD.

Boot loading time has now been fixed!~

Onto Bitlocker

Now, plenty of you will probably scoff at the idea of using Bitlocker. Bitlocker works, obviously, the present problem is a trust issue with Microsoft itself. I analyzed the situation, and my conclusion was pretty much this:

It doesn’t matter.

It doesn’t, really. First of all I’m no Edward Snowden, I don’t do any questionable activity that requires me to hide my data (that doesn’t mean I don’t want to keep my privacy & protect files versus keeping questionable data). I simply don’t have that type of thing going on for me. Rather, I’m just a normal person wanting better security for my devices. Bitlocker solves that and it has ongoing support with Microsoft.

I have bigger threats to worry about. Social engineering, computer or storage drives stolen, and the list goes on. These things are a major threat that we ignore in exchange for giving in to paranoia.

If someone stoles a USB Flash drive and I have it protected by Bitlocker or any encryption software; I know I won’t worry because I was responsible enough to put a lengthy, complex password. It makes sense.

NSA, and whatever sort of evil is out there is keeping tabs on… people that are threats. I’m pretty sure that a guy that watches anime, tv series, does a lot of gaming, etc isn’t a major threat. The people around me, however, will always be a major threat as you never know if they have ulterior motives.

So yea, my reasoning may not be the greatest thing ever. I WILL keep my files encrypted and protected. I just wish that Microsoft had more guts; but also, their business would be hurt badly if they piss off Big Bro.

So do yourself a favor, evaluate your encryption options. If you have a Windows device with Pro edition, check out Bitlocker. If you want something else, there’s Veracrypt.

Thoughts on Dark Souls

dark-souls(1)

I’ve been trying to catch up with my backlog. I’ll be frank, the days of me spending time with games are over; there’s only one mission that has the highest priority and that is to get into a better place in life. But, as some of you know I got a new video card and an 256GB SSD.

Today I wanted to have a little chat about Dark Souls. The most awesome game made in the history of games… or something like that. I jest, Dark Souls is nice, but it lacks so much (for me) in different departments that there’s very, very little reasons to even play it.

If we look at the “rewards” (my god, ArenaNet and GW2 community have made me hate this word), we look at it in different perspectives. The reward you get for beating a hard boss doesn’t mean much. The reward of killing standard mobs in the game doesn’t mean much. Why I feel like they have no meaning? Dark Souls is all about exploration, we could agree on that. Yet, it lacks on storytelling, so much that you actually have to go to YouTube or whatever site and check out the little pieces of the story and environment around. It doesn’t help that many story elements could carry a lot of assumptions and misinterpretations.

It feels lazy, incredibly lazy. There’s very little dialogue in the game, there’s text that “makes up part of the story. I’m a storydriven person, Dark Souls is pretty much the opposite of that. Each boss you kill in the game actually carries no meaning until you get to the lord souls then it sort of makes sense why we are collecting their souls.

Dragon

The battle mechanics in the game follows a very predictable pattern. There’s a lot of room to make plenty mistakes, but it doesn’t mean that the game isn’t predictable. Dark Souls mostly forces you to either play at an slow pace or just run through trash mobs and get to the boss. Either way, as you progress you’ll notice that the AI in enemies doesn’t exactly change much. Maybe some long ranging, maybe a surprise or two moveset.

I’m at the stage that I just want to finish the game as I’ve invested plenty hours of it. I feel incredibly unsatisfied. It doesn’t help that this game is glorified because it helps a variety of players stroke their ego, the casual player isn’t used to play against a more aggressive AI; but does it mean that the game is great and should be up there in a high pedestal? Debatable.

All in all, it can be fun in some areas, but most of it is just repetitive.

Goodbye, QML

I’m “abandoning ship” and hopping on Xamarin/Microsoft bandwagon on creating mobile apps with C#. It pains me to say that getting things to work requires a lot of effort with QML. I feel like there’s so many, many things it can do yet it tries to be so many things. At the end of the day, I was put against these options:

  • To deliver applications rapidly and gush out iterations as I go
  • The need of high-level language as C++ can be a little tedious to do some things. One can easily run into type issues.
  • Less time working on C++ backend, less time trying to understand why certain QML elements consumes over 800MB in memory (hello TextArea, you sure can’t handle 10 high-res images).

Overall, QML and C++ combo, as powerful as it is has too many memory usage issues, a steep learning curve.

Today I went over Xamarin stuff, it was relative easy to get started. I noticed that I could finally work with Activities, unlike Qt, which you have to spend a lot of time learning the android/qt cycle.

It pains me, but as most of you I also want to put my application out there in the wild as “soon as possible”. With Qt/QML I completed one mission, and that was learning C++. I did, maybe not to an expert level, but I grasped plenty.

Looking for a new home

Recently received an e-mail by Digital Ocean that they will be removing the credits soon so that they can re-purpose the servers. The decision mostly affects students (like me), so soon enough I will be making a backup of the compressed archives I have published here. As for this blog? I’m not sure where to put it… I certainly don’t have the money to put out there right now just for one blog.

Updates, updates everywhere!

I’ve been watching Microsoft’s Build event, been doing so since last year and this year has been pretty darn exciting. I’ve yet to dabble into C# mostly due to most of my energy going to C++, it’s apparent that I want to work with C#, after working with Qt I feel like the reach for “easy mobile development” is a mere pipe dream. I feel… disappointed? I guess. The truth is that I’ve spent my time doing more workarounds and hack-ish solutions that actually working on my application. QML is a very, very insanely powerful language, the things it brings to the table is just awesome. Yet, the price to pay is having poor documentation on many QML elements.

Putting my feelings aside on Qt/QML for a moment. I think that I will eventually push for C#, in all honesty I just want to stay with one, maybe three languages to work with. Right now I’m just a jack of all trades, and I don’t like it that much.

Anyway! More updates

Recently I bought an SSD, a 256GB drive and it has been a huge step for me. I usually had to wait 5-9 minutes for a full boot in a normal HDD. Now it boots completely in 20-30 seconds.

2016-03-29

I also bought off a 970 GTX from a friend. I’m way behind games, and well, hardware in general. Once I installed it on my PC it blew my mind after playing games like Witcher 2 in pure 60FPS, Call of Duty: Ghosts was the one that called my attention the most with insane level of detail. I plan to snatch Advanced Warfare eventually too.

2016-03-26

Both hardware pieces have contributed greatly on my PC. The boot time is no longer a problem and Visual Studio opens in less than 10 second. Meanwhile games I had problem playing due to framerate issues are no longer an issue.

Now… there’s only one big worry I have. Software development interviews and getting hired. These are possibly my biggest challenge, as a person new to the industry I just don’t know what to expect.

Graduation around the corner

It’s been an awful week for me, sort of like a roller coaster. Like two weeks ago I got the notice that I qualify for graduation, there’s only two courses left that I have to take, that is the internship (which isn’t much of a course) and a history course. Time has passed, year after year I just wanted to get that degree already so I can finally drop my applications to U.S-based companies.

Obviously programming is a very competitive field. I already admitted myself that I will make mistakes and that “I know that I know nothing”. I hope that all the time I spent studying, tinkering, practicing with different programming languages comes to fruit. I’m thrilled and terrified, really.

I’m finally there though, these past three years have been hard, painful, agonizing even on multiple levels, ranging from family issues to profession issues. That said, it’s no use of thinking of the past, it’ll get you nowhere. Usually I just severe anything in between and carry on, for the better or worse.

Just three months more. o/

Reducing complexity

I feel awful, yet happy, yet tired.

A bit of an annoyance is when you spend hours doing something, then a week or two later you see a new library that does that and simplifies the code greatly; allowing maintenance and readability at the same time.

So, take it as you may but if you are using classes like QXmlStreamReader or QDomDocument do yourself a favor and try pugixml library. It’s said to be faster than the previously mentioned. In terms of code readability QDomDocument is the nearest that matches pugixml due to its DOM api, yet it’s also slower and consumes a hefty amount of memory in exchange, where as pugixml stays lean.