Posts tagged 'about'

A weekly to-do

published on March 08, 2018.

About a year ago I listened to a ThatPodcast episode where Dave and Beau talked about bullet journalling. I found the idea of it appealing, but over the next few months I just couldn’t find a bullet journal in any of the (book)stores I went to. As time passed so did my interest in this. After all, I was getting along without such a system just fine. My life isn’t that crazy busy, 7-8 hours of sleep, 7-10 hours of work work, and the rest is up for grabs — hanging out with my wife Senka (her name translates to Shadow, how cool is that?), reading, writing, cooking, open source, whatever.

For work work I’m organized, a Google calendar, couple of Trello boards, and that’s pretty much it. No issues there. My free time though… I realized that can get a bit messy from time to time. Especially when Senka works 2nd shift, then it’s just me and our cat from 5pm until 10pm that entire week. Lots of time there and I soon noticed that when I want to do lots of things all at once, nothing gets really done.

In September or October last year I read somewhere, can’t remember was it a book or an article, something about organizing to-do tasks in weekly chunks. Now that was an interesting idea especially since Senka changes shifts weekly which means that with a weekly plan/schedule I could plan things around her shifts. Quality time with her comes first. Then I remembered the bullet journalling thing and started thinking about a way to combine these two in one system.

For the past 4 months I’ve been using this weekly to-do approach where every Monday morning I write down what I need and want to do during the week. Going to the bank to pay the bills, sending out an email to a friend to catch up, writing a blog post, having a DnD session, look into a open source issue, organize an upcoming trip, finish reading a book I was putting off for way too long. If something pops up during the week I add it to the list. If something gets “obsolete”, cross it off. Every item gets a dot in front of it, just like with bullet journaling. Once it’s done I turn that dot into a plus and write down the date.

Next Monday I tally the previous week by writing down the to-do vs. done ratio. For any items left over from the previous week I turn the dot into a greater than sign and move it over to the new week and add new items to the list. If a task list “overflows” for 3 weeks in a row I strike it through and move it a Trello board full of stuff that probably won’t ever happen. I mean if I couldn’t find the time to do something in 3 weeks I guess it’s just not that important after all.

4 months of this and it’s working really great for me. There are weeks when I end up having almost 20 items on the list and there are weeks when I have 5 or 6. Weeks when I finish everything are rare, happened maybe 3 times so far. I’m fine with that as the things that really need to be done or I really want them done get done. The rest takes care of itself.

The past 3 weeks I’ve been experimenting with adding a weekly focus note which should act as a guiding system if the items on the list are too scattered, so just to keep myself in check that I’m actually working on the things that will worth the most over time. Another improvement I’m thinking about is somehow to measure and note the biggest accomplishment of the previous week so that maybe I could also see some general progress over the months.

Happy hackin’!

Tags: about, to-do, bullet journal.
Categories: Blablabla.

My OBS setup for recording screencasts

published on February 21, 2018.

Last year I started recording my contributions to open source. I wasn’t really regular, so today I published only the 9th episode: OSS Contribution 9.

Anyway, now I’m at the point where I am happy with the overall quality of the recording, both with the video and the audio and I want to write down the current setup so that I can recreate it in the future if I need to.

I’m using a Sennheiser GSP 300 headset and the microphone that comes with it. A really great product, I love it.

PulseAudio is responsible for the audio in my Fedora system. In the “Input Devices” settings of PulseAudio, I have set the “loudness” of the microphone to 25% or -35.94dB. I got there after a lot of trial and error.

As for the recording software, I was first using Zoom, which is a video conferencing and screen sharing tool. Start a meeting with myself, share screen, record. Buuut… I was never really happy with the audio.

I tried out Open Broadcaster Software, or OBS, last week. Again, after a lot of trial and error, I think I have the perfect settings given the hardware that I’m using. I picked it up from Swizec, he’s using it for his live coding sessions I believe.

“Settings > Output”: Output mode: simple, video bitrate: 2500, encode: software (x264), audio bitrate: 160, recording quality: indistinguishable quality, recording format: mp4. “Settings > Audio”: Sample rate: 44.1khz, the rest is all default. “Settings > Video”: Base resolution: 1920x1080, output resolution 1920x1080, the rest is default.

The most improvement came from setting filters on the microphone — “Mic/Aux > gear icon > Filters”. The first filter I added is “Noise Suppression” with a value of -17. The second filter is “Noise Gate” with a “Close Threshold” of -44, “Open Threshold” of -42, “Attack Time” 25ms, “Hold Time” 200ms, and “Release Time” 150ms. These last three might be the defaults, I’m not sure. I did play around with them.

Now, I said I’m happy with the audio, but I know it can be much better. One, I need to speak louder, and two, if these screencast become a more regular thing then I’ll invest in a better microphone. Until then, this will do.

Happy hackin’!

Tags: obs, screencasts, recording, about.
Categories: Software, Blablabla.

Details matter

published on February 19, 2018.

Last week on Thursday the lovely people from Zagreb PHP had me over for a talk. I presented my new talk called “All aboard the Service Bus”. I gave this talk once before at the PHP Srbija meetup in January. I’ve reused the slides, made some minor adjustments based on the feedback I received in Belgrade, and of course updated the footer.

The version from Belgrade had “Robert Basic - PHP Srbija #29” and the version from Zagreb had “Robert Basic - ZGPHP #78” in the footer.

The talk went well. I was a bit tired, as I drove 5 hours, my mind was racing a bit more than what I’d like, but all in all, I was/am very happy with how the talk went.

When I was done with the talk in Zagreb, people came up to me, said it was a nice talk, gave me some feedback, and then asked what’s up with the “29”, where did I get that number? I was confused. What? “29”? I don’t have any numbers on my slides, let alone a specific number like “29”.

“ZGPHP 29, in the footer”, said Luka, “I’ve spent a lot of time thinking what does it mean.”

I somehow managed to update only one part of the footer — changed the user group, didn’t change the meetup number. I apologized, explained, and shrugged it of. It’s just a number in the footer after all, has nothing to do with the actual talk.

On the drive back home, my mind kept going over it again and again.

It might be just a number, a small detail, but a detail that was incorrect, a detail that Luka noticed, a detail that made him think about that number 29 instead of paying his full attention at the actual talk.

Details matter.

Tags: about, talks, meetups, slides, presentation.
Categories: Blablabla.

Free the Geek interview

published on January 12, 2018.

Last year (feels weird to say “last year”, when it was less than a month ago) Matthew asked me if I’d be willing to appear as a guest on his Free the Geek podcast. To have a short chat about running my own software consultancy, freelancing, public speaking, and whatever else pops up.

Matthew is a great host, I have no idea why I was so nervous while chatting. Maybe because he also interviewed people like Matthew, and Matthew, and Chris, and Chris, all programmers that I learned and keep learning a lot from?

*wipes sweat off brow*

In the end I’m really happy that I did this, if nothing else, because now I’m even more determined to improve my public speaking skills, to talk more at local meetups, to submit to more conferences.

Anyway, have a listen to our chat, and make sure to subscribe to the podcast, I’m sure Matthew will have more great guests we can all learn from in the future.

Happy hackin’!

Tags: about, podcast, interview.
Categories: Blablabla.

Five days of Advent of Gode

published on December 06, 2017.

A week or so ago, Luka mentioned this Advent of Code thing. I’ve been doing coding challenges and examples before, but never have I tried the AoC (this is the third year it’s running).

Advent of Code is a series of programming puzzles, where you get 2 puzzles a day for 25 days.

Given that I have started to learn golang again, I figured might as well learn more about it by joining this years challenge.

I keep a repository with my solutions to these puzzles and try to take notes for every day and now I want to look back at the first 5 days.

I started of the first day with just a mess of a code, just pushing for the first solution that gets the correct answer. On the second day I realised I won’t be learning much like this, so I decided to bring some order to the chaos: organised the code a bit nicer (even though it’s a far cry from good), added tests, and generally tried to get to a point where it’s easier to get started with a day’s challenge.

The AoC puzzles are relatively easy so far. Day 3 was the only day so far where I had problems wrapping my head around the problem. I’ve managed to figure out the solution for the first puzzle, but for the second puzzle I “cheated” and used the OEIS. shrug

As for golang… I don’t know enough of it to say if I like it or not. I mean, I do like it, sort of, but for these 5 days the most I did was toying around with strings and integers and slices and maps. That’s hardly enough time and usage to pass judgment on it.

On golang

I like how it fails to build if there’s an unused variable laying around, but then again I tend to save often, so I write:

for k, v := range slc {
}

Hit save and the IDE underlines that entire for line. What, why?! Hover over the line to see what the problem is… Oh, k and v are unused. Well, d-uh, I’m not done yet. But I still have to double check because the bug might be real, for example if I want to range over an integer the IDE will again underline the entire line.

For some reason I’m really bad at naming things in golang, quite often the variable and function names are just bad. I’m trying my best to follow the golang styles, but… I don’t know. I’m not sold on the whole “short rather than long” thing.

I keep mixing assignment = and assignment & declaration :=. But I’ll learn it, eventually.

I like everything about the types, even though I don’t understand everything about them, yet. Maps, for example, are not ordered even though I tried to use them as such once.

On slices

Except slices. Slices are weird. Well, were weird until I understood how golang treats and works with them.

I read four different articles to get to the point where I know what a slice is, only to get a succinct explanation of “slices are mutable views of an array”. For me, that one sentence explains it better than the four articles.

Here’s an example:

package main

import (
	"fmt"
)

func main() {
	x := []int{1, 2, 3, 4, 5}
	a := make([]int, 0)
	b := make([]int, len(x))

	y := x
	copy(a, x)
	copy(b, x)

	F(x)

	fmt.Println(x) // [2 3 4 5 6]
	fmt.Println(y) // [2 3 4 5 6]
	fmt.Println(a) // []
	fmt.Println(b) // [1 2 3 4 5]
}

func F(z []int) {
	for k, _ := range z {
		z[k]++
	}
}

Notice how both x and y are the same, even though we only modify x within the F() function, without even returning anything from that function. What happens is that the array on which the slice is built gets modified, which in turns modifies the slice(s) as well. Another thing worth remembering is to only append to a slice with the append() function.

On testing

I learned how to write tests. I guess there’s more to learn about them, but so far I’m doing OK. I’m writing a lot of repetitive things like this to get data providers:

for _, tt := range footests {
    r := Foo(tt.in)

    if r != tt.out {
        t.Errorf("Got %d for %s, expected %d", r, tt.in, tt.out)
    }
}

Even if there’s no shorter/better way to handle data providers in golang tests, I’ll just create some snippets and be done with all the copy/pasting.

I like that VS Code allows to run and debug a single test function. That’s really helpful. It shows small “run test” and “debug test” links above every test method. Click and off we go!

On packages

I haven’t yet learned how to properly work with my own packages, how to organize code and name packages to import one into the other, but I didn’t really had the need for it.

What I did learn, is that I can’t name a function like an existing package. For example, I wrote my own little function called sort, which made it impossible to import the sort package from the standard library.

All in all, I’m making good progress with both the AoC puzzles and with golang. I believe this will give me a good foundation for further learning and improving. There’s still a long road before me, but I feel I’m on the right track.

Happy hackin’!

Robert Basic

Robert Basic

Software engineer, consultant, open source contributor.

Let's work together!

If you require outsourcing or consulting help on your projects, I'm available!

Robert Basic © 2008 — 2018
Get the feed