Spotting a minty taste

My family threw a party, but due to age, and humidity’s tag team partner, dust, it has decimated a lot of the music CDs over time. Plus my family track of music hasn’t been updated for decades so I was at my wits end since I refused to be exposed to more christmas music… seriously over the year it just…. gets unbearable, to know I have the potential to be grinch, huh.

Well, I came with the idea of connecting my Linux Mint powered laptop to the audio system but I didn’t have the cables to do so either. Luckily there was a stereo jack to 2RCA cable in my room–that I didn’t even know about–so basically the result became this:

mintyspot

Linux Mint, being a derivative of Ubuntu LTS release, I didn’t have to follow my own guide of fixing Spotify in Ubuntu Vivid… which makes me wonder if Spotify finally fixed their build. I’m a happy Spotify user, and I’d like to use the client in linux, not the weird web interface. Heck, you know, you might as well release the web client for linux.

I’ll elaborate:

I installed Fastmail’s Android application to access my mail weeks ago, and I noticed that their client is actually the web application embedded with a browser so all it does is API calls to the main servers and store whatever offline data it needs to.

It’s an option, only if providing the client to linux is hard for them. [avoid ranting about mostly clueless users who think cross-platforming is easy] (it’s almost a taboo to rant about users, it seems. Well, mostly counterproductive.)

In conclusion, Spotify is incredibly awesome. I’ve discovered a lot of artists thanks to it. Recently I have found that their Discover section is getting better and better, meaning we get to discover even more musicians that might be your cup of tea. There is a need for applications/services like Spotify for linux. Especially to premium users, we can sync our playlists and keep programming without a worry, or maybe sync music to your phone and go to exercise.

Reading list of 2016-01-07

Hello,

I thought I would start sharing some articles where I have found them to be insightful, thought-provoking, maybe controversial or funny. Don’t mistake “reading list” as “book reading list” that is! I do have some books in my to read list. 🙁

I read plenty of articles from Vox and other news sources on a daily basis, so here’s this week links.

I went on vacation alone. Why do people think that means I’m disturbed? by Catherine Andrews

This is the most common response — so common it seems to be mostly automatic. You’ll be chitchatting with somebody and mention that you’re taking off to the beach for a few days. Out of politeness they’ll ask who you’re going with, and you’ll tell them, “Just me!” Then it happens. Their eyes skitter everywhere. “Oh … wow … that’s so … cool!” they say — when in reality every twitching facial muscle is shouting, “Yeah, you definitely need to go on vacation. To a mental asylum. Why, oh, God, why would you ever go anywhere by yourself? You could get murdered! Worse, you might be bored! And you definitely are going to have to spend an extended amount of time alone with your thoughts — a fate worse than the random serial killer you’re sure to come across.”

Pretty darn on point. I’ve gone to the theaters alone and people look at me rather puzzled by it. Catherine really nails it down:

There can be a paralyzing sense of shame about doing activities alone that we’ve been told by society should be done with others — a shame that results from the assumption that anybody who sees you doing these things alone is judging or pitying you.

Which holds true in today’s society. As a person who enjoys doing plenty of activities alone I really recommend giving it a try.

Here’s Marvel’s new teaser trailer for Daredevil season 2 by Alex Abad-Santos

I have a little secret… well, not much of a secret. I didn’t enjoy Daredevil that much as many others have. I’m willing to give it a second run when the next season starts. That said, I’m looking forward to House of Cards new season.

I lost 100 pounds in a year. My “weight loss secret” is really dumb. by Alasdair Wilkins

(interestingly the article was written in the July 7, 2015 but somehow ended up in my feed reader in January… I guess the bump is real? Nevertheless, a great article)

The Hateful Eight, Quentin Tarantino’s new film, is a deeply interesting failure by Todd VanDerWerff

You know, this is an interesting time to release a film that many–who I dare say consciously practices political correctness as a lifestyle–find offensive, repulsive, or both. I didn’t particularly found the film to be thought-provoking, neither did I find it good or bad. I love Tarantino’s storytelling most of the time but in terms of plot it’s just a bag of mixed feelings altogether. Either way, I wasn’t offended nor disgusted… I do I agree with Todd VanDerWerff:

Pay attention to how the story works, though, and you’ll find that Daisy is granted almost no backstory beyond the bare minimum needed to set (or keep) the plot in motion. We know she’s a murderer — there’s at least a semi-convincing warrant for her arrest — but we don’t know anything about which murders she committed or why there’s a $10,000 bounty on her head.

While I don’t agree on the whole “society treatment of women” line (mostly because it’s far-fetched, and because Daisy is practically the only female that’s alive (not considering the three women Daisy’s gang members killed to get her out @ Minnie’s mostly because there wasn’t a modicum of development in any of them); the film is truly messy in terms of conveying the message to the audience. Personally, I was just indifferent to any of the characters in terms of connection or feeling anything for them as most of their conflicts were too brief, and to know it was just 3 hours long.

Delving into Qt Quick/QML, states and transitions

My apologies if the video is a big too long in terms of height. I’ve been working really hard to get my app out there, yet the more I move closer to my goals the more there is to do. I’m not sad about that though, if anything this has been one hell of a productive week.

C++/QML interaction

I feel like I should start talking about the interactions between Qt Quick/QML types with your C++ backend. I must say that I’ve had the wrong idea since the beginning. Why? Well, if you must ask I will tell you a nightmare prone story where my entry CPP file began with searching QObjects from the QML engine to establish a connection between my backend and the visual aspect(types) of my app.

At first sight it doesn’t sound bad, but it is. When you use QtQuick/QML (referred from here on as QML) the main idea is to provide a rich dynamic interface and have it all typed up with almost no effort. Yet, one of the questions you always ask yourself is “how to interact with the backend” and in the documentation it explicitly starts talking about finding children in the QML engine root object so you can connect them with your backend.

Depending on the type of your app there’s one huge problem: What if my app is too dynamic and the types/elements of it are always getting destroyed and recreated due to wanting to free memory?

The answer lies within either making the root object a hub of communication OR extending QML with new providers type. If you have read the documentation at some point you will come across an example that starts with creating a QML Type called Message and that message will provide and contain said message through its usage. After you are done designing the properties and members of Message object in your CPP backend you can register it with qmlRegisterType. A bit more info here, to those who are interested.

States

I have found that I have more control making my qml types have states or certain properties that hints the internals of my app of when to do certain things. States in QML helps a lot in that, while it’s commonly used in transition I can also see it as a semaphore to control the flow of how you want to direct the user.

As you saw in the video at the start of this post you can see I’m also using states.

Nothing is certain

Right now there’s just no right way to write your qml files. There’s no “best practices” excluding the memory management part in the documentation as it’s exclusively for memory management. How you lay out the visual objects and how you communicate and bridge it with your backend is up to you. I don’t really know if this is really good or bad, you just have to come up with an “efficient” way of not compromising the performance of your app.

All in all, it’s been a pretty nice experience. I just wish the documentation improved.

DuckDuckGo, you still need better search results.

Recently I’ve been a bit annoyed by the search results DuckDuckGo provides. I ended up switching to another search engine that’s quite underrated called StartPage. The results from StartPage comes from Google, sadly. I say sadly due to one major problem, most search engines sucks and that itself is a big issue as Google is a monopoly itself when it comes to search engine territory.

StartPage is better, however, it’s just a short-term solution to a bigger problem.

Then there’s Bing.com. My mission is to decentralize what I do, what I write, what I receive. Break yourself free from Google services by decentralizing Search, Mail, and other services (such as Google Docs, although Office online is a beast). The options are out there, you just need to adapt.

I should reiterate how awesome FastMail is, love its interface!

What I’d like to see in static generators

If you are

  • a blog addict
  • a web developer
  • someone who keeps up with recent trends

Then by now you should know about these things called static generators. In a nutshell, a static generator is a often small application that will render a document written in Markdown, Textile, or other type of markup syntax, create a whole HTML out of a designed template (or theme) and with the generated output you can upload it straight to your site.

Sounds very easy, right? Most static generators don’t have databases and most of them are platform-independent making it easier for the user to write his/her documents with ease and generate the HTML whenever the possibility is given.

Static generators, imho, have one of the biggest pros right now is that they don’t rely on any interpreter to gush out the HTML, meaning it doesn’t need PHP, Python, Java in the server-side.

There’s one thing that the static generators fail and that is providing a sane user interface. Ghost has gotten “good” with it, and by good is that they haven’t made any progress to go against an interface like WordPress, or any other easy-to-use CMS, blog software, etc.

They all lack in the user interface/usability department

At first I thought “hey, maybe Ghost is really gonna be that WordPress killer we have been waiting so far”. Sadly it turns out that even their template system is pretty primitive. I personally created a theme for Ghost, most of it was pretty straightforward but there wasn’t really anything that screamed “flexible”.

Beyond Ghost I don’t know any other contender that has actually tried to make an impact by being a static generator with a human user interface. Most static generators are written in a way that requires command line interaction to please the neckbeards, a few nerds here and there; that alone already disqualify it from being usable by the average user.

Which brings me to…

A question I have to ask is “What if the blogger is so active he/she can gush out over 400-800 articles within a year?” Taking in consideration how long X generator takes to generate an output of a large amount of articles written… any small tweak to the structure of the theme means the person has to reupload everything from scratch, in which dynamic solutions have the upper hand without a doubt. (a lot of variables varies here)

Bugs, bugs everywhere!

You know one of the most excruciating experience is when you are new to something the first thoughts you will have after analyzing an specification is:

  • Ok, I got this. All I need is this, this and that.

In web development, to me, it became something like that. I already knew what to do, how to do it and how to put the pieces together. Now with C++/Qt everyday is a challenge. Most stems from the lack of familiarization of Qt Framework API, and C++ standard library. Everything is so alien, yet so exciting at the same time, and so, so exhausting since you burn yourself a bit in the process.

Sometimes I like to take some time off and explore other languages, other frameworks/platforms. Recently I’ve found a need to learn C# and Visual C++ ^^. I will eventually learn them, my struggle begins with designing the application… and I’m guilty of over-complicating this task. Why? I have to keep repeating “we can always refactor it later”.

I guess, I’m just overwhelmed by all these things. I have worked and invested so much time, sometimes I have to wonder if it’ll be enough to get hired in a decent software development workshop. Hopefully next year I’ll find out after I graduate, but for now I must keep learning as much as I can and put my knowledge in practice.

As for my app? Decent progress, I’ve done a lot of bug fixes mostly related to the XML parser as for some reason Qt’s XML stream parser can drive you nuts. There’s still a lot to do, yet, the backend is more or less shaping up to be stable enough and the data from the parser has been inserting with no problems, meaning once I get the backend stabilized all I have to do is finish the frontend then the testing begins.

The alternatives I chose

This week have been pretty nice so far. As I keep educating myself in things the regards privacy I started developing my app, well, resuming development of my app. I got to the point that the decisions so far are sound.

The technologies/services I chose to replace of what I used to use so far…

  • Sync.com over Dropbox (note, it has a referrer tag. Nothing will happen if you click the link, it will just earn me free space just like Dropbox)
  • FastMail over Gmail
  • Chromium over Google Chrome. I should note that you can indeed get Chromium for Windows. You have to install PepperFlash (easy peasy) for flash support. Go get it!
  • DuckDuckGo over Google

In terms of applications I’ve more or less stayed the same. If it wasn’t for friends and family I would have chosen to get rid of Skype. I think I have taken care of the most crucial parts.

My e-mail service makes me uncomfortable

Ever since we had the privilege to use Gmail (Googlemail) e-mail service back in 2004 Google became our favorite search engine, and truly our favorite e-mail service dethroning hotmail, yahoo, and other popular services by introducing a fresh look.

Its feature rich web interface and the features it offered made me rave in delight for days and weeks. Over the years, the hidden price of using such service unfolded to see it plagued with privacy issues.

This type of issue may make some throw hands up while rolling your eyes with a “here we go again…”. Truth? Most of us have nothing to hide, yes. Having “nothing to hide” is the go-to response to privacy concern issue in which I find quite short-sighted as it’s enabling Google as a company to keep this practice.

Perhaps I am too paranoid, maybe. I’d also like to keep whatever I talk to between my colleagues, friends, relatives in private and not be part of Google’s targeted ads. Which reminds me, did you know that anything you talk through Google Hangouts is also used for ads? No? Give it a try.

All in all, I am cursed. You hear me right, I am cursed because for many many years I have used the same e-mail address in services like Amazon, Ebay, PayPal, Facebook, you name it. And now I am “forever” tied to Google ads machine. What I fear is not the Ads machine but what comes after it.

  • Profiling your behavior
  • Search behaviors

All the searches you have made, all the things you have talked through google services is going to become a carcass of what you may may not do. It takes no genius to realize that the could also be gathering data of the places you visit through the millions and millions of sites that uses Google Analytics, including this site. Has there been a report as such? Not really, at least not yet.

Google have given us ever reason to distrust it. Sadly the giant is so big nobody sees the threat up in the air. As for me I have to find ways to transfer all the services I use to the new e-mail.

To those who wonder which e-mail service protects your privacy:

  • Check out Posteo.de they also do transparency reports and often calls out on authority abuse.
  • Check out fastmail.

A challenge that must never be overlooked: User Interface

Only 2-3 weeks away to finish this college trimester. I’m really excited to know it’s “almost over” as this year has been full of challenges in real life, bumping into personal struggles and family issues can really suck your drive to develop.

My disgust with Ubuntu has been slowly dissipating, as I wrote in Disappointed I ran into issues with it, issues that permanently crippled my computer. As a former linux user, and as someone that loves the linux environment in general you know you will always have those little urges to come back and use linux as it’s pretty much “your home”.

Sadly–no, actually fortunately I’ve been investing a good amount of time learning Windows. Its set of APIs and technology it provides. Let’s sit down and be realistic for a moment that it’s hard and has always been hard to monetize open source projects, any developer will always choose their family over ideals.

So this brings me to today’s subject: Interfaces.

I’ll admit, I suck at designing. I’m good in coming up with interfaces ideas, but putting things together in a very concise manner to provide a decent user interface is incredibly hard. To maintain a balance of usability, functionality, and “modern appearance” of an application these days is hard.

I consider myself to be more of a backend type of person. I like working in the internals parts of the application. I love learning to improves ways of providing metadata so that the user interface can function without the UI being the become the dictator of how the backend should be designed (don’t mix business logic and view, etc) and thus allow me to target multiple platforms and gush out more views to different screens.

As I’ve been designing the application I’ve gone through three or four drafts. Each draft being 20-30% different from each other. Drafting also means that you are dedicating your time to solve possible corner cases, it’s not much about throwing pretty colors, gradients, and call it a day. (I wish.)

During the time I’ve spent drafting/sketching the interfaces I’ve found myself sinking a lot of time in the user interface planning stage. Whether that’s good or bad I don’t know myself. Time will tell, I guess.

So the easiest way is becoming a hardcore fan of your app

I feel like placing myself in the users shoes is MUCH, MUCH easier than sitting as a developer and concluding that I should throw everything in TableViews and TreeViews, with lots of checkboxes and call it a day.

So I began to give each view specific purpose, a mission that a view and its partials needs to complement each other to satisfy the user’s needs. User clicked on new section -> show loading animation -> a new view appears -> new view is a gridview in nature. Hint the user that you can press and hold each grid for more options. Each option complements what to do with said grid cell.

And so on. It’s a very, very tedious process in my humble opinion. Designing applications internally (OOD, modular system, etc) is hard, UX is hard, frontend is hard. Quite the obvious conclusion, I guess.

Disappointed

So recently my laptop(the very one I’m using right now) got crippled by an Ubuntu 15.04 with an error

Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)

Now, see this error appeared out of nowhere after using Kubuntu 15.04 for months, the last update killed it. So fine, I went ahead and reinstalled Ubuntu (not Kubuntu). After using it for a bit and installing all the updates I decide to reboot just to see it cripple again. That’s it, I’m fed up with a few things I’ve been dealing with linux over the years. I’m tired of fixing things that shouldn’t break. Most importantly, I made peace with Microsoft products, I made peace with how I’ll be dealing with frameworks that belongs to big entities like Microsoft, Google, etc.

A few weeks back I got a copy of Windows 10 through Dreamspark program. This was already enticing me to drop linux out of my life, for a short amount of time of course. I love linux, but I’d rather get a Mac than sit through the hell that is fixing rare corner cases. I plan to go back to unix through a mac eventually, either that or wait for Fedora to actually polish their KDE, and for KDE team to fix bugs on Plasma which will take even longer.

All in all, as you might have guessed I installed Windows 10 on my laptop and it has been working splendid. Anything web development related will be done through virtual machines as I just don’t want to spare more of my time fixing things in linux.

I am very disappointed, especially in Ubuntu because of all distributions I never expected it to cripple my laptop.