About Me

Michael Zucchi

 B.E. (Comp. Sys. Eng.)

  also known as Zed
  to his mates & enemies!

notzed at gmail >
fosstodon.org/@notzed >

Tags

android (44)
beagle (63)
biographical (104)
blogz (9)
business (1)
code (77)
compilerz (1)
cooking (31)
dez (7)
dusk (31)
esp32 (4)
extensionz (1)
ffts (3)
forth (3)
free software (4)
games (32)
gloat (2)
globalisation (1)
gnu (4)
graphics (16)
gsoc (4)
hacking (459)
haiku (2)
horticulture (10)
house (23)
hsa (6)
humour (7)
imagez (28)
java (231)
java ee (3)
javafx (49)
jjmpeg (81)
junk (3)
kobo (15)
libeze (7)
linux (5)
mediaz (27)
ml (15)
nativez (10)
opencl (120)
os (17)
panamaz (5)
parallella (97)
pdfz (8)
philosophy (26)
picfx (2)
players (1)
playerz (2)
politics (7)
ps3 (12)
puppybits (17)
rants (137)
readerz (8)
rez (1)
socles (36)
termz (3)
videoz (6)
vulkan (3)
wanki (3)
workshop (3)
zcl (4)
zedzone (26)
Monday, 28 October 2019, 05:54

Java 13 Upgrade

I upgraded a bunch of projects from Java 11 to Java 13 over the weekend. It was just a drop in replacement and all I had to do was change some paths.

Unfortunately gluon are still not distributing the GPL-covered JavaFX properly. They only have downloads for the binaries. I made a mention of this for JavaFX 11 the only way I could find at the time - via their 'support system' i.e. stack overflow - but they just said to get it from maven central. There's a pretty big problem with that: for starters they don't link to maven central and there are multiple javafx artifacts present. The other problem is maven central just doesn't work with my browser (firefox) it just comes back with some obtuse error. And finally ... the source archive on maven is the IDE "java sources" archive and NOT the machine-readable corresponding source-code to their release. That means it's basically just contains some of the sources that match the class files which lets you browse or get the documentation from NetBeans, but it doesn't contain any of the platform specific code or native code, build system and so forth. They don't even link to the mercurial (or is it git now?) source coded repository and tag.

I've made a few changes to nativez/jjmpeg/zcl since the last release of each but i'm not sure when i'll do another set.

On Java 13, netbeans 11 doesn't support the new features so it's pretty inconvenient to get to them but i'm not terribly interested in most of them anyway. I've been reading reddit of late (way too much) but one thing i've discovered via a regular poster pron98 is there are no longer 'major releases' of Java. And the "LTS" releases are only "long term support" for paying customers - and aren't stable platforms like one would expect from the name. So it's easier just to upgrade when a new one comes out. I don't work on anything mission critical so I don't have much to test other than 'yep, it works'.

Tagged java, javafx, jjmpeg, nativez, zcl.
Wednesday, 23 October 2019, 07:58

Fuck Adelaide, Fuck South Australia

So last night I was chatting to some younger people about what used to be at Glenelg near the Patawalonga. It was just a big umaintained carpark that on a Friday/Saturday night used be filled with bikies ('bikers' in USA talk), kids doing burnouts, booze, grass and other drugs, and generally a good time had by all (sans the 1984 riots, but oh well, these things happen - it was probably the lead in everyone's blood as children).

That's all gone now.

In it's place is an ugly shitty miserable development called Holdfast Shores. That land was donated to the people of South Australia and the corrupt councilers just sold it off to the highest bidder - illegaly as it was bequethed on the condition that it was never commericlaised. It was a relative of one of my aunties and she was very upset about it.

Anyway ... point is, there is just nothing like that any more. Can you imagine a place where people just hang out, have fun, booze and drugs IN PUBLIC ... and entirely for free? FUCK NO! Everything is now commercialised. You pay to get in, you pay too much for your watered down booze, and everything is controlled by someone. If you congrate in that volume now the filth come in and arrest everyone for having too much unpaid fun. Unless it's inside a gated 'festival' with private security and plenty of nods and winks.

And for all that all the drink and drugs happens anyway.

This is really sad and quite upsetting now I think about how much we've lost.

Fuck this town. Fuck Adelaide, fuck South Australia. What a shithole. Beer's good but.

Tagged biographical.
Saturday, 19 October 2019, 22:59

Frame Accurate Seeking in H.264 streams with libavformat, FFmpeg

I had the need for accurate seeking in H.264 streams using jjmpeg (FFmpeg/libavformat) and spent some time over the last few days trying to work it out. JJMediaReader has a seek that works quite well but I knew it wasn't correct as it was offsetting the read timestamp by the stream start - I can't exactly remember why I did this but I think its because it didn't work very well otherwise.

Anyway ... I finally found out why. Depending on the container, when seeking it will go to the next or equal keyframe rather than the previous or equal. Sigh. So that offset I was using just happened to be enough to work most of the time and as it reported the same start-relative time it appeared to work properly.

So I changed the seek code to use a reverse offset for the seek point, and then it will run forward to get to the correct frame. This is based on the framerate rather than a fixed time offset because some of the video I have uses low framerates. This works but can be a bit slow as it might seek back too far.

To reduce some of the redundant work I thought of using the packet byte position to read the exact packet of the closest previous keyframe. Unfortunately it seems the container formats i'm using don't support AVSEEK_FLAG_BYTE so that idea went nowhere. Fuck.

The best solution so far has been to implement a two-value seek function. The first argument is the keyframe timestamp and the second argument is the desired frame timestamp. Thus it seeks to the keyframe first and then advances by single frames until the desired frame is decoded. Short forward seeks bypass the seek step This requires an external index but the application in question needed it anyway as it requires a wall-clock-time to frame-time mapping as well.

Summary

Tagged hacking, jjmpeg.
Thursday, 03 October 2019, 02:36

Spring

I went to Thailand for a couple of weeks in September with a mate from the pub. We ate too much good food and drank too much warm beer. The food was fantastic and the place was interesting although after a couple of weeks I needed a break. I've got a ton of photos and if i ever sort them out i'll put up a post. We were up north and only spent a night in Bangkok on the way home, and avoided the seedy strips. He grew up in Thailand so did all the talking and we visited some relatives so it was a nice mix of touristy and local action.

Looking south from a lookout at Pai during sunrise. We hired a scooter and rode the 4 hours from Chaing Mai. The roads were very good.

I haven't travelled anywhere for nearly 15 years and while it was fun it hasn't sparked any desire to travel again anytime soon. The flying is to physically tortuous and the constant action is pretty exhausting.

It's also made me hate Adelaide even more! This town is starting to suck a lot. Thr urban development is turning it into a shitty overdeveloped town but without any of the benefits of becoming a real city - it's not dense enough and the road design is from the 50s where cars are absolute king. Makes it pretty human-unfriendly. And the people can suck. Somehow i've seemed to basically run out of friends. I just don't fit in with anyone and when I reach out and try I just get spat in the face in one way or another. I guess I must just suck or something. I don't really feel like i have anything to do with my copious spare time apart from go to the pub and i'm pretty sick of that. Lately i've only been going to try to get out of the house but it's just made things worse and I think i'll stay in for a while.

Work is pretty dull too. I'm doing some machine learning stuff so that's a lot of data preparation and then waiting for shit to run. It's not very interesting and it's not fun at all, and the application itself eats away at my soul. I sometimes think of getting another job but I don't want to have to apply for one and I don't have enough money to retire yet (depending on how long I might live).

Apart from all that I've not been doing a lot apart from wasting my life away reading reddit. As i've been using it for work there are some small changes to jjmpeg that i've committed but not released but otherwise I haven't been doing any coding. I've downloaded java and javafx 13 and will migrate to that soon, it should be a simple transition from java 11.

Made and installed these steps this week. Apart from the woodwork I had to clean away a big pile of bricks my brother left in that corner and extend the paving.

I've spent a good amount of time lately in the yard, from cleaning up weeds to finishing long-outstanding projects like installing the set of steps above. The two big things left are what to do under the verndah and some sort of shed floor. Either paving under the verandah and cement shed floor or decking under the verndah and paving in the shed. Might be a while yet on those.

It's a nice warm day today and I haven't decided what to do. Probably not the pub, or at least only one or two if i do. I should probably go for a ride but I don't really feel like it, i haven't had a decent ride in a long time. I'm taking a half break off work because I'm ahead of where I need to be and I don't feel like working. Next week the weather is turning to shit so I'll get back to it then.

Tagged biographical.
Saturday, 20 July 2019, 07:19

Not quite a new computer!

Well I decided I'm sick of piss farting about thinking about a new computer so I would just go and buy the bits to build one. And I was looking forward to having something to do on the weekend.

intel outside logo

But for various reasons I wanted to pay cash and of course an online shop-front doesn't have that option, so I email the retailer regarding the list of items i'd arrived at. Do they have them on hand, are they compatible, that sort of thing.

But alas, still no reply two days later.

So that bummed me out.

Then I looked at another retailer in another state, but they don't sell a single 32GB memory kit that's present in tested memory list for the only suitable motherboard they have. I'm after an itx board so that severely limits the options.

So that bummed me out further and I decided I'd just walk in to the first shop I tried and just go buy it in person. Unfortunately I ran into a mate who I haven't seen in yonks so I just ended up catching up with him all afternoon and never made it.

And now i've got a hangover and what was really just an impulse buy has turned into a hassle and so I guess it's off the table for this weekend at least. Maybe next week.

I'll probably still just end up going to them if i've still got a pocket full of cash because the retailer options are so limited in this tiny city. If they're still in business anyway, they don't seem to be too keen on making money. The chips will only get better althgough RAM is volatile so who knows there.

For what it's worth this is what I came up with:

The motherboard is the only ITX available that I can find here (or really, anywhere in the whole country in ready supply), but at least this shop says the BIOS is already upgraded. I've already got a power supply. The aim would be to build a case ... but it's a bit involved so I may never get around to it and i've got some old shit lying around I can use in the mean time. GPU is a bit of a pain, really I just want a short 1 or 2 slot AMD card (for the proper free software linux drivers). Rare as fucking hens teeth here though, the shop I was going to has had no AMD graphics cards at all for months until the 5700 came out and now that's all they have. No one else local has anything below RX 580 nor any of the workstation line which would do, if a little pricey. I have an old HD 5770 that i'll use to start with. It's a double pain if i build my own case as I need to make sure whatever i end up with will fit. And if i get a new one it may as well be the latest design. I'll probably have to order online, whatever I decide.

Tagged biographical, rants.
Tuesday, 16 July 2019, 13:20

Primary Tool Upgrades

I've been looking for a new keyboard for a while. My venerable old (old!) litetouch honeywell keyboard has finally worn itself out. I tried cleaning it but that probably just damaged the contacts further. It's a really amazing design, no screws in the whole thing, the contacts are just printed on a thin plastic sheet that folds over itself, and the springs are just a single silicone overlay which sits over it. Virtually silent and yet the keys have a very positive bump action. Each row of keys is a single injection moulded piece - almost like the way a plastic aeroplane model comes - that clips off the base. You can just unclip them all and chuck them in the dishwasher!

It still works but the left quarter is a bit finicky if you don't press hard enough. Many of the clips which are part of the injection moulded parts have snapped off. Some for example held down the contact between the keyboard sheet and PCB which houses the MCU and LEDs so the contact isn't as solid as it used to be.

I actually semi-retired it some years ago, i've just been using it on a secondary machine here.

Spot the emacs user. left-ctrl completely obliterated. right-shift is from all the C/Java language symbols. Not much left of the cursor keys. N and M were very early victims of AmiWM - which I haven't even used for years! No fucking windows keys and a proper bloody space bar!

Real pity, just comparing the key feel now it's still amazing for the keys that still work, but C and A mis-firing often enough to become obnoxious and it just can't be repaired. I can't even remember how I ended up with it or even when, I certainly didn't buy it. I think I got it through a mate (Jamie) who collected piles of computer shit. It seems to have been made in 1991! I was still using a C64 in 1991, my first year at uni.

Anyway i looked around a bit and didn't bother doing anything about it for months until last Friday when I ordered a couple of "ducky one" keyboards online. Only one shop in Australia seems to sell them, albiet in 600km away (i.e. the nearest next town). Locally you can only get microsoft keyboards or some RGB "gamer" monstrosities at exhorbitant prices.

A Ducky One `ten-key-less', with the all-black tops. I got the cherry-mx brown switches.

I don't really know anything about them, or what appears to be a whole computer sub-culture regarding 'mechanical' keyboards.

But I liked the idea of a keyboard with no markings, i've worn a few off over the years so this should be immune to that at least! Actually from a sitting position you can read the front face of the keys not covered by your hands anyway. It was also a bit cheaper. I also really liked the idea of the `ten-key-less' design - I've always found the numpad a fucking pointless desk-waster.

The description of the `brown' switches are soft but with a bump - but they're not quite as positive as the litetouch was though, and definitely much louder particularly when they bottom out. If my sister ever types on it she'll make a racket as she really thumps the keys and types like she's on a mechanical typewriter (on which she learnt).

A Ducky One Two `ten-key-less', with the Horizon colour scheme. I also got the cherry-mx brown switches here.

And this one really just because I liked the colours. It's quite pretty! This is a newer design and feels a little softer and quieter but i haven't used it much yet.

They both come with a couple of extra key caps in contrasting colours (pink for the black one), although a few of the keys are for the non-existent numpad. They're both fairly heavy and very solid, basically no flex in the body.

I'm still getting used to the tiny differences even though the layout and dimensions are identical to the keyboards I was using. Probably the main difference is that the very top of the key is slightly smaller so they have larger gaps in between, it just throws out my touch enough but it wont take long to get used to them. Oddly I end up not making typos so much as typing a completely different word? I mostly type on my work laptop anyway, whose keyboard isn't fantastic but it's adequate.

My desks are always full of shit so the smaller size is handy as well.

I wouldn't have minded a bit more of a positve feedback on the key presses, but I guess I will get used to it and they aren't squashy at least. I suppose i'd better, the pair of them cost $250, but given the amount of time I spent on the damn machines it's justifiable. I only really needed one but this saves more desk space, and maybe i'll take one to work if i ever spend enough time there.

Another tool looking to be upgraded is my home machine. I'm thinking of getting a ryzen 3K system at some point, but i'll probably umm and ahh over that for months more yet - or just spend on a whim. The X570 boards are just too overpriced and there's basically no ITX boards to be had either.

Update 21/7/19: Short mini-review. I've been using the D1-2 (the blue one) on my home machine enough to get used to it. In a word: very good. I was at work using a keyboard that I thought was ok before (a HP workstation keyboard, one of the flat square-keyed ones) but it felt like typing on soggy bread - although this was the project managers keyboard and not my pc of the same, and well, he eats at his desk.

Tagged biographical.
Sunday, 14 July 2019, 03:11

Improved post navigation links

I've made a minor improvement to blogz so that when viewing a single post the navigation links at the bottom of the post show the title of the next/previous post rather than just saying 'Older' or 'Newer'. This was something I had intended to add when I got the database backend working but that is still in limbo. Actually most of the code for the blog output is done, I just can't decide on relatively unimportant details like the serialisation format for the metadata records. The other issue is adds a whole mass of potential complexity to creating posts rather than just editing a file on a shell login. Like an order of magnitue of complexity. It doesn't require this complexity but it enables it.

I made some other minor changes to the stylesheet mostly to do with inline figures (photos and captions), justified the text of posts, and messed about with the About box.

Tagged blogz, zedzone.
Saturday, 13 July 2019, 03:22

Reading multi-stream high-depth videos in octave (and matlab)

So I discovered recently that octave and matlab support direct calling out to Java. We had a need to read both multi-stream and high bit-depth videos from them, and using jjmpeg seemed a lot easier than writing some mex shit. The native video format support in matlab is abysmal and it simply has no capability for reading multi-stream videos either.

Anyway, i've just commited some stuff to jjmpeg in contrib/octave. It consists of a simplified multi-stream VideoReader and a small set of octave.m files which ease it's use and make it portable. And a Makefile to compile this using a Java 8 JDK because those tools are so wildly out of date.

Here I am testing my patches for ffmpeg+kinect as discused in some recent posts. This shows the 3 streams recorded by that tool; colour 8-bit mjpeg from camera, infra-red 16-bit raw and depth 16-bit raw losslessly encoded using jpegls.

The .jar file and octave scripts are portable to matlab. Althhough the license means they cannot be distributed, I think.

Since the freenect2 indev patches were not accepted into ffmpeg I will add them and probably the kinect2 indev patches to jjmpeg/contrib as well. At some future point in time.

Tagged code, hacking, java, jjmpeg.
Newer Posts | Older Posts
Copyright (C) 2019 Michael Zucchi, All Rights Reserved. Powered by gcc & me!