B.E. (Comp. Sys. Eng.)
also known as zed
& handle of notzed
I was playing around over the last couple of days with adding extra work queues to the OpenCL application i've been working on for work. Up until this point I was using a single queue referenced off a central 'context' object, which has worked ok, but I had to add some longer-running background processing steps which don't fit into the rest of the application.
I noticed one weird thing - I have two separate processes, one of which (say) takes 5 seconds to run, the other 6. If I run process 1 and 2 at the same time (on separate queues), process 1 takes about 6 seconds to run but process 2 blows out to 25 seconds. If I run two lots of process 1 then they both take about 10 seconds to execute.
I suspect it is because although they execute in about the same amount of time, process 1 is made of fewer steps and the scheduler is just alternating through the jobs in function-call sequence and so a lot more of process 1 gets run when process 2 is also active. Although it doesn't matter at this point it could be a significant problem in a 'real' application.
They are both run on a separate thread and throw out a lot of queue.finish()'s as well - mostly so it can detect user cancellation without queuing up too much work, but also because it seemed to run into resource problems if I queued up thousands of function calls at once (the over-all processing time is important but the interaction is more important at this point). So that also might be affecting the scheduling time. This is on NVidia.
I also found a bug in JOCL and filed another bug on the jogamp bugzilla - the 3rd JOCL bug there, and the 3rd i've filed myself. Hmmm.
Spent a few days this week ... gasp ... coding C++ on microsoft windows. Ugh. I don't really get paid enough for that pain, but I suppose it's bearable in very limited amounts (and being a professional, one just has to deal with it). I was looking at using directshow to get some images from a camera. No surprise - what a horrible shit, overcomplicated and poorly documented API. The bits I needed to use were removed from the microsoft windows 7 sdk too, and the published work around is to copy the headers from an older one ... sigh. Strangely enough the fastest way to look up functions on MSDN is to type it into the URL bar in firefox and let google find it; the bing link was slow slow.
Although it did force me to finally work out JNI. Which is fairly simple and straightforward and a bit easier than I thought it was. It is a little clumsy but not unreasonably so and in ways that seem to make sense. I think what normally makes it such a horrendous pain is 1. microsoft windows, and 2. ant.
It's a bit of a cold dreary wet weekend and I was still feeling a bit seedy from a (very) boozy Thursday night - not to mention having 2 packets of chips for dinner yesterday - so I just spent all day today hacking. I was thinking of doing some video image processing stuff but that seemed too much like work work so I played with DVB instead. Maybe I should've poked ImageZ a bit more.
Mucked about with a simple bit of code to record the transport stream and change channels, and using ffmpeg's libraries to play them. Very simple and pretty easy. Pity that's really the only easy bit - which is why i've always avoided playing with this stuff before. There's somewhat more to doing anything useful with it than just storing and playing video. Then I got sidetracked learning about the EPG they use in Australia - which is some horrid MHEG stuff, or EIT neither of which I could find much about. Along the way I tried a newer mythtv ... oh dear, that's got even more bloated. It has bits or extensions not only in everyone's favourite extension language of the month that I love to hate - python - but also perl and even more alarmingly, php.
Might need to get away from the screens and keyboards tomorrow.
At last, the verandah is done.
The highest corner is 4.4m from the ground.
Next, the shed, drainage, electricity, shed floor, deck, rainwater tanks, paving, lawn ... ...
Pay per patch
I just read an interesting article about a pay per patch business model for free software.
This is something i've been thinking about lately and I came to a similar but slightly different solution - not that I necessarily want to go down that path myself.
The problem is a pay-per-path or pay-per-feature model is essentially a 'bounty' system - and bounty systems just aren't that successful for a number of reasons.
- You still need some sort of maintainer to vet and accept the patches (are they unpaid by the patch money?)
- Duplication. You can't work for nothing for potentially months on a project only to find someone else has done it, also see next point.
- Undercutting - students, otherwise employed (e.g. me), people in developing countries don't mind working for relative peanuts or even nothing at all.
- Legalities. It is really work for hire but usually not treated as such because it complicates matters particularly for international projects. Obviously this is something PFP would try to address but it isn't simple.
I think it needs tighter control for a given product and not be so much a free-for-all for all comers. Also a formal legal grounding is required and for adequate compensation.
- Only a core set of project maintainers would be part of the process, depending on the project. This removes problems with duplication of work or the need for separate approval. As with other projects people could contribute in their own time for free as well and eventually become a core maintainer if there was enough work/they proved their skills.
- Contracts are based on time and materials. The customer (be it a 'contracting company' organising multiple cients or the client itself) and worker (be it a group or an individual) agrees to a formal contract of what is to be done in what time-frame, and at what rate.
Essentially it boils down to running a project as a business rather than as a hobby. An example might be an individual or group of individuals starting a new project from scratch, getting it to a base level of usability and then asking customers to pay for new features. The main difference from the PFP model is you don't have a 3rd party involved as such, or a free-for-all for who might apply to do the work. As soon as you add 3rd parties you add extra costs ('leeches'), and lots of politics.
Although this will work for business and enterprise applications I'm not sure it would work for end-user applications. For starters end users are used to paying nothing for software (even if it was hidden in the cost of the computer). Secondly they don't realise just how expensive software is to make. At the very least of say $50/hour, it adds up very fast (casual cleaners get $22.50/hr here, so $50/hr is pretty cheap). Even very simple features will take at least a few hours to implement and some may take weeks or months for multiple developers.
And you still have a problem when the software works well enough for most users - eventually most software goes into maintenance mode where less effort is required. The upgrade mill that proprietary software companies use adds unnecessary expense for users even if it helps the developers maintain their lifestyle.
This is where I went for the long weekend just past. After a few cold and windy mornings the weather finally smiled on us and my early morning rises were finally rewarded with this tranquil sight.
The clouds ended up burning off during the day and a few of us went out on a small boat and caught a good feed of squid and a small fish and a crab.
We were fishing in a few metres of water and it was so clear we could see the squid approaching from 10 metres away and being tempted by the jigs, and the crabs walking into the net. As one squid floated by hiding under some floating seaweed I dropped the jig infront of him and simply pulled him out of the water.
I finally deleted my facebook account. I only seemed to use it when i was feeling particularly lonely and/or drunk and as a consequence normally just said stupid boorish things that made me look like a wanker anyway. Not that anybody else ever says anything of consequence, it's all so banal and pointless.
But it feels a bit like the cutting the last connection I had to many people I've known for a long time (some nearly 20 years), since most of them don't seem to know how to use email any more. But I don't feel comfortable with having to use such software to do it, and if the sum total of the effort required to maintain a connection with someone is logging onto a server in the USA and posting smart-arse one liners I somehow don't think it will be missed. I rarely logged on more than once a month anyway.
Haven't felt like hacking much lately - hit a wall with work and seem to have lost the energy to hack in my free time as well. Spring I suppose - usually makes me feel a bit like that even without the hayfever, even though i've been waiting for the weather to warm up for so long. With the warmth the garden already needs watering to keep it going. The peas have gone crazy, collapsing in a big heap and lots of flowers, and more than enough to eat every day. Just waiting for the shed to go in before the next hive of activity in the yard - electricity, floor, rainwater tanks and storm water, although I really just want a break for a while.
Friends invited me along to a house near the beach over the last long weekend - which was really good fun. Although by the end of it I think i needed a few days off to recover. So much food and booze, and too many early mornings. And coming back to an empty house always feels ... empty.
Black on White
Hmm, was it firefox that changed the default background colour of web pages to white rather than the more eye friendly grey? And why do gnu/linux distributions like to use white-on-black as the default colour scheme for terminals - which is also very bad for your eyes?
I noticed that particularly with a couple of big screens I use that the white on black is giving me sore eyes - and the pretty nasty headaches I had last week i've worked out were probably an extreme result of it too. I changed netbeans to a mid-light-grey background and firefox too and already i'm already finding it a lot easier to look at the screen. Although for some reason the firefox changes have broken certain images.
What I don't understand is: everyone knows these colour schemes are not comfortable to look at for hours on end, why are they the defaults everywhere? Is it just to copy microsoft or apple operating systems, and if so, why are they also so poorly thought out to begin with?
Damn, it's that time of the project again - and in need of some sort of diagram editor.
Inkscape - looks the part, has lots of features, but maddingly as hell to use and buggy as all shit. When I try to grab stuff it keeps grabbing the wrong thing. The modal editing of objects is sort of nice but hard to get used to. Snapping snaps to different things all the time. The text tool is very unreliable - e.g. setting fonts. Every time i leave it on another desktop for a while I come back to half a dozen python error boxes (@#$@# python bullshit no wonder), and then it just crashes with a windoze-like error box.
I've had it crash 5 times in 2 hours, things vanish while I try to move them and generally a pretty abysmal user experience. Why can't the developers focus on stability rather than features and pretty toolbars? I might have to persevere regardless however as the openoffice draw thing is awful and dia is a bit too bare after all these years.
I think i'm just unlucky with the version in Fedora 13. It has a few other issues such as a version of Octave which simply crashes whenever you try to do any image processing.
Hmm, had an ear-ache most of the day, and it's getting worse. Trying to get drunk enough to make it go away. I think I scratched my ear trying to get some wax out the other day, or maybe i'm just worried I did and made it hurt for nothing, but half my head hurts to touch too. Had a horrid nightmare this morning which kept me awake for hours and then I spent the otherwise quite pleasant and occasionally sunny day writing documentation.
Altogether a day to forget.
Copyright (C) 2019 Michael Zucchi, All Rights Reserved.
Powered by gcc & me!