Just in case anybody was wondering: I do not expect 2016 to be the year that most UX stops being horrible.
Random e.g. (not that Fotoxx is anything new to 2016, of course) is the very first thing I see when running Fotoxx for the very first time. And the kicker is I clicked 'Cancel' and while it dismissed the 'Synchronize Files' dialog, it brought up another that said something about how I was doing things wrong.
Sunday, December 27, 2015
Monday, December 21, 2015
So I figured out what the root cause of the issues is with Android 5 on the Moto E (2015) I have. In the beginning the whole thing was faster better than most Androids I've had (since I am broke/cheap). But I guess it has gotten slightly more poky over time. So now it is basically thrashing now and then, often & slow enough to eff up the UI and UX. So that swipes don't work, or happen to the wrong thing, etc. Overall there's the rule that anything over, what, 25 msec is basically not interactive, and I guess it has gone over that.
I guess what seems sort of lame to me overall is that Google + Moto haven't actually planned this out together? I understand there's price/cost involved. But why would you design the interaction to be something that literally cannot work out well on the phones you intend to produce?! And that you know full well people are making e.g. the old low-end Hauweis or FoxConns or whatever. It just seems like if you know the low-end cheap shit is part of your entire game plan, you should design the user experience to not turn to kind of hateful shyte when running in those kinds of contexts.
I guess what seems sort of lame to me overall is that Google + Moto haven't actually planned this out together? I understand there's price/cost involved. But why would you design the interaction to be something that literally cannot work out well on the phones you intend to produce?! And that you know full well people are making e.g. the old low-end Hauweis or FoxConns or whatever. It just seems like if you know the low-end cheap shit is part of your entire game plan, you should design the user experience to not turn to kind of hateful shyte when running in those kinds of contexts.
Sunday, December 20, 2015
If you ask me, forced arbitration is evil. Forced arbitration is evil. Forced arbitration is eeeeevil.
What are we going to do about it?
What are you going to do about it?
http://constitution.laws.com/7th-amendment
What are we going to do about it?
What are you going to do about it?
http://constitution.laws.com/7th-amendment
Friday, December 18, 2015
I'm using an Android 5.x Moto E 2nd gen / 2015. I'm using the Gmail app. When I select text in it (well, when I try to select text, don't get me started...) and then press the "search" magnifying glass icon at the top right of the display, I get a tab/sheet for the search. And it turns out that the sheet doesn't appear in the "show all tabs" / "recent apps" list. At all. Ever. No matter what. As far as I can tell. So once I've lost it by going to some other app, I've lost whatever work I was doing hunting through the web from that search. So, like, that's kind of annoyingly stupid ux?!
While I'm on the subject, I'll mention that the ordering of the tabs/sheets in the recent apps list is not a good UX for me. Several times I've closed the wrong things due to how animations moved tabs around. And the gestalt around "which tab I was just looking at full screen" / which app I was using is not good. For example, if I'm shopping craigslist for a bargain on a sewing machine (real world use case) I open a bunch of tabs. As I try to look at each one, it is hard to know which ones I've already looked at, and which I haven't.
There's a buhzillion other things about Android 5 that drive me batty, too. I'm trying to just let go, let go, let go right now... ;-P
While I'm on the subject, I'll mention that the ordering of the tabs/sheets in the recent apps list is not a good UX for me. Several times I've closed the wrong things due to how animations moved tabs around. And the gestalt around "which tab I was just looking at full screen" / which app I was using is not good. For example, if I'm shopping craigslist for a bargain on a sewing machine (real world use case) I open a bunch of tabs. As I try to look at each one, it is hard to know which ones I've already looked at, and which I haven't.
There's a buhzillion other things about Android 5 that drive me batty, too. I'm trying to just let go, let go, let go right now... ;-P
Thursday, December 17, 2015
Wednesday, December 16, 2015
Tuesday, December 15, 2015
Gift giving season is a chance for me to renew my confusion, puzzlement, distaste, frustration, and all 'round hyper extremely filth-curse-word-laden BAH HUMBUG. Why is it as if every, and I mean nigh literally every, eCommerce UI/X is apparently purposefully designed to push me away from buying anything?
I did a search. I got a Wikipedia hit. I clicked. I went to Wikipedia. They showed a big banner asking for money. I went through the process of giving them money. They put up a "thank you page" ... and now I'm nowhere near the page I actually wanted to see. The page that I was coming to Wikipedia for in the first place. Would it really have been so hard to have redirected me? Could even have been the page with a smaller "thank you" banner in place of the "donate" one.
The kicker? When I go back to the page I want by using the browser history, the banner for donating still shows up.
The kicker? When I go back to the page I want by using the browser history, the banner for donating still shows up.
Monday, December 14, 2015
Friday, December 11, 2015
If you search for comp.risks on Google, one of the hits is
https://catless.ncl.ac.uk/Risks/
and on that page if you click
Subscriptions, contributions and archives
then I get a certificate error. If I accept the "bad" certificate once time, then it goes through to a connection failure.
So that's impressive.
https://catless.ncl.ac.uk/Risks/
and on that page if you click
Subscriptions, contributions and archives
then I get a certificate error. If I accept the "bad" certificate once time, then it goes through to a connection failure.
So that's impressive.
Using the search in Google Play Store, crashes the app on a Moto E (2nd gen), for me, today, at any rate. That sorta seems like a sad thing.
The extra sad thing is that apparently the GPS app has a long history of being sorta crashy?
Of course, the Apple app store on e.g. iOS 5 was also pretty bad and crash at times, too. I just cannot really fathom how you can let such blatant bugs through for the conduit by which you make money?
The extra sad thing is that apparently the GPS app has a long history of being sorta crashy?
Of course, the Apple app store on e.g. iOS 5 was also pretty bad and crash at times, too. I just cannot really fathom how you can let such blatant bugs through for the conduit by which you make money?
D/AndroidRuntime(25467): Shutting down VM E/AndroidRuntime(25467): FATAL EXCEPTION: main E/AndroidRuntime(25467): Process: com.android.vending, PID: 25467 E/AndroidRuntime(25467): java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.google.android.finsky.protos.SearchSuggest$NavSug gestion.docId' on a null object reference E/AndroidRuntime(25467): at com.google.android.finsky.providers.SearchSuggestionFetcherLegacy.getIconUri(SearchSuggestionFetcherLegacy.java:90) E/AndroidRuntime(25467): at com.google.android.finsky.providers.SearchSuggestionFetcherLegacy.access$200(SearchSuggestionFetcherLegacy.java:34) E/AndroidRuntime(25467): at com.google.android.finsky.providers.SearchSuggestionFetcherLegacy$2.onResponse(SearchSuggestionFetcherLegacy.java:170) E/AndroidRuntime(25467): at com.google.android.finsky.providers.SearchSuggestionFetcherLegacy$2.onResponse(SearchSuggestionFetcherLegacy.java:153) E/AndroidRuntime(25467): at com.google.android.finsky.api.DfeRequest.deliverResponse(DfeRequest.java:546) E/AndroidRuntime(25467): at com.google.android.finsky.api.DfeRequest.deliverResponse(DfeRequest.java:51) E/AndroidRuntime(25467): at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) E/AndroidRuntime(25467): at android.os.Handler.handleCallback(Handler.java:739) E/AndroidRuntime(25467): at android.os.Handler.dispatchMessage(Handler.java:95) E/AndroidRuntime(25467): at android.os.Looper.loop(Looper.java:135) E/AndroidRuntime(25467): at android.app.ActivityThread.main(ActivityThread.java:5343) E/AndroidRuntime(25467): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime(25467): at java.lang.reflect.Method.invoke(Method.java:372) E/AndroidRuntime(25467): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) E/AndroidRuntime(25467): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) W/ActivityManager( 812): Force finishing activity 1 com.android.vending/.AssetBrowserActivity
Thursday, December 10, 2015
"The authorization systems we depend on to keep everything secure just cannot be understood by humans."
It is to weep.
Monday, December 7, 2015
"Jeffries: Value is what you want. Features are the bits that deliver value. Feature teams build complete features. When you use feature teams, everyone builds features. Features are what deliver value. Value is what you want. That’s really all there is to it: any other organization of the work puts more levels and more stages between you, and what you want."
Web based productivity tools seems to often be a bit of a lie to me. Right now I'm waiting for Chrome on a powerful MacBook Pro to stop spinning the "I'm wedged" colorful beachball spinner, so I can keep working on the Google Docs I have open. No indication of what is causing the lock up. Probably no hint even if/after it ever comes back.
it really is greenhouse gases. from us.
http://www.bloomberg.com/graphics/2015-whats-warming-the-world/
http://www.bloomberg.com/graphics/2015-whats-warming-the-world/
It always amazes me when I hear about how bad company job application systems are. Why would you make the UX so bad that people turn away from the job, and even the entire company? I guess the theory is "WELL, if people REALLY wanted to work here, they'd walk uphill both ways through bad UX just to get here!" Somehow that just doesn't compute for me.
Wednesday, December 2, 2015
There has very rarely been an e-commerce experience of any sort that I've ever had, that wasn't somehow blatantly a UX train wreck. I just do not understand how the world can be run by the kind of people who make these kinds of decisions. I also cannot understand how/why the buying public doesn't boycott all these utterly horrible things and companies. The way I see it, e-commerce should pretty much have tanked capitalism by now.
Tuesday, December 1, 2015
I am very much a fan of advanced static typing; and purity, immutability, referential transparency, linearity, etc.
"Please note that data is returned by reference, this means that modifications to returned objects may change the database. To avoid such behaviour, you need to use
(So I guess I really should be diving whole-hog into, like, Rust?)
"Please note that data is returned by reference, this means that modifications to returned objects may change the database. To avoid such behaviour, you need to use
.cloneDeep()
."(So I guess I really should be diving whole-hog into, like, Rust?)
Given that some filesystems do not use "/" as their directory separator, I would generally like APIs to filesystems to not deal in strings for paths. Rather arrays of strings. And not really arrays of strings, but arrays of pathname's or somesuch. That way I never have to worry about knowing what magical characters to have to escape or unescape. I hope.
Monday, November 30, 2015
There's something to be learned from this.
http://www.cnet.com/news/usb-type-c-one-cable-to-connect-them-all/
(Namely, I wouldn't bet a lot of money on there never being another kind of new USB connector.)
http://www.cnet.com/news/usb-type-c-one-cable-to-connect-them-all/
(Namely, I wouldn't bet a lot of money on there never being another kind of new USB connector.)
For me, one of the biggest problems with computers and software development is that it is so easy for something and somebody else to make your own life into a living heck. If you count all the times we have to try to work around something else, it boggles my mind. I can really appreciate where Arthur Whitney, or Niklaus Wirth, is coming from when they want to do the whole effin' stack. (Even if I do not have 1/100th their acumen or raw talent or weird alternate business reality, so I probably can't really take the same approach.) I shoulda been a farmer. :-)
"Simply calling imperative code during function evaluation is not embedding imperative in functional. It's poisoning
functional with imperative. You lose the ability to reason functionally
about modules you don't understand very well. FP isn't half as useful
without purity of reasoning. FP couldn't even mature as a paradigm while
held back by this poison in its original implementations (Lisp, ML,
etc.)."
Wednesday, November 25, 2015
Here is my Free Reduce The UX Suck idea of the moment: History menus in browsers should support scroll wheels, rather than making me have to laboriously open up another tab/window to see all history. And/or they should support searching of full history like the aforementioned laboriously opened tab/window often does. I mean, WTF already!
Thursday, November 19, 2015
Tuesday, November 17, 2015
I am a UX weenie. I <heart> Don Norman's The Design of Everyday Things. I <heart> just about anything by Edward Tufte (and got to attend one of his sessions once at Stanford). I <heart> Richard Saul Wurman. etc. etc. etc.
So I have to say that it is pretty much a daily thing that Android drives me batty.
The UX for contacts?
The UX for just taking a call?
All utterly, utterly, blatantly, stupendously, in your face bad. As if nobody at Google has ever even used their own stuff. I guess they all use iPhones. (That's a joke -- I know people who have been in the Android teams. They do not, generally speaking, use iPhones.)
p.s. yeah, and iOS has problems too, believe me.
So I have to say that it is pretty much a daily thing that Android drives me batty.
The UX for contacts?
The UX for just taking a call?
All utterly, utterly, blatantly, stupendously, in your face bad. As if nobody at Google has ever even used their own stuff. I guess they all use iPhones. (That's a joke -- I know people who have been in the Android teams. They do not, generally speaking, use iPhones.)
p.s. yeah, and iOS has problems too, believe me.
Sunday, November 15, 2015
I grew up on BASIC and 6502. I did Pascal, C, Scheme, ML, etc. in college. I did C, C++, Java, Perl, Python, Ruby, Objective-C, etc. in industry.
Every time I go to do anything remotely C based on my machines, I cannot fathom how (a) anything ever got done back before bytecode vm style languages (b) how anybody can condone having anything to do with C/++ today. Trying to build anything is a freaking nightmare of broken stupid badness.
Every time I go to do anything remotely C based on my machines, I cannot fathom how (a) anything ever got done back before bytecode vm style languages (b) how anybody can condone having anything to do with C/++ today. Trying to build anything is a freaking nightmare of broken stupid badness.
Friday, November 13, 2015
"I'm partial to the BBB over the Raspberry Pi because of its core
processor. Both are ARM engines; the BBB one is made by Texas
Instruments, the RPi one by Broadcom. The crucial difference is that TI
publishes a full manual for that chip on-line free for the download
(5000 or so pages!!!) while Broadcom treats the documentation as a deep
secret and refuses to release it to anyone who doesn't sign a
confidentiality agreement."
Death, taxes, and computer resource management.
http://www.qnx.com/developers/docs/6.4.0/neutrino/prog/hat.html#CommonErrors
http://www.qnx.com/developers/docs/6.4.0/neutrino/prog/hat.html#CommonErrors
Today is one of those Bad UI days. First, Google Maps on my Android phone goes nuts and sees every kind of pinch/zoom I do as only being zoom-out. Then, somehow in a hurry in Gmail I manage to star every conversation in my inbox. And there isn't an undo for that, so I have to unstar everything, which means now the things I did originally have starred are no longer thus.
Thursday, November 12, 2015
Wednesday, November 11, 2015
We are lacking a principled approach to JavaScript performance. On the one hand, we're supposed to ignore any issues and just write our code and leave it up to the automagic runtime to make things just work. On the other hand, people are constantly writing articles about JS performance, and also inventing things like asm.js. So performance does matter. Apparently.
What I want is a report in a regular (automatically parsable) format that the JIT vendors provide, which tells us what and when they do/not optimize.
Then people who are writing JavaScript from scratch, or who are writing static checker tools for JS, or who are writing compilers from some other source language to JS, can all consume those reports and use it to figure out how they want to go about writing/generating the final JS.
(The report could get arbitrarily complex, adding more data that is hopefully useful to the consumers. How much an optimization saves; Summary data based on some test suites; etc.)
What I want is a report in a regular (automatically parsable) format that the JIT vendors provide, which tells us what and when they do/not optimize.
Then people who are writing JavaScript from scratch, or who are writing static checker tools for JS, or who are writing compilers from some other source language to JS, can all consume those reports and use it to figure out how they want to go about writing/generating the final JS.
(The report could get arbitrarily complex, adding more data that is hopefully useful to the consumers. How much an optimization saves; Summary data based on some test suites; etc.)
I really cannot fathom why it is, apparently, that nigh most every single person on Earth doesn't grok UX. Either that or I'm just in one of those people in a bubble universe where all the people who think sanely like me have been voided?! (Yes, on occasion I see signs of intelligent life elsewhere on the Internet / on Earth, but damn and blast it seems so rare.)
I wish that all docs, commentary, whatever, that have code in them would always be fully working code, not just random snippets that every reader has to put back together in their own head. Because entirely too often there's something missing. E.g. some variable name that is used in the snippet, but was never declared let alone defined, etc.
"In Gödel's case, the really deep insight was that types can't protect a
formal system against the incompleteness/inconsistency problem because
types, unless they actually cripple the power of the system, can only
prevent the system from acknowledging that it has a problem, they don't prevent the problem from being there."
There's only N hard things in software development. Like, say... resource usage. http://lambda-the-ultimate.org/node/5277#comment-90666
Monday, November 9, 2015
I was going to let my old Win 7 upgrade itself to Win 10, just to try it all out. But the installer says something like, "briefly checking your system!" and then never ever gets past that dialog box. With utterly no information about what it is doing. Or if it is making any progress at all. For all I know it is just sniffing my entire network layout, and uploading everything it can to MSFT. I mean, even if I didn't already completely distrust Win 10 based on all the privacy / data issues that have been buzzing in the nerd news, the UX alone reaffirms my choice to try to be as much of a Linux head as much as possible.
(Do not get me wrong. Desktop Linux is an utterly terrible UX itself as well. And things like the Ubuntu-Amazon integration stuff make me strongly distrust at least some significant parts of the Linux world. But at least it isn't MSFT or Apple.)
(Do not get me wrong. Desktop Linux is an utterly terrible UX itself as well. And things like the Ubuntu-Amazon integration stuff make me strongly distrust at least some significant parts of the Linux world. But at least it isn't MSFT or Apple.)
Thursday, November 5, 2015
I love to make and use abstractions. I am probably most happy to use them when they are mine (ha ha), because then I'm steeped in them. Well, unless I leave the code alone for 6 months - then I might have no freaking idea what my past-self was doing. Grn.
I find some of Other People's Abstractions to be interesting and possibly even good.
But I do get the feeling, overall, that Scala has gone a tad off the deep end. Cf. https://groups.google.com/d/msg/scala-user/qkIUJW_2mhw/q_8_GnzfBwAJ
I find some of Other People's Abstractions to be interesting and possibly even good.
But I do get the feeling, overall, that Scala has gone a tad off the deep end. Cf. https://groups.google.com/d/msg/scala-user/qkIUJW_2mhw/q_8_GnzfBwAJ
Tuesday, November 3, 2015
Monday, November 2, 2015
Snowballs are merrily melting in hell.
http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html
http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html
I'd like to know
what the subset of JavaScript is that causes the least performance
problems. Like, I wish all programming languages came with a big wall chart of onion
layers, showing "oh this core kernel nugget is the fastest (and probably
least expressive) subset; and then this next outer layer adds a feature
that when used incurs a penalty; and then the next layer out from that;
and then 'eval' just dooms us utterly." Then we could as humans better
understand our own code, and we could also try to train our compilers to
know.
Sunday, November 1, 2015
so far, this has been a good book for us: Secret Coders. i do recommend the book!
but -- and, oh lordy, why does there always have to be a but? -- things kinda go pear shaped from there:
but -- and, oh lordy, why does there always have to be a but? -- things kinda go pear shaped from there:
- They say they have videos. As in, plural. Uh, yeah - no. Not really. And they don't say when any more will appear. That's just bad user experience.
- They suggest you use UCB's Logo. Which is all broken links, since apparently the site's server no longer supports https. Or something. So that's genius.
- If you figure out the trick of removing the "s" from the https in the urls, you can get the program...
- ...only to find out it is sort of a piece of junk, frankly. Just a completely terrible UX overall, and it also gets thrashy and hoggy and just plain broken.
- Then I went out to try to find other versions of Logo, and I gotta tell ya, it is a wasteland out there. Just a complete UX wasteland.
Thursday, October 29, 2015
a great part of Doug Crockford's Seif project presentation:
- Difficulty of software security:
- Does what it should
- Doesn't do what it shouldn't
- No software is initially secure
- Only a minimal approach can produce software that is eventually secure
Friday, October 23, 2015
"At the time it [E-lang] was the only language that provided first-class support
for simple, capability-secure distributed programming (first language to
provide transparent persistent event loops, first language to seriously
adopt promises and promise pipelining, first language to seriously
tackle the principle of least authority via capabilities). Other
languages have since adopted some of its principles."
Wednesday, October 14, 2015
> At some point Sussman expressed how he thought AI was on the wrong
track. He explained that he thought most AI directions were not
interesting to him, because they were about building up a solid AI
foundation, then the AI system runs as a sort of black box. "I'm
not interested in that. I want software that's accountable."
Accountable? "Yes, I want something that can express its symbolic
reasoning. I want to it to tell me why it did the thing it did,
what it thought was going to happen, and then what happened
instead." He then said something that took me a long time to
process, and at first I mistook for being very science-fiction'y,
along the lines of, "If an AI driven car drives off the side of the
road, I want to know why it did that. I could take the
software developer to court, but I would much rather take the AI to
court."
Tuesday, October 13, 2015
Monday, October 12, 2015
Thursday, October 8, 2015
"But what still seems paradoxical is why Cocoa programmers
advocate Objective-C in the first place if such a technology was originally created to
discipline and their work? There are some possible explanations. First, although object oriented
programming disciplines a programmer, such discipline is seen as beneficial to
the programmer to avoid bad habits, ultimately freeing the programmer from tedious
debugging and allowing for more creative, artistic work to take place. Second, our
examination of Alan Kay’s motivations in creating Smalltalk suggests an ideological
component to advocacy of object-orientation. Kay’s project was part of a larger “personal
computing” movement associated with the 1960’s counterculture and with Doug
Engelbart’s human augmentation project. Through Stewart Brand’s Whole Earth
Catalog, a countercultural re-appropriation of cybernetics and small-scale digital
calculators as tools not for military-industrial-bureaucratic control but for personal
liberation and transcendence through information mastery lived on in the personal
computing movement, replacing LSD with PCs as mind expanding tools. Two key
features of the Smalltalk system, the graphical user interface and object-oriented
programming, both were intended to bring computing power to the masses. Seen in this
light, advocacy of dynamic object-oriented programming, and Cocoa in particular, is an
ideological project of conversion."
Monday, September 21, 2015
I liked this paper about how CAP 'doesn't mean what you think it means'. Not that it has all sunk into my brain, enough, yet.
Wednesday, June 17, 2015
'Our neo-Piagetian perspective leads us to view the curriculum for programming as comprising two dimensions. On one dimension are the
nuts and bolts of how programming languages work. That dimension is emphasised in today’s
classroom. The other and more neglected dimension comprises the skills for reasoning about
programs, sometimes referred to as the notional machine (du Boulay, 1989), but which we think of in
neo-Piagetian terms. This dimension is often not explicitly taught, especially in the first few weeks learning to program. We believe that, with every increment along the “nuts and bolts” dimension (i.e. with every new programming construct taught), all the neo-Piagetian stages of reasoning need to be explicitly reprised.'
Wednesday, April 22, 2015
Things like MISRA C make me sad. I wish we were all using better things, be it Ada, or formal methods, or whatever.
Tuesday, April 21, 2015
Hah! My horrible (truly, truly horrible) code. I mean, the graph output was nice compared to what it replaced, but when I went to rewrite it later (a project that never got fully released, oh well) I wanted to go back in time and back-handed slap myself in the face.
https://metacpan.org/pod/Bio::GMOD::Blast::Graph
P.S. I am a little annoyed that the list could be interpreted as meaning I am not "first author" when in fact I wrote pretty much literally all the code, and was the one who had the idea for the whole project in the first place. Oh well. :-)
https://metacpan.org/pod/Bio::GMOD::Blast::Graph
P.S. I am a little annoyed that the list could be interpreted as meaning I am not "first author" when in fact I wrote pretty much literally all the code, and was the one who had the idea for the whole project in the first place. Oh well. :-)
Wednesday, April 8, 2015
Friday, March 27, 2015
sorta stating the obvious, but sad that we tangle them up so.
http://webcache.googleusercontent.com/search?q=cache:lZganwsmysEJ:tal.forum2.org/static/cv/Shakeins.pdf+&cd=1&hl=en&ct=clnk&gl=us
2.1 The Five Facets of a Class
As early as 1971, Parnas made the classical distinction between the interface and the materialization perspectives of a software component. It is only natural to apply this distinction to class definitions in JAVA and other mainstream object oriented languages. In this section we do so, while taking into notice that, unlike the software components of the seventies, classes are instantiable.
Accordingly, the interface of a class presents two facets: the forge of the class, be- ing the set of non-private constructor signatures; and its type, the set of externally- accessible fields and methods as well as available cast operations. The materialization of a class has three facets: the implementation, i.e., the method bodies; the mill, being the implementation of the forge; and the mold, which is the memory layout used for creating objects.
http://webcache.googleusercontent.com/search?q=cache:lZganwsmysEJ:tal.forum2.org/static/cv/Shakeins.pdf+&cd=1&hl=en&ct=clnk&gl=us
2.1 The Five Facets of a Class
As early as 1971, Parnas made the classical distinction between the interface and the materialization perspectives of a software component. It is only natural to apply this distinction to class definitions in JAVA and other mainstream object oriented languages. In this section we do so, while taking into notice that, unlike the software components of the seventies, classes are instantiable.
Accordingly, the interface of a class presents two facets: the forge of the class, be- ing the set of non-private constructor signatures; and its type, the set of externally- accessible fields and methods as well as available cast operations. The materialization of a class has three facets: the implementation, i.e., the method bodies; the mill, being the implementation of the forge; and the mold, which is the memory layout used for creating objects.
The forge public Point(int x, int y); public Point(); public Point(Point other);
The class’s mold int x 32 bits int y 32 bits Fields inherited from Object Hidden fields added by the JVM
The resulting type int x, y; public int getX(); public int getY(); public void setX(int); public void setY(int); // From Shape: public void moveBy(int, int); // From java.lang.Object: public boolean equals(Object); public int hashCode(); // ... etc. // Upcast operations: public (Shape)(); public (Object)();
I would like to coin a phrase, a term, an idea in (software) project management: The Curve of Depression.
The idea is that we try to make things, and we inevitably have some bugs. Now, depending on all sorts of variables we each have a subjective reaction to each bug. It ranges from something like "oh good find, QA, thanks!" (the 'good' side) over to "whichever programmer did that should be summarily executed, post haste - even if it was myself!" (the 'bad' side). So there, that's the vertical axis.
The horizontal axis of the Curve is how much improved the thing is when it goes through another round. Did it get resolved in one go? Or has it been dragging on for ever? If there's something really complicated/complex, then (I guess, in some non-Agile sense, anyway) it is OK for that thing to not make much progress so the curve is flatter. Other things that should not have been broken in the first place, or which should really only take 1 more try to get right ought to have a curve that looks like the downward majority of the Winter Olympic's ski jump.
I'd like to know what people's subjective Curve of Depression is that they follow; how they rank things; etc. And then how their projects seem to go. Do they follow the curve(s) well? Do they blow out past them? Do they come in tighter?
The idea is that we try to make things, and we inevitably have some bugs. Now, depending on all sorts of variables we each have a subjective reaction to each bug. It ranges from something like "oh good find, QA, thanks!" (the 'good' side) over to "whichever programmer did that should be summarily executed, post haste - even if it was myself!" (the 'bad' side). So there, that's the vertical axis.
The horizontal axis of the Curve is how much improved the thing is when it goes through another round. Did it get resolved in one go? Or has it been dragging on for ever? If there's something really complicated/complex, then (I guess, in some non-Agile sense, anyway) it is OK for that thing to not make much progress so the curve is flatter. Other things that should not have been broken in the first place, or which should really only take 1 more try to get right ought to have a curve that looks like the downward majority of the Winter Olympic's ski jump.
I'd like to know what people's subjective Curve of Depression is that they follow; how they rank things; etc. And then how their projects seem to go. Do they follow the curve(s) well? Do they blow out past them? Do they come in tighter?
Wednesday, March 25, 2015
"Games people play," but for nerdy software developers: http://www.nasa.gov/centers/ivv/pdf/482488main_4050_-_Object-Model-FeatureGame.pdf.
Subscribe to:
Posts (Atom)