Wednesday, April 29, 2009
i love indie games.
except for how they never really quite work with my system. like, one says to use the left/right mouse buttons, but it doesn't work with my laptop trackpad buttons. or another one can't get the video going right. etc.
and some of these are written with game-maker, so shouldn't that have done the right abstractioning so that things just work?
i think that being a AAA title is perhaps less about eye candy and more about system testing.
except for how they never really quite work with my system. like, one says to use the left/right mouse buttons, but it doesn't work with my laptop trackpad buttons. or another one can't get the video going right. etc.
and some of these are written with game-maker, so shouldn't that have done the right abstractioning so that things just work?
i think that being a AAA title is perhaps less about eye candy and more about system testing.
is it funny how things like sticky keys in windows xp apparently screw regular folks? like, i swear i've told that thing to PISS OFF a zillion times, and yet it still shows up when i'm trying a game demo that uses the shift key.
it bugs me how bad the user experience is of trying to find an install and maintain firefox plugins.
heh, nifty thought, sort of a cheap total perspective vortex on how lame your code base is!
'The last person in the world who could possibly know "how much longer" a task is going to take is the person who first guessed wrong about "how long" it would take.'
Tuesday, April 28, 2009
this is the kind of thing that kills me in javascript. it doesn't help that i think maybe 'scope' isn't the same thing as 'extent' but people don't know that, and so say 'scope' when i think they should be saying 'extent'. also, i just think that kind of implementation for extents is just weird. (maybe powerful for some things, but just not so good from a software understandability / maintenance perspective.)
if your programming language doesn't let you change from a field to an accessor w/out having to change any client code, then it kinda sucks. (Scala, Python are good that way? Ruby? C# gets close but then screws the pooch because fields use lowercase but properties use uppercase. I guess they claim you should have been using properties from the get-go, but I think that sucks ass, at least from a boilerplate perspective.)
"Part of our job is finding ways to let organisations know that perhaps their people just lack the *capability* to achieve the goals the organisation is demanding of them. This means valuing and building core competence and knowing the signs and indicators that signal that a team are struggling due to a lack of ability."
Monday, April 27, 2009
you can lead a horse to water, but only with NLP can you make 'em drink. heh.
in the end, maybe it is less a TLA and more like a four letter word.
speaking for my self, i really don't understand how anybody can sell a burrito that doesn't have guacamole and salsa, if not also sour cream, on it. i mean, what is the freaking point?!
Friday, April 24, 2009
apart from the hot chick, i didn't much like the 2007 Transformers movie. mostly i just think the whole idea of Transformers is pretty un-compelling and just kinda dumb.
having said that, i think the next one is going to be pretty bad-ass. go figure.
having said that, i think the next one is going to be pretty bad-ass. go figure.
i think that disney land would be fun if it weren't for all the damned people.
L4D is just OK in my book. not really particularly awesome. i guess it just isn't my genre, and it feels quite repetitive and un-novel. (don't get me wrong, i don't hate valve in general or anything. well, ok, i hate steam, and i actually kinda think that other than the original HL, and Portal, everything is overhyped. but still.)
Thursday, April 23, 2009
good thing java is so backwards compatible. (i know, it could possibly be worse if there wasn't something of the meme at Sun, but ever since the generics weirdness i don't really believe 'em.)
i do like to read something opinionated every now and then.
here's hoping the future of ui development sucks less, due to some crazy folks.
an old but very nice overview. i wish more things were written up like that.
"Thus this formula is best applied to stable software development teams which have completed multiple projects."
ha ha.
ha ha.
"In my experience the limiting factor on the rate of software development is our (us humans') ability to understand each other and achieve consensus on what is to be built. That is where Ubiquitous Language helps in part, and Ubiquitous Language reveals Conceptual Contours, and Conceptual Contours are an important foundation of the conceptual integrity of a system (which, according to Fred Brooks, is the most important aspect of a system architecture - that it exhibit conceptual integrity)."
Wednesday, April 22, 2009
"Americans throw away enough aluminum every three months to rebuild our entire commercial air fleet."
i kinda hate the web. i mean, unless it can somehow create free time for me ex nihilo.
it is nice to see how the United States of America is run by a bunch of geniuses. (yeah, that's CA, but i think the same stupid attitude of denying reality is rampant nationally as well.)
so now you can sorta get something like dyalizer, but for ruby. neat. i think we should have a lot more of that kind of tool. it would be neat if there were some toolkit for making such checkers for other languages!
funny how some software luminaries say, "start with the data structures!" and then other people say, "start with the behaviour, the data you'll need falls out of that!"
presumably there is no silver bullet. i wish i had a better sense of how to approach figuring out which way to lean in any given situation, though.
presumably there is no silver bullet. i wish i had a better sense of how to approach figuring out which way to lean in any given situation, though.
i have always had some affection for the position that a database can and should be your secure, long-lived vault for precious business data. as opposed to, for example, not having a strict schema and having a big ball of mud application. point being that anything beyond a table or two in terms of mental complexity is already going to be a maintenance headache because reality is hard. hence the desire to make the database schema quite anal (as opposed to some dope-smoking OMG OO schema from hell).
having said all that, i can also really see arguments against the classic Codd-ish approach.
for example, a database alone (in this day and age) is rarely the only component of a system. inevitably there will be other applications with logic and constraints and schemas, all interfacing with the db. so then you have the questions of how do you split up all those responsibilities for keeping data correct. do you use triggers and stored procedures? how on earth would you be able to use that for a really nice interactive fun performant user experience?
you can also squint an eye and look at it from the perspective of behaviour. short of stored procedures, there is behaviour that has to be captured somewhere, usually in an application layer. behaviour is more than just data state. frankly, i get the impression that developing behaviour in stored procedures is not a particularly nice maintainable way to go were it even a reasonable thing usability-wise.
so do you throw out the idea of using a relational (well "sort of relational" since C. Date and F. Pascal would admonish us that sql isn't really perfectly relational) model and go with either an OODB or perhaps a schma-less thing like CouchDB?
i dunno.
oh and p.s. even database schemas should be amenable to refactoring, and honestly i think not many people know how to successfully refactor a database (and all the apps which depend upon it).
having said all that, i can also really see arguments against the classic Codd-ish approach.
for example, a database alone (in this day and age) is rarely the only component of a system. inevitably there will be other applications with logic and constraints and schemas, all interfacing with the db. so then you have the questions of how do you split up all those responsibilities for keeping data correct. do you use triggers and stored procedures? how on earth would you be able to use that for a really nice interactive fun performant user experience?
you can also squint an eye and look at it from the perspective of behaviour. short of stored procedures, there is behaviour that has to be captured somewhere, usually in an application layer. behaviour is more than just data state. frankly, i get the impression that developing behaviour in stored procedures is not a particularly nice maintainable way to go were it even a reasonable thing usability-wise.
so do you throw out the idea of using a relational (well "sort of relational" since C. Date and F. Pascal would admonish us that sql isn't really perfectly relational) model and go with either an OODB or perhaps a schma-less thing like CouchDB?
i dunno.
oh and p.s. even database schemas should be amenable to refactoring, and honestly i think not many people know how to successfully refactor a database (and all the apps which depend upon it).
Tuesday, April 21, 2009
there's the claim that you need to remove the accidental complexity of the code, and leave only the inherent complexity. the thing is, i think that a lot of programmers (myself included) do not have a strong enough sense of what is accidental. we make things that have complexity we think is inherent, when in fact there are ways one could reduce even some of that. (for those of us who are at all introspective and who think about such things, we tend to notice when other people find bugs in that code.)
as anti-social as i may be, i think i see ever more value in pair programming. for example, i think that most individual programmers are making all sorts of usability decisions about the code as they go along, and assume their preferences and choices make sense to other people. but that isn't always the case, and i think that every little mental speed bump reduces the overall flow anybody can achieve while programming. so the sooner those things get ironed out the better. (naming is another more obvious canonical example, i think.)
Monday, April 20, 2009
gc is all fun and games until you are screwed by nasty pauses, because your gc isn't concurrent, and you also don't have any dials with which to tweak the gc behaviour. w00t.
no, microsoft (or at least msr) isn't just sitting on its laurels, whereas the open oses seem to be, in many ways (e.g. powershell vs. unix pipes).
"Hey mister businessman, stop worrying about the costs and start worrying about the quality." hmm...
always too much to read, i can never keep up, and that's even with the 'serious' stuff let alone time for any entertainment.
"The problem with the cost of delay function is that it is not known in advance, only in retrospect."
Sunday, April 19, 2009
you just gotta love web applications. take google docs in firefox 3, for example: i'm trying to shift-down-arrow to select some lines of text, and it is doing this thing where it often takes / ignores multiple down-arrows to get it to actually extend the hilight down one line. whereas if i'm just moving the cursor w/out shift then it steps every time i press donw-arrow.
w? t? f?!
w? t? f?!
i mean, holy consultant hyperbole, batman. a zillion words when they could have simply said "hey, the service provider should actually know how the clients use it, so things don't get broken. it is, you know, good old-fashioned working together type stuff." but noooo they had to blow hot air up your butt and sound all consultanty. (oh, and don't even get me started on the issue of the little graphic.)
i find it odd that firefox doesn't have features like "convert tab to new window" and "convert window to tab".
man, the ui in firefox 3 for dealing with "bad" security certificates sure kinda bites. i'm sure it is a hard problem, so i guess at least they are helping with the overall situation by showing what not to do?
it seems a little odd to me that google results can't be sorted by date. i guess it isn't easy to have a date for every page, but it seems like there could be some sort of heuristics. i mean, their advanced search settings lets you restrict to recent dates, which implies they have some sort of date information.
Saturday, April 18, 2009
from what i can tell, the one good thing about javascript is that you don't have to type "this." a lot.
ha ha.
ha ha.
i wonder if The Methodologist would be either a good band name, or horror movie title?
uh, folks: GUIDs/UUIDs aren't actually unique. i hate that. (well, i hate that it appears that people use them as if they were unique, and just say "eh there'll never be a collision, i don't have to handle that in my code!")
Friday, April 17, 2009
here's why i obviously just don't fit into the modern world, at least as AT&T see it: we now have telephone-based services which have managed to combine the worst of everything, so i can no longer just use the touch tones to do things, i have to talk at them -- but not to a real person, to some AVR system. when i want to talk, i want to talk to a person. when i don't want to talk, i don't want to talk to an AVR, i want to just use the bloody touch tones.
Thursday, April 16, 2009
i know! how about we have a feature for the user! and then if they actually try to use it, we tell them they are using it too much, and basically to piss off!
oh how i h8 the web.
oh how i h8 the web.
of late, i think i can safely say that gmail is a total piece of excrement when it comes to using firefox: the ajaxy fails to load, forcing me to use the regular html version (maybe it is a plot to make people really love ajax) like say 40 or 50% of the time.
Wednesday, April 15, 2009
passing strings like "rgba(10,20,30,0.4)" as the fillStyle spec for the html 5 canvas in javascript really makes me barf. i mean, who come up with this poop?! have they never actually heard of objects?!
boy, do i hate everything.
the Find feature in regedit doesn't let you enter a full path e.g. "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" doesn't find anything. no, you have to manually navigate there.
the Find feature in regedit doesn't let you enter a full path e.g. "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" doesn't find anything. no, you have to manually navigate there.
"Our experience in Kanban is definitely a work in progress, but one aspect I really like is the relationship between the kanban board and our BDD test suite. MMF's are represented as namespaces, the supporting stories are represented as contexts, and scenarios within stories are represented as specifications (tests). The AAA (arrange, act, assert) style of test automation is nothing new, but it is nice to see it clearly represented in the code and the board at the same time."
"In my experience, putting the goal *first* generates more interesting conversations (about value) than tacking it on the end."
has your language jumped the shark when it gets a monad tutorial? or has it arrived?
firefox pisses me off (of course, all software pisses me off). it pisses me off that the people working on it are apparently either (a) too clueless or (b) to busy working on new fancy-pants feature to bother to fix the simple things. like the fact that the text search doesn't have a checkbox for 'whole word'. like the fact that the plug-in upgrade ui is horrible. etc.
Tuesday, April 14, 2009
firefox sucks. it hasn't rendered the new page, so it looks like i'm on the old page, but the view of the old page isn't active e.g. i can't click on a link because in fact they have already gone away - even though i can still see them.
some fun:
"What language support gives you is more invariants, with the lower layers having more invariants than the higher layers. Nice properties to make invariant in lower layers include: guaranteed termination, determinism, confinement, capability, evaluation-order independence, freedom from certain side-effects, freedom from certain errors, freedom from deadlocks, etc.
These invariants in turn make the language easier to reason about, especially with regards to black-box composition. This allows programmers greater confidence in the result of composition (e.g. in terms of security, deadlock, partial failure and recovery) without requiring they become informed of implementation details of the modular components."
"What language support gives you is more invariants, with the lower layers having more invariants than the higher layers. Nice properties to make invariant in lower layers include: guaranteed termination, determinism, confinement, capability, evaluation-order independence, freedom from certain side-effects, freedom from certain errors, freedom from deadlocks, etc.
These invariants in turn make the language easier to reason about, especially with regards to black-box composition. This allows programmers greater confidence in the result of composition (e.g. in terms of security, deadlock, partial failure and recovery) without requiring they become informed of implementation details of the modular components."
"I apply a simple test with young students: smash a teapot into pieces and then hand out the glue. Those who rebuild the teapot won’t make it, those who create phantasy [sic] animals and spaceships will."
some food for thought: "Standard Work takes a different approach, rather than trying to document 'lessons learned', incorporate them into how you actually do your work."
i don't care if you top post or inline post or bottom post. i do care if you excerpt the whole bloody sequence of messages and add some small note, rather than editing down the whole bloody excerpt. in my dictatorship...
Monday, April 13, 2009
hm, some interesting static visualizations. (yeah, yeah, if you read reddit et. al. you've already see this, whatever.)
so even when agile, maybe there's something to be said for standardization?
maybe make sure your system architecture is always (as much as possible) predicated upon / linked to / validated by real organization and user needs. and try to be iterative about developing said architecture.
Saturday, April 11, 2009
"The lists of requirements are valuable, but only if you do not treat them as a backlog. Instead use each one as a clue that there is some underlying business purpose trying to extract itself from the tangles of a proposed solution to an ill defined problem. This is a hint to apply the five whys. Keep asking what the business purpose is for this requirement until an obvious, simple business purpose is revealed."
Friday, April 10, 2009
there's a special place in my heart for people who try to fix the harder, more valuable problem.
fun to think about the complex sale, even if when i think about real situations in my life where i could use it i just get mad that the people i need to sell to don't already grok what it is i would be selling, and are doing things the same old painful error-prone lame frustrating way.
the one time i worked with a PM who did critial chain, i liked it.
it will never do away with all such issues, but, for the love of pete can we please all start using higher level languages instead of writing crappy C-style code ever over?!
i've always kinda hated drag-n-drop because of the failure modes. so i don't think Raymond goes far enough.
"Some managers encourage this behavior when they focus too strongly on can-do attitudes. By elevating can-do attitudes above accurate-and-sometimes-gloomy status reporting, such project managers undercut their ability to take corrective action. They don't even know they need to take corrective action until the damage has been done. As Tom DeMarco says, can-do attitudes escalate minor setback into true disasters (DeMarco 1995)."
yadda yadda yadda.
yadda yadda yadda.
so i think there are some claims somewhere that information technology has increased productivity for those who use it. while i sorta think that is kinda a load of bull, i would like to see something along that line of thinking that tells us the whole web application thing is a giant freaking billion dollar loss of time and money, because now we are always waiting for remote servers to get back to us, rather than having things done locally so that we can just really get into a flow.
"A User Story has value to the user. But it might not generate revenue on its own. An MMF has value to the business. It should generate revenue on its own"
wow. i kinda utterly loathe eclipse. i mean, in general it is better to be using it than not, but there are times when apparently the whole attitude of the system and community is to actively obfuscate, and make things as weird and difficult and hard has possible.
to wit: ui themes.
to wit: ui themes.
something that frustrates me: the mac supports inverting all the colors. but i don't see a way to do that for just one app. which is what i really want.
software development is a pathetic, freakin', joke. i mean, if even the development systems suck this bad, how can you expect programmers to be smart enough to actually produce apps and systems that don't suck?
here's my suggestion for Sun to make a comeback: release a linux distro that incorporates java so well you cannot believe it. unlike all other os's on earth, including linux. it would be something of a tour de force in usability and user experience if they could make it not suck.
wow. java on the mac is a freaking joke. i mean, it is a joke in terms of trying to keep up to date with versions of java. and then the kicker is that it is a joke in terms of figuring out how to tell mac os what version to actually use.
fyi: there are several different ways to tell the system which java to use. you can set it in "java preferences" (use spotlight to run that), but then you might notice that in your terminal it still is using some wrong version. so then people tell you to manually change CurrentJDK in some obscure system folder, but then it still doesn't work because /usr/bin/java uses Current, not CurrentJDK. in the end i used the java preferences app again and changed the "Java Application Runtime Settings", at the bottom, not just the "Java Applet Runtime Settings" at the top.
all in all a truly delightful user experience. and i have no idea if this will work. there are all sorts of warnings about how 1.6 is 64-bit and that 64-bit versions don't work in various and sundry cases, so i assume that i still have some amount of wailing and gnashing of teeth to experience around all this.
fyi: there are several different ways to tell the system which java to use. you can set it in "java preferences" (use spotlight to run that), but then you might notice that in your terminal it still is using some wrong version. so then people tell you to manually change CurrentJDK in some obscure system folder, but then it still doesn't work because /usr/bin/java uses Current, not CurrentJDK. in the end i used the java preferences app again and changed the "Java Application Runtime Settings", at the bottom, not just the "Java Applet Runtime Settings" at the top.
all in all a truly delightful user experience. and i have no idea if this will work. there are all sorts of warnings about how 1.6 is 64-bit and that 64-bit versions don't work in various and sundry cases, so i assume that i still have some amount of wailing and gnashing of teeth to experience around all this.
man, it bugs the poop out of me how much the mac environment actually kinda sucks, even though it is, i thought, supposed to be this uber user experience thing. well, ok, maybe it even actually is when compared to windows or linux, but it still kinda sucks!
today is shaping up to be a real hum-dinger.
first, there's this merge during my commute where i merge into the main roadway (they are all roads which are basically highway entrances, all feeding together before feeding onto the highway), and recently people on the main roadway have been stopping when they see me -- even though they have the right of way. so of course i'm already slowing down so you end up with 2 cars that are stopping rather than actually merging. that. drives. me. bloody. nuts! i think snl should have a recurring skit called Overly Cautious Driver.
second, an OS upgrade on a machine worked (surprisingly!) but now i'm seeing all the New Featurez! that i actually hayte, and re-experiencing all the things about the OS that i've always hated all over again as i try to re-set things up. so basically the upgrade, which in theory ideally would be something where you have nothing but fun, right, i mean, shouldn't that be what an upgrade is all about?, but no, it ends up just being something which reminds me how much i hate technology, and my blood pressure just goes up up up.
first, there's this merge during my commute where i merge into the main roadway (they are all roads which are basically highway entrances, all feeding together before feeding onto the highway), and recently people on the main roadway have been stopping when they see me -- even though they have the right of way. so of course i'm already slowing down so you end up with 2 cars that are stopping rather than actually merging. that. drives. me. bloody. nuts! i think snl should have a recurring skit called Overly Cautious Driver.
second, an OS upgrade on a machine worked (surprisingly!) but now i'm seeing all the New Featurez! that i actually hayte, and re-experiencing all the things about the OS that i've always hated all over again as i try to re-set things up. so basically the upgrade, which in theory ideally would be something where you have nothing but fun, right, i mean, shouldn't that be what an upgrade is all about?, but no, it ends up just being something which reminds me how much i hate technology, and my blood pressure just goes up up up.
Thursday, April 09, 2009
oh, my on-going h8 of all things software. when searching text in firefox on a long page, it puts the results at the top or bottom edge of the screen, which means you cannot see enough context around the find, and you have to manually scroll a bit more on every hit to see if it is what you want.
bloody.
freaking.
usability.
genius.
bloody.
freaking.
usability.
genius.
"In my experience, application design has changed over the years, and it can basically be dumbed down into the following trends at the toolkit level:
1) Making the model more view-friendly
2) Making the view more model-friendly
The biggest advancement has been data binding. A big question, however, is how to connect the two View and Model while simultaneously allowing for rich interaction."
1) Making the model more view-friendly
2) Making the view more model-friendly
The biggest advancement has been data binding. A big question, however, is how to connect the two View and Model while simultaneously allowing for rich interaction."
every time i have to use anything done by Yahoo! i am reminded of how utterly stunned i am that they manage to make the user interface somehow nefariously go to great lengths to not do what i want. or what obviously what most people would want. (recently, it has been using the yahoo groups ui.)
it is some kind of super-power they have.
i honestly have never understood how they got to be alive for so long, and i don't expect them to really recover much.
it is some kind of super-power they have.
i honestly have never understood how they got to be alive for so long, and i don't expect them to really recover much.
whatever features are missing from java, it is pretty empirically clear that their early reasoning worked (well, combined with sun's marketing push behind it all, i guess).
"The lesson from the lean environment was to not look at the requirements first, but at the goal of the delivery. Then figure out (the team does this, including product management) what is going to be 'hard' or 'risky' or what is 'unknown'. Then run experiments to determine what works and what doesn't, or what the trade-offs are."
hmm... "In XP, the focus is ( wrongly ) on the customer. An MMF places Business Value first, and the customer second. Any releases should be based around value, and not an artitrary iteration length."
"This is what I enjoy so much about using Kanban - it helps visualise how the team are coping with the demands placed on the system. It's a much better lifestyle to be able to show people queues and talk about lead times (historical and leading indicator/predicted, using Little's Law) rather than having to get into fights about promises."
"On my project we have more demands than we have capacity to deliver on. Through using the Kanban board we have been able to clearly illustrate this to our sponsors. By placing limits on the number of MMFs we will work on at once, in the interest of faster cycle times and less task switching complexity, we have banked up a lot of requests. In the past we might have gone off and written specifications for these requests, but by including the analysis step on the board we've been able to show that this would just lead to specification inventory. So now the request queue at the start of the flow."
"On my project we have more demands than we have capacity to deliver on. Through using the Kanban board we have been able to clearly illustrate this to our sponsors. By placing limits on the number of MMFs we will work on at once, in the interest of faster cycle times and less task switching complexity, we have banked up a lot of requests. In the past we might have gone off and written specifications for these requests, but by including the analysis step on the board we've been able to show that this would just lead to specification inventory. So now the request queue at the start of the flow."
hm. gmail ajaxy-style only seems to work via the https:// protocol, not http://. what is up with that?
after months and months of fancy-pants organic or home-made baby food, the mind starts to wander, to wonder what the opposite end of the product spectrum holds:
bacon and cigarette butt flavor
chicken gizzard and whiskey flavor
dust bunnies and duct tape flavor
day-old kfc flavor
motor oil and broccoli flavor
etc.
bacon and cigarette butt flavor
chicken gizzard and whiskey flavor
dust bunnies and duct tape flavor
day-old kfc flavor
motor oil and broccoli flavor
etc.
Wednesday, April 08, 2009
i think the right people to listen to wrt DDD are the ones who are saying things along the lines of: "hey, follow real OO best practice!" and "purely functional approaches have value -- immutability is useful."
yeah, like i was saying, if you have types, then use types.
so there are grammar nazis, or sandwich nazis, etc.
but i think what we really need are nazi nazis, who can go around vitriolically explaining the different categories and sub-categories of nazis, and how group X that is called nazis (e.g. in some video game or movie) aren't really nazis at all because of reasons A, B, and C, etc.
but i think what we really need are nazi nazis, who can go around vitriolically explaining the different categories and sub-categories of nazis, and how group X that is called nazis (e.g. in some video game or movie) aren't really nazis at all because of reasons A, B, and C, etc.
"Similarly, if you keep your design in the problem domain as long as possible, as I described in the previous getter/setter article, then get/set methods tend not to appear in the first place."
as in any such thing, there is probably a balance to be found somewhere along the gamut of options. on the one hand you can have regular C style code where most variables are given primitive types, and a few are given compound / abstract-data types. on the other end of the spectrum, almost everything is given a type, even if it is just a typedef (better: newtype in hasekll), so that there is a name of a reified concept in the system. the problem there is the proliferation of types and whatever problems might come of that.
but on the whole, speaking as a Java dev, i'm pretty freaking sick and tired of everything being a string or an int when in fact it is really a Name or an ID. maybe the functional languages tend to fare better, to lead people down a better garden path?
but on the whole, speaking as a Java dev, i'm pretty freaking sick and tired of everything being a string or an int when in fact it is really a Name or an ID. maybe the functional languages tend to fare better, to lead people down a better garden path?
there are some things that look really good at first, but after a while start to look almost negatively appealing. like: gravy. it looks yummy at first but by the time you are 2/3rds of the way through your plate of food, things are starting to look a little more like some random left overs fetched out of a nearby dumpster.
funny how people say microsoft is evil when there are clearly more nefarious things in the world.
"An estimate [in software project planning] is the most optimistic prediction that has a non-zero probability of coming true." and apparently has a 10% chance of being met. internally, after getting estimates, you should at least roughly double them. however, you might not want to tell everybody that because then they'll all start slacking! the cone of uncertainty gets smaller not because people can do better estimates, but because there is simply less to estimate.
i love how of late gmail 25% of the time utterly fails to load the ajaxy version in firefox. oh and safari, too, apparently. it worked in IE6 WinXP tho.
Tuesday, April 07, 2009
"The universe is x billions of years old. It is, so far as we presently know, a vast expanse with mostly dead matter. Earth is the only exception, which contains some living organisms and even sentient beings, though these make up a small fraction of even the earth. This life arrived by accident through physical and biological processes, some of which are well-understood and some aren’t. In the end, the universe will again become entirely dead, as our planet will be incinerated when our sun goes nova. Or, in any case, the entire universe will eventually expire in one of various ways. This worldview suggests that it is an accident that we are here and that we have consciousness, and that our actions have no ultimate meaning because the earth will eventually be incinerated anyhow."
"With the exception of correctly used memory prefetch instructions, the only way to go faster in software is to do less."
i think it generally cannot be overstated: keeping the system as simple as possible at every stage is quite important. any complexity which exists will only serve to draw in even more complexity later when somebody has to do further work with the system. had the original stuff been streamlined it would be easier for the later additions to be likewise simple. if you then consider all the various aspects of a system, you might see how the interaction of non-simple components quickly gives rise to, well, a mess.
"Michael listens to his employees and trusts they have something real to say. In turn, they trust him enough to say what's on their mind."
"There's another important idea here - when designing a new application you should design it in such a way as to make it easier for it to be strangled in the future. Let's face it, all we are doing is writing tomorrow's legacy software today. By making it easy to be strangled in the future, you are enabling the graceful fading away of today's work."
Monday, April 06, 2009
it is funny how communication can never be simple, if you want it to really work. like, somebody (famous in certain circles) introduces the idea of using index cards to help do CRC (different definitions for that acronym exist), to help do lightweight object analysis. but then over time people have problems with the actual semantics, apparently. so then several folks have to put forth yet another 'language' to extend the initial idea, trying to help shore-up the problems they've seen to date. so then the thing is becoming less focused and more disparate, sorta the opposite of what presumably was intended in the first place.
i kinda hate humanity, at least the offshoot of it that has taken hold of the current first world.
while i can appreciate some of the arguments pro object-orientation, i have some nebulous thoughts based on experience about how in fact OO often actively obfuscates and undermines and avoids "correct by construction" approaches. hmm...
basically, i take issue with architectures/designs/implementations where data can have several "owners", or be in several different collections, because if the code isn't very careful (i.e. good transactional semantics e.g. via proper use of exceptions) you can end up with leaks and confusion and bugs.
so i am thinking that a safer way to approach things is for there to be as few roots or owners as possible. this might be doable just fine in OO if you know what you are doing, but i suspect there is some amount of OOism that leads people towards code with multiple owners of objects. some sort of bad outcome of hearing about the law of demeter? general cluelessness? outright evil? dunno.
Update: another factor, perhaps more key in fact, is GC vs. manual memory management.
basically, i take issue with architectures/designs/implementations where data can have several "owners", or be in several different collections, because if the code isn't very careful (i.e. good transactional semantics e.g. via proper use of exceptions) you can end up with leaks and confusion and bugs.
so i am thinking that a safer way to approach things is for there to be as few roots or owners as possible. this might be doable just fine in OO if you know what you are doing, but i suspect there is some amount of OOism that leads people towards code with multiple owners of objects. some sort of bad outcome of hearing about the law of demeter? general cluelessness? outright evil? dunno.
Update: another factor, perhaps more key in fact, is GC vs. manual memory management.
maybe rails isn't perfect, but i'm glad it spurred others on, lest we have been left with nothing but ejb.
[blogger: conflicting edits.]
[blogger: conflicting edits.]
Friday, April 03, 2009
if there is not a culture of testing then it seems to me highly likely that there will not be a culture of good code, in the KISS YAGNI SOLID (or, probably, any) sense of "good".
i think i am and will always be a static-typing-leaner for any code of decent size. (of course, with some form of type inference available.) i mean, i work in a typed language and even there the semantics of the code are horribly not well defined -- code will always suck, so the more the system "helps" (that is debatable, i know, i know) you get it right, the better.
i'm glad to see some people bucking the common wisdom. (the current common wisdom being Java/C#/C++/Ruby/Python -- vs. CLOS and Dylan and Clojure ;-)
i have a great idea! have a list of fonts with no image of what each font looks like. because, you know, the look of the font isn't remotely important, the name is the only thing that matters. (ok, ok, if you dig in enough i think they do have it.)
Thursday, April 02, 2009
here's a feature missing from firefox (if not other browsers), where i just don't understand why it is missing: searching the content of the history, not just the urls.
Wednesday, April 01, 2009
ugh. it bugs the crap outta me that operating systems are so lame, still. like, i'm running out of space on my C drive. does the add/remove programs thing tell me where things are installed? no. so i am guessing which ones are on the C drive vs. elsewhere -- some of the things i'm removing might be on the D drive and so irrelevant to the goal at hand. and why can't i just tell the system to move an application from C to another drive? etc.
i will never understand how anybody at apple could have seen the newer two-tone macbooks as anything even remotely not fugly.
hey, even if it was published in April, i think Joel's purported transparent salary system is well worth thinking about.
i think i need a bumper sticker that reads, "i h8 complexity", especially with respect to source code. i'm so sick of the bog standard approaches people seem to take.
apart from the lame security certificate, this is really interesting, i think -- i was just wondering about this myself, recently.
Subscribe to:
Posts (Atom)