text:
Comments on Never Use a Warning When you Mean Undo
by Aza Raskin
81 Reader CommentsBack to the Article
I think that the undo option is much easier said than done when it comes to web based applications.
Great article right on the spot. Undo vs confirmation has been on my mind lately in a recent project I was working on.
Traditional desktop applications have followed this tendency for ages now, and you almost never see obtrusive warnings anymore (like "this cannot be undone. Continue?").
The "business case" for undo gets better in the scenario where the user must delete multiple objects. The obtrusive confirmation box gets so annoying if, say, you have to delete 20 rows.
Once again, thanks for writing this article: It's really useful in everyday web development.
PS. The name is "Raskin":http://en.wikipedia.org/wiki/Aza_Raskin , right? Or did you change it to Raszin?
Yeah, those "this cannot be undone" warnings are really annoying and cause the user to keep things he doesn't want to keep just for the matter that he's afraid of making a irreversable mistake. But implementing an undo functionality is really harder than implementing a warning. The undo must be implemented all the way down to your persistence layer while the warning can be a simple JavaScript confirm.
In addition to what Brain (or Brian - typo?) said: if you implement an undo function for a delete functionality you also have to implement a "empty trash" kind of functionality. Sometimes you have to delete something and you don't want it to be undone. Adds up some extra effort.
I would use a 'last operation' table in the database to record what the user did last, together with a serialised version of the record that has just been deleted.
If the user clicks undo, it will read the details of the last operation, extract the serialised record and re-enter it into the database.
Obviously this can run into complications if someone adds the same record afterwards. Also, what if the operation affects multiple tables?
I think an article outlining possible solution for implementing this would be most useful.
How do you undo program closing?
(One possible answer: save the work anyway, but in a special location that allows restoration on the next launch.)
Do you think they explicitly designed the undo functionality for the purposes of undoing a delete? I don't.
Since they were keeping all mail items in the trash for a certain amount of time, the item wasn't really being "deleted" until the trash was emptied. Can they undo the emptying of their trash?
Tin-Foil-Hat says: Isn't it in Google's interest to make their mail users retain their mail anyway?
I wager the intention was never to provide an undo function, rather store all e-mails anyway, and hey look - we can provide an undo action, since we do that already.
I think it's important to make the distinction between two different situations which necessitate the option to undo:
* "Oh shit, I didn't mean to do that!"
* "I deleted that the other day, now I need to get it back"
I have a feeling this article is implying that we should try to cater for the former, which perhaps means that using Gmail's trash functionality as an example may confuse things.
In terms of implementation, a completely client-side approach would be to hold-off on informing the server that a mutable action has taken place until an unrelated action has taken place. For instance, if the user clicks "Delete item", you can safely assume that they haven't had an "oh shit" moment if they perform another of unrelated actions elsewhere. Another method might be to hold-off for a period of time - either will work. Server side would require short-term persistence of actions such that they can be rolled back when the user wants to undo. Sessions or cookies spring to mind, in this case.
Well, probably the approach of gmail is another. Since they have lables, they simply apply a label "trash", and for the starred items they apply a label "starred", and for the read items they apply "read", and so on. So the "undo" is simply a "take-away-label-trash-from-item".
Which is, in my opinion, the best solution.
The "Oops!" moment is also called the Oh no second.
Rather than trying to implement a possibly complex and difficult "undo" mechanism, another option is to do as the dialogue box in Fig 2 (partially) shows, and like OpenOffice does, and that's to use different words.
By replacing OK/Cancel with Discard/Keep (for example), you make the user stop and think. Clicking 'OK' is a reflex and you do it without pause - but when the labels on the buttons are different, you do have to make a conscious decision about which option to choose.
The dialogue box should make it clear what you are doing as well, as the Google Calendar in Fig 2 does, but Highrise in Fig 3 does not.
The one that really annoys me is when I accidentally click on the [X] button of Outlook, and it comes up with an OK/Cancel dialogue box, but neither of the options given is 'not to close'! Another of the things I love about Opera is the option to reopen *any* tab closed in the current session at the state it was last in, complete with full history.
That assumes that the user carefully reads each dialog box, instead of, say, skimming it (or worse). There is still the habituation factor.
The problem with undo is that it is not always practical. To undo you have to have a place to store the item while making it appear gone most of the time. Then you also have to have a way of restoring it. And you have to have a way of "emptying the trash".
The other issue with undo is multi-users. Most desktop applications have undo because they are single user. Multi-user adds a new level of complexity.
Sometimes undo can easily be done (such as the GMail example). But other times it is not worth the effort. Sometimes "delete" is really the only practical option.
Firefox 2.0+ comes with a Session Restore feature, which enables you to pick up exactly where you left off when the browser was closed (including full history, form field contents, etc).
I use a Firefox add-on called Tab Mix Plus (TMP), which has its own Session Restore feature, as well as a Crash Recovery feature that lets you choose whether/how to restore a session from before the browser crashed. It also lets you undo closed tabs/windows, which is something I do several times a day, because I often get carried away with trying to quickly close a bunch of tabs.
[Oh.. just noticed Stephen Down's comment about how Opera includes similar functionality. Awesome!]
I definitely agree with the overall premise of this post. It's frustrating that just about every other desktop/web app that I use (besides from my web browser) suffers from this classic usability problem.
It's all good and well to present Google as an example of the "right way" of doing things, but for most projects, there really isn't an infinite well of database storage to collect every single action the user might perform in a "history".
An example is an action I provide in one web application I wrote for clearing a rather verbose event log. This action is used to quickly reduce the size of the database. To provide an undo for that action would mean storing the entire log in the database even _after_ the log was deleted. To me, that's counter-intuitive.
The problem is, if an application provides an undo that isn't fully capable, it has the opposite effect to that described in the article: the user is lulled into a false sense that no action is irreversible, no matter how stupid or foolhardy. If the developer cannot (either logistically or logically) provide an extensive history, I would posit that he or she is better of providing no indication to the contrary.
Certainly, from a programatic point of view it's a better idea to flag a database record as 'archived' or 'trashed' than to actually delete it from the database; and that's fairly easily done in the real world. (Beyond deleting records however, I agree that implementing undo would be near impossible on the web at the moment; although I can't wait to be proven wrong!).
But should we not present a warning *and* give the user the option to undo?
That way their habitual workflow remains unbroken 99% of the time, but they have the option to turn back the clock if (and only if) they have an "oops!" moment?
Instead of asking "Do you want to quit" perhaps we should ask "Would you like to Save before you quit?" and then label the buttons "Save" and "Don't Save". This way the user can't just press OK or Yes by habit. At least for me it's harder to accidentally press "Don't save" than "Yes".
The commenters seem to be hitting all around the answer by suggesting better text in the confirmation message. If you ask me "Do you want to quit?" the answer isn't "Quit", it's "Yes". The confirmation answer buttons could be improved by changing them to "Yes, quit" and "No, cancel" or something similar.
I applaud envisioning this ideal. Whether or not it is easy to achieve programmatically, the thinking is right. Interfaces should align with impulses, expectations and behaviors, not what is easy to engineer. Having said that, there is still the reality of building a product within a given scope. I would suggest an additional dimension to the thought—how important is the loss? Did I just lose something important or something easily recreated. That might contribute to the level of protection (undo, warning, confirmation) for the item.
Yes, whenever it is possible to undo, the user should be given that option, and whenever they have that option, warnings are less necessary.
But in many cases you *can't* undo. Not because the developers were too lazy or busy to make it possible, but because the thing you are doing is by its very nature not undoable.
Once you've sent an email you can't unsend it. Once you've spent some money you can't unspend it.
In enterprise software, *most* of the actions users take are un-undoable because they involve collaboration with a larger system and with other people. The moment an action is taken it triggers other actions, and those actions trigger more actions. Within milliseconds you get to a state where it's no longer even possible to get the toothpaste back into the tube.
None of this contradicts your basic point about respecting habituation. Some UI problems are easy to overcome and you're right: we should overcome those problems. The thing is, though, that for every easy UI problem there are ten for which there are no perfect solutions. That's when UI design gets tough.
A few points:
* In many cases, the confusion and danger is simply due to lack of clear language in the warning: "Canceling this task may cause data loss. [Abort / cancel] Clarity, and defaulting to the button that terminates the request, goes a long way towards addressing this: "If you do this, it's final. [Go ahead / Oops, never mind]"
* What happens if you accidentally Undo? Can you Redo? Do these actions then take on additional assumed utility, that might be unwisely relied upon? Think of how easy it is in a program like Adobe Photoshop, to try something, undo it, redo it, etc. The concept of actions being destructive is forgotten, until you do something and get hit with a "can't undo" or "can't redo." Okay, when you're creating art, there's a use for that. But *do you need an action stack to write an email*?
* Undo functionality in files/projects brings a novel set of security problems to be considered. If you provide undo, you must also provide a way to strip out the undoability before publishing or sharing. Any number of improperly-censored PDF documents released by government agencies exemplify this, either directly or in examination of their raw data.
*Keep the choice logical* whenever possible. Don't introduce a lot of grey areas that are subject to confusion, that you will have to support and accommodate and debug. If you have to start remembering how many steps of which actions you can undo in an application, how is that moving towards a more transparent, easier, functional interface? Is it, perhaps, more confusing and less functional than a simple, single choice? [Yes / no]
To all the comments that claim "it's too hard," I say: too bad. Undo isn't just humane, it's also compelling. Web products that can begin to offer undo will make users happier and more satisfied with using the application. Reading this article as a suggestion for better confirmation messages ("Yes, Quit" and "No, Don't Quit") is to miss the point completely. It doesn't matter if your confirmation addresses the user by name and whistles her favorite tune: they are obnoxious and disruptive.
It is worth thinking about some of the details. Nearly all operations in web apps are a form of Create, Update, or Delete. Leave aside one-way operations like sending e-mails as genuinely Too Hard—even though "un-send email" is something *everyone* would love to have, yet would require vast structural changes to email protocols and systems. Plenty of other apparently one-way operations exist (like dropping database tables), though even many of these could be accommodated with enough spare disk space.
Undoing Create operations is probably unnecessary. It's unlikely you'd want to un-upload a video or un-create a new comment on a blog; you should be able to simply Delete those things immediately.
Undoing edits or updates would be hugely useful in more web applications. In the same way that Wikis maintain file change histories for their entries, web apps should be able to maintain histories for text objects (blog posts, comments, etc.) Even maintaining changes to other objects (for instance edits to a video) would be possible. Multi-user does make this tougher, but again, Wikis and version control systems prove that it can be done. "We don't have storage space for keeping infinite change history" is a straw man argument: text doesn't take up much space and it's reasonable to limit the number of undos in other cases.
Deleting is where it gets slightly tougher, but complaints about "yes, but now you need an 'Empty Trash' action" seem silly. Infrequent, intentional actions like emptying the trash by definition will have the user's close attention; if you have to find the one "Delete Forever" button, there's much less of a chance of doing it accidentally.
Having a modal confirmation does help protect against actions we didn't know we were doing - a mis-hit keyboard shortcut, for instance. There may be no "oops" moment in which we can consider undo then… or at least, not until five minutes later when it's too late.
I'm very fond of applications with a trash bin. iPhoto, for instance, where I can trash everything I don't want, and then review it the next day to make sure I'm certain about getting rid of them. It may not be suitable for every application, but the concept of even a word processor having a trash where unsaved documents reside has a certain appeal for me. Mail.app has its drafts, after all.
Nice article,
However, I just wondering if you've gotten a new Vista machine and it's crazy incessant messages ([Cancel] or [Allow]) prompted you to write this little piece? hehe
It nicely applies to user friendly design and truthfully it's not something I've really thought about before. Kudos.
Great article. Depending on the context this could easily be implemented by just creating some sort of "soft delete" such as a date time field in the database.
Great way to stay unobtrusive but still give the user a second chance. I will try to implement this wherever I can. Thanks!
"Brian Lambert":http://alistapart.com/comments/neveruseawarning?page=1#3 said:
bq. Yeah, those "this cannot be undone"? warnings are really annoying and cause the user to keep things he doesn't want to keep just for the matter that he's afraid of making a irreversable mistake.
If that is the case, would the user be attempting to delete said items to begin with?
I agree with the point of taking habitual activities into consideration and improving the interface, and so forth. I'm not so sure, however, that I agree with adding to the complexity of web applications to make up for user errors.
If I am doing something potentially harmful to my data (deleting items for example), I should expect no less than fouling things up when I am not paying attention. I don't expect the software to read my mind. Likewise, I don't expect the developers to try to accomplish such a feat.
For those of us that have the sense to pay attention to what we are doing, I find it redundant to have to repeat actions just to verify what it is I wanted to do in the first place.
From first hand experience, this is soooo true.
"Using a warning instead of an undo is the path of least resistance from a programmer's standpoint, and it doesn't require any new thinking from a design standpoint. But that isn't an excuse for our computers to be inhumane."
Those of you who are saying it's too hard, you're not thinking outside the box. Your mind is constrained to how you'd implement "undo" as a database schema or web-frontend, but that's not where you should start. As I said in my first comment, when does the "oh no!" second pass?
p=. *When another action is performed*
So in the case of sending email…leave the email in the outbox until the user composes another email or starts reading other email. By that stage, they can't possibly have made a mistake through habituation. Their actions imply that it's safe to perform what they've asked. The same technique can apply to most of the other examples which have been given as well.
Listen to your user, they have much to tell you (even if they don't know it).
What happens when the "oops factor"? happens six weeks later? At some stage the trash needs to be deleted or the server needs to remove old items from the available undo history.
I think Google's undo message could still use some improvement as it doesn't show what was actually deleted, making the chance of the user realising their mistake and pressing the undo button pretty unlikely. As another commentor noted, this perhaps leads to a false sense of security by giving the impression that any message in the trash can be recovered, when the reality is that it will be deleted permanently in 30 days time.
Undo is a nice goal to strive for though, but it is a huge problem technically and conceptually which I don't think any body has really solved (but that does not mean we shouldn't try).
"David Cassidy":http://www.alistapart.com/comments/neveruseawarning?page=3#2926
bq. Yeah, those "this cannot be undone"? warnings are really annoying and cause the user to keep things he doesn't want to keep just for the matter that he's afraid of making a irreversable mistake.
bq. If that is the case, would the user be attempting to delete said items to begin with?
Yes! There are plenty of commands in Excel and Access that bring up this kind of "your action can't be undone" message, and plenty of people in every office I've worked in who break out into a cold sweat at the thought of committing an un-undoable action. They know they want to delete something, but after seeing a message like that, become irrationally paranoid that they're going to delete the wrong thing…
Remember, we're talking about *ordinary people*, not techies, spods, geeks and nerds here!
If you're working on a management system you are probably using a database. It's really simple to add a field for 'status' in each table of deletable items. On a recent content management system I was designing, I removed the ability to really delete anything. The application simply ignored anything that has a status of 'deleted'. This is really not hard to implement at all (when you're starting from scratch).
There are couple of simple improvements necessary to make it really work well:
- always provide undo after delete actions
- provide a link to the trash, where you can see all items in all tables that have status 'deleted'. allow users to remove the deleted status. Or in user-speak "undelete".
- periodically delete items that have had status = 'deleted' for 30+ days. this is a cinch if you keep track of when any item was last updated.
Great article - I'd love to see more of this implemented on the web.
I think it's safe to say that all humans are fallible (some more than others). In fact, I'd take that one step further and say that most humans are just kinda stupid. So, certainly, the availability of an "undo" option would absolutely alleviate some headaches…
I agree an undo is a best practice but as pointed out by several responses, undo isn't always an option. Many databases e.g. SQL have transactional rollback capabilities, but what about more prosaic applications (web or other). Must the programmer roll his/her own? It may be beyond their programming ability or the functionality of the app.
Instead, I think a middle approach (assuming undo isn't a viable option) is to ensure that the default option is Cancel or similar harmless option. It won't slow the user down (they can still click directly on the more 'destructive' option) but at least the user is less likely to get into trouble by smacking the "return" key. In other words, make the user think prior to selection.
Of course, I agree that an Undo option should be included… if that's feasible.
On Digg, you can edit your comments for over a minute after submission, which I find pretty helpful - it's not indefinite so as to preserve the conversation thread. It's a middle ground somewhat for actions that eventually can't be undone.
It would be a pretty tough task to to, undo clicking the "Send E-Mail" button. That Ohnosecond when you forgot to add the attachment will not be prohibited so easy..
Sebastian Redl asked "How do you undo program closing?". I've always admired Opera's ability to reopen with all tabs and web pages intact after accidentally closing the browser. I pondered how they did it and thought it was really very easy: just keep a record of everything happening within the browser and only delete this when the program is properly closed. So if the browser crashes, the record is still intact and can be used to restore the open pages you were looking at when you restart the program. I also wondered why no-one else was doing this. Why should closing a program mean starting from scratch when you restart it? Where is the user continuity? Can it not just carry on from where you left off?
John Cartan wrote "Once you've sent an email you can't unsend it. Once you've spent some money you can't unspend it." I'd argue this is not theoretically true. How hard would it be for servers to implement a simple time delay for all emails, that would allow you to retrieve them from the server before they were sent for good? Just because something exists in a limited form today doesn't mean we can't envisage an improved version. Or you can do what I used to do when I used Eudora, keeping sent emails in the Outbox until the program checks for new mail (as opposed to sending them straight away).
As for money, yes you can unspend it - by returning the goods to the shop and getting a refund.
Lastly, all these problems (at least on the desktop) could be solved by rolling back the computer to a previous state. Isn't Vista set up to do this? And XP has a System Restore capability. So in theory you should be able to undo anything.
Another helpfull usability-article, thank you. And it offers a good solution, to a problem that is know for more then 20 years. (e.G. described in "the design of everyday things (a stil usefull book by Donald Norman from 1979)":http://mitpress.mit.edu/catalog/item/default.asp?tid=5393&ttype=2 )
I agree with the author, being able to undo _everything_ would be nice.
But as some already stated, it sometimes is just not possible. In addition you can't backup everything. In 2020 there will be file servers on moon keeping undos from John Doe's unfortunate first steps in MS Paint. Man is a creature of habit and will always be; and man is bound to making mistakes. Sooner or later people will experience the "oops!" after having deleted the already deleted mail from their google trash. And after that comes the "trash-trash" that holds items that were deleted from the trash. People will accidentally delete things there, too.
And btw, I hate when software doesn't behave the normal "OK, NO, CANCEL" way. I just keep getting angry when looking for "DISCARD". ;P
I realize a good number of the pieces on this site are more theory than technique. But this particular article does little more than tell you "don't use alerts." Aza, I'm not trashing your idea, but _explain_, dude.
Kudos to "Dan":http://alistapart.com/comments/neveruseawarning/?page=1#5 and "Nathan":http://alistapart.com/comments/neveruseawarning/?page=1#8 and "Kit":http://alistapart.com/comments/neveruseawarning/?page=2#15 and "Jeff":http://alistapart.com/comments/neveruseawarning/?page=2#19 and "Jason":http://alistapart.com/comments/neveruseawarning/?page=3#21 and (especially) "Andrew":http://alistapart.com/comments/neveruseawarning/?page=3#22 and "Samuel":http://alistapart.com/comments/neveruseawarning/?page=4#31, and "the other Andrew":http://alistapart.com/comments/neveruseawarning/?page=4#35 for taking the initial steps in a dialogue about how to implement this concept.
Notice that they all inform without getting overly technical? With some forethought, the author could have flushed out an equally general set of web guidelines on the path toward a methodology that "doesn't use alerts."
Some might argue that this what the discussion area is for. I would rebut: let's just cut to the chase and make the article one sentence, then.
My real frustration with making the posters do all the teaching is that it's far less coherent than the voice of a single writer. Plus it updates in real time.
I oversimplified Aza's idea. It's actually _two_ sentences. (The first is "don't use alerts.") The second is "use undo instead." He argues that warnings are bad, because they are habitual. He points to the example of Gmail's undo as an alternative.
Some posters suggest rewording alerts, but fortunately "Mike":http://alistapart.com/comments/neveruseawarning?page=2#12 points out early on that it's still ultimately an alert.
Gmail's undo is ultimately an alert.
The real confusion with popup warnings are their numerous options. You get an "OK," a "Cancel," and occasionally an "X" in the upper right to further complicate things.
Gmail's undo, in contrast, has only one option. The undo has no close button. It sits on the screen until you take some other action, at which point it disappears.
The author would have done us a better service to distinguish an "undo" from an "warning" rather simply defining them as unrelated things.
Not that anyone asked, but in my opinion "Robert":http://alistapart.com/comments/neveruseawarning?page=2#16 and "Marc":http://alistapart.com/comments/neveruseawarning?page=3#25 and "Nathan":http://alistapart.com/comments/neveruseawarning?page=3#28 present the best building blocks toward constructing an "undo methodology."
Would that they were all in one place…
bq. Instead of asking "Do you want to quit"? perhaps we should ask "Would you like to Save before you quit?"? and then label the buttons "Save"? and "Don't Save"?. This way the user can't just press OK or Yes by habit. At least for me it's harder to accidentally press "Don't save"? than "Yes"?.
Even though this is already explained in the article (when deleting the wrong event in Google calendar), I'll give another example: In Photoshop, I often create, or open and modify, an image that I never want to save—usually when I want part of it for the file I'm really working on, so I often blindly click buttons even though they are quite clearly labeled with their intention, and not just "OK" or "Cancel". Sometimes I'll even open a previous version of a file (with a similar filename and data), then tweak something to see what it looks like, but not want to save it, while still wanting to save the latest one. So even if it was really clear about what was going to happen, a mistake is still possible. I'm sure there are many other examples of similar situations.
As for the people saying that this simply isn't possible in many cases, I think they are overlooking the many times where this is possible, but hasn't been done because it's easier not to. Then there is also the argument that immediate action with an undo option is simply better than a confirmation box, from a usability angle.
Even if a proper undo is not possible, sometimes data recovery would be nice, so that people can tell what has happened, and recover any important bits of data, even if it means jumping through hoops to get it back where it should be.
bq. Sooner or later people will experience the "oops!"? after having deleted the already deleted mail from their google trash. And after that comes the "trash-trash"? that holds items that were deleted from the trash. People will accidentally delete things there, too.
You're forgetting something here (aside from something addressed at the beginning of the article): As these mistakes are from habituation, we can assume that they are generally something that is less likely to happen from a statistical point of view. Therefore, adding the trash layer isn't just another layer to make mistakes that also need to be addressed, but a way of reducing the consequences exponentially (for lack of a better word). It's about reducing the margin of error to a more acceptable level.
bq. I realize a good number of the pieces on this site are more theory than technique. But this particular article does little more than tell you "don't use alerts."? Aza, I'm not trashing your idea, but explain, dude.
Heh….In which language? In order for more technical things to happen, people first need to be made aware and convinced of the issue. This is what this article is doing.
I think that one of the best functions google ever implemented was the "get my email back" function. If it was sent by gmail to gmail (ie it still resides on Google's server) you can get it back if you hit send instead of "no, i don't really mean to send this un-pc rant to my boss"
Wish there was a way to do that across the board.
Way to go google.
_Designing the Obvious: A Commonsense Approach to Web Application Design_ by Robert Hoekman (an excellent book) will find this article awfully familiar. [ "Example":http://safari.peachpit.com/0321453476/ch06lev1sec2?imagepage=168 ]
Not that there's anything wrong with preaching good gospel, but it's a bit cheap essentially regurgitating a partial chapter from someone's book. In my humble opinion.
I like the concise rule of thumb: "Never use a warning when you mean undo." It's been said before, but it definitely bears repeating.
However, I think the article uses a bad example in making its case. I can't recall a single application I've used recently that asked "Are you sure you want to quit?"? The applications I use assume I do mean "Quit" when I say "Quit"; what they want to know is what to do about unsaved data, which is an entirely different question. I *want* to be asked for confirmation in this case, because there's no way the computer can know the right thing to do—whether to always save the changes (and allow me to undo them later by reopening the document), or always not save the changes (and remember them when I reopen the document so I can pick up where I left off). It shouldn't automatically save my changes, because I might not realize or remember that I changed something. It shouldn't always *not* save my changes, because I might not realize they're unsaved—so I send my boss a spreadsheet that I *thought* I'd updated, but I was wrong, because the application exited with unsaved documents in exactly the same way as it exits when I've saved all my documents.
For the above reasons, I disagree with the statement that "With a robust undo, we can close our work with reckless abandon and be secure in the knowledge that we can always get it back." (Also, if you know your work is recoverable, you aren't being "reckless," but that's semantic quibbling.)
By the way, there's another issue that I think has been glossed over, unless I missed it in the comments, and that is the issue of multiple levels of undo. Multiple undo is extremely valuable, but adds conceptual complexity.
SmartFTP asks if you really want to quit when you try to close it down.
I think the undo function would be a neat inclusion in web applications. I believe that this is easier to implement than I thought.
However, if we are to have a history of things we have done in the application (multiple undo), it would seem like way harder to create. Is the multiple undo really necessary?
Lets see the 1 layer of undo that is meant for the ohnosecond mistakes be integrated into web applications first.
That would be so cool. :)
@Jordan: More likely that Aza's article (and possibly Hoekman's chapter) stems from The Humane Interface by Jef Raskin.
One option could be to track users changes using a mechanism similar to the shopping basket concept. Changes are requested but not implemented until the user proceeds through a 'checkout' function to commit them. This would roll the undo and confirmation functions into one mechanism, which could be tracked client-side or server-side.
This whole concept becomes tricky very quickly when you're working on shared data that multiple users can update though.
Multiple undo might not be so necessary in web applications. Handling the ohnosecond case gracefully is already a big step, and the cases where I mostly rely on multiple undo—mainly during text editing—would be handled by my browser's text editing support. At the very least, though, I would consider the possibility.
Even single-undo needs thinking through. Should there be a "Redo" option, or should "Undo" mean "completely forget that last thing I did"? If you provide several web apps, should they be consistent in their Undo policy, or should each one use a policy appropriate for that application?
I would like to see an article, if there is one, that analyzes the undo approach for a variety of web apps, real or fictional. I'd like to see examples of thought processes that lead to good decisions.
There is one particularly nasty use case when undo just doesn't work the way it was intended, or rather where it's hard to come up with a working undo strategy: it's when there are multiple people working on the same thing.
I often have the "oops moment" when using Gobby, a collaborative editor. Sometimes I will accidentally delete text that was written by different users. I immediately hit the ^Z, but in vain: Gobby doesn't have undo, and even if it had, how would it be supposed to work? Should it be global, so that others can undo my editing, like in wiki? Or should it be local, so that only I have the power to put that accidentally deleted text back? What happens if someone already typed something in that place? What if the operation was something different than just deleting the text? Moving text around can be a tricky case, especially when someone else already modified it at its new location.
I think that dividing the document into smaller parts that can be acted upon (and reverted) independently is one possible solution (not unlike the section editing in Wikipedia), but there is a lot of room for improvement.
Great point! In real life practice this has been really useful too. Blender (a 3d modeling app) saves the file you're working on whenever you quit in a special quit.blend file, and it's saved me many, many times. It seems that maybe implementing that idea in desktop apps might be even easier than in web apps, at least in the closing-when-you-don't-want-to sense.
How about English?
My "title":http://alistapart.com/comments/neveruseawarning?page=4#40 notwithstanding, I think you may have missed some of the subtleties of my criticism, "Justin":http://alistapart.com/comments/neveruseawarning?page=5#43 . Notice that I went on to point out several posts that "inform without getting overly technical?"
Another way to state my view is: solid concept, but it doesn't warrant an entire article. We can agree to disagree on that.
I think Aza's point could have been made in one or two paragraphs, as an introduction. He then could have spent the rest of the article preparing us to think in this "undo paradigm."
"Example":http://alistapart.com/comments/neveruseawarning/?page=3#22 : in a world of undo, your database will need an audit table. (See, that's not overly technical. I don't tell you which database, or what fields. Programming language never enters the conversation. It's in _English._)
Great points all round, I would just add that for significant business benefits, carrying out user testing, especially as a user is negotiating their way through a checkout process, can really add weight to all the intellectual thoughts of any in-house or external people involved in optimising the user experience of a given site with warnings and undo's featured.
I'm a new reader of ALA and by simple reading this article I'm very inspired. I'll be sure to check back to what's new on the site, after I dive into the archives for awhile. Thanks for your amazing content ALA, keep it up!
I really hate the warning message, "undo" is much more friendly and useful. And I will follow this suggestion in my design.
I think the talk about ways to make email undoable is missing part of the picture. Although the protocol itself is asynchronous, the preponderance of blackberrys suggests that people are increasingly using it for business-y things that are time sensitive. Any delay mechanism is just going to tick off anyone that does time sensitive stuff over email.
undo concept is very good idea and it does work. i even use that idea for new CMS, it will extend usabilitty a bit more!
I've been whinging at the Nokia folks for exactly this reason: http://blog.russnelson.com/770/connection-manager.html
Warnings are useless. Actually, they're worse than useless, because they take the place of something which would be useful (undo).
I remember first being turned onto the idea of handling an 'infinite' undo stack in Jeff Cooper's book About Face (1995), then I recall hearing Apple brag about Undo stacks in Cocoa in 1997 and several books since have cited the idea as the 'right' solution.
It's often talked about in the same conversation about making people click 'Save' and even having the concepts of applications being bad examples of 'exposing the implementation'.
So, where is it? I suspect it's hard, expensive, and doesn't sell well on boxes. Folks who love applications that do it probably don't even realize it's a reason they think 'X is so easy to use'. I've asked people who use FileMaker whether they appreciate not having to save files, and none of them have noticed (aside from the occasional novice who feels really uneasy about the app if there's no Save button).
In short, it's the right thing for the user, but we need better metrics to justify taking care of the user (we used to have terms like 'quality' and 'customer support') to those calling the business decisions.
Undo is an ultimate solution here—but what if you could actually customize an actual alert/confirm dialog—and I don't mean by using your own pop-element, but the actual JavaScript functions? That would go a long way towards curing the OK/Cancel issue. We could use some more flexibility in terms of what can be done with the functions—including content, formatting—at the very least customizing the text for the button elements. And please—I don't want to hear about Microsoft's modal windows here ;-)
Follow the link to find out the article's Russian version:
We cant forget however the original idea of a warning. This just happened to me, I went to text message someone on my phone and scrolled down one option too far, delete. I just sighed in sadness as my phone displayed "contact deleted" No warning, no "are you sure?" No undo. So lets not forget that even a warning is better than nothing at all. Thank god for bluetooth synchronization to address book!
Great article Aza, this makes a lot of sense and I do love how Google does this in Gmail. It's helpful to know that I can always get something back. I'll definitely be implementing this in the stuff that I build.
That's a good article AZA. The points that you have discussed are real for sure. But do you think that the same solution is going to be applicable for all types of applications, be it web based or standalone? I mean to say, is it all right for all the instances of deleting anything, from any kind of digital repository?
I understood the humane factor, the tendency of the human beings to get habituated. Google has done an excellent job on Gmail. But why didn't they apply the same for the calender? Should we conclude that they did not give it a thought for the same? And yet, they came up with such a good solution for the mails, when they know that the same instances can occur for the calender as well.
But I must admit that, the points are applicable to some extent, and that would be very helpful for the user experience.
Good article, but the discussion assumes undo is the best solution without a viable discussion on the matter. There aren't any arguments against this or for another solution altogether. Undo is OK, but how about arguments against such as privacy, development time or file space? Warnings are good. Undos are good. Neither are perfect, so just remember to choose what is best for the particular application - because in the real world, developers create apps for real users, within budgets. Develop accordingly.
we also can make habit of being cautious of what we are doing. And eg. data loss is such a great thing to doing so. And this can result only in faster development and "smarter" users and then even faster working with the program when it doesnt bother you with confirmation about everything you are going to do.
But what about the previous undo? Shouldn't we give a warning that we're about to overwrite the old Undo?
@Louisa: Undo is ALWAYS better than warn. Let's take your objections one by one:
If privacy is important, then the existance of the data matters to the user. If it's important to delete it when it's not necessary, it's important to keep it even in the face of user error. To make them comfortable that their deletion of sensitive data will actually occur, you say "This action is undo-able for the next ten minutes."
Jef's point (and his son Aza's point) is that Warnings Do Not Work. If development time is important, then don't waste time writing code to warn the user. Just do the action.
File space is *always* cheap relative to a user's work output, and it's becoming cheaper and cheaper by the day. Remember that when someone wrongly destroys their work, they almost always realize it within a second or two. You don't need to keep a forever undo; being able to undo the last action is sufficient. So ... you defer the actual action until the next command is entered. And if it's "undo" then you just saved somebody's bacon.
I never said undos are better than warnings, so please read the comment over again. Nor am I saying that warnings are terrific, either. I gave a comment on how the article was written definitively without any strong arguments.
I agree that actions taken should have immediate results, ie: click a button and it's represented action occurs, like delete. That's good HCI I think. But ours are a matter of opinions here on this case.
The code needed to write either case: A. undo action taken, make sure old data is available for x amount of time, take appropriate file space measures, create interface for undo action or selections or B. warn before doing the action forever - is actually more on the undo side - so arguing for the developers'/tech staff's/etc sake is a bad argument.
My comment was trying to get at that even though it brought up a nice issue, "why warn at all?", it doesn't give any OTHER arguments altogether. How about another solution to interfaces that are prone to be confusing and how easily people delete things without realizing that they were deleting them? Why is it always the person's fault? Why not better HCI design? Or why not VERSION control in general? Who knows, because the subject matter of the data is up in the air - and that's key to how it should all work. The type of options would all be different when using Outlook, your computer's file system, a content management system, Adobe Photoshop, Notepad, Calculator - which all depend on different types or file space amount, memory, hardware, interfaces, target audience, etc. This is quite like how Microsoft develops operating systems for the regular Joe (Are you sure you want to do that?) where as Linux develops operating systems for a developer (...no warning…). Some may say that's why Linux or OSX is better than Windows, but millions of people prefer Windows over others because of small things like that, warnings which help direct them into good decision-making. There are a lot of factors to consider in any piece of software you're developing as to what might work the best - and that isn't ALWAYS undo.
The article ignored the thoughts of also, "well, how many undos do you give?" If space is a non-issue, and so is memory, and so is time, and so are salaries (we're getting rid of a lot of factors here to make this possible) then you should never limit it - undo should cover every action taken from once the user starting using file/software/OS ___ . Because no amount of undo is ever good enough, once you give a user one, they expect more and that's why programs now-a-days allow you to put in more and more undos in the history than ever before - users are dependent on not being accountable for data. That being said, I should be able to undo something I deleted 10 years ago, right? Or should I just be done with it after my 1 warning?
When is the user accountable? When are the HCI designers accountable? Can we not think of any other solutions?
Another possibility to prevent the user to click on the OK-button accidentliy might be to poste the question in the warning in the way that the user has to click the NO-button to continue. If he then clicks the OK-button although it wasn't his intention he will just get one step back in the process. However, sometimes the question doesn't sound good if you phrase it the other way round. But normally this is a good option.
@Phil Dubai, though your solution will prevent more users from performing operations they did not mean to perform, it will annoy a lot more users that clicks ok and expects their action to be comitted.
A quick fix to this might be to accept the users decission and display a status message with undo option, and a 10 seconds counter.
"Message deleted, Undo (10)"
One thing I've been implementing for a while is flagging content as deleted in the database.
When I feel it's time to clean it up, I just run a delete function on the database where deleted equals 1.
It would be very easy to implement an "undo" function for users in my current applications, and hell, now I just might do so.
Great article.
I wrote an article about just this, more from a developer perspective.
After I wrote my articel I found this articel, and I agree with what Aza is writing.
And It's really not that hard to implement…
Email programmes should come standard with an undo send facility. Or a delay send. "are you absolutely sure you want to do this? sure you don't want to wait till tomorrow when you're sober/less angry?" Then it sends it round in a loop, which if you're sober/not angry is easy to override, but otherwise (specially if you're pissed) moves the send button around in a random kind of way. I just think computers should be more fun.
Users would be less likely to need to need "undo" if the messages more appropriately matched the answer.
"OK" and "Cancel" are difficult to answer; it's not always clear thet "Cancel" is the opposite of "OK". Perhaps users wouldn't make mistakes as often if they were aked "Are you sure you want to delete foobar.doc?" and the buttons are "Yes" and "No".
I know that some environments don't allow you to change the options; I'm constantly challenged with trying to word a message that can easily be answered with "OK" and "Cancel"—it's very difficult.
One common approach to the undo button is a soft delete, most of the time undo buttons come into play with CRUD operations, particularly the delete action - by giving a table a soft delete column (I like the name is_deleted) you can control the state of a record quite easily, by never actually removing the record the user is attempting to delete.
Ryan bates posts a screencast demonstrating infrastructure for undo/redo-based website CUD operations in Rails at railscasts.com.


text:
My Account
Sign in
School Sewing Clubs
Berkshire Sewing Clubs
St Michael's School
Datchet St Mary's
The Royal School - Windsor
Harmans Water School
Winkfield St Mary's
St George's Windsor
Cranbourne School
Ascot Heath Junior School
Wildmoor Heath Primary School
Warfield Primary School
St Joseph's Catholic Primary
Nine Mile Ride Junior School
Oaklands Junior School, Crowthorne
Gorse Ride School
Finchhampstead Primary
St Sebastian's
Hatch Ride Primary School
St Michael's East Hampstead
St Frances Catholic Primary
Crowthorne CE Primary School
Keep Hatch Primary
... More
Surrey Sewing Clubs
St Cuthbert's School
Holy Family School, Addlestone
Ottershaw Junior School
Connaught Junior School
St Jude's School
St Ann's Heath Junior School
St Hugh of Lincoln
Thorpe CE Primary School
Holy Trinity Primary - West End
Bisley Primary School
Lightwater Village School
Hammond Junior School
St Michaels Primary School - Ashford
... More
Buckinghamshire Sewing Clubs
St Nicolas School, Taplow
Dorney School
... More
Sewing Kits
Holiday Workshops
School Knitting Clubs
St Judes Englefield Green
Ascot Heath Junior School
Your basket is empty.
School Sewing Clubs
Surrey Sewing Clubs
St Hugh of Lincoln
St Hugh of Lincoln Primary School
St Hugh of Lincoln Primary School
Product no.: 1806_STHL
Be the first to rate this product
Currently unavailable
Price includes all materials
Ask question
Let your creativity run wild - Club dates are 5/6 - 3/7 - Tuesday Lunchtime
Browse this category:
St Hugh of Lincoln
Terms and Conditions
Privacy policy
Contacts and Terms

subset: commoncrawl


text:
|Newton, Mass.
|High School:
|Newton South
|Residential College:
|Ezra Stiles
2013-14: Won a silver medal with the varsity four at the Ivy League Championship... Sat in the four that raced for the Frank V Harry Cup at the Henley Women's Regatta.
2012-13: Won a silver medal with the varsity four at the Ivy League Championship... Sat in the varsity four at the NCAA Championship.
Before Yale: Only started rowing two years ago but has already racked up some impressive performances... Stroked her four to a silver medal at the US Rowing Club National Championships.... Rowed in the Community Rowing Inc. varsity that finished fourth at the 2011 Head of the Charles Regatta.
Porter Says: "Brit is all upside. She is brand new to the sport but already moving right up the ladder. Again, coming out of CRI I know coach Curren will have her ready to race it up."
Why Yale? "Yale was always my first choice. I had been looking into a few schools at first: I wanted to go to one of the best schools in the country academically, so that was one factor I considered. However, when I came to visit the campus on a cold and rainy weekend I loved it. The people seemed so happy, and more importantly, connected to one another and to the school. I knew that if I could fall in love with a school in such miserable weather, then it can only be better in the sunshine. I cancelled all of my other visits to different schools because I knew that I had to come to Yale."
Quote: "There is nothing that your body would not be able to do if only your mind would let it."


text:
City commissioners voted Monday to approve contractual salary increases for the city manager and city attorney.
City commissioners voted Monday to approve contractual salary increases for the city manager and city attorney.
The contracts were on the commission agenda before the new commission was seated, however, commissioner James Harrod requested the items wait until after the new commissioners were seated.
The contracts said raises were due July 1, and as such the city manager and city attorney will be paid retroactively, Mayor Wes Mainord said.
"That's all we're doing is fulfilling the contract," Mainord said.
City Manager Brian McDougal said he will receive a 5 percent increase, but was unsure of what City Attorney Mary Ann Karns' increase would be.
"I'm just very pleased that the commissioners are happy with us," McDougal said.
Karns was unavailable for comment Wednesday because she was out of the office, her assistant Celia Elwell said.
Finance Director Cindy Sementelli was out of the office Wednesday, and was unable to give exact salaries at press time.
City Clerk Phyllis Loftis declined to give the exact percentage for Mary Ann Karns' increase because it was discussed during executive session.


text:
Total Training for Adobe Fireworks CS5 Ch 2 L2. Using the Freeform & Subselection Tools
Total Training for Fireworks CS5 begins by teaching you the foundations of Fireworks and will quickly show you how to create vector shapes and design a logo. You will also learn to work with text, bitmaps and layers before moving onto creating interactive buttons using slices, hot spots and rollovers. Finally, you will explore wireframing, RIA, AIR and mobile prototyping and how Fireworks allows you to design in multiple pages and even export standards compliant CSS. Highlights Five New Features covered in this title: * FXG Export * New Design Templates * Property Inspector Workflow enhancements * Text Improvements * Layers, Pages and States Panel Improvements
Length: 03:59


text:
China's slowing economic growth is weakening momentum throughout the rest of Asia, the Asian Development Bank (ADB) said yesterday as it revised down its forecasts for the region.
A day after Beijing released data showing its economic growth slowed for a second successive month in the April-to-June period, the bank trimmed its outlook for developing Asia this year to 6.3 percent growth, from 6.6 percent.
In the update to its annual Asian Development Outlook publication, first published in April, the bank also pared its forecast to 6.4 percent next year, from 6.7 percent.
"The drop in trade and scaling back of investment are part of a more balanced growth path for [China], and the knock-on effect of its slower pace is definitely a concern for the region," ADB chief economist Changyong Rhee said in a statement.
"But we are also seeing more subdued activity across much of developing Asia," Rhee added.
The update for this year is only a little better than what the bank described in the report as the region's "relatively sluggish" growth of 6.1 percent last year.
Developing Asia groups 45 nations or territories from Central Asia through to the Pacific islands, but excludes Japan.
The report cited a marginally better outlook for the advanced economies, particularly Japan, where it said monetary and fiscal reforms by Japanese Prime Minister Shinzo Abe appear to be bearing fruit.
However, this did not lead to stronger demand for Asian exports, with even Southeast Asia, the bright spot in early this year, no longer faring as well.
"Southeast Asia's strong start to the year is being tempered by slower growth in [China] and continued weak demand from advanced economies for its exports," it said.
China said on Monday its economy expanded 7.5 percent in the second quarter, following 7.7 percent in the previous three months and 7.9 percent in the October-to-December period.
This "points to slow but persistent growth deceleration" amid moderating industrial production and weaker investment growth, the ADB said.
Turbulence in China's domestic interbank market last month also raised funding costs, it added.
"This could further weaken investment in the remainder of the year, undermining growth at least in the short term," the ADB said.
The bank now sees China's economy growing 7.7 percent this year and 7.5 percent next year, helped by consumer confidence remaining high and retail sales picking up.
However, both figures are lower than its April forecasts of 8.2 percent and 8 percent. The Asian economic giant grew 7.8 percent last year.
It said East Asia should grow 6.7 percent this year and next, with both Hong Kong and Taiwan hit hard by the slower Chinese economy.
The ADB now forecasts Southeast Asia's economies to expand 5.2 percent this year, down from 5.4 percent.
It also trimmed its forecast for South Asia to 5.6 percent this year as India, its largest economy, stuttered.
"In India, slowing fixed capital formation, weak industrial activity and plodding progress on reform are weighing on the economy," it said.
The bank lowered its growth forecast for India this year to 5.8 percent, from 6 percent. The country's economy grew 5 percent last year.
On a positive note, the ADB said slower GDP growth helped the region contain inflation, while expanded global natural gas production put a lid on energy prices.
The bank lowered its inflation forecasts for developing Asia to 3.5 percent this year and 3.7 percent next year.


text:
However, 14 games into her freshman season center Jess Reece is showing steady improvement, even overcoming an injury setback.
She scored a season-high 14 points in Saturday's 74-69 win over Jacksonville. She is averaging 9.3 points in A-Sun games, 29th in the conference play. She is tied for second in A-Sun games in blocks with 1.75 per game.
Offensively, the Lady Bisons coaching staff has let Reece play her game, tweaking her style when necessary.
"The other girls are getting the ball to her more," Lady Bisons' coach Frank Bennett said. "She has had her ups and downs, but she has done some good things.
"One of the big things is getting her to get low and leverage her strength. She is getting bumped around a lot. She has a natural touch for the basket. She can go left or right with her jump hook has been a big advantage."
Reece, 6-foot-3, was paired for most of the Jacksonville game against senior Tanseskei Richardson.
"I think Jess has confidence based on how she has performed," Lipscomb senior guard Jenna Bartsokas said. "She is consistently catching the ball when we get it to her. She is taking her shots.
"She was matched up against a senior post player in the Jacksonville game and she took it to her. If that doesn't bring you confidence I don't know what will."
Reece credits the coaching staff for their preparation each game as one of the reasons the Lady Bisons are playing with more confidence this season.
"We all trust each other," Reece said. "If I miss a shot I can't let it get to me. I have to shake it off and keep working."
Almost as impressive as her 14 points was the fact that Reece finished the game with only three fouls, none in the first half against Jacksonville.
"Coach Bennett texted me and told me I could not foul out," Reece said. "I kept telling myself that all day. I knew I couldn't make stupid fouls."
Bartsokas is second in scoring in A-Sun games only with 20.4 heading into Monday's game with North Florida at Allen Arena at 2:15 p.m. The men's game has been rescheduled for noon due to expected inclement weather. Admission is free.
The Lady Bisons are 7-7, 4-1 in the A-Sun. The seven wins are the most by the Lady Bisons in three seasons.
North Florida, a 65-48 loser at Belmont Saturday, is 2-11, 0-4 in the conference. North Florida swept the series with the Lady Bisons last season and holds an 8-1 advantage.
"Brittany Kirkland is one of the top guards in the conference," Bennett said. "They are young in the post, but they have some athletic kids there."
Bartsokas is third overall in the A-Sun in scoring with 15.8 points per game. Junior guard Anna Bowers is fifth overall with 14.6 points game. She is 12th in scoring in A-Sun games with 14.2 points per game.
Bowers is second in A-Sun games only in 3-point field goals made with 3.4 per game. Bartsokas is fourth with 2.8.
North Florida is led in scoring by Brittany Kirkland who is fourth overall in the A-Sun in scoring with 14.7 points per game. She is averaging 15.3 points in A-Sun games, eighth in the conference.
Larkira Jones is the top rebounder for North Florida with 6.8 per game overall, seventh in the conference. She is averaging 8.3 in A-Sun games, tying her for seventh.
Bennett is wondering how his team might be affected by the change in starting time. Monday is also scheduled as the first day of class for the spring semester.
"I don't think we will have as much of a home crowd," Bennett said. "Playing behind the guys is going to be different where we don't really know how long the game is going to be. I told our players Sunday that we will have to fight through those distractions and make sure we are ready to play."
Written by Mark McGee, Senior Publisher/Director of Media Relations.


text:
Hi All !
After a recent discussion on the nbusers mailinglist[1], I was wondering; which project structures/project management tools do you use? Or, as there are probably setups you have to work with but rather would not, which project structure/project management tool is on your wishlist for NBPython?
[1] - https://netbeans.org/projects/www/lists ... message/69


text:
Two years before Woodstock, over 200,000 hipsters gathered in Monterey, California for a three day celebration of music that embodied the themes of the new counter-culture and became the template for all future music festivals. Thirty-two bands played - stars like The Mamas and the Papas, Simon & Garfunkel and The Byrds shared billing with groundbreaking new acts, showcasing the first major American appearances by Jimi Hendrix and The Who, as well as the first major public performances of Janis Joplin, Otis Redding, Laura Nyro, Steve Miller and Indian sitar maestro Ravi Shankar.
Purchase museum-quality fine art prints of rock, blues, jazz, and country music stars by the best photographers in the world.
About Gene Anthony
Thousands of people flocked to the corner of Haight and Ashbury during the Summer of Love, but few saw the unfolding phenomenon as clearly as Gene Anthony did. From his apartment one block up the hill, he witnessed the extraordinary pilgrimage of young people from across the country as they trooped to San Francisco in search of answers, approval and love, and he captured the compelling vignettes through his telling lens. Anthony's photographic talent, subjects and well-deserved acclaim extend far beyond the psychedelic period, but his ability to capture a mood on a face or the essence of an era from a simple street sign was recognized and refined during that time. His photographs have, in turn, become the myriad faces of the Summer of Love.


text:
- WINNER: The giveaway is closed now, and the winner is @the_rainebeaux! Congratulations, @the_rainebeaux! If you entered but didn't win this time around, keep trying, and click here to enter any ongoing giveaways before you jet. 🙂
Good morning, young lady. 🙂 It's the weekend, and wouldn't ya know it? I feel a little out of it today, so please bear with me if you can. I'm not sure why, but it's like everything's moving in slow motion for me. I didn't sleep poorly last night, so I don't think that's why. I just…don't know, feel…slower…than…usual. And Tabs is really bothered about it, too, as you can tell from this very revealing pic:
I believe it accurately conveys how he feels about my mental struggles this morning: "Talk to the butt."
See, when Tabs is having "one of those mornings," he just flees to the safety of his cat tower and sleeps it off.
Wouldn't it be nice if we could do that sometimes? — flee to our cat towers.
I'm serious. I wish I had a giant cat tower built to human scale. It would have to be about 42 feet tall, though, with better carpeting, and would probably require an elevator because I ain't climbing up the side of no 42-foot-tall cat tower. I'm not THAT crazy, LOL!
While I research construction costs, why don't we have a little fun this morning and get this weekend off to a good start? 🙂 I think you know what that means. It's…
- One (1) Sephora eGift card containing $50 sent to the winner by email (international readers, you may opt to receive $50 sent by PayPal instead).
- There are two ways to enter, and you can do both of them for two chances to win. First, you can enter by leaving a comment at the bottom of this post, a comment about anything at all, like, what do you do when you have "one of those mornings?" Have you ever worked on a ranch or a farm? — wait, I just asked that one last week. Seriously, how do I come up with these questions, LOL?! Have you ever worked on a farm? I mean come on, am I completely out of my mind? 🙂 I think you know how we do this by now. A comment about anything at all, but today, the wackier the better.
- Second, you can enter by following me on Twitter @karenmbb and retweeting (RT) the following message:
- Follow @karenmbb and RT to Win a $50 eGift Card from Sephora! http://bit.ly/p3QSYA
- The deadline to enter is Sunday, July 24, 2011 at 11:59PM (PT).
- Entrants must enter using a valid email address and/or Twitter account to win.
- A maximum of two (2) entries per person — one within the comments at the bottom of this post, and a second entry via Twitter addressed to me @karenmbb.
- Contest is open to individuals of any country who have reached the age of majority according to their local laws (18 in the United States with these exceptions: Alabama and Nebraska, 19; Mississippi, 21).
- Sephora eGift Certificates can only be redeemed online and are not valid in stores or available for purchase or redemption in Canada. International winners may opt to substitute the Sephora eGift card prize for $50 sent directly to their email address by PayPal instead.
- Tabs and I (heretofore referred to as "T-Money and K-Dawg") will select one (1) winner at random from the entries either left in the comments at the bottom of this blog post or addressed to @karenmbb on Twitter.
- The winner will be announced here within 48 hours of the deadline.
- Void where prohibited by law.
Your friendly neighborhood beauty addict,
- WINNER: The giveaway is closed now, and the winner is @the_rainebeaux! Congratulations, @the_rainebeaux! If you entered but didn't win this time around, keep trying, and click here to enter any ongoing giveaways before you jet. 🙂


text:
The time before that, we saw that for each prime p, there is a finite field Fp, consisting of the set {0,1,...,p-1}, with the arithmetic operations carried out modulo p.
This week we're going to bring these two ideas together, and look at algebraic extensions of Fp.
Algebraic extensions of Fp work just the same way as algebraic extensions of Q. First, find an irreducible polynomial over the base field K - that means, a polynomial f(x) in K[x], which can't be expressed as f(x) = g(x) * h(x), for g(x), h(x) in K[x] of lower degree. For example, whenever d is an element of K without a square root in K, then x^2-d is irreducible. Then, form the quotient ring K[x]/
For example, in F3, and also in F5, there is no square root of 2. So we can form the fields F3(sqrt2) or F5(sqrt2). We need to be a bit careful about terminology. 2 in F3, 2 in F5, and 2 in Q, are all different things - consequently sqrt2 in F3, in F5, and in Q are all different things. We mustn't make the mistake of thinking they're the same thing.
We saw last time that Q(sqrt2) consists of { a + b sqrt2 | a, b in Q }. Similarly, F5(sqrt2) consists of { a + b sqrt2 | a, b in F5 }. In particular, it follows that F5(sqrt2) has 25 elements. In general, a simple algebraic extension of Fp will have p^n elements, where n is the degree of the irreducible polynomial.
Over Q, we were able to form the fields Q(sqrt2), Q(sqrt3), Q(i), and so on. Somewhat surprisingly, over Fp, it turns out that any algebraic extension of degree n is isomorphic to any other. For example, F5(sqrt2) is isomorphic to F5(sqrt3). For this reason, we typically just talk about F25 (meaning, the field with 25 elements) - or in general, Fq, where q = p^n is a prime power.
However, in order to do arithmetic in F25 or in Fq, we clearly need to have some particular irreducible polynomial in mind. Otherwise, we won't know whether to reduce x^2 to 2, or to 3, for example. So for each p, n, we need to agree on an irreducible polynomial of degree n over Fp. There doesn't appear to be any natural way to choose, so an artificial way to choose has been devised, called the Conway polynomials.
So, using a little phantom type trickery as before, here are the first few finite fields of prime power order, as defined in the HaskellForMaths library:
data ConwayF4
instance PolynomialAsType F2 ConwayF4 where pvalue _ = convert $ x^2+x+1
type F4 = ExtensionField F2 ConwayF4
f4 = map Ext (polys 2 f2) :: [F4]
a4 = embed x :: F4
data ConwayF8
instance PolynomialAsType F2 ConwayF8 where pvalue _ = convert $ x^3+x+1
type F8 = ExtensionField F2 ConwayF8
f8 = map Ext (polys 3 f2) :: [F8]
a8 = embed x :: F8
data ConwayF9
instance PolynomialAsType F3 ConwayF9 where pvalue _ = convert $ x^2+2*x+2
type F9 = ExtensionField F3 ConwayF9
f9 = map Ext (polys 2 f3) :: [F9]
a9 = embed x :: F9
data ConwayF16
instance PolynomialAsType F2 ConwayF16 where pvalue _ = convert $ x^4+x+1
type F16 = ExtensionField F2 ConwayF16
f16 = map Ext (polys 4 f2) :: [F16]
a16 = embed x :: F16
data ConwayF25
instance PolynomialAsType F5 ConwayF25 where pvalue _ = convert $ x^2+4*x+2
type F25 = ExtensionField F5 ConwayF25
f25 = map Ext (polys 2 f5) :: [F25]
a25 = embed x :: F25
As we did with the fields Fp, we provide the functions f4, f8, f9, etc, which just return a list of the elements of the corresponding fields. a4, a8, a9 etc return the element that has been adjoined to the underlying field to make the extension field.
For example:
> f8
[0,a^2,a,a+a^2,1,1+a^2,1+a,1+a+a^2] :: [F8]
> a8 ^ 3
1+a :: F8
We can partially verify the claim that F25 = F5(sqrt2) = F5(sqrt3), by exhibiting square roots of 2 and 3 in F25:
> (2+a25)^2
> (1+3*a25)^2
Last time, I mentioned that extension fields can have automorphisms, without really spelling out what that means. Well, if L is an extension of K, then f is an automorphism of the extension if for a,b in L, c in K, f(a+b) = f(a)+f(b), f(a*b) = f(a)*f(b), etc, and f(c*a)= c*f(a). In other words, f(L) looks the same as L, viewed from K.
The finite fields Fq (q = p^n) have an automorphism called the Frobenius automorphism, defined by f(x)=x^p. For example:
> f9
> map frobeniusAut f9
Finally, a word about efficiency. The HaskellForMaths implementation of fields Fq is very natural from a mathematical point of view, but it isn't very efficient.
Firstly, we are working with polynomials with coefficients in Fp. To multiply two degree n polynomials together, we have to do O(n^2) additions and multiplications of coefficients. If the coefficients are in Fp, each one of these involves a (`mod` p) operation. It would be better to do the polynomial arithmetic over the integers, and only do the `mod` p at the end. We would then only have to do O(n) (`mod` p) operations.
Secondly, we could consider implementing the fields Fq using Zech logarithms instead.
Anyway, it doesn't matter too much for the moment, as I only want to use the finite fields to construct combinatorial structures. But sometime I might try to write a more efficient implementation.
Next time: finite geometries.


text:
|RBX-PET-NGTP1 ColorFabb nGen filament in Clear
|Product Code
|Weight for shipping (kg)
|Recommended Price inc VAT
|Product Name
|RBX-PET-NGTP1 ColorFabb nGen filament in Clear
A full reel of high quality CO-PET filament.
nGen is produced with Amphora™ AM3300 polymer and uses specific colorFabb developed color concentrates for good opaque quality and highest possible brightness. Eastman Amphora™ AM3300 3D polymer is a low-odor, styrene-free material uniquely suited for 3D printing enthusiasts, particularly those who need the flexibility to print within a wide processing temperature range.
One of nGen truly unique features is its melt stability, meaning from pellet to filament to 3D Printed part, the mechanical properties of the material will hardly be affected. This provides a great deal of printing stability and the ability to reproduce the same quality parts over and over again, reducing failed prints rates.
Why would I want nGen instead of colorFabb_XT?
Improved bridging and overhang capability
Each reel is sealed in a reusable zip lock bag with a sachet of silica gel to control moisture. The bag is then placed in a sturdy windowed box for shipping. Included on the reel is an EEprom which can be read by a Robox® device. The EEprom stores data on the material and statistics of use.
|Filament diameter
|Length (metres approx.)
|Weight (grams approx.)
|Compatible with any printer which accepts 1.75mm filament. The EEprom requires a reader which is fitted to all Robox® units.


text:
Brand Label: Lucky Brand
51% ITEM DISCOUNT AT MACYS! WAS Pin It
Lucky Brand Wood Chip and Dip Server, Created for Macy's Home - Dining & Entertaining Dining Categories - Serveware.
Shop other brand label items from Lucky Brand on FashionStylist.com.
This item was published for sale online by macys on April 30, 2018 12:31 pm and last updated by us November 26, 2018 3:22 pm.
macys Note: This vendor may charge a fee of $10.95 for shipping and handling of this item. See website for further details and/or any volume discounts.
Editor Picks: Kid Swim for the Win
Onia Ava One Piece Swimsuit Swimwear
Molo Kid's Newton Swim Trunks
Motoreta Colorblocked One Piece Swimsuit Swimwear
Submarine Floral Crop Rashguard Swimwear
Submarine Cloud Print Tank Swimsuit Swimwear
Editor Picks: Sneak a peak at these sneakers for men
Robert Zur Men's Jesse Sneakers
Magnanni Men's Alonzo Hi Sneakers
Bally Men's Helvio Sneakers
Bally Men's Willet Sneakers
Golden Goose Men's Superstar Sneakers
Editor Picks: Onepiece and Whimsy
Mugler Colour Block Playsuit Women Polyamide Spandex
Lemlem Safia Playsuit Women's Blue Cotton Acrylic
Isolda Tropical Jumpsuit Women's Blue Cotton Spandex
Frame Denim Le Button Jumpsuit Women's Blue Polyester
Uma Raquel Davidowicz Tie Fastening Cardigan Women
Editor Picks: Handbags for the Win
3 1 Phillip Lim Mini Soleil Barrel Bag Black
Alexander Wang Alpha Suede Bucket Bag
Moschino Bear Leather Crossbody Bag
Burberry Bridle Leather Shoulder Bag
Moschino Its Lit Matchbook Bucket Bag
Editor Picks: Whimsical, Wild, and Wonderful
Tory Burch Floral Print Sandals Women's 5 Nude
Tory Burch Beaded Statement Earrings
Tory Burch Melody Black Leather Ankle Strap Sandals
Tory Burch Fish Bone Vintage Goldtone Brass Cuff
Tory Burch Gemini Link New Ivory Suede And Leather
Browse More Fashion Apparel by Lucky Brand (view more)
- $39.99
Lucky Brand Margaline Wedge Espadrilles
- $39.99
Lucky Brand Lidwina Suede Wedge Espadrilles
- $24.97
Lucky Brand Elysia Suede Ballet Flats
- $24.97
Lucky Brand Elysia Suede Ballet Flats
- $24.97
Lucky Brand Elysia Denim Ballet Flats
- $39.99
Lucky Brand Emmie Ballet Flats
- $39.99
Lucky Brand Emmie Striped Woven Ballet Flats
- $39.99
Lucky Brand Emmie Suede Ballet Flats
- $39.99
Lucky Brand Emmie Suede Ballet Flats
- $39.99
Lucky Brand Emmie Ballet Flats
New promo codes and links offering limited time promotions, sales coupons, and special offers on Lucky Brand designer fashions and accessories will be posted on each designer label apparel page. For the latest up to date information on this Lucky Brand Wood Chip And Dip Server Created For Macys Serveware | Home fashion item, including product specifications, ordering options, pricing, shipping details, high resolution pictures, shopper comments, and other sales media, visit the macys Online Store.


text:
My Favorite Flirts is a feature that lets you reach your favorite Flirts easily from My Account or on 1-800-TO-FLIRT.Manage My Favorites
(0 Reviews)
I know, I know... I am a cock tease sometimes. It's
not always right, but it is always fun. I might not always get you off
myself - as in physically helping you - but mentally I have no problem
getting you where you need to go to shoot your hot load.
When I'm out on the town, I love to brush up
against a man letting my hard nipples stroke over his back or
accidentally let my hand caress his crotch. Then I look all innocent and
wide-eyed at him, smiling from ear to ear and casually walk on. The rest
of the night he's trying to get my attention and I play along for the
fun of it before it's time to go home. And I always go home alone. I
don't have random, one-night stands.
I do get off from all of my teasing. My panties
always get wet. I do go home and play with myself. I have no objection
to some company while I'm doing this.... I get off even harder knowing
that you're listening to me.


text:
2011-12 Lady Bisons Schedule
Headlined by a number of big matchups including an in-season tournament contest against cross-town foe Vanderbilt, the 2011-12 Lipscomb Lady Bisons women's basketball schedule looks to be an exciting campaign as announced by head coach Frank Bennett on Wednesday.
"We're excited about the Lady Bisons basketball season schedule for the 2011-2012 season," noted Bennett. "We've got some marquee games with some top level teams"
The 29-game slate features contests against seven teams that made it to either the 2011 NCAA tournament or the 2011 Women's National Invitational Tournament (WNIT)
Following a Nov. 5th exhibition against NCAA Division II foe Harding, the Lady Bisons open the regular season with a two-game home set hosting Air Force on Nov. 11th and in-state rival Austin Peay on Nov. 14th at Allen Arena. Lipscomb continues action against "Volunteer" state teams on the 17th with a trip across the "Music City" to take on Tennessee State before back-to-back contests across the state line in Alabama against Alabama A&M on the 19th and Jacksonville State on the 21st.
Thanksgiving weekend hosts a big weekend for the Lady Bisons as Lipscomb travels across town for Vanderbilt's tournament that features three teams that made the postseason in 2011. The Lady Bisons take on NCAA participant Vanderbilt on the 25th and then face off against either NCAA Sweet Sixteen foe Oklahoma or WNIT opponent Liberty on the 26th.
Atlantic Sun play awaits Lipscomb the following week as the Lady Bisons open league play against Mercer on Dec. 1st before Kennesaw State comes to town on Dec. 3rd. Coach Bennett's squad then steps out of conference play again to finish out 2011 with a gauntlet featuring trips to 2011 WNIT participant Tennessee Tech on the 5th, NCAA Sweet Sixteen squad North Carolina on the 7th, NCAA participant and Big South champion Gardner Webb on the 18th and Indiana State on the 20th.
2012 welcomes conference play back for the Lady Bisons with a trip to the "Sunshine State" to open the New Year. Lipscomb takes on A-Sun foes Jacksonville on the 2nd and North Florida on the 4th. Road action continues on Jan. 7th with a trip up the "Boulevard" to take on Belmont before returning to the friendly confines of Allen Arena on Jan. 12th hosting NCAA participant and defending A-Sun champion Stetson.
Another 2011 postseason foe awaits two days later as Lipscomb hosts WNIT participant Florida Gulf Coast on the 14th before traveling to USC Upstate on the 19th and East Tennessee State on the 21st. Jacksonville and North Florida then make their return trip to Nashville on the 26th and 28th, respectively, before Belmont makes the three-mile trek to the Lipscomb campus to open the month of February on the 4th.
The Lady Bisons second trip to the state of Florida awaits following the tilt with the Bruins with a trip to take on Florida Gulf Coast on the 9th and Stetson on the 11th. East Tennessee State comes to town on the 16th of February before Upstate wraps up the 2011-12 home slate on the 18th. Lipscomb then wraps up the 2011-12 regular-season slate with a pair of road games at Mercer on the 23rd and Kennesaw State on the 25th.
The Atlantic Sun Tournament is scheduled for Feb. 29-March 3rd in Macon, Ga. For season ticket information contact Trevor Garrett at 615-966-5990 or firstname.lastname@example.com


text:
The two confessed killers of Hollywood Diner owner Michael Gklotsos will be sentenced on March 25.
Two people who took part in the Sept. 17, 2012 strangulation death of Hollywood Diner owner Michael Gklotsos will be sentenced in Kent County Superior Court on Tuesday, March 25.
Joshua A. Lemonick, 22, formerly of Newtown, Pa., and Angeline M. Terek, 25, formerly of Bristol Township, Pa., fled back to Pennsylvania after the homicide, but were arrested within two days of the killing and extradited back to Delaware, according to the Dover Police Department.
A third suspect, Tiffany Ferraro, then 16, of Fairless Hills, Pa., was arrested on Sept. 25, 2012.
A police investigation showed the three had broken into Gklotsos' home on Acorn Lane, Dover, with the intent of committing a robbery, police said.
Lemonick and Terek originally were charged with first-degree murder, home invasion, robbery, kidnapping and related offenses.
Ferrarro was charged with first-degree robbery, second-degree conspiracy, wearing a disguise and home invasion.
She pled guilty to the conspiracy and home invasion charges during a court appearance in July 2013, and was placed on high-level probation until she turns 21, according to Jason Miller, spokesman for the Delaware Department of Justice. Ferrarro will observe her 18th birthday in March.
In a plea deal, Terek pled guilty to second-degree murder and second-degree conspiracy during an August appearance before Superior Court Judge James T. Vaughn Jr., Miller said.
Lemonick appeared before Vaughn on Nov. 26 to plead guilty to one count each of second-degree murder and first-degree robbery.
Vaughn ordered a pre-sentencing investigation for both, the results of which will help determine the length of their sentences, Miller said.


text:
Animals at the Terrebonne Animal Shelter will have to wait even longer for a better facility.
Animals at the Terrebonne Animal Shelter will have to wait even longer for a better facility.
A Nov. 1 Houma-Terrebonne Public Trust Financing Authority meeting was unofficial because an authority member was absent, so a decision to allocate money for the project wasn't an option.
On Thursday, parish officials, representatives from the animal shelter and volunteers from Friends of Terrebonne Animal Shelter gathered again at the Government Tower in Houma to make their presentation and request money from the authority.
But once again, not having all members present, the authority voted to take no action and to reconvene on an undetermined date.
The shelter has a variety of problems, which Tom Bourg, Terrebonne Parish utilities director, addressed at the Nov. 1 meeting.
"It is the equivalent of a dog-pound facility," Bourg said. "Basically what we have now is a bunch of cages where the unadoptable and the adoptable — the aggressive and the friendly — are all just crammed together."
The shelter at 131 Plant Road is divided into five parts. Its entrance is a small room with a receptionist where animals can be dropped off. The original shelter building, built in the 1960s, connects to the entrance where there are 16 dog runs and 39 cat cages for visitors to view the animals. Next-door is the ill-cat building. The next building is a portable shed divided in half where the veterinarian works and the animals that are not ready for adoption are held. In the back is the administration office.
Since 2009, members of the shelter, parish officials and advocates have been trying to reach their goal of raising $2 million for a new facility to be built just north of the U.S. 90 and La. 24 interchange.
The Parish Council approved a $1 million federal recovery grant from hurricanes Gustav and Ike in July to go toward the new shelter. The shelter came up with $250,000 from donations, and Friends of the Terrebonne Animal Shelter raised about $30,000 from fundraising.
But Parish President Michel Claudet said that's still not enough.
"We figure that if we have about $2 million total we can actually start the construction," Claudet said. "The architect has already been appointed, and they are ready to go."
A new facility is critical for Terrebonne, Claudet said, and it needs to be roughly double the size it is now.
One of the major reasons for a new building is that the old one floods during storms.
The shelter flooded quickly and suffered some damage during hurricanes Gustav and Ike. The new location in Gray is not in a flood zone.
Bourg said another reason for the new facility is to provide an attractive place that makes visitors comfortable adopting.
A new shelter would accommodate the staff and provide areas where potential visitors can get acquainted with the animals to consider, Claudet said.
Bourg said state-of-the-art veterinarian facilities, storage space, and dog and cat runs in the adjacent areas are planned at the new shelter.
When the shelter first opened, it took in fewer than 1,000 animals a year, Bourg said. The shelter now takes in around 7,000 animals a year. At any given time, the shelter houses 50 to 180 animals. And that's why shelter workers encourage residents to spay and neuter their pets and adopt from the shelter.
Bourg said low-cost spay and neuter programs are a thing of the past.
"We're providing full-vet services for adoptable pets. We're working with many rescue groups, including PetSmart charities, to take adoptable animals and move them out of the community so they can get the highest possible adoptable rates."
The shelter falls under the parish Utilities Department because since the 1980s it has received money to operate from solid-waste collection fees.
Claudet said this project is something the parish has thoroughly planned for, and he anticipates it will eventually happen.
"It is easier for a politician to cut a ribbon than to keep facilities open in the future," Claudet said. "This is a slow process — that's how it goes — but we will get it done."


text:
Contact us 24/7: +1 877 678 9627
View product details
Zoom In
Need a second opinion? Ask your personal shopper:
Need a second opinion? Ask your personal shopper:
GET EXPERT ADVICE Need a second opinion? Ask your personal shopper:
- - This item's measurements are:
EXCLUSIVE TO NET-A-PORTER.COM. Intricate craftwork and vibrant costumes are the focus of Mario Testino's Alta Moda photographic series - this textured-satin clutch features a blown-up version of one of the images. We love how the artisanal aesthetic is carried through with the colorful pompom embellishments.
Shown here with: Proenza Schouler top, Roberto Cavalli bracelet, The Row skirt, Brian Atwood shoes.
- - Multicolored textured-satin, Mario Testino Alta Moda photographic print
- - Black leather (Calf) trims and base, multicolored pompoms
- - Two internal zip-fastening pockets
- - Fully lined
- - Zip fastening along top
- - 20% of each sale will be donated to the photographer's Lima-based charity, MATE
Product Code: 383541
Shop more:
For alternative suggestions, contact our Fashion Consultants
Help & Advice
Product Code: 383541


text:
Opinion: Propping up Pyongyang
Editorial page editor Paul Gigot on South Korea's plan to reopen the Kaesong industrial complex. Photo: Associated Press
This transcript has been automatically generated and may not be 100% accurate.
... I ... turning now to Becker Real Lancelot were South Korea announced over the weekend ... that it's really opening the industrial park it shares with North Korea ... in the demilitarized zone ... Wall Street Journal editorial page editor Paul GBO joins me now call ... why is this the case on industrial park so important to the north ... consists of torture really can ... something like ninety million dollars in wages that to North Korea Takes and the government and the machine takes a substantial portion of any Necas because they are living hand them the whole thing ... the they don't really trade with most of the world they're under UN sanctions financial sanctions and other sanctions ... so they have to basically steal or our or borrow work or somehow ... you ... gather for the cash that they can to the tothe to keep themselves in Mercedes Benz's inside at it and really nice cognac in you know it's hard to believe ninety million dollars tie is such significance on but it signed up for the country is not exactly right um you know when to miss though some good news and good behavior that the North Perth ... that the gestures the north as Maine to warrant this kind of think again okay so why do it what what is South Korean came ... from reopening the Senate this cash cow South Korean leaders officials told us over the years that this is in in essence they're buying good we were there in nine goodwill that in every way when it was past the thought okay well if we if we do this will be able to North will see ... that nobody threatens them ... and maybe they'll open up and become warm up at Hess and obviously happen in the decade since this was introduced ... so now I think the decision is basically well ... maybe if we if we reopen the case on the show were talking and give them this money ... and maybe the North will not do anything more violent like shoot down our ship that killed one was thirty is the forty forty sexy Apple's foray at the island next year that the people I think they're trying to say maybe if we if we do this bell on ... the wall ... they want to lash out again militarily ... and so the south of this essentially for protection money ... as the Obama administration and better than the Bush administration ... in not rewarding ... bad behavior from coming better than the second term Bush administration is no question time the rice the Secretary State under George ... W Bush really did try to ... make part of their second term legacy and deal with South Korea ... trip to North Korea North Korea ... North Korea offset ... its state sponsored terror list for example tried to do a deal quid pro quo was some money ... and aid in return for ... taking down or up to one of the nuclear programs turns out of course it was all a fiction ... their back up and running ... so but I think that that the Obama missed ration came in thinking ok maybe we can do something like that too ... North Korea was immediately belligerent and Obama has sensed a pretty firm from Palm OS sticking firm on the


text:
Modulation of Motor Function by Stimulation of the Central and Peripheral Nervous System
|The safety and scientific validity of this study is the responsibility of the study sponsor and investigators. Listing a study does not mean it has been evaluated by the U.S. Federal Government. Know the risks and potential benefits of clinical studies and talk to your health care provider before participating. Read our disclaimer for details.
|ClinicalTrials.gov Identifier: NCT00453505
Recruitment Status : Recruiting
First Posted : March 29, 2007
Last Update Posted : January 15, 2019
- Study Details
- Tabular View
- No Results Posted
- Disclaimer
- How to Read a Study Record
Noninvasive stimulation of the central and peripheral nervous system, including transcranial magnetic stimulation (TMS), theta-burst TMS (TBS), transcranial direct current stimulation (tDCS) and cutaneous/peripheral nerve stimulation (CPNS) alone or paired with TMS (paired associative stimulation, PAS), has been increasingly used in the investigation of cortical plasticity and as a possible adjuvant strategy in neurorehabilitation. It has been shown that TMS, TBS, tDCS and CPNS can successfully modulate motor function in healthy volunteers, as well as in patients with neurological disorders such as stroke.
One fundamental problem is that the optimal parameters of stimulation to modulate motor function by all of these techniques are not known. The purpose of this protocol is to explore within safe guidelines, the effects of different stimulation parameters on motor cortical function, on oscillatory brain dynamics measured with magnetoencephalography (MEG) and electroencephalography (EEG), on eye movements, and on fMRI activation. In addition, this protocol will be used to train new fellows coming to NINDS Human Cortical Physiology Section (HCPS) in the use of TMS, TBS, tDCS, and CPNS techniques.
We expect that information emerging from these studies will allow us to 1)optimize the stimulation parameters to collect pilot data in healthy volunteer for future patient-oriented hypothesis-driven protocols,2)to collect pilot data for power analysis for future patient-oriented hypothesis driven protocols, and 3) to train new fellows in the use of these different methods.
Study Population
Up to 1000 healthy volunteers, age 18 and older.
Healthy volunteers will receive one or more of the following types of stimulation alone or in combination: (1) 1 Hz TMS for up to 30mins and up to 115% of resting motor threshold intensity (MT). These parameters are not being used for single-pulse TMS and paired-pulse TMS. Parameters for single-pulse TMS and paired-pulse TMS are variable as they depend on the sub-study. For paired pulses, duration of each TMS pulse is up to 1 msec. Interval between pulses is up to 20 sec and intensity of stimulation is up to 100 % of stimulator s output depending on the sub-study. (2) TBS below 100% active MT; (3) tDCS up to 2 mA for up to 60mins (4) CPNS with intensities below 130% of the peripherally-elicited-motor-threshold for up to 2 hours. All of these parameters of stimulation and procedures have safely been used as previously reported in the literature. Sham stimulations will be delivered for each modality.
Each subject may undergo up to 20 sessions spaced by at least one day, depending on the particular exploration. To verify that the number of sessions per subject does not exceed 20 sessions, the number of sessions per participant is tracked across substudies using CTDB. The AIs are responsible for entering into CTDB the subjects/visits. We will test the effects of these different forms of stimulation on motor cortical excitability, simple motor tasks, and functional neuroimaging measures. Some stimulation may be conducted before, after, or during fMRI scans, eye movement recording, MEG and/or EEG recording sessions. To identify the possible contribution of sub-cortical structures, we will also measure M-wave, F-wave, and/or H-Reflexes. The goal of these exploratory studies is to obtain preliminary information on the effects of these various combinations of central and peripheral nervous system stimulation that would allow us to develop subsequent, finely tuned, hypothesis-driven protocols.
Under this protocol, we conduct:
Exploratory Sub-studies. These substudies are exploratory in nature and are conducted in order to develop information to generate better informed hypotheses and/or power analyses. We have set an upper limit of 40 subjects per sub-study.
Hypothesis-Testing Sub-studies. Hypothesis-testing sub-studies are studies with specific hypotheses to be tested. These sub-studies undergo statistical and PIRC review after 6 subjects per group (e.g., after 12 subjects, 6 per arm, if two groups are studied), before additional subjects can be recruited. Together, the P.I. and PIRC will decide whether to continue the sub-study with more subjects without an amendment or whether an amendment or protocol would be necessary. A memo requesting a review of hypothesis-testing sub-studies for possible additional enrollment (beyond 6) will be sent to PIRC and the statistical reviewer.
In addition to the sub-study types above, this protocol is used to train new investigators and optimize various techniques and experimental approaches (e.g., appropriate MRI sequences, parameters of TMS stimulation, behavioral training duration).
We devised a strategy to ensure that a sub-study engages only procedures authorized in protocol and consent form and is scientifically valuable. F...
|Condition or disease
Show Detailed Description
|Study Type :
|Estimated Enrollment :
|1500 participants
|Time Perspective:
|Official Title:
|Modulation of Motor Function by Stimulation of the Central and Peripheral Nervous System
|Study Start Date :
|March 27, 2007
Choosing to participate in a study is an important personal decision. Talk with your doctor and family members or friends about deciding to join a study. To learn more about this study, you or your doctor may contact the study research staff using the contacts provided below. For general information, Learn About Clinical Studies.
|Ages Eligible for Study:
|18 Years and older (Adult, Older Adult)
|Sexes Eligible for Study:
|Accepts Healthy Volunteers:
- Age 18 and older
- Willingness and ability to give consent
- Normal neurological examination
- Clearly dominant handedness (right or left) as assessed by Handedness scales
- Any severe or progressive neurological disorder or severe medical condition, or history of seizures
- Chronic use of medications acting primarily on the central nervous system, which lower the seizure threshold or significantly alter cortical excitability such as antipsychotic drugs (chlorpromazine, clozapine), tricyclic or other antidepressants, or prescription stimulants.
- Pacemakers or other implanted electrical devices, brain stimulators, some types of dental implants, aneurysm clips (metal clips on the wall of a large artery), metallic prostheses (including metal pins and rods, heart valves, and cochlear implants), permanent eyeliner, implanted delivery pump, or shrapnel fragments
- Diagnosis of drug dependence made by a health care provider (ICD-9-CM code 304)
- Staff from our section
To learn more about this study, you or your doctor may contact the study research staff using the contact information provided by the sponsor.
Please refer to this study by its ClinicalTrials.gov identifier (NCT number): NCT00453505
|Contact: Marta Gozzi, Ph.D.
|(301) 451-1933
|Contact: Leonardo G Cohen, M.D.
|(301) 496-9782
|United States, Maryland
|National Institutes of Health Clinical Center, 9000 Rockville Pike
|Bethesda, Maryland, United States, 20892
|Contact: For more information at the NIH Clinical Center contact Office of Patient Recruitment (OPR) 800-411-1222 ext TTY8664111010 email@example.com
|Principal Investigator:
|Leonardo G Cohen, M.D.
|National Institute of Neurological Disorders and Stroke (NINDS)
Additional Information:
|Responsible Party:
|National Institute of Neurological Disorders and Stroke (NINDS)
|ClinicalTrials.gov Identifier:
|NCT00453505 History of Changes
|Other Study ID Numbers:
|First Posted:
|March 29, 2007 Key Record Dates
|Last Update Posted:
|January 15, 2019
|Last Verified:
|October 2, 2018
Keywords provided by National Institutes of Health Clinical Center (CC) ( National Institute of Neurological Disorders and Stroke (NINDS) ):
Transcranial Direct Current Stimulation (TDCS)
Transcranial Magnetic Stimulation (TMS)
Peripheral Nerve Stimulation
Primary Motor Cortex
Corticomotor Excitability
Healthy Volunteer