text:
I think in game design it is incredibly important to ask the question why about everything, especially something that has become so standard as lives. So I am asking, what is the purpose of a game having the concept of lives? Why have lives?
Other than the arcade/profitability/limiting play factor, quite simply lives add tension.
If falling off a cliff doesn't mean anything (namely, there's no punishment), then you won't feel bad when you do it. But if you fall off too many times and can't proceed, then you want to make damn sure that you don't fall off the cliff. Harder games make you feel better when you beat them, it provides bragging rights, etc.
Of course, that kind of compulsion loop player punishment has gone by the wayside recently. Taking up the player's time is punishment enough. When most research shows that people don't finish games as it is, game designers are trying to find ways to make it less frustrating to go through the game but providing enough of a challenge that it's enjoyable. Basically, it's less about the game and more about the experience. Lives would be inappropriate in a game like Uncharted, for example.
Extra lives provides the player with additional "chances" to "try again." Particularly with traditional arcade games back in the 1980s, a player would insert a quarter (25 cents) to play the game, and with this payment they'd get a number of lives (usually 3 or 5).
With these extra lives, the gameplay is longer, and the player gets more "value" out of the game since they extra lives allowed them to automatically continue the gameplay. If the game provided only one life, they player might not enjoy the game as much (because the game would be a shorter duration), and consequently may not insert as many quarters to play again later (which would make it less profitable).
When enjoying video arcades in my younger years back in the 1980s, I noticed that the games that provided more lives tended to be more popular. I'm sure the arcade game vendors and operators all understood this well as some operators with the less popular arcades tended to set dip-switches on the games [that supported this sort of customization] to provide more lives for the payment.
Of course, the consumer almost always likes to have the benefit of "extra lives" as this equates to more entertainment. But, for games that are in very high demand (e.g., "Outrun," which imposes time-limits instead of number of lives, when it was new, was a big arcade machine that featured a seat shaped like a car that actually shook and tilted {if I recall correctly} and vibrated in concert with in-game events, for which I've included a few images below), many arcade operators set the dip-switches to severely limit the numbers of lives under the guise of "giving more people a chance to play" (although I suspect that this decision was more likely motivated by profit).
Pinball machines had exactly the same concept, except instead of lives the player got balls. Typically 3-5 balls per quarter.
One common factor as well was that once all the lives (or cars, or balls, etc.) where lost, the game provided an option to the player to insert another quarter to continue (and get another 3 or 5 lives, cars, balls, etc.).
Measuring skill...
As I alluded to in the comments, having lives can also aid the player in measuring their skill:
These can become "bragging rights" amongst a player's friends, especially if there were witnesses. I can remember back in the 1980s seeing people crowd around player who's been playing a particular game for a long time, and playing it well. Comments from onlookers would sometimes include "she [that player] is still on her first life and she's already completed seven levels" followed by "damn, I always have trouble with the umber-troll on level three, how did she do that?"
Such measurements can be an important tie into word-of-mouth marketing too.
Player motivation...
The "losing a character's life" factor also adds yet another quality to the gameplay that causes the player to put a little bit more effort into taking care of their character (e.g., feeding it so it doesn't starve to death, avoiding getting hit by weapons, circumventing dangerous traps, etc.). With the possibility of losing lives, the player will get more emotionally involved in the gameplay sessions which, in turn, makes the game more interesting.
If a character never dies, the game may never end and could become quite boring, at least in the case of an action game. For games like Chess, Ma-Jiang (incorrectly spelled by most authors as "Mah Jongg" or "Mahjjong" and so on), etc., there obviously is no need to have a concept of "lives," but for most action games where your character is at risk of dying it's beneficial. Ditto for pinball and other such games too.
Also, if the player makes some serious mistake in the first 10 seconds of gameplay, the additional lives are a wonderful feature. Not having this feature can be very discouraging, especially for new players.
The player knows that there is a limited number of lives available, and will work toward an unspoken goal to improve their gameplay abilities. Of course, this will require practice, and so the extra lives are also helpful here too.
Pictures of Outrun...
I've included a few pictures of the Outrun game I mentioned earlier. For those who remember playing this game in an arcade, I hope this will also bring back some fond memories.
Finite lives are a form of resource management for the player.
If you notice, most games that have a finite count of lives tend to be very binary about being alive or dead. Maybe the player gets a couple of HP, but if you get hit more than 3 times or so, you lose a life. And there will generally be a healthy supply of "insta-death" lurking around, whether it is pits, spikes, etc.
Because of that, lives function as resources in the same way that healing potions do in RPGs. The more you have, the more likely you are to be able to progress further. You don't have to push as hard, since you have more lives to try again. This is also why RPGs, even historically, almost never used multiple lives. There was no point, since they already had plenty of resource management.
One of the reasons why finite lives is going out of fashion for games these days is that running out of lives generally isn't fun for most players. While the tension created by having low lives is nice, if you ever actually run out, the game becomes a lot less fun. You lose a lot of progress.
One of the other reasons why finite lives aren't used often is because game developers tend to allow you to save anywhere. Or at least, at reasonably-space designated locations. Because of that, the only progress you can lose is back to the last save point. So, unless save points are significantly different from checkpoints, there's really no purpose to it. And if they are significantly different, players may not like that very much.
So the only way to make finite lives worthwhile is to punish the player significantly more for running out of lives than for simply losing a life.
Lives are a way of tuning the feedback loop that players engage with the game through (reward/punishment for actions taken toward goals). A crucial part of gameplay is learning; a game design where punishments of lesser degree than termination of the game are available gives more opportunities for players to learn which behaviors earn rewards and which earn punishments, and so promotes engagement. Of course there are many ways to accomplish that, but since "death" is a common metaphor for game termination, a natural modification of that metaphor becomes "multiple lives".
In short. If you are giving player a challenge to get from Point (or objective) A to B and its somewhat long. You may not want to force the player to start over if he makes a mistake but you may want to limit the amount of mistakes he can make by using lives which spawn you at last checkpoint.
In a game like zelda (ocarina of time) if you die you start at the beginning of the level which isnt too much of a big deal. However if you accidentally fall in a hole you wouldn't want to start over again so instead of 'lives' (which you dont get) you get deducted hearts/health points instead which is a fair alternative.
Its an additional difficulty control. In addition, it forces replay of the first few levels, which both builds skills and essentially gives the game more play.
Consider a game that was easily beatable in one 3 hour sitting, without "dying" or having to start again. Probably you would then shelve the game and never play it again.
Or consider also a game that is incredibly difficult and only lets you die once ( vid: Double Dragon III ). You would likely shelve the game and never play it again.
Games that mix the right amount of challenge with the right number of lives produce a lot of fun replay. One of my favorite games was Battletoads. Replaying the first few levels in 2-player mode is still a lot of fun.
Basically the trade-off between life-meter and now-you-have-to-start-again. Its nice to not have to start again from the very beginning, which would be too challenging/discouraging and would play-out the first few levels faster.
Besides life you also have to consider continue/_password_. Password was an early alternative to savegame, but again, all of these are just means by which to control the difficulty of the game and make it winnable, without making the game too dry to keep starting over from world 1-1.
Its interesting to see how different games handled this though. Take TMNT I, where each turtle only had one life ("getting caught"), but you had 4 turtles, so effectively 4 lives. (They could be rescued as well, but that was really rare/difficult).
Games are for playing purpose. Player play the game to win something, to have fun. Every time they fail to do that, they just ask for another chance. They think, this time, this time for sure I am gonna make it. That's the purpose of having life.
Humans are very risk-averse in terms of death. When a game designer adds the concept of lives to a game where the character in the game might die, they are essentially encouraging the player to take risks they wouldn't otherwise take.
Further, it helps draw players into the game, where the first time they play they might die with minutes of starting. Once they start the game, however, they feel the need to continue trying while they still have remaining game time, or lives, left. Ideally they will learn enough during this time period that they will desire to play the game again, even though they may have to start from the beginning again, having lost all their lives.
It is simple, the purpose of having lives is to allow the player to fail multiple times before total failure or having to restart the game. While games like traditional Arcade games give lives as a means of profit (1 coin, 1 life), the same Arcade games on consoles use lives as a means of trying to get the player to play carefully without having the higher difficulty of permadeath.
In other words: lives are there to help others despite their failures, and as an alternative to permadeath, given that feature's negative aspects. Yet it still retains a form of permadeath (after X lives are lost, you are gone for good!) which retains some of the POSITIVE aspects of that feature.


text:
11 Oct 2012 7:22 PM #11
Thanks for the report, and the feedback. I wonder if you can give a little more detail on how you are using the ComboBox - if you are using it to store and filter Strings, I have another suggestion that might make sense.
Make is a ComboBox<String>, and instead of trying to tell the ComboBox that the new string is merely not an error, give it a custom PropertyEditor<String> instead. The purpose of a PropertyEditor (the name is a holdover from 2.x, before there was such a thing as the Editor framework) is to turn the text the user enters into a value that can be used from code, and vice versa - how to print the values from model objects into text on the screen.
The default PropertyEditor for ComboBox (actually for the ComboBoxCell) is ComboPropertyEditor - it uses the protected method T selectByValue(String) to try to figure out what value in the store matches the current string.
If, as I said, you want to support any string value, this is a great way to add a value to the Store if it fits, or to just say 'yep, that string is a string, and strings are values' - no need to test against every value in the store.
That said, yes, our current behavior on clearValueOnParseError=false clearly doesn't make sense, and it is quite possible that forceSelection doesn't make sense given the differences between 2.x and 3. I'm currently focusing on how we can make clearValueOnParseError work - and trying to ensure that it will be enough to satisfy the forceSelection behavior.
11 Oct 2012 7:29 PM #12
Merging two threads to allow discussion on these two setters and how the PropertyEditor can be used.
I'm currently of the opinion that if a non-matching value is entered, it should be drawn as an error, and clearValueOnParseError and forceSelection *only* govern what to do with regard to the old errors. ForceSelection=true would avoid the issue by selecting some value (last, or closest match), and if false, then either the string should be retained or cleared (clearValueOnParseError). If you want the value to be not only kept but made available from comboBox.getValue, then a new PropertyEditor is in order. Thoughts?
12 Oct 2012 12:59 AM #13
Temporary workaround
I've temporarily found a dirty workaround:
I've extended ComboBox and overided the onBlur method :
@Override protected void onBlur(Event be) { String value = getCell().getText(getElement()); super.onBlur(be); setValue(value); }
17 Jan 2013 3:16 PM #14
More robust solution
I have a slightly more robost work-around. This allows me to set new values regardless of whether my ComboBox type is a String.
import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.Event; import com.sencha.gxt.data.shared.Converter; import com.sencha.gxt.data.shared.LabelProvider; import com.sencha.gxt.data.shared.ListStore; import com.sencha.gxt.widget.core.client.form.ComboBox; /** * The purpose of this class is to fix bug EXTGWT-1932 in the GXT combo box */ public class CustomComboBox<V> extends ComboBox<V> { protected Converter<V, String> fromStringConverter; public CustomComboBox(ListStore<V> store, LabelProvider<? super V> labelProvider) { super(store, labelProvider); } public void setFromStringConverter(Converter<V, String> fromStringConverter) { this.fromStringConverter = fromStringConverter; } @Override protected void onBlur(Event be) { String stringValue = getCell().getText(getElement()); super.onBlur(be); if (fromStringConverter != null) { V value = fromStringConverter.convertFieldValue(stringValue); ListStore<V> store = getStore(); if(store.findModel(value) == null) { store.add(value); store.commitChanges(); } setValue(value, true); GWT.log("Changed value to " + value); } } }
import com.sencha.gxt.data.shared.Converter; /** * The purpose of this class is to make a string a string. */ public class StringToStringConverter implements Converter<String, String> { @Override public String convertFieldValue(String object) { return object; } @Override public String convertModelValue(String object) { return object; } }
5 Feb 2013 12:24 PM #15
From the discussions that have taken place around this thread/issue, we are adding StringComboBox and StringComboBoxCell, which should natively support accepting the String value that the user entered. It has the option then of adding that new value to the store, or leaving it out. Additionally, there is a method to clear all user-entered values from the combo. This will be released as part of 3.0.4.
We may remove setForceSelection from ComboBox in 3.1, as this new field will hopefully handle the cases where it makes sense to use it.
14 Feb 2013 11:25 AM #16
Property Editor was the way to go
My previous solution failed on a number of fronts. After about a day of debugging, I came across the PropertyEditor solution that Colin spelled out very clearly in comment #11 above. I should have read that closer.
Here's the code, for idiots like me who think that comments that don't provide code don't have the solution :-).
comboBox.getCell().setPropertyEditor(new PropertyEditor<V>() { @Override public V parse(CharSequence text) throws ParseException { // Convert the text to your object here (or just return text.toString() if your ComboBox is of type String) return converter.convertFieldValue(text.toString()); } @Override public String render(V object) { // Convert the object to a displayable String here (or just return object if your ComboBox is of type String) return converter.convertModelValue(object); } });
18 Feb 2013 2:49 PM #17
We added StringComboBox/StringComboBoxCell in GXT 3.0.4 which solves this basic issue by overriding selectByValue to look in the options in the store, and if no option matches, to optionally track that value in the store for future use. This is essentially the same as this custom PropertyEditor, but with the option of keeping user added values around (until clearUserValues() is invoked).
The method setForceSelection will likely be removed in 3.1 or at least moved into StringComboBox/StringComboBoxCell to avoid confusion like this in the future. Sorry for the confusion caused, and thanks for coming back to update this thread as you found resolutions.
6 Sep 2013 1:55 PM #18
StringComboBox kind of degrades functionality in the case if the value is wrapped in an object. For example, consider a combo box where the value is a pair of a number and name. If the user enters a number that's not in the combo box, we will create a new value with the name "User-defined". I managed to find another workaround for ComboBox behavior in GXT 3.0.6:
ComboBox<E> cb = new ComboBox<E>(new ComboBoxCell<E>(ls, lp, new LabelProviderSafeHtmlRenderer<E>(lp)) { @Override protected E selectByValue(String text) { E value = super.selectByValue(text); if(value == null) value = createValueFromText(text); return value; } } ); cb.setForceSelection(false); ... protected abstract E createValueFromText(String s);
11 Mar 2014 4:05 AM #19
It's now March 11, 2014
This doesn't seem to be fixed in 3.0.6 either!

subset: commoncrawl


text:
|I can haz lewts?
We have two related scenarios for this week;
So your raid has been kicking butt and swimming in loot. What happens when another raid needs an extra member to fill out the roster and you are invited in on a week you are not raiding with your usual raid? What should you be expected to do in the new raid? Are there rules for this type of thing? Most importantly, do you know how to act when it isn't your raid to lead?
So you just joined a guild and are put up on a roster for your first raid. How do you find out all the rules and how things work before the raid starts so that you don't cause everyone to lose time explaining rules to you instead of killing bosses?
So there are two main raid slots in the guild I am in, an early raid and a late raid. Both are evening, just one starts at 9pm server and one at 1am server. Because of the time difference most people just raid in one of those time slots. Every time we get an officer from the late raid to fill in with an alt or with their main character in early raid we get the same response; "My god you guys talk a lot!", "Vent is so noisy!", or
"I'm getting a headache from all this sound!" You see the late raid handles certain aspects differently, include vent usage. There are strict rules about who can talk and only the Raid Leader (or anyone he names) will be talking for any boss. Failure to follow this can get you thrown out of the raid or in general just yelled at. There is nothing wrong with that, it is just their style - very professional.
|Wipe? ......WHAT?
Attending Your First Raid with a New Guild or Raid
There is clearly two different styles. What is expected of me when I go into late raid then? How should I act? Where do I find out this information? What if I'm a new raider and it's my first time entering a raid?
|go get em
- Start running a heroic with 30 minutes until raid start time.
- Sure sometimes you can take less than 30 minutes to do it, but that one time it takes more may cost you a spot the next time rosters are done.
- Show up without an offspec.
- It doesn't matter if you have any gear for it.
- Know at least a few buttons in it.
- Show up without gems or enchants.
- Nothing says don't invite me back than no enchants and no gems.
- We are more forgiving of this for an offspec.
- We are a lot less forgiving of alts if you actually signed up as the alt.
- Ask the raid leader or an officer in the raid before the raid start if there is a way they could help you gear and enchant.
- We have guild tabs full of gems and enchants to get someone ready in the time it takes to do all the invites. Perhaps your guild does too.
- Show up in a PvP spec.
- PvP gear is fine if that is all you have, but a PvP spec for PvE content unless required for a boss is unacceptable.
- Show up not knowing the Ventrillo or Teamspeak information for the raid.
- It's probably on the guild info tab or on some kind of the forum - so go look.
- Start telling people how to spec or gear before the raid even starts.
- Once you prove that your healing is the bomb or your DPS is better than the other person's then you can get together and talk about it after a raid.
- Often makes people go on the defensive and disrupts the entire raid for the night.
- Link DPS/Healing/anything meters into raid chat.
- Spam is spam, those who care how well some people did have the meters already running and can look at it.
- Interrupt boss explanations.
- Chances are they are doing the explanation just for you so be quiet and listen.
- Anything your old guild or other raid does should be brought up after a kill or a wipe.
- Phantom AFK during boss explanations.
- Same as above, they might be explaining things just for you.
- Shows you lack commitment to the raid and respect for the other raiders.
- Come back from a break still standing in Orgrimmar waiting for a summon.
- I don't care if there is a raid summon, start flying you lazy butt!
- Come back from a break 10 minutes late because your smoke took longer than you expected.
- Wasting time is one of the worst things you can do when you are new to a raid.
- Wait until someone tells you a ready check is being done before click ready or not ready.
- If you aren't ready at least click the not ready and say why.
- Constantly being the last one to click ready often makes the raid leader think you don't really care about raiding and may alt you more because of it.
- Fall over dead at the start of a boss pull because you didn't understand a mechanic that was explained.
- If you don't understand it say so, it's better than wiping the raid because you thought you could just wing it and figure it out.
- Loot the boss right when it dies to see what's on it.
- Some guilds like ours wait until every person has been resurrected before looting the boss.
- We know if someone looted because we see the money go out.
- Start telling everyone that you want that piece of loot that just dropped SO BAD!
- You may or may not get a chance to roll on it, be happy you are raiding and downing bosses.
|boo alliance.....jk
- Start by reading the guild forums or info tab, chances are all the answers you need are there.
- Be online a little early so the raid leader or officer doing invites can see you are online and ready to go.
- Show up with two specs gemmed and enchanted.
- Get on vent as soon as you can and ask the raid leader to speak so you know which voice is theirs.
- Be silent on vent and only use raid chat to respond to questions directed at you.
- Tell the raid differences between strategies from a different raid or guild after a boss is down or after a wipe. Maybe it was something they never thought about.
- The most effective way to do this is via a tell to the raid leader letting him know you have a suggestion.
- Remember: there are many reasons for a wipe and it's not always the strat. Before you suggest one, make sure you can determine the reason for the failure.
- If someone in the raid is your class and they out heal/DPS/tank you ask them for any tips after the raid ends.
- If someone in the raid is sucking it up at the same class you are offer the raid leader or an officer to help them after the raid if they would like you to.
- Someone may already be working with that person so it's good to get permission first.
- Ask to take any AFK breaks not in the schedule.
- Everyone has to take a quick bio at some point, make sure you get approval first.
- Be ready at the end of the break time.
- Most people will give someone an extra minute or two, but don't even push it with five.
- Respond to every ready check.
- Bring feasts or cauldrons if you can make them.
- Often you won't be asked to use them, but having them goes a long way in letting the raid leader know you are a prepared raider.
- Roll on loot as directed and say grats when someone else wins.
- It will drop again and maybe next time you will get it.
|Shieldwall of the Vendor
If you are a new member to the guild or the team, it never hurts to speak with the raid leader and/or officers beforehand.
- What are the rules about raid and party chat?
- Are there rules about General chat? (we make everyone /leave General)
- What are the vent rules?
- If you want to get yelled at start telling people over vent every time you die.
- This is often a rookie mistake to those new to a raid.
- People have raid frames and can see if someone dies.
- If you have a specific role such as banging gongs for Searing Flames THEN you call out if you die.
- Calling things out in the fight.
- Unless directed to from your Raid Leader do not try calling anything out.
- If you see something not being called out that would be helpful wait until a kill or a wipe to ask in raid chat if the Raid Leader would like you to call it out.
- Is there a time when anyone is free to talk about anything?
- Is there anything banned from being said on vent?
- Calling people out by name.
- Swearing (not usually, some Raid Leaders don't know how to stop.)
- Telling everyone that you died.
- Playing loud music while talking.
- When are the usual break times for the raid?
- How looting works if you don't understand exactly how it works.
- Anything they think you should know about before raiding.
So when I decide to join late raid for a raid I follow a lot of the above steps. I don't speak in raid unless someone asks me to. I don't tell them the strategies the other raid uses unless I think it could really make a difference, but after downing a boss I may tell the raid leader what we did differently that seemed to make certain things easier. The biggest thing is I don't treat it as my raid. I am a guest in someone else's house. If they care as much about how their raid is run as I do about how mine is run then I should respect the raid and play by their rules and strategies. Sometimes I learn things from them, sometimes they learn things from me, but for the most part I let them enjoy their peace and quiet on vent while they talk about food. What is it with the late raid always talking about food? Maybe staying up that late makes you crave some carbs or something.
Final Thoughts
Getting as prepared as you can goes a long way towards being seen as a reliable raider and a good addition to the raid slot. Helpful people may not always be remembered, but unhelpful people are always remembered. Just do your best and play by the rules of the raid, not everything is done the way you picture it or think it should be done, but if the raid has been succeeding there is no need for you to try and change anything. Finally, make sure you enjoy yourself! WoW is still a game and games should be fun and rewarding.
|Dark Legacy Comics


text:
Childproofing Your Home
In This Article:
Bye-Bye Boo-Boos
As you crawl around the floors babyproofing, check all furniture for sharp corners. You can fit any furniture that has low sharp corners with rubber or soft plastic "bumpers" that will round and cushion their impact. Don't forget to check and bumper the corners on the underside of furniture as well. Until after her first birthday, your baby is much more likely to smash her head on the underside of furniture than crash into the top.
You might also choose to put certain pieces of furniture, especially low, glass-topped tables, into storage for a few years. Other objects you may want to consider putting into storage or moving are table lamps, fragile decorative items, and anything else that might get broken by and/or injure your child. Pay special attention to the items you normally keep on end tables, coffee or cocktail tables, and bedside tables or nightstands.
Although your crawler doesn't have far to fall yet-and the many times she's planted her face in the carpet show that she can fall without injury-she will not be just a crawler for long. When she starts using legs of chairs, tables, and people to pull herself to standing, her falls can become more damaging. Rugs and carpets can help soften your baby's falls as she begins to practice standing. Pillows can also cushion the blow, but may also cause your baby to fall as she gains a little mobility while standing.
Blocking and Locking
A pressure gate will fit in almost any standard doorway. This adaptability makes a pressure gate ideal for temporarily blocking your crawler out of certain rooms that you want to keep off limits.
You can encourage your child to improve his skill at climbing up and down stairs by investing in either a playroom set of sturdy wooden steps or a baby slide that has three or four steps.
Stairs can cause the most serious falls. So whenever you're not there to spot your baby as he crawls up the stairs, you need to make them totally inaccessible. Install two safety gates on every set of stairs in your house (unless the staircase is behind a locked door): one at the top and one at the bottom. Of course, your baby is not about to fall up the stairs, but most babies love to climb. If you don't put a safety gate at the bottom of the stairs, your crawler may climb all the way up and risk falling all the way down.
At the bottom of the stairs, you can install either a latched gate or a pressure gate. But never use a pressure gate, which expands to fit snugly between a newel post and a wall, at the top of a flight of stairs. A baby who falls against a pressure gate or uses it to pull himself to standing may cause it to pop loose. If this happens at the bottom of the stairs, it's no big deal. You'll no doubt hear the crash, turn to see your baby lying on top of the gate, and put it back in place. But if a pressure gate pops loose at the top of the stairs, it will come crashing down the stairs with your baby right behind it. So take the trouble to install a latched gate at the top of every staircase.
Open stairways are particularly dangerous for crawlers (and for toddlers as well), so install banisters on any open stairways to prevent your baby from falling over the edge. With any banister, make sure that all railings are no more than four inches apart so that your baby doesn't get his head wedged between them.
When your baby does crawl or climb upstairs, make sure you stay right behind him, with your hands and arms ready to catch him, every step of the way. Then when he wants to come down the stairs, try to teach your baby how to come down safely by crawling backwards. Again, stay right below your toddler at all times on the stairs. Also, your baby will have enough trouble getting up and down stairs without having to negotiate an obstacle course, so try not to use the stairway as a way station for "things to go upstairs."
If you can get yourself into the habit of using them, locks can also keep certain dangers off limits. Basement doors (including outside storm doors), garage doors, workshop doors, and tool shed doors should be kept locked at all times. Your baby cannot open an unlocked door yet, but getting into the habit of locking doors prepares you for the day (probably some time during his second or third year) when he can open a door. It also provides you with the certainty of knowing that you have indeed remembered to pull the door shut. Use safety locks (or rubber bands or bungee cords) on the doors of any cabinets or drawers that contain things your baby should not regard as playthings.
Try not to lock up every cabinet or drawer. Leave a few, perhaps those with pots and pans or plastic measuring cups and plastic cookie cutters, open for your infant to explore. First make sure, however, that everything you put in these cabinets or drawers will be safe in the hands (and mouth) of your baby.
More on: Babies
Excerpted from The Complete Idiot's Guide to Bringing Up Baby © 1997 by Kevin Osborn. All rights reserved including the right of reproduction in whole or in part in any form. Used by arrangement with Alpha Books, a member of Penguin Group (USA) Inc.
To order this book visit the Idiot's Guide web site or call 1-800-253-6476.


text:
MaleSurvivor Level 1 Weekend of Recovery
MaleSurvivor Weekends of Recovery are open to any man, 18 or older, who have been sexually victimized as a child and/or assaulted or raped as an adult.This will be the 10th visit to Alta Lodge, which tells you how much they love the facility, its extremely supportive and nurturing staff, and the gorgeous surroundings. Alta Lodge is located at 8,600 feet (2,700 meters) at the base of the Alta Ski Area in Utah's Wasatch Mountains. Alta Lodge, nestled in a quaint alpine setting at the top of Little Cottonwood Canyon, offers spectacular mountain views. During September, the cottonwood and aspen trees are usually in the prime of their fall yellow plumage, adding to the beauty of this setting. Alta Lodge is part of a rare tradition of country inns where the attentiveness and warmth of family hoteliers is combined with the pleasures of excellent dining and comfortable surroundings. The atmosphere of the Alta Lodge is relaxed, intimate and informal. There will be space for up to 28 men on this weekend.The facilitator team invites you to:Dare to dream you can leave your isolation behind you at this weekend;Dare to dream you can make real connections with the participants and facilitators at the weekend;Dare to dream you can co-create and experience a sense of real safety and mindfulness;Dare to dream you can claim your right to use your voice to become a powerful male survivor who is sensitive to his own feelings and experiences and those of other survivors here;Dare to dream you can tell your story this time and be understood, believed and supported like you have always deserved;Dare to dream you can experiment with being more creative, more vulnerable and letting go and still feel safe enough;Dare to dream you can connect with the boy inside you so both of you can learn to play safely and enjoy the experience;Dare to dream you will be able to leave Alta a freer, less burdened, and even a happier man, taking the connections you make here with you to utilize as you continue to heal and recover!Weekends of Recovery are facilitated by trained psychotherapists, utilizing the same clinical boundaries and code of ethics as adopted by the American Psychological Association. The weekends are adjuncts to participants' ongoing recovery work with individual and/or group psychotherapy, twelve step programs, and individual spiritual work, and are not meant to substitute for the participants' local support systems that are consistent with their own recovery. Dr. Howard Fradkin, a Psychologist with over 30 years of experience working with male survivors, co-chairs the facilitator team, along with Jim Struve, Licensed Clinical Social Worker with over 35 years of experience working with male survivors. The team of facilitators includes other Psychologists, Social Workers, Marriage and Family Therapists, and Mental Health Counselors. Biographies of all staff members for this weekend can be found on the MaleSurvivor website at www.malesurvivor.org


text:
Recall that an etale topological stack is a stack $\mathscr{X}$ over the category of topological spaces (and open covers) which admits a representable local homeomorphism $X \to \mathscr{X}$ from a topological space. Equivalently, it is a topological stack arising from an etale topological groupoid. It is well known that a differentiable stack is etale if and only if all of its automorphism groups are discrete, but the proof involves foliation theory. It seems this proof cannot be extended to the topological setting. However, clearly every etale topological stack has discrete isotropy groups. This begs the question:
If a topological stack has all of its isotropy groups discrete, is it necessarily etale?
EDIT: By a topological stack, I mean a stack $\mathscr{X}$ over the category of topological spaces (and open covers) which admits a representable epimorphism $X \to \mathscr{X}$ (not necessarily a local homeomorphism). This is equivalent to saying $\mathscr{X}$ is the stack of torsors for a topological groupoid.
Remark: This question is equivalent to asking if a topological groupoid all of whose isotropy groups are discrete must be Morita equivalent to an etale topological groupoid.


text:
Philip C. Jessup International Law Moot Court
- Seated: Ashley Hammett, Benjamin Cohen, Edward Reilly
Standing: Prof. Leila Sadat, Ryan Baebler, Sydney Tonsfeldt,
Hannah Zhao, Gilbert Sison
The Jessup International Moot Court Competition is the largest moot court competition in the world. Nearly 600 law schools representing over 100 countries participate each year. Written and oral arguments are presented to a simulated International Court of Justice, the UN body which hears disputes between sovereign states.
The Team is advised by Professor Leila Sadat, who is a member of the Board of Directors of the International Law Students Association that administer the Jessup Competition.
- Click here to view 2013-2014 competition.
- Click here to view previous competition participants and winners


text:
I'm logged in on my SharePoint 2010 server machine (running Windows Server 2008 R2) and using the "Open with Explorer" feature in a document library to copy another full directory from a separate server running as a file server into my document library. Our network is full 1Gbps and these two machines are sitting right next to one another separated by less than ten feet of Cat-6 cable, yet my transfer speed starts below 100kbps and slowly degrades over time. How do I fix this?
Using the steps from this source will restore full connection speed.
This will need to be done on every machine that makes use of the "Open with Explorer" feature.
Unchecking the "Automatically detect settings" box worked perfectly for me. I had a transfer that was stating it would take 14 hours and as soon as I unchecked the option it changed to 6 hours and then subsequently finished in a matter of seconds.
Great work JonnyP
Are you certain that your hardware is up to speed for 2010? Can you check the CPU and Memory usage on both the web front end and the database server? Is a crawl running for search?
Also, if you are using Sql Express for your database, check to see how much RAM is being used as it is limited to 1GB that it will use. If you are at that limit then your DB is swapping to disk which would explain the performance degradation.
protected by Eric Alexander♦ Mar 30 '15 at 19:14
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?


text:
30 Mar 2011 11:08 AM #1
Template Onclick
I have a Viewport with the west section being used for navigation "links". The navigation panel consists of a vbox that contains navigation panels which contain multiple links created with a template. As you can see I have added the onlick with the function I want called when the link is clicked. Is this a correct way to implement the onclick? I looked at the feed viewer example which uses a selection model, this seemed to be over kill for what I need. Thanks for the suggestions.
Ext.define('CCC.NavPanel', { extend: 'Ext.panel.Panel', initComponent: function(){ Ext.apply(this, { frame:true, collapsible:true, collapsed: false, animCollapse: false, items: this.createView() }); this.callParent(arguments); }, createView: function() { this.view = new Ext.DataView({ store: new Ext.data.Store({ model: 'Links', data: this.links }), trackOver: true, itemSelector: '.nav-list-item', overItemCls: 'nav-list-item-hover', tpl: '<tpl for=".">
{title}
</tpl>' }); return this.view; } });
links: [{ title: 'Accounts', fun: 'accounts' }, { title: 'Domains', fun: 'domains' }, { title: 'Export', fun: 'export' }]
30 Mar 2011 11:51 AM #2
I think I answered my own question. I played a bit more with the feed reader example and I decided to use the selection model and fire an event on each click. The center portion of the viewport will listen for the event and display the appropriate panel. Thanks!
30 Mar 2011 11:28 PM #3
Using the selection model is definitely the way to go. Binding onclick events inline in your tpl is always a terrible idea. This way the framework doesnt get to make sure that the listeners are properly cleaned up when you refresh or change the data in your dataview and memory leaks will be the result on some browsers.
Similar Threads
Ext.DomHelper.Template: one template, ten YUI gridsBy moraes in forum Community DiscussionReplies: 11Last Post: 18 Dec 2012, 4:55 AM
Ext.Template update the templateBy pothibo in forum Sencha Touch 1.x: DiscussionReplies: 1Last Post: 26 Feb 2011, 4:34 PM
onclick in template dataBy bugsbunny in forum Ext 3.x: Help & DiscussionReplies: 2Last Post: 9 Jun 2009, 6:11 AM
ext.template: possible to use a render-function outside the template-object?By tobiu in forum Ext 1.x: Help & DiscussionReplies: 4Last Post: 20 Aug 2007, 9:18 AM
Ext.DomHelper.Template or Ext.Template?By mystix in forum Ext 2.x: Help & DiscussionReplies: 4Last Post: 1 Mar 2007, 3:05 PM


text:
Another Road performance to heat up Northwest Corner
Not a subscriber? You can purchase a single-day subscription for only $0.75 to read this and access all of our content and our E-Edition. CLICK HERE purchase a single day subscription.
Become an electronic subscriber to the Republican-American for only $8 a month. CLICK HERE.


text:
The Book of MormonFri, March 22, 2013 - 8:00 PMFisher Theatre - Detroit in Detroit, MI
We are sorry, the date for this event has already passed. This event took place on 3/22/2013. Click here to view upcoming events for The Book of Mormon.
Still unsure? Check out our user reviews for:
Have a question? Need help? Call us at 800.477.5285


text:
Often I'll get comments asking for an explanation / expansion of an answer.
Am I right to @notify the commenter when I've edited?
I do this because if I were the commenter I wouldn't want to keep checking, not knowing when/if the poster is going to update.
Is there a way to get updates re. favourited posts?


text:
Kara McLaurin took her first drink of alcohol when she was 12 years old. When she was 14, drinking wasn't enough, so she started smoking marijuana. From there, Kara's life continued to get worse. At 15, she was arrested for the first time on fornication charges, runaway charges, truancy and unruly child charges.
But Kara's story doesn't end there. Kara's family practiced tough love. Her dad drug her to church, but when Kara wouldn't get out of the car, her father went inside for help.
He came out with people from the church. They all gathered hands around the vehicle and prayed out loud. Kara was screaming in the car, "Don't pray for me!", because she knew there was power in their prayers and she knew the prayers would affect her. She did not want them to pray for her, to love her.
But they "did" pray for her, and the prayers "did" affect her life.
But not instantly. Kara was taken to court, sent to a holding cell for 30 days, boot camp for 90 and a treatment center in Georgia for nine months. That is where Kara experienced the love of Christ like never before, and for the first time, Kara's change of heart was genuine.
She has been clean from drugs and alcohol for two years, two months. Kara is working at a recovery center helping others with the same addictions she once had.
She is studying sociology and criminology. She wants to dedicate her life to help troubled adolescents.


text:
James Madison University
The School of Writing, Rhetoric, and Technical Communication graduates well-equipped students who actively participate and lead in professional fields and civil society. Individuals majoring in WRTC will be joining faculty and students in one of the only schools dedicated to the art and science of communication in a variety of modes and genres.
The goals of WRTC are to help students
- Develop into accomplished writers and editors
- Evaluate the effectiveness of communication based upon the principles of rhetoric
- Develop proficiency in critical thinking, technological and analytical skills
- Create an area of expertise applicable to work as professional communicators
WRTC offers undergraduate and graduate degrees in two concentrations--Technical and Scientific Communication and Writing and Rhetoric--as well as minors in the two concentrations. Through a balance of theory and application, faculty teach students how to analyze and produce texts, all with the goal of training effective communicators. Students can combine these skills with cognate courses from other majors (e.g., SMAD, SCOM, psychology, and physics) offered at James Madison University.
After completing the WRTC degree, graduates will
- Design, create and publish print and electronic publications in academic and professional fields, such as medicine, science, law and government
- Utilize project management skills in directing the publication cycle of small- and large-scale texts, such as articles, manuals and websites
- Perform research guided by best practices and ethical principles, such as designing surveys and conducting usability tests
- Apply sound rhetorical principles of communication in academic, professional and publics environments
- 800 South Main Street
- Harrisonburg
- 22807


text:
Flat Rate Shipping. Any Size Order!
Orlando Magic Online Store
Main Content
You are a die-hard Magic fan with a style all your own! The Orlando Magic Ringer T-shirt from Junk Food lets you show your team spirit with a little bit of vintage style. This soft tri-blend tee features contrast color sleeve and collar trim and screen print graphics of a vintage Magic logo. Show off your pride in style with this Magic tee!
- 50% Polyester/37% Cotton/13% Rayon
- Contrast color accents
- Imported
- Officially licensed NBA product
- Screen print graphics
- Short sleeve
- Screen print graphics
- Imported
- Brand: Junk Food
Magic Customers also liked:
Special event items are produced by manufacturers only after the outcome of a game or event. These are advanced sale items and will ship immediately after they are received in our warehouse.
Manufacturer direct items are shipped directly from the manufacturer. These items are not available for international or expedited shipping.
Customized items can be personalized with options such as your name, your favorite number, and/or designs. Some options may be limited by league rules.


text:
I am an Engineering Student from University Of Mumbai::RAIT.
I am learning C++ from "C++ Primer" by Stanley Lipman and using Visual C++ 2008 as IDE.
But, my institute and most of the institutes in my University prefer to use Turbo C++(Version 3.0) by Borland International. What arguments can I put against the use of Turbo C++ in my institute?


text:
As my family grows (birth) and shrinks (adulthood), and as kids' needs change (puberty) I'd like to be able to change the floor plan to match.
Conventional 2x4 studs + drywall is a bit messy to move.
Is there an alternate way to build walls that are easier to move?
(One idea was 2x4 studs + 1/4" plywood held with screws. Maybe a urethane finish.)


text:
If you're looking for something different to do on a Friday night, there's a free event that easily ranks at the top of the charts. Every week year-round the Emma Chase Café invites musicians of all ages and levels to bring their acoustic instruments to Cottonwood Falls for a jam session. Music lovers like me tune in for a night of old-time bluegrass, folk, country, gospel and rock 'n' roll in a relaxed, friendly atmosphere beginning at 7:30 pm every Friday."
Music, Home Cooking Harmonize at Emma Chase Café in Cottonwood Falls
Posted on August 21, 2012 2:25PM by Cecilia Harris


text:
Receive information about new products and educational opportunities, as well as, exclusive offers only available to subscribers!
To Order 1-888-918-2253
Log In My Account
This is my first massage chair purchase. Although it took some time to figure out how the face cradle works the chair met my expectations. It is light weight and easy to pack away.
Great chair, great prive.
This chair is perfect for events. Really comfortable chair, easy to set up and lite weight,
I like this chair but my biggest complaint is that the face cradle height and chest protector height are both adjusted by one knob. So when you loosen the knob, both of them slide down. You have to hold one while you adjust the other. They often both slide down at the same time and you have to start over.
I've been using this chair for 4+ years and have had absolutely no problems with it. No break-downs in vinyl, screw works like it should, easy to adjust and lock face rest, etc... Very easy and quick to set up (1 minute is my record) and take down is even easier. I've had clients for all shapes and sizes on my chair and it has adjusted perfectly to each and every one of them. The only downside to this chair is you can't use it for pregnant clients because of the center bar, but in reality, therapists shouldn't be working on prenatal clients that are 6+ months in a massage chair anyway, bad for circulation.
I've had the unfortunate pleasure of using earthlites and oakworks chairs and all I can say is CONFUSING, they take too long to set up and take down, the vinyl is cheap and the pads break-down.
All in all, I stick with NRG for all my equipment for personal and business use.
Documents Available
NRG Grasshopper Massage Chair Instructions
©2016 Massage Warehouse - Massage Tables, a division of Scrip, Inc
Privacy Policy


text:
It's a huge debate. Is fur okay? Fur has been making a comeback in the last few years as a luxury item. A lot of celebrities have been wearing fur, while others are still adamantly opposed to it. Believe it or not, fur has not been the object of such debate for centuries. It is only in the last few decades that it became so contested.
The fur that is so hotly debated has less to do with staying alive comfortably, and more to do with style and fashion. While you can't deny fur is considered incredibly stylish by much of the population and a luxury item, one can argue whether it is really necessary to have it at all.
Many groups argue that fur is a waste of an animal's life and is not necessary. Many places where fur is popular do not reach the Arctic temperatures which might require it, and even those places with freezing temperatures have alternative options to using fur if they choose to. To raise an animal exclusively for its coat without using any other body part is considered extremely wasteful and unjust by these individuals and groups.
In addition to the environmental arguments, the most obvious arguments are the natural beauty and warmth of the fur. It has become an extremely stylish accessory for many of the celebrities in the same way expensive jewelry has. If one can afford it and there are no laws against it, why shouldn't a person own a fur if they chose to?
While this argument has no obvious solution, it has spurned many a debate and has received a great deal of publicity over the years. Almost everyone has an opinion on the topic, but short of the government stopping all fur products, there will never be a clear answer. Of course, if you ban the fur, will you ban leather, meat, and all other animal products as well? It does make one think...


text:
Oklahoma Traditional Crafts
Textile Arts & Quilts
Circle Saw Quilt made by Mary Ann Scott Bass in the late 1800s. The muslin backing was dyed with walnut hulls and "set" with vinegar and salt. Ms. Bass was born in 1868 to a "Freedman" family in Indian Territory. From the Lula Anderson Collection at the Oklahoma History Center.
"Crazy Quilt" This example was made by Mrs. Ola Harris in 1919. Mrs. Harris was living in Cloudy, Oklahoma, when she made the quilt. The H.H.H. are the initials of her eight-year-old son. Most of the material is wool.
Basket Weaving
Mavis Doring, Cherokee basket maker. Members of Mrs. Doring's family came to Oklahoma on the Trail of Tear
Wheat Weaving
Woven Wheat Wreath
Crochet & Knitting
Crocheted Heart
Knitted Doll Dress
Chris Hanna, Cherokee, of Creek County is an exceptional coil pot maker. Many of her designs are from tradition. The bowl shown reflects ancient Caddoian cultures of Oklahoma. Traditional arts often look to earlier arts for design ideas.
Wood Crafts
This is a redwood burl wooden bowl turned by Nathan Hart, an Oklahoma Cheyenne. Wood turnings are usually considered fine crafts. So many Oklahomans learn to do turnings by closely observing experienced crafts people like Nathan. Learning by observing, asking questions, and then trying the craft yourself is a form of apprenticeship. In Oklahoma, Nathan's tribal heritage adds identity and special value to the bowl."
Musical Instruments
Doc Tate Nevaquaya, Comanche flute-maker Learn more about Doc Tate's Flute Making
J. C. Broughton of Sapulpa, Oklahoma
Folk Art
Folk art may also be described as idiosyncratic art, primitive art, naive art. Folk art usually has a broad appeal as do traditional arts and crafts. Most organizations dedicated to preserving folklife make a distinction between traditional and non-traditional arts or crafts. The effort of the Oklahoma Folklife Center and "Oklahoma Folks" is to identify, preserve traditionally produced arts and crafts. However, some traditions originated as idiosyncratic art. For that reason, "Oklahoma Folks" features some "folk art" in this section for comparison.
"Beaverwood" hammer made by Gabe McDaniels of Ryan, Oklahoma, circa 1988. The wood is from lower Beaver Creek near Ryan. Mr. McDaniels' craft is his invention and is an example of folk art.
Vera Tayor of Tishomingo, Oklahoma made these examples of patchwork in 2002. Mrs Taylor learned to quilt from family members and from friends in the community. Although the patterns are Mrs. Taylor's, the craft remains traditional.


text:
Is it true, that the minimum number of colors to color a map is still 4, even if the surface you draw the map upon is more complex than a sphere?
What if we have "Planar" graphs on Möbius strips or on a torus ?
Is it true, that the minimum number of colors to color a map is still 4, even if the surface you draw the map upon is more complex than a sphere?
What if we have "Planar" graphs on Möbius strips or on a torus ?
No. The correct replacement for $4$ for all compact surfaces without boundary except the Klein bottle is given by the Ringel-Youngs theorem (formerly the Heawood conjecture): it takes $$\left\lfloor \frac{7 + \sqrt{49 - 24 \chi}}{2} \right\rfloor$$
colors except for the Klein bottle where it takes $6$, where $\chi$ is the Euler characteristic of the surface. For the torus, $\chi = 0$, so it takes $7$ colors. I don't know the answer off the top of my head for a Möbius strip.
Though others have already given more ambitious answers, it may yet be worthwhile to explain why "pure thought" shows that the answer to the OP's question in the first paragraph must be no.
The key observation is this: every finite graph can be embedded in some subsurface of $\mathbb{R}^3$. To do this, start with a 2:1 planar immersion of the graph, i.e., a map which is locally an embedding into the plane at globally has, at worst, two edges crossing at any given point. (It is an easy exercise to prove that such things exist for any finite graph.) Now imagine the graph is the blueprint for a highway: it will be a bad idea for the highway to have self-intersections, so what do we do? Well, as in the real world, whenever the highway would cross itself, we can build an overpass, lifting one branch up into the third dimension so that it does not cross the other. In topological terms, we add a handle to the plane in which the graph is embedded. Thus we succeed in embedding the graph in a surface, which is in fact the $g$-handled torus (where $g$ is the number of planar crossings) minus a single point (because we are starting with the plane rather than the $2$-sphere).
[This argument actually proves something quantitative: we define the crossing number of a finite graph to be the minimal number of crossings in any $2:1$ planar immersion, and we define the embedding genus of a finite graph to be the minimum genus of a compact surface into which $G$ embeds (thus planar graphs are precisely those of genus zero). Then the above argument shows that the embedding genus of $G$ is less than or equal to the crossing number of $G$.]
For any $n \in \mathbb{Z}^+$, the complete graph $K_n$ has chromatic number $n$. Thus the map coloring numbers of a compact orientable surface of genus $g$ must tend to infinity with $g$. (The precise formula is given in Qiaochu's answer.) In fact, in the same 1968 paper in which they proved Heawood's Conjecture, Ringel and Youngs gave a precise formula for the embedding genus of $K_n$: for $n \geq 3$ it is $\frac{(n-3)(n-4)}{12}$. (Clearly it is $0$ for $1 \leq n \leq 4$.)
1) I say "embedding genus" where most graph theorists say "genus". As an arithmetic geometer who encounters graphs while studying degeneration of algebraic curves, I reserve the term "genus" of a graph for what is classically called the cyclomatic number, i.e., the first Betti number of the corresponding cell complex.
2) I know less about this subject than the above answer might indicate. For instance, I found the computation of the embedding genus of $K_n$ via an internet search while writing this answer. In particular I have not read the paper of Ringel and Youngs. Anyone who wishes to add further information on this subject will be educating me first of all...
Apparently, that code for 7-coloring a torus from Wagon's book that I was speaking of in the comments is a bit old; here's an update for newer versions of Mathematica:
Thanks for updating my code. I have left this torus example out of the newest edition of my book.
Slightly related: Mathematica has a database (
For named polyhedron graphs only the following were 4-chromatic:
As for relevance to the original question, I can say that my Kempe implementation is pretty fast for planar graphs, having succeeded on the graph of all 3300 counties in the US. As for the famous counterexamples, I conjecture that one can always get around them with Kempe by simply permuting the vertices and trying again if one reaches an impasse.
Stan Wagon (wagon a t macalester d o t e d u )


text:
Print this page
Artbeads Ratings and Reviews
See All Reviews
Shop Now At Artbeads
Choose a Category
Shop Alphabet Beads
Shop Artbeads.com Store
Shop Bags & Boxes
Shop Bali Beads
Shop Base Metal Components
Shop Beading Books
Shop Bracelets & Neckwear
Shop Charms
Shop Clearance Items
Shop Copper Clasps
Shop Copper Components
Shop Copper Pendants
Shop Crafts & Accessories
Shop Cubic Zirconia Beads
Shop Earrings
Shop Freshwater Pearls
Shop Gemstone Beads
Shop Gift Certificates/Cards
Shop Glass Beads
Shop Gold Beads
Shop Gold Components
Shop Hill Tribe Silver Beads
Shop Horn Beads
Shop Jewelry Kits
Shop Limited Edition
Shop Limited Edition Gemstones
Shop Limited Edition Glass Beads
Shop Natural Beads
Shop Natural Components
Shop Pendants
Shop Pewter Beads
Shop Pewter Components
Shop Porcelain Beads
Shop Resin Beads
Shop Seed Beads
Shop Shell Beads
Shop Shell Pendants
Shop Silk Beads
Shop Silver Components
Shop Sterling Silver Beads
Shop Stringing Materials
Shop Swarovski Components
Shop Swarovski Crystal Beads
Shop Swarovski Pendants
Shop Swarovski Rhinestones
Shop Tools & Supplies
Shop Vintage Beads
Shop Watch Faces
Shop Weekly Specials
Shop Wire & Chain
Shop Wood Beads
Shop Wooden Components
Reviews Home
(Unknown) Reviews
Product Reviews
TOHO Bead Magatama 3mm Gold-Lined Aqua AB
This 8 gram pack contains approximately 249 seed beads.
The combination of purple and blue color with a touch of golden shine in these Magatama TOHO beads creates a look rich with brilliant color. Combine these small Magatama TOHOs with
gold components
for designs that are full of gorgeous color and shine. Their teardrop shape will result in beautifully staggered patterns in your beaded jewelry designs. These TOHO seed beads are perfectly consistent in both color and size and are perfect for precise, intricate designs full of vibrant beauty.
Customer Reviews for
TOHO Bead Magatama 3mm Gold-Lined Aqua AB
This product has not yet been reviewed.
Click here
to continue to the product details page.


text:
Shot putter Inderjeet too...
India vs West Indies: 1st...
IPL closing ceremony
Chennai win IPL 3
RCB beat DC to seal CLT20...
IPL 3: MI enters finals
IPL 3: DC reach IPL Semis
IPL '10: Chennai
Mirchi Top 20 Jubilee Nig...
Shamita Singha's b'day pa...
Bret Lee at TKSS
Uttar Urvashi: A play
Rains lash India
Celebs at airport
Celebrities Dressing Half their Age
Celebs favourite holiday spots
Celebs in news
Parties & Events
Celebs candid selfies
Celebrity photoshoots
Celebrity Instagram pics
B'wood's bikini bombshells
Celebs' 'Twitpics'
Sambhavna and Avinash throw party post wedding
Bizarre food across the world
Hottest Women Prisoners
Workout Divas!
B-town celebs' candid pics
Movies' first look
Pregnant hotties
B'wood celebs spotted
Bold acts in B'wood!
Amy Jackson
Celebs' hush-hush weddings
Celebrity FB Pics
Interest Network


text:
I have a laptop with a Nvidia G105M, the main monitor has a 1366x768 resolution and I am trying to configure an external monitor to become independent from the main monitor (laptop screen).
With Twinview I expand the workspaces, which every time i change to another workspace it happens in both monitors and that's not what I need, I only need the external monitor for VirtualBox, mupen64plus and VLC.
I can't use the Monitor Settings as it always says unknown in the monitor image. So I use the Nvidia Settings, where in the monitor configuration area I click Detect and the 2nd Monitor appears as Disabled and now I can configure the 2nd Monitor in Twinview or Separate X Screen. However when I use Twinview the second Monitor IS an extension from the 1st Monitor which means that when I switch Workspaces, it switches in both monitors. What I want is to have the 2nd monitor to NEVER change workspaces so that I can always see the same window in it, be it VirtualBox, VLC or Terminator
I looked around the forums and the questions here but didn't find anything that related to my situation.


text:
How calculate all subgroups of $(Z_{12}, +)$? I know that the order of subgroups divide the order of the group, but there is such a smart way to calculate the subgroups of order 6?
$\mathbb Z_{12}$ is cyclic, which means all of its subgroups are cyclic as well.
$\mathbb Z_{12}$ has $\phi (12)=4$ generators: $1, 5, 7$ and $11$, $Z_{12}=\langle1 \rangle=\langle 5 \rangle=\langle 7 \rangle=\langle 11 \rangle$.
Now pick an element of $\mathbb Z_{12}$ that is not a generator, say $2$. Calculate all of the elements in $\langle2 \rangle$. This is a subgroup. Repeat this for a different non-generating element. You should find $6$ subgroups.
Hint: If a subgroup contains an element $n$, then it also contains $n+n, n+n+n, \ldots$
Adding to above theoretical nice approaches; you can use GAP to find all subgroups of $\mathbb Z_{12}$ as well:


text:
5 Important People Who Were Screwed Out of History Books
#2. The Man Who Invented Half of What's in Your Medicine Cabinet
In general, our relationship with scientists and innovators is pretty hit-and-miss. You'll get the occasional superstar scientist (Einstein, Stephen Hawking, Carl Sagan), and there are other researchers or inventors whom most people know for what they invented (Edison, Bell, Tesla, Turing), but the vast majority of the things we use every day were created by people whose names we never bothered to learn. When we hear a song on the radio we like, we immediately want to know more about the band, but did you ever get curious about the guy or lady who gave you aspirin? Or your drip coffee maker? Or your cell phone?
Or your crack pipe?
Well, the difference between the guys you've heard of and the guys you haven't usually comes down to personality. Which brings us to Percy Julian.
If you've ever used birth-control pills, or had asthma, arthritis, hemorrhoids, eczema, allergies, chronic lung illness, cancer or weak little baby muscles, you can thank Percy Julian for inventing steroids. It was one of the most crucial advancements in modern medicine -- there probably isn't a single person reading this who hasn't been treated with a steroid at some point.
"You're welcome, douchebags."
Way back in 1940, Julian figured out how to isolate the hormones progesterone, estrogen and testosterone from soybean oil, which was a huge deal. Up until that point, scientists had only taken tiny steps in figuring out what to do with these hormones, since they only had a miniscule amount to work with.
Now Percy Julian was synthesizing $10,000 worth of sex hormones a day, and the effect on the world was profound: Within a few years, one guy figured out how to use cortisone to treat arthritis. A few years later, another guy figured out how to prevent ovulation using progesterone, inventing a little thing most ladies refer to as "the pill." So, yeah, kind of a big deal. In fact, the arthritis guy got a Nobel Prize for his work.
"If we'd spent money on kids we wouldn't have all these boxes of stuff! Thanks Percy Julian!"
Percy Julian, the guy who made all of that and more possible, got jack shit.
So why have we never heard of him?
Did we mention that Julian was a black man living under Jim Crow? No? Because he was.
We know what you're thinking. It's because he was black, right? Not exactly. Back before Julian ever figured out all this steroid stuff, the promising chemist was hired as a faculty member at the traditionally black school Howard University. The only problem was that he really wanted to get his Ph.D. in chemistry, something no other African-American had accomplished up to that point. Even though there wasn't a school in the country that would offer him a spot in a doctoral program, Julian percyvered, securing himself a fellowship to get his doctorate in Vienna, Austria.
Racism can't exist somewhere with this many old statues.
Homesick, stressed and still pissed over having to leave the country to get his degree, Julian sent letter after letter to one of his colleagues back at Howard. But instead of limiting his subject matter to awesome Austrian food and the sick waltzes he kept hearing, Julian bragged about his sexual exploits with foreign ladies and talked trash about his former co-workers at Howard. Big mistake. Because years later, he ended up back at that same university and pissed off his ex-pen pal, who then found it totally professional and appropriate to hand Julian's letters to the black press, who found it totally appropriate and professional to publish them.
Then, as if having his private smack-talk letters made public wasn't enough, Julian was correctly accused of having an affair with his assistant's wife. He was forced to quit Howard University and left town humiliated and vilified by the black press, which chose to keep that grudge against him years later when he saved the universe with steroids. By 2004, "no historian had ever studied Julian's career; no biographer had ever told his story."
We've said it before and we'll say it again: Success is all about not pissing off the right people.
Smile at everyone, never burn bridges, and always carry a handgun.
#1. The Slave Who Tried to Take New Orleans
Quick! What's the first thing that pops into your head when we say "slave rebellion"? If you have even a little bit of a history education, you'll say Nat Turner's 1831 revolt in Virginia. It involved over 70 slaves who killed 55 white men, women and children, and it ended after the official executions of 55 slaves, with 200 more unofficially tortured and/or killed by angry white mobs. Nat Turner's story is the most well-known slave rebellion in American history. But it wasn't the largest or most remarkable, not by a long shot.
Sorry, Nat.
In 1811, a slave named Charles Deslondes led between 200 and 500 uniformed, semi-armed, flag-bearing multi-ethnic slaves toward New Orleans, and they weren't coming for goddamned Mardi Gras. They wanted to conquer the city and establish a black republic on the Louisiana coast.
For years, Deslondes had played the part of the loyal, trustworthy slave, all the while plotting a revolution, just like the one that happened in his home country of Haiti a few years earlier. But he wasn't interested in a Nat Turner-style helter-skelter slaughter. Which was why his conspirators didn't steal just the weapons of their masters, but their militia uniforms and marching drum as well, and why between 10 and 25 percent of the local slave population joined them. For seven hours, the army marched from plantation to plantation, picking up more slaves and leaving destroyed homes and terrorized slave owners behind as they made their way to New Orleans.
Thousands of college students follow in their footsteps every year.
By the next morning, refugees from the plantations had warned the New Orleans militia of the coming insurrection, and the better-armed whites easily squelched the revolt. Charles Deslondes was never tried for the insurrection, but that was probably because he was shot, mutilated and burned alive before anyone had the chance to formally arrest him.
So why have we never heard of him?
Because the story of an organized, politically sophisticated slave rebellion didn't quite fit the narrative that Southern slave owners wanted for their history. Especially since Deslondes' rebellion only killed two people, while the retribution resulted in the immediate deaths of over 45 rebels, the decapitation of 18 more, (whose heads were displayed on pikes), and then the execution of dozens of others for good measure. And oh yeah, $300 in compensation for every executed slave ... to the slave owners, for loss of property.
"Pick up yer receipt around back."
As word of the failed rebellion spread across the South, something incredible happened. Louisiana newspapers downplayed the incident, claiming the rebels were nothing more than bandits, while others deliberately omitted the story altogether, as if it never happened. One historian says the white slave owners' refusal to acknowledge the revolt "laid the groundwork for one of the most significant moments of collective amnesia in American popular consciousness." To this day, the only memorial of America's largest slave rebellion is this plaque:
...which isn't so much an acknowledgment of the uprising as it is a memorial to the plantation itself. Way to go, history.
To view more of Eric Yosomono's ramblings visit GaijinAss.
For more stuff your teachers got wrong, check out The 5 Most Ridiculous Lies You Were Taught in History Class and 8 Historic Symbols That Mean The Opposite of What You Think.
And don't forget to follow us on Facebook and Twitter to get sexy, sexy jokes sent straight to your news feed.
Do you have an idea in mind that would make a great article? Then sign up for our writers workshop! Do you possess expert skills in image creation and manipulation? Mediocre? Even rudimentary? Are you frightened by MS Paint and simply have a funny idea? You can create an infograpic and you could be on the front page of Cracked.com tomorrow!


text:
I'm soon giving an introductory talk on de Rham cohomology to a wide postgraduate audience. I'm hoping to get to arrive at the idea of de Rham cohomology for a smooth manifold, building up from vector fields and one-forms on Euclidean space. However, once I've got there I'm not too sure how to convince everyone that it was worth the journey. What down-to-earth uses could one cite to prove the worth of the construct?
The motivation that most appeals to me is very simple and can come up in a freshman vector calculus course.
We say that a vector field $F$ in $\mathbb{R}^3$ is conservative if $F = \nabla f$ for some scalar-valued function $f$. This has natural applications in physics (e.g. electric fields). It's easy to see this happens iff line integrals of $F$ are path independent, iff line integrals around closed loops vanish, etc. On a simply connected domain, $F$ is conservative iff $\nabla \times F = 0$ (use the freshman version of Stokes' theorem). On a non-simply connected domain, this may fail (e.g. $\mathbb{R}^3$ minus a line). The extent to which it fails is of course the de Rham cohomology of the domain. So this suggests that the de Rham cohomology is a good way to detect the "shape" of a domain, and one goes on from there.
Maybe this is too basic to be interesting, but I like it myself.
This is probably not "down-to-Earth" enough for your purposes, but it was one of the first uses of de Rham cohomology that I really enjoyed and I feel like I must share it. (I learned it from Bott's article "The geometry and representation theory of compact Lie groups" in the 1977 Proceedings of the SRC/LMS Research Symposium on Representations of Lie Groups.)
Proof: $S^0$ is obviously a Lie group, so that's that. If $S^{2n}$ were a Lie group (and $n>0$), then we'd have a smooth multiplication map $m \colon S^{2n} \times S^{2n} \to S^{2n}$ and an identity element $e \in S^{2n}$. The map $m$ induces a ring homomorphism $m^\ast \colon H^\ast(S^{2n}) \to H^\ast(S^{2n} \times S^{2n})$. Composing this with the Kunneth isomorphism $$ H^\ast(S^{2n} \times S^{2n}) \stackrel{\sim}{\longrightarrow} H^\ast(S^{2n}) \otimes H^\ast(S^{2n}) $$ yields a map $f \colon H^\ast(S^{2n}) \to H^\ast(S^{2n}) \otimes H^\ast(S^{2n})$.
Now, $$ H^\ast(S^{2n}) = \begin{cases} \mathbb{R} & \text{if }\ast=0 \text{ or } 2n \\ 0 & \text{otherwise.}\end{cases} $$ So, writing $1$ and $\lambda$ for the generators of $H^0$ and $H^{2n}$, respectively, we have $f(1)=1\otimes1$ and $f(\lambda)=a(\lambda\otimes1)+b(1\otimes\lambda)$ for some $a,b\in\mathbb{R}$. To determine $a$ and $b$, first restrict the multiplication map to $S^{2n} \times \{e\}$, where it is the identity map. Consequently $m^*$ gives the identification $H^\ast(S^{2n} \times \{e\}) \cong H^\ast(S^{2n})$ and it follows that $a=1$. Similarly, $b=1$.
As $f$ is a ring homomorphism, we also have $$\begin{align} f(\lambda^2) = f(\lambda)^2 &= (\lambda\otimes1 + 1\otimes\lambda)^2 \\ &= \lambda^2\otimes1+ (\lambda\otimes1)(1\otimes\lambda)+(1\otimes\lambda)(\lambda\otimes1)+1\otimes\lambda^2.\end{align}$$ As $\lambda^2 \in H^{4n} = 0$, this reduces to $0 = (\lambda\otimes1)(1\otimes\lambda)+(1\otimes\lambda)(\lambda\otimes1)$. Recall, however, that the product structure on the tensor product $A \otimes B$ of graded rings is given by $$ (a \otimes b)(c \otimes d) = (-1)^{\deg a \deg c}(ac\otimes bd). $$ Since $\lambda \in H^{2n}$, this means that $$ (\lambda\otimes1)(1\otimes\lambda) = (1\otimes\lambda)(\lambda\otimes1) = \lambda \otimes \lambda.$$ Consequently, $\lambda \otimes \lambda = 0$, which is a contradiction! $\blacksquare$
Of course, there are several other (perhaps even better) ways of proving this theorem, but I think this proof is fairly charming.
The calculations of cohomology of homogeneous space $X=G/H$ is reduced to a problem in linear algebra.
[If $G$ is compact and connected then any form is cohomologous to its left shifts and therefore it is cohomologous to the avagage of all left shifts, which is a left-invariant form. Thus $H^k(X,\mathbb R)$ is isomorphic to space of $k$-forms at one point which is invariant under roation of the stabilizer.]
I'd split your question in 2:
(1) Motivation for (co)homonology in general
(2) Motiviation for de Rham cohomology in particular.
The anwser to (1) is the basis for algebraic topology. One reduces complicated geometry problems to the only thing mathematicians really understand aka linear algebra. A typical example would be are Brouwer fixed point theorem (or its corollary $\mathbb{R}^n \simeq \mathbb{R}^m$ $\Rightarrow$ $n=m$).
An answer to (2) is that it is usually much much easier to compute. The reason for this is that it is already more linear by definition but this efficiency comes at the cost of restricting ourselves to smooth manifolds. For example, it is obvious that for any manifold $X$ of dimension $n$, $H^i_{dR}(X) = 0$ for $i > n$ while this is highly non trivial when you look at singular cohomology or sheaf cohomology. On the other hand it is not obvious at all that de Rham cohomology is actually a topological invariant. Another example one would be that if $X$ is an affine complex algebraic variety, one can compute its de Rham cohomology using only algebraic differential forms (not an obvious fact but pretty intuitive for the audience). An audience discovering the theory might be glad to see how easy that makes the computation of the de Rham cohomology of $\mathbb{C}^\times$ (or $S^1$).
Another answer to (2) is that de Rham cohomology brings a different flavor and the interaction between Betti and de Rham cohomology leads to periods, Hodge theory etc... but this may be hard to get to in an introductory talk.
PS: I can't believe I didn't mention it (that's the what I was aiming at in the last paragraph) but I think it would make a great goal for an introductory lecture: STOKES' THEOREM!!! As an undergrad, my physics teachers kept bothering me with operators like "div" and "rot", we had a formula for a volume, one for a surface and one for a line. I had to wait several years and a differential geometry class to understand that these were all special case of the simple and elegant Stokes' formula. In modern terminology it just means that integration induces a morphism of complexes: $\int_X: \Gamma(X,\Omega_X^\bullet) \to Hom(C_\bullet(X),\mathbb{K})$.
Perhaps even simpler than the examples from electromagnetism in $\mathbb{R}^3$ minus some points is the following:
The angle "function" $\varphi\colon S^1 \longrightarrow \mathbb{R}$ is not really globally defined as turning aroung one time gives a discontinuity. It jumps by $2\pi$. Neverhtheless, the differential $\mathrm{d}\varphi$ is a perfectly global one-form on $S^1$. It is the usual volume form, not being exact but closed for dimensional reasons. So the non-trivial first deRham cohomology of $S^1$ is responsible for counting angles and the fact that $0 \ne 2\pi$ ;)
This can be upgraded to the more interesting statement that on a orientable compact manifold without boundary you have a non-trivial top-degree deRham cohomology: again, the reason is that we can integrate a volume form resulting in a non-zero volume. Thus (by Stokes theorem) the volume form can not be exact. It is closed without thinking about it, simply for dimensional reasons.
You may be able to convey the significance of de Rham cohomology to really wide audiences through electromagnetism.
I don't claim to understand all the physics (or topology for that matter), but see my friend Rob Kotiuga's book at http://library.msri.org/books/Book48/index.html. See, for instance, chapter 1D: Nineteenth-Century Problems Illustrating the First and Second Homology Groups, or pp. 30--32, "Chain complexes in electrical circuit theory."
Here is my attempt to explain DeRham cohomology and Hodge theory to a group of first year grad students that have no knowledge of manifolds.


text:
National Center on Immigrant Integration Policy
National Center on Immigrant Integration Policy
Recent Activity
The search yielded 0 results
Video, Audio
April 19, 2012
The Migration Policy Institute celebrated its first decade as the authoritative, unimpeachable resource on immigration and immigrant integration analysis and policy design in the United States and internationally.
Video, Audio
December 7, 2011
A discussion on the gains that young adult immigrants or the U.S.-born children of immigrants have made in education and employment, with speakers: Michael Fix, Jeanne Batalova, Andrew P. Kelly, Raul Gonzalez, and Margie McHugh.
August 12, 2011
In this video, Michael Fix and Margie McHugh discuss the distribution of English Language Learners across the country, their growth in enrollment, and more.
August 12, 2011
In this video, Michael Fix and Margie McHugh examine key indicators of ELL students' performance on standardized tests, among other topics.
May 18, 2011
This awards ceremony, honoring the 2011 recipients of the E Pluribus Unum Prizes — a national awards program for exceptional immigrant integration initiatives — featured panel discussions with the awardees and federal officials and remarks by White House Director of Intergovernmental Affairs Cecilia Muñoz and Assistant Secretary of Education Brenda Dann-Messier.
Video, Audio
September 24, 2012
The winners of the Migration Policy Institute's 2012 E Pluribus Unum Prizes, honoring exceptional immigrant integration initiatives in the United States, discussed their work during a plenary luncheon on September 24, 2012 at the National Immigrant Integration Conference held in Baltimore, MD.
September 19, 2012
A webinar on language access contracting for federal, state, and local officials, agency administrators, and community stakeholders concerned with the oversight and implementation of language access provision.
Video, Audio
August 7, 2012
Join MPI as U.S. Citizenship and Immigration Services Director Alejandro Mayorkas discusses the application process and policies that the agency has announced to implement the administration's deferred action program.
Video, Audio
July 30, 2012
MPI is pleased to host a discussion with experts from both KIND and the Women's Refugee Commission, focusing on the causes of the increase in unaccompanied minor migrants, the situation these minors face once detained or apprehended, and the challenges confronting both nongovernmental organizations trying to provide aid and the U.S. government agencies responsible for processing minors through the system.
Video, Audio
May 23, 2012
A discussion with Rosario Farmhouse, Alejandro Mayorkas, Jasenko Selimovic, Peter Sylvester, and Demetrios G. Papademetriou, MPI President.
The search yielded 0 results


text:
So I want to install Ubuntu by booting it from my external USB drive, as is outlined here. The thing is, I read here that the drive will be erased. My external drive is a 500GB HDD with a LOT of stuff on it, over 350GB of stuff, and I don't have anywhere to back it all up on (not to mention it would take a good while to do so, and then put it back again afterwards).
I do however see that the second link uses a different method than the first, so does the first also require the disk to be formatted? And if so, is there some way I can do this without formatting my entire drive?
My DVD drive is having issues so I can't install it from there, and a Wubi install doesn't want to work, so this is the last option I know of.


text:
Looking for a canonical answer to the question of why packages should be preferred in an Oracle database over stand alone procedures and functions.
Sign up
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
Benefits of Packages
Logical Grouping – Methods that work together can be put into a cohesive unit rather than just logically coupled but physically separate.
Secure Private Methods - Functions and Procedures can be made private to the package and only be used within it. This makes the public surface simpler and more secure.
Privilege Management – Permissions can be granted once for a group of procedures that work together rather than separately for each procedure/function required.
Secure Wrapping - Wrapped packages are more difficult to unwrap than wrapped functions/procedures.
Simplified Naming – A larger namespace allows names that are simpler and can be re-used in other packages.
Better Performance – Packages can be compiled and are loaded into memory in entirety rather than piecemeal as other methods. This benefit if it exists at all is minimal compared to the other benefits.
Reduced Invalidation – Changing a package body does not invalidate dependencies as changing a function or procedure does.
Unique Features - Package Variables, Package Constants, Initialization, Session State, Package Comments, and Overloaded Methods.


text:
Why link exchange?
One way links are always a good ways but then never underestimate the power of link exchanges from the relevant sites and they can always prove to be the best marketing policy to take your website off the ground but if done in a better way. Reciprocal links help you in two ways:
1. They increase your web site traffic, from people who click on the links.
2. Reciprocal links also play a major role in boosting your rankings in search engines. (provided they are relevant links)
Over time I always contact some sites that I feel might be prepared to swap links or even just I think the sites will be useful to my users I link to the site from the sticky threads on the forums but I prefer telling the other webmaster that I have linked to your site and so if you think you can, do the same but cannot say that I have told all of them.
The question is how is this actually done? Suppose for example that I approach the webmaster for example.com and suggest swapping links do I have to supply them with a bit of code for insertion into thier website source or is it all done from thier side. Come to think of it if they agree to swap links what do I have to do.
What is bad email?
As I am writing this article I get couple of messages popup from the GMail notifier with the subject as Link Exchange Request with the same body all over again. and I would like to share that one with you. The email look something like this.
Dear Webmaster,
I am contacting you for a link exchange between our sites. Your website has been ranking on Google for related terms (without mentioning the terms) and hence I think that linking our sites would add value to the both of our users. (Now he started begging) I humbly request you to link back to us with the following details:
URL : - http://www.example.com/
Title : - Example Site
Description : - Example site for some product
Link will be added here : - http://www.example.com/somepage.html
If you wish to have your link details changed, we will be glad to do so. (If I link it looks he is ready to do anything.)
Thanks & regards,
Some Name
firstname.lastname@example.com (The email address is not from the domain he is willing to have links to.)
The points that I would prefer when he writes such an emails are
1. If you mentioned to found me on google or any other search engine without mentioning the terms I would not consider you as a genuine person who found me on google without any terms. Yes you can always find the website without google and then dont mention that you found us on google.
2. Dont sound like you can do anything for the links. You have placed it where its appropriate and cannot be changed or if it can be changed dont place it.
3. Use the domain email address because if you can't it does give you good weight.
4. I would prefer not to be giving the link details to the other webmaster because as he is webmaster he know some basics of HTML.
Now the question comes as to what should be the content of the email that you can think will have more positive replies than just get deleted. You can always supply the code but not when you are contacting first time.
How to go about it?
In the first part I described about what is bad way to ask for the link exchanges but after criticising the way people go about it what is the better way of doing it. I would collect the following information about the website before contacting them and put them into an excel file.
+----------+-------------------------------------------------+ | Term | Information | +----------+-------------------------------------------------+ | name | Person Name to contact | | siteurl | URL of the page found with the #term# | | term | Google term (Preferably Your anchor text) | | termurl | Your site url you are targeting with the #term# | +----------+-------------------------------------------------+
Hello name
I am Your Name and I found your page siteurl when searching in Google for term and thought of contacting you about my website www.yoursite.com where your-site-description related to term. The url to my term section is termurl and would like to request you if that is useful to your users you can place the link to it if you want to.
Your Name


text: Rosalie, though beautiful, is one of the most conflicted characters in Twilight. At first she carries a lot of hostility toward Bella, but in the end warms up to her. Rosalie holds a lot inside of her. Right before she was turned into a vampire by Carlisle (her adoptive father) out of pity, she was gang-raped and beaten to death by her fiance and his friends. That would make any one bitter. She's the only vampire in the Cullen family that hasn't tasted human blood. That's pretty impressive. Also she's the wife to that hunky, gorgeous Emmett and is the adoptive sister to Edward. It's about time she gets a tutorial! Have fun learning "how to draw Rosalie Cullen", step by step.


text:
There appears to be this notion among the project management team that stating that "it works" means it should then be deemed 100% complete. Most programmers know that isn't always the case. If I'm trying alternative approaches to get a piece of functionality working, that doesn't necessarily mean I found the best solution, or it won't require some rework after reviewing with other developers. I'll often get done with something, step back, and then ask myself what I can do better after the business rules are satisfied. Should this "I can do better" time actually fit somewhere within the timeline? I'm of the opinion that the best approach is that you always leave code better than when you found it (to a degree), which could mean post launch refactoring. However, project teams are often extremely uncomfortable with this approach because again, if it works, and has been tested, then why fix it?
Sign up
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
Where should code refactoring and optimization fit within both an agile and waterfall process timeline?
There is one overarching principle that governs the need to refactor and optimize, both in waterfall and Agile: YAGNI (You Ain't Gonna Need It). A second principle is the corollary of the first: "Premature optimization is the root of all evil", the coding equivalent of the general proverb "the enemy of excellence is perfection".
Let's take the priciples and apply them. You have the requirement to build an ETL algorithm that takes a file of a particular type, extracts its information, then puts that information into a database. Your goal for this week (for our purposes it doesn't matter whether you're in an Agile or SDLC shop) is to get that done.
You're a smart fellow, and you have been given a glimpse of the big picture. You know that this is not the only type of file for which the project will need an ETL. So, you consider implementing this ETL algorithm to also work on another type of file, which has only minor differences. Doing this would violate YAGNI. Your job is not to develop the algorithm for that other file; it is to develop the algorithm for the one file that is needed by the end of the week. To meet that goal and pass the acceptance tests, you need to develop that algorithm and make it work correctly. You "ain't gonna need" the additional code to make it work with the other file. You may think it will save you time to incorporate it now, and you might be right, but you might also be terribly wrong; the algorithm for the other file might need to be used in an area of the system your code can't be used, or the requirements for the new file might be different than for yours in ways you don't know (in Agile, those requirements may not exist yet). In the meantime, you've wasted time and unnecessarily increased the complexity of your algorithm.
Now, it's next week, and as a dubious reward for your excellent work on the first algorithm, you have been given the task of creating the algorithms for two new file types. Now, you DO need additional code to make your algorithm work with more files. You may extend your existing algorithm using a template method pattern that will use a basic pattern with file-specific individual steps, or you may simply derive a common interface from your existing algorithm, develop two new ones that follow the interface, and plug them into an object that can choose which algorithm to use.
While developing, you know you have a requirement that the system be able to process 10KB of raw data per second. You do a load test and find your initial draft algorithm handles 8KB/s. Well, that's not going to pass the AATs. You take a look and see that there's some O(my God)-complexity loop structure in your algorithm; you streamline it and get 12KB/s. "Pretty good", you think, "but if I had that poor a loop in the code, what else can I shave off?". buzz You just violated the "premature optimization" rule. Your code works, and passes all requirements. You're "done", until such time as the requirements are updated to require 15KB/s. If and when that happens, THEN you pull the code back up and look for things to improve.
Follow this simple process while developing, whether in Agile or in traditional SDLCs: "On the first pass, make it work. On the second pass, make it pretty. On the third pass, make it SOLID." What this means is, when you first create a line of code, make that code do its job correctly and bug-free, but don't pay too much attention to design rules within this code, as for all you know right now you'll never touch this area again. The next time you visit that line of code, you just proved yourself wrong; it's no longer a one-off piece of the system. Refactor it for readability, conciseness of code, and/or DRY principles (you may have copy-pasted some code to do something five times; refactor that into a loop and/or a method call). The third time you are working in or around that line of code, it should be considered a key area of the system, and you should refactor it for SOLID structure, perform easy-to-spot optimization enhancements, etc. Follow this, and you'll find that the areas that need refactoring receive it, but at the same time no time is wasted.
This may go against your own personal temperament as an engineer/programmer, but if it's working, what business value is there for you to continue refining it? Will it make it easier to maintain over time? If so, then working under the agile methodology, you should be able to create new items in your backlog to refine and refactor your existing code, and those would get prioritized with the other items in the backlog. That's part of the value of the agile process: the team decides together what's most important and what gets done next.
Our team also tracks what we call "technical debt", so if you get something working but you know it could be done better, you log it as technical debt. We use scrum, and sometimes you'll finish all the work in a sprint early (you should finish a little early roughly half the time if you're fairly close with estimates), but not have enough time left to pull in a completely new user story, so we spend the extra time going back and working down our technical debt. It's not tracked formally like our user stories in our backlog, and we can pretty much work on it whenever we have time available.
It's also more or less a judgment call on your part when you call the task "done"; if you're not comfortable with the state your code is in, don't mark the task complete.
Just before you start coding the next release.
Don't refactor based on "intuition".
Refactor based on the next sprint's actual stories.
Don't mark the code as 100% complete until you are satisfied with the refactoring. You just have to constantly evaluate the cost/benefit to refactoring the code because if you study enough you will always see ways to make the code better.
I use the red green refactor method of TDD. So my refactoring is built into my development. For big refactorings like changing the underlying model or something similar I would get management buy in to spend the time first.
"post launch refactoring" has a hidden cost in regression testing and QA time that you are ignoring, plus it carries the opportunity cost of not working on reported bugs and new/requested features and changes. TANSTAAFL
If it is worth doing, it is worth making a task to get prioritized via your normal process and not as a special exception. You are part of a team, after all, and working on common goals and arbitrarily extending your schedule to accommodate fixing working code impacts them too.
So for a real answer: if you know that you'll want to refactor then schedule that time as part of the task. If you're doing scrum/agile then time box a clean-up task. If you're waterfall/spiral then make the refactor part of the process to code review and accept the modules.
...In which case you are not 100% done yet...
If code reviews and subsequent rework is part of your development lifecycle, again the feature is not done until all of these are finished.
It depends. If it means refactoring, it should be part of the original development task. If it means experimenting with a potentially better algorithm, it could be a separate task.
In brief, because code can be broken on many levels.
It is one thing that it works right now. It is an entirely different thing whether it is clean, extendable and maintainable in the long run.
For more detailed answers, see this thread.