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.