HN user

christo

11 karma

chromosundrift

Posts1
Comments14
View on HN

In addition to problem-domain concepts, most software calls for elements that belong to the system domain. Files and saving are good examples of what once seemed essential to force the user to think about but which isn't essential to the problem domain the user would rather think about.

Bad software leaks system concepts unthinkingly which forces users to learn too much about how the software solves the problem on a computer. No user really wants to think about creating or saving a configuration although some synthetic system domain stuff might be inevitable. How can a user make use of a potentially valuable feature to do with changing how the software works rather than about a "General Ledger"? Alternatives to are not always apparent or better and cognitive load is a cost but it may be worth the benefit.

Worst of all are system domain pollutants unique to this one system. Users can and do learn about computers as well as their problem domain and they carry this knowledge from one system to the next. Expert users have traditionally criticised Apple for "dumbing down" the computing experience; some domain experts also become very competent with sophisticated software and choose to bear "cognitive load" in exchange for capability.

The core skill here is empathy, understanding things from your users' point of view and designing accordingly. Users are not stupid, they're busy, but they also have wants, needs prior knowledge and individual differences.

The way "intuitive" is used these days (perhaps always) seems not to be much different than the word "familiar". The distinction is critical if your goal is making systems learnable and for reducing assumed knowledge to optimise for beginners who are often not the ones in contact with support asking for more complex capability.

Does anyone know if a honeypot has been set up for this?

In the event that exploit code has already been deployed, while these exploit attempts should now thankfully be futile, is there any valuable information that can be gained about the network sources of these exploit attempts?

We might assume that since this attack was foiled, exploit attempts won't happen, but if this is an automated botnet project, there may already be other operational elements in the wild that are knocking?

It's possible that there is an infection detection component to the project which is already measuring baseline accessibility, possibly using this and several alternate vectors. After all, effort was made to evade exploit attempt detection which would enable valuable active monitoring since it shouldn't trigger suspicions.

What this means to me is that you can't change your organisation with software alone. And I believe it was Martin Fowler who said to me "If you can't change your organisation, you should change your organisation".

OK so I just read the wikipedia page on that and I don't understand the origin of your uncertainty. What is apparent and certain is that you know it better than I do and I'm interested to understand your thinking.

That and it's dope that we're only two branches offshoot from software architecture.

I Love Ed on CP/M 6 years ago

I'm sympathetic to this constant refrain (and share similar fond memories) but in general all those machines and systems are still available and usable.

Just like that Polish mechanic who was still in the 21st Century using his custom coded C64 program for wheel balancing, how many of us who pine for the good old days still wish to live in them? I argue we still in fact have that choice - don't we?

You could totally put computer virus malware in a mouse!

A USB connected device could not only be a mouse, but running, say, an Arduino or similar, record sound, broadcast data wirelessly (even over cellular networks), and respond to an external remote control.

It could enter keystrokes into the computer. It could open a shell, pipe arbitrary data into a file, execute the file as an application and communicate over USB serial with the application on the computer.

Another example: http://hackaday.com/2013/01/26/extracting-data-with-usb-hid/

I know there's some redundancy in this advice but I thought I'd mention it to support the great tips already here.

Practice. Read and write a lot of code. You might try to work your way through set problems like Project Euler or the Ruby Quiz or other competitions.

Learn the "laws of physics" of programming - some things are harder to do than others. all programming is an interplay between making a tiny, trivial and deterministic step on one hand and managing complexity through abstraction on the other.

it's most instructive to try things for yourself - even if you fail - but on the other hand make sure you attempt things you will definitely succeed at too because the feeling of success will fuel your passion. you will never be a great developer without passion!

Watch Douglas Crockford's JavaScript videos.

use Flanagan's Rhino book.

Try and use different programming patterns and styles in javascript: imperative, functional, object oriented, continuation-passing, dependency injection, fluent interface.

Always use var and semicolon.

Never use "with" or "eval".

Plan to learn another programming language (which smart people recommend you) and it will also greatly assist your javascript programming - you should not be too tied to a single language that you can't change. If you really like web 2.0 you should learn a good server side language as well. As a second to JavaScript for a youngster I would recommend Ruby or Python, (or PHP if you must). Other languages are really great for that purpose but these will be easier to learn first and will be readily available on cheap hosting providers. Those others may include: Lisp/Scheme, Smalltalk, Java, C#, Scala etc. Do not learn VB.

Get firebug.

Read "The Pragmatic Programmer".

Reuse code.

Write automated tests. You can use a unit test framework.

Write lots of cranky cryptic puzzle code right now. Get it out of your system. Then seek to write clean comprehensible code forever more.

Port code from another language.

Recognise that lots of people in professional development have absolutely no idea what they're talking about. Others are absolute genius gurus who's words you should memorise and meditate on. Good luck telling the difference!

Use the force.