About Me
Michael Zucchi
B.E. (Comp. Sys. Eng.)
also known as Zed
to his mates & enemies!
< notzed at gmail >
< fosstodon.org/@notzed >
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.
Coastal Weekend
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.
Disconnection
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?
Inkscape ARGH!
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.
Yawn
Well that was a busy weekend. I started each morning pretty slowly almost wanting to just stay inside all day but ended up a solid 5 hours each day in the yard and then some at night. Did some grocery shopping in two trips on the deadly and finally got some hay fever pills. Pruned the roses (a little late - they were already flowering again) and re-staked most of them. Stacked up the dismantled shed more neatly. Took down the last beam of the old verandah. Levelled off the shed site better. Broke a rake. Shifted 15 barrow loads of earth out of the way. Cleaned and rolled up the old sun-blind from the verandah. Sprayed the weeds. Sprayed the roses with fungicide. Cleaned and sanitised 40 longnecks. Bottled some homebrew, started a new homebrew. Baked some bread (getting quite good at that). Ripped a few heads off in God Of War 3 ...
No time or energy left for hacking. Although with the sunlight hours extending my sleep patterns are going crazy. Up early, then not tired till very late, then sleeping in and visa versa.
Last week I was looking up algorithms on the net and finally got fed up with google only showing cloaked paywall websites. I tried yahoo! (ugh, bing!) again (I usually end up doing this) and found as usual that it went more directly to the papers when they were available freely. I'll have to keep that in mind next time - it's just too time consuming finding stuff using google and resorting to google scholar is a bit hit and miss and more of a pain. Damn I wish my maths was better though - ever since matric i had trouble with differential calculus and I could really use it now.
Was having a generally brain-dead week anyway, every new bit of code I wrote seemed to be more broken than the last - after slowing down a bit I lost the knack for a bit. The hayfever hasn't been helping either.
And then there was none
Should've been working today but I was feeling very agitated and couldn't concentrate ... I borrowed a ladder yesterday so I thought I'd just take a couple of sheets of plastic off of the verandah ...
Except once I got going I couldn't stop. Ladder was pretty shaky to start with - I first tried to go up to the highest spot but it was just too much and I had to come down again. For reference the sliding doors are about 2100mm or 7' tall. But by the end I was walking down forwards carrying a few tools at the same time.
Now just a few dyna-bolts to take out for the end plank and it's done. Guy's coming to do the final measure tomorrow so i'll see what he has to say about a few mistakes I might've made - like some of the retaining wall and if I have to take out the palm tree or the rear fence ...
Although now without a verandah I think it's about to rain - might wash away some of the dust anyway.
Super Affine Tool Thing
Quite a bit of progress on ImageZ over the last few nights. Didn't get a lot done in the yard over the weekend - a visitor on Saturday and I was lazy today but I got a couple of hours of gardening in - mowed the lawns, transplanted some rhyzomes from the patch of grass i have to the patch of non-grass I don't want, weeded one of the vegetable patches and shifted most of my pots out of the way ready for more work readying the yard.
ImageZ
Fixed up a few issues with using non-pre-multiplied alpha, but only for normal blending mode - I know all the other blending modes are still doing it wrong.
Actually I can't really remember where I was at last time and how much i've done since then, it's all blurring into one long indistinct memory.
But I did work on what i've been calling a 'super affine tool'. It combines the various affine operations into a single tool in a way that should still be accessible.
A scaled, rotated and translated cat
I've been thinking about this for quite a while but finally sat down to nut it out. When you bring up the tool the following controls pop up in the middle of the image:
- Centre Disc
- This is the location of the image relative to the centre of the image. i.e. a simple translate.
- Inner Ring
- Sets the location of the rotation centre point on the source image.
- The two Parallelograms
- Adjust the shear in X or Y. The shapes move as you drag them in proportion to the shear amount.
- The two Rectangles
- Adjust the scaling in X or Y. The shapes scale as you drag the mouse in proportion to the scaling amount.
- Outer Ring
- Adjusts the rotation angle. Yes it probably needs some sort of indicator, although the moving image gives you that.
I'm still tweaking the affine transform matrix it produces to make it behave nicely. It applies the rotation, then the shear, scale and finally offset. This makes it behave mostly how you'd expect it to, although in some cases you'd have to run it multiple times to get exactly what you wanted. And it doesn't work properly if the view is zoomed ... and you can't actually commit the operation yet.
Damnation in hell Java is fast at this though - it must be accelerating it using the graphics card. I'm even using linear interpolation with alpha blending for the real-time preview and it's really nice and quick - at least when using one of the native layer types. Even a full-resolution image from my digital camera at 4288x2848 is flinging around at ~15-20fps.
I'm not entirely happy with the tool options on the left - there's a lot of numbers and spin buttons - but I guess it's not completely out of the question.
Actually I was also looking at putting tool options there which is why it's shown up there in the first place. But i'm not sure about that yet - if I do that then most tool options will really need to be per-image otherwise the behaviour will be a little odd. I'm not sure if this is desirable. For example if you set the tool to 'pen' you might reasonably expect it to be 'pen' on another window. Or maybe you might not - it probably doesn't matter either way.
Menus revisited
I also had a good long dig at fixing some issues with the Amiga style menus. Basically some bugs(?) in the lightweight comboboxes were giving me nightmares. I was using an event listener on the glass pane to capture mouse button events. But the problem is when you do that you end up having to re-route the mouse events manually! I did manage to get that working quite well over the last few weeks except for the combo boxes. If you hold down the button and drag when selecting a combobox item it works fine, but if you click twice it doesn't! I eventually found similar discussions in the java forums and adopted a new version which just attaches a low-level event listener instead and simply snarfs the menu-button event. It reduces some of the flexibility I might have had in say allowing context menus as well, although I can probably hack that if required. But now the menu works reliably and doesn't interfere with the rest of the application. It's probably something that would be turned off if you wanted to use a Macintosh since that separates menus from windows already, but that is of no concern to me.
Copyright (C) 2019 Michael Zucchi, All Rights Reserved.
Powered by gcc & me!