I am DVDKOURIL. This is my blog.

How not to look for bugs in your code

In the project at work I basically have data that I’m rendering with a very sophisticated rendering pipeline. I was not getting exactly correct results so this week I had to look into that. From my point of view, there were two parts where things could go wrong: the data loading or the sophisticated, complex, error-prone rendering routine. I’ve spent two days going through every single part of the rendering, making sure that everything does exactly what I need it to. Of course everything was fine. The problem was in a code which loads the data from a text file. At some point I thought that this might be the problem but I dismissed it because it was “too much work” to debug.

It was just a gentle reminder of how much I still have to learn. Sometimes I get really hyped up and I’m excited to deliver things. But then I get stuck for few days on one thing and I’m reminded how hard software development actually is. It kinda makes me appreciate higher-level programming languages and other people’s libraries.

I was at my colleague’s “proficiency evaluation” this Friday. It’s a new kind of exam at TU Wien for PhD students. You are supposed to do it some where in the middle of your PhD and basically you show what you’ve already done and what’s your plan for the rest of the PhD. He was the first one to do it in the Vis Group and even though he passed, it wasn’t 100%. I took a lot of notes and I’m going to make sure that I have a better plan for my PhD.

This week were also notifications for IEEE Vis 2017 conference and quite a few papers got through! The one that I was participating on too! That’s good news because more people are going to go to Phoenix this autumn.

Going to Bara’s habilitation defense

(Yes, another Donau picture, I really like it there!)

I’m really slipping up on these posts. I’ve been really good at writing every Sunday but now it’s been like three times when I’m writing this the next week. However, for whatever unknown reason, I see that there’s always some traffic on the Sundays. That’s motivating!

We had planned to have a movie night at the institute on Wednesday. We didn’t end up watching the movie. I made spinach lasagna for the group, we went to the garden to eat, and we started drinking there. Because it was so nice outside (and so hot inside), we decided not to watch the movie and stay in the garden instead. It was really nice thought!

On Friday, Bara (my former supervisor and friend from Masaryk university) had her final habilitation defense and we went there to see her. The defense was successful and we spent the day eating and drinking in Brno. Congratulations once again, Bara!

Now a little bit about my projects. I’ve revived an old project of mine. It’s a visualization of data from RescueTime. I’ve been using RescueTime for a very long time, it’s one of the first things that I install on a new computer. The idea I had two years back was that I’d like to see when in the day I’m usually being productive and when I’m having my “lows”. I’ve ended up with implementing a prototype using Swift and SpriteKit.

This week, I decided to take it a bit further. I would like to finish it and make it so that other people can use it. So that’s what I’ve been working on in my free time.

My other project (the project manager) is going on as well, but I’ve changed technologies that I’m using. I’ve changed it to be an iphone app. The basic functionality is done and now I’m mostly thinking about how to develop it further.

I guess I’m going full on learning Swift and how to develop stuff for iOS and macOS. Initially, I wanted to spread out more. Not just focusing on one platform and maybe learn something more multi-platform (like Python). But the things is, I’ve always wanted to learn how to code stuff for iphone. And Apple makes it very pleasant to learn, with all the official documentation. You don’t have to google answers to your questions. You just need to read the manual. I really like that.

The other thing is that I’m getting more and more drawn to projects that I think are meaningful. More specifically, I like to design and make personal management/productivity tools for myself (and potentially other people as well). In general, my goal for 2017 is to focus more on making things that are useful, solving problems, rather than just because they look cool.

If you’d like to keep in touch, you can follow me on Instagram or Twitter

I WILL BUILD THIS: Tool To Help Me Manage Projects

I’ve started this blog to document my progress. I don’t want to bullshit people and make myself look like somebody who already knows everything. I don’t aspire to be somebody who people would praise and think: “wow, I will never be as good as this guy”. I want to show that I know nothing and the things that I might accomplish won’t just happen by themselves. They’ll take time and happen because I’ll make them happen.

So I’m starting this project that I’ve had in mind for a few months already. I’m calling it Tool To Help Me Manage Projects (TTHMMP for short). I probably know what you’re thinking. “Wow, another project management tool.” And yeah, I’m not going to tell you that this is something that everybody will be using in 5 years. This is a toy project for me to learn stuff. It will be similar to most of project managers but I hope to make it a little bit customized for myself. Let’s get to the description.

I will be implementing this in Python using PyQt library. Why these technologies? Several reasons. I want to learn Python because I keep bumping into it in cool projects on the internet and job ads. Also, I’ve been programming for Maya last year (in C++) and I’ve seen that most of creative software (Maya, C4D, Blender, …) provides Python API. Another motivation for me to learn to use Python properly was this one time when I could with my limited knowledge of it help my girlfriend with automation of one time consuming task. It took me like half an hour to write this script that saved her maybe 6 hours of work.

I want to learn Qt because I’ve heard that it’s a solid framework and because I think I could utilize this skill in the future

What TTHMMP is?

TTHMMP is going to be a tool which will provide an overview of all my active, finished, and not yet started projects. Sometimes I have a hard time with keeping track of what I’m actually working on and what I want to accomplish. The problem, in my opinion, is that I don’t see what projects I’ve started and in what shape they are, what are the next steps. This way it’s hard to prioritize and work on what matters.

TTHMMP is primary going to show my active (running) projects. I want to keep 3 or 4 projects at max in this state of being active. Each project will show a starting date, estimated (or hard defined) end date. Next, there will be a list of tasks which will most importantly show the next step that I need to take, or the next problem that I need to solve. This TODO list could be outsourced by just linking to a Trello board or something.

I would like to implement some kind of motivational tracking visualizations. For example, I love the boxes on github which show commit history of a user. This was super motivating for me at times when I was contributing to a project hosted on github. I want something like that in TTHMMP.

In the future I think it would be nice to show finished projects as well. I think it should be done in a motivating way too. Finished projects are kinda like your hall of fame. That’s the stuff that you’ve done! You accomplished it.

I have a stretch goal feature in mind. I have a vision that there will be a button which will automatically “configure” your current workspace on your computer. Let’s say that I am a video editor and I have a project where I edit something. Usually on my computer I have many applications running at the same time, may tabs in the browser. What I want is to close all these distracting things and open up only the necessary applications that I need for work. Hell…I could even configure it to disable internet connection. All this should happen by clicking one button at the project overview. The button could be called “LET’S GET SHIT DONE”. Or something like that. Or it could change dynamically!

Minimal Viable Product (MVP)

I think you know what MVP in this context means. I believe many of my previous attempts to make stuff failed because I didn’t specify precisely what the version 1.0 is. The point is to learn from that mistake this time.

In version 1.0 of TTHMMP you should be able to:

  • add a new project,
  • switch between the states of the project: active, finished, not started,
  • show a list of active, finished, and not yet started projects
  • show a detail view with basic data about the project

That’s it. When this is done, I will call it a version 1.0.

I don’t know if I will update with stuff before the v1.0 version is done because, frankly, it doesn’t seem that interesting. It just needs to be done!