Are there any more problems you want me to deal with?” Rand’s tone made it clear he meant problems they should have already solved. Rhuarc shook his head slightly; Berelain’s face reddened as well. “Good. Set a date for Mangin’s hanging—” If it hurts too much, Lews Therin laughed in a hoarse whisper, make it hurt someone else instead. His responsibility. His duty. He stiffened his back to keep that mountain from crushing him. “Hang him tomorrow. Tell him I said so.” He paused, glaring, then realized he was waiting for Lews Therin’s comment, not theirs. Waiting for a dead man’s voice, a dead madman. “I’m going to the school.”
Rhuarc pointed out that the Wise Ones were probably on their way from the tents, and Berelain that Tairen and Cairhienin nobles alike would be clamoring to know where she was hiding Rand, but he told them to tell the truth. And tell the lot of them not to follow him; he would return when he returned. The pair looked as if they had swallowed sour plums, but he snatched up the Dragon Scepter and left.
In the hallway, Jalani and a yellow-haired Red Shield not much older than she came smoothly to their feet, glancing at one another hastily. Otherwise the corridor was empty except for a few scurrying servants. One of each; it figured, though Rand wondered whether Urien had had to wrestle Sulin to make it so.
Motioning them to follow, he went straight down to the nearest stable, where the stalls were the same green marble as the columns that held the high ceiling. The head groom, a gnarled fellow with big ears, the Rising Sun of Cairhien worked on his short leather vest, was so shocked by Rand appearing with only two Aiel for escort that he kept staring at the stable doors for more and bowed so often between stares that Rand wondered whether he would ever get a horse. But once the man shouted “A horse for the Lord Dragon!” six stablemen leaped to prepare a tall, fiery-eyed bay gelding with a gold-fringed bridle and a gold-worked saddle atop a sky-blue saddlecloth fringed and embroidered with rising suns in gold.
As quickly as they moved, the big-eared head groom was gone by the time Rand swung into the saddle. To hunt for the coterie of followers the Dragon Reborn must have, possibly. Or to tell someone Rand was leaving the palace practically alone. Cairhien was like that. The sleek bay wanted to frisk, but while still trying to settle his dancing, Rand trotted him out of the palace grounds, past startled Cairhienin guards. He was not worried about assassins laying an ambush from the big-eared man’s warning; anyone who ambushed him would find they had come to the shearing without clippers. Any delay, though, and likely he would have nobles crowding around so thickly he could not leave without them. It felt good to be alone for a change.
He glanced at Jalani and the young Aielman trotting beside the bay. Dedric, he thought; a Jaern Rift Codara. Almost alone. He could feel Alanna still, and Lews Therin moaned in the far distance over his dead Ilyena. He could never be entirely alone. Maybe never again. What he had of solitude felt good, though, after so long.
Cairhien was a large city, its major streets wide enough to dwarf the people crowding them. Each street slashed arrow-straight through hills carved and stone-terraced until they seemed man-made, meeting every other street at a right angle. Throughout the city rose huge towers wrapped in wooden scaffolding that nearly hid elaborate square-arched buttresses, towers that seemed to touch the sky and meant to go higher. Twenty years since the fabled topless towers of Cairhien, a wonder of the world, had burned like torches during the Aiel War, and their rebuilding was still not done.
Making a way was not easy; the trotting did not last. Rand had grown accustomed to crowds opening up before his usual escort, yet with hundreds of cadin’sor-clad Aiel just within his sight among the slow-flowing throng, it was not quite the same, not for only two. Some of those Aiel recognized him, he thought, but they ignored him, not about to cause embarrassment by calling attention when the Car’a’carn wore a sword and, not as bad but hardly to be applauded, rode a horse. To Aiel, shame and embarrassment were far worse than pain, though of course ji’e’toh had to complicate things with degrees Rand understood only in part. Aviendha could explain it certainly; she seemed to want him to become Aiel.
Plenty of others jammed the streets too, Cairhienin in their usual drab clothing and also in the shabby bright colors of those who had lived in the Foregate before it burned, Tairens a head taller in the crowd, if not as tall as the Aiel. Ox-carts and horse-drawn wagons threaded through the throng, yielding way to closed lacquer carriages and sedan chairs, sometimes with a House banner. Hawkers cried wares from trays, and peddlers from pushcarts; musicians, tumblers and jugglers performed on street corners. Both were changes. Once Cairhien had been quiet, subdued, except in the Foregate. Some of that sobriety still held. The shops still had small signs, displaying no goods outside. And if the former Foregaters seemed raucous as ever, laughing loudly and shouting at one another, arguing right there in the street, the other Cairhienin still eyed them with prim distaste.
No one but Aiel recognized the bareheaded horseman in a silver-worked blue coat, though occasionally someone glanced twice at his saddlecloth. The Dragon Scepter was not well known here yet. Nobody gave way. Rand felt torn between impatience and the pleasure of not being the focus of every eye.
The school occupied a palace a mile from the Sun Palace, once the property of one Lord Barthanes, now dead and unlamented, a great heap of stone squares with sharply angular towers and severe balconies. The tall gates onto the main courtyard stood open, and when Rand rode in, he found a welcome.
Idrien Tarsin, who headed the school, stood on the broad steps at the far end of the courtyard, a stocky woman in a plain gray dress, straight-backed enough to seem a head taller than she was. She was not alone. Dozens and dozens of others crowded the stone steps, men and women in wool much more often than silk, frequently worn and seldom ornamented. Older folk, mainly. Idrien was not the only one with more gray than black in her hair, or no black at all, or no hair at all, though here and there a younger face peered eagerly at Rand. Younger meaning ten or fifteen years older than he.
They were the teachers, in a way, though this was not exactly a school. Pupils did come to learn—young men and women hung gaping out of every window around the courtyard, now—but for the most part Rand had wanted to gather knowledge in one place. Time and again he had heard how much had been lost in the War of the Hundred Years and the Trolloc Wars. How much more must have vanished in the Breaking of the World? If he was going to Break the World again, he meant to create repositories where knowledge could be preserved. Another school had already started in Tear, though just barely, and he had begun seeking a place in Caemlyn.
Nothing ever goes as you expect, Lews Therin murmured. Expect nothing, and you will not be surprised. Expect nothing. Hope for nothing. Nothing.
Suppressing the voice, Rand dismounted.
Idrien came to meet him with a curtsy. As usual, when she rose it was something of a shock to realize yet again that she was barely as tall as his chest. “Welcome to the School of Cairhien, my Lord Dragon.”  He had heard it harden, though, with students and teachers; Idrien held a tight rein on the school.
“How many spies do you have in the Sun Palace?” he asked mildly. She looked startled, perhaps that he would suggest such a thing, but more likely because the question was not proper manners in Cairhien.
“We have prepared a small display.” Well, he had not really expected an answer. She eyed the two Aiel like a woman eyeing two large and muddy dogs of uncertain temperament, but contented herself with a sniff. “If my Lord Dragon will follow me?”
He followed, frowning. A display of what?
The entry hall of the school was a vast chamber of polished dark gray columns and pale gray floor tiles, with a gray-veined marble balcony all the way around three spans up. Now it was largely filled with . . . contraptions. The teachers crowding in behind him went running to them. Rand stared, suddenly remembering what Berelain had said about the school making things. But what?
Idrien told him—after a fashion—leading him from one to the next, where men and women explained what they had created. He even understood some of it.
An array of screens and scrapers and crocks full of linen scraps produced finer paper than anyone made now, or so its inventor said. A great hulking shape of levers and huge flat plates was a printing press, much better than those already in use, according to its maker. Dedric showed considerable interest in that, until Jalani apparently decided he should be watching for somebody trying to attack the Car’a’carn: she trod hard on his foot, and he limped after Rand. There was a plow on wheels meant to turn six furrows at once—Rand could recognize that, at least; he thought it might work—and another thing with shafts for horses that was meant to harvest hay in place of men with scythes, and a new sort of loom that was easier to operate, so the fellow who made it said. There were painted wooden models of viaducts to carry water to places where the wells were going dry, of new drains and sewers for Cairhien, even a tabletop exhibit with tiny figures of men and carts, cranes and rollers, meant to show how roads could be built and paved as well as they had in years long gone.
Rand did not know whether any of it would work, but some looked worth trying. That plow, for instance, could be handy if Cairhien was ever to feed itself again. He would tell Idrien to build it. No, he would tell Berelain to tell her. Always follow lines of authority in public view, Moiraine had said, unless you mean to undercut someone and bring them down.
 Aside from looking glasses in various sizes—“Count the hairs in a man’s nose at a mile,” he said; that was how he talked—he had a lens as big across as his head, a sketch of the looking glass to hold it and more like it, a thing six paces long, and a scheme for looking at the stars, of all things. Well, Kin always wanted to look at things far off.
Idrien wore a look of quiet satisfaction while Rand studied Master Tovere’s sketch. She was not much for anything but the practical. During the siege of Cairhien, she herself had built a huge crossbow, all levers and pulleys, that hurled a small spear a full mile hard enough to drive through a man. Had she her way, there would be no time wasted on anything not real and solid.
“Build it,” Rand told Kin. Maybe it was of no real use, not like the plow, but he liked Tovere. Idrien sighed and shook her head. Tovere beamed. “And I’m giving you a prize of a hundred gold crowns. This looks interesting.” That produced a buzz, and it was close whether Idrien’s jaw or Tovere’s dropped farther.
Other things in the hall made Tovere seem as levelheaded as the would-be road-builder. The round-faced fellow who did something with cow dung that ended with a bluish flame burning at the end of a brass tube; even he did not seem to know what it was for. The lanky young woman whose display was mainly a shell of paper moored by strings and kept aloft by the heat rising from a small fire in a brazier. She mumbled something about flying—he was sure that was what she said—and birds’ wings being curved—she had sketches of birds, and of what seemed to be wooden birds—but she was so tongue-tied meeting the Dragon Reborn that he could not understand another word, and Idrien certainly could not explain what it was about.
And then there was the balding man with an assemblage of brass tubes and cylinders, rods and wheels, all covering a heavy wooden table freshly gouged and scraped, some gouges nearly deep enough to pierce the tabletop. For some reason half the man’s face and one of his hands were swathed in bandages. As soon as Rand appeared in the entry hall, he had begun anxiously building a fire under one of the cylinders. When Rand and Idrien stopped in front of him, he moved a lever and smiled proudly.
The contraption began to quiver, steam hissing out from two or three places. The hiss grew to a shriek, and the thing began trembling. It groaned ominously. The shriek became ear-piercing. It shook so hard the table moved. The balding man threw himself at the table, fumbling a plug loose on the largest cylinder. Steam rushed out in a cloud, and the thing went still. Sucking burned fingers, the man managed a weak grin.
“Very nice brasswork,” Rand said before letting Idrien lead him away. “What was that?” he asked quietly when they were out of earshot.
She shrugged. “Mervin will not tell anyone. Sometimes there are bangs in his rooms loud enough to make doors tremble, and he has scalded himself six times so far, but he claims it will bring a new Age when he makes it work.” She glanced at Rand uneasily.
“Mervin is welcome to bring it if he can,” he told her dryly. Maybe the thing was supposed to make music? All those shrieks? “I don’t see Herid. Did he forget to come down?”
Idrien sighed again. Herid Fel was an Andoran who somehow had ended up reading in the Royal Library here—a student of history and philosophy, he called himself—and hardly the sort to endear himself to her. “My Lord Dragon, he never comes out of his study except to go to the Library.”
 Some might be, for all he knew. Then he was able to slip off with Jalani and Dedric. And Lews Therin, and Alanna. They left behind a pleased babble. He wondered whether any besides Idrien had ever thought of making a weapon.
Herid Fel’s study lay on an upper floor, where the view was of nothing much but the dark tile roofs of the school and one square, stepped tower that blocked off anything else. Herid claimed he never looked out of the windows anyway.
“You can wait out here,” Rand said on reaching the narrow door—the room inside was narrow, too—and was surprised when Jalani and Dedric agreed right away.
A number of small things suddenly came together. Jalani had not given his sword one disapproving look, something she made a point of, since he came out of the meeting with Rhuarc and Berelain. Neither she nor Dedric had so much as glanced at the horse in the stable, or made a disparaging remark about how his own legs should be good enough for him, another thing she did regularly.
As if for confirmation, as Rand turned to the door, Jalani briefly eyed Dedric up and down. Briefly, but with decidedly open interest and a smile. Dedric ignored her so intently he might as well have stared. That was the Aiel way, pretending not to understand until she made herself clearer. She would have done the same had he begun the looking.
“Enjoy yourselves,” Rand said over his shoulder, producing two startled stares, and went inside.
The small room was all books and scrolls and sheafs of paper, or so it appeared. Crowded shelves walled the room to the ceiling except for the doorway and two open windows. Books and papers covered the table that took up most of the floor, lay in a jumble on the extra chair, even here and there on the little remaining of the floor. Herid Fel himself was a stout man who looked as if he had forgotten to brush his thin gray hair this morning. The pipe clenched in his teeth was unlit, and pipe ash sprinkled the front of his rumpled brown coat.
He blinked at Rand for a moment, then said, “Ah. Yes. Of course. I was about to . . . ” He frowned at the book in his hands, then sat down behind the table and fingered through some loose sheets of paper in front of him, muttering quietly. Turning to the title page of the book, he scratched his head. Finally he looked back at Rand, and blinked in surprise again. “Oh, yes. What was it you wanted to talk about?”
Rand cleared the second chair, putting the books and papers on the floor, propped the Dragon Scepter on the pile and sat down. He had tried talking with others here, philosophers and historians, learned women and scholars, and it was like trying to pin down an Aes Sedai. They were very certain of what they were certain of, and about the rest they drowned you in words that could mean anything. They either grew angry when pressed—they seemed to think he was doubting their knowledge, apparently a deep sin—or they increased the torrent of words till he did not know what half of them meant, or they became obsequious, trying to find out what he wanted to hear so they could tell it to him. Herid was different. One of the things that always seemed to slip his mind was that Rand was the Dragon Reborn, which suited Rand very well. “What do you know about Aes Sedai and Warders, Herid? About the bond?”
“Warders? Bond? As much as anybody not Aes Sedai, I suppose. Which isn’t saying much, mind.” Herid sucked at his pipe, not seeming to realize it had gone out. “What did you want to know?”
“Can it be broken?”
“Broken? Oh, no. I don’t think so. Unless you mean when the Warder or the Aes Sedai dies. That breaks it. I think. I remember hearing something about the bond once, but I can’t remember . . . ” Catching sight of a sheaf of notes on his table, Herid drew it to him with his fingertips and began reading, frowning and shaking his head. The notes looked to be in his own hand, but he did not seem to agree with them anymore.
Rand sighed; he almost thought if he turned his head quickly enough, he would see Alanna’s hand poised over him. “What about the question I posed you last time? Herid? Herid?”
The stout man’s head jerked up. “Oh. Yes. Ah, question. Last time. Tarmon Gai’don. Well, I don’t know what it will be like. Trollocs, I suppose? Dreadlords? Yes. Dreadlords. But I have been thinking. It can’t be the Last Battle. I don’t think it can. Maybe every Age has a Last Battle. Or most of them.” Suddenly he frowned down his nose at the pipe in his teeth, and began rummaging across the table. “I have a tinderbox here somewhere.”
“What do you mean it can’t be the Last Battle?” Rand tried to keep his voice smooth. Herid always came to the point; you just had to prod him toward it.
“What? Yes, exactly the point. It can’t be the Last Battle. Even if the Dragon Reborn seals the Dark One’s prison again as well as the Creator made it. Which I don’t think he can do.” He leaned forward and lowered his voice conspiratorially. “He isn’t the Creator, you know, whatever they say in the streets. Still, it has to be sealed up again by somebody. The Wheel, you see.”
“I don’t see . . . ” Rand trailed off.
“Yes, you do. You’d make a good student.” Snatching his pipe out, Herid drew a circle in the air with the stem. “The Wheel of Time. Ages come and go and come again as the Wheel turns. All the catechism.” Suddenly he stabbed a point on that imaginary wheel. “Here the Dark One’s prison is whole. Here, they drilled a hole in it, and sealed it up again.” He moved the bit of the pipe along the arc he had drawn. “Here we are. The seal’s weakening. But that doesn’t matter, of course.” The pipestem completed the circle. “When the Wheel turns back to here, back to where they drilled the hole in the first place, the Dark One’s prison has to be whole again.”
“Why? Maybe the next time they’ll drill through the patch. Maybe that’s how they could do it the last time—drill into what the Creator made, I mean—maybe they drilled the Bore through a patch and we just don’t know.”
Herid shook his head. For a moment he stared at his pipe, once more realizing it was unlit, and Rand thought he might have to recall him again, but instead Herid blinked and went on. “Someone had to make it sometime. For the first time, that is. Unless you think the Creator made the Dark One’s prison with a hole and patch to begin.” His eyebrows waggled at the suggestion. “No, it was whole in the beginning, and I think it will be whole again when the Third Age comes once more. Hmmm. I wonder if they called it the Third Age?” He hastily dipped a pen and scribbled a note in the margins of an open book. “Umph. No matter now. I’m not saying the Dragon Reborn will be the one to make it whole, not in this Age necessarily anyway, but it must be so before the Third Age comes again, and enough time passed since it was made whole—an Age, at least—that no one remembers the Dark One or his prison. No one remembers. Um. I wonder . . . ” He peered at his notes and scratched his head, then seemed startled to find he used the hand holding the pen. There was a smudge of ink in his hair. “Any Age where seals weaken must remember the Dark One eventually, because they will have to face him and wall him up again.” Sticking his pipe back between his teeth, he tried to make another note without dipping the pen.
“Unless the Dark One breaks free,” Rand said quietly. “To break the Wheel of Time, and remake Time and the world in his own image.”
“There is that.” Herid shrugged, frowning at the pen. Finally he thought of the inkpot. “I don’t suppose there’s much you or I can do about it.  I don’t suppose Tarmon Gai’don will happen tomorrow, and it would be as good a use of your time as—”
“Is there any reason you can think of to break the seals?”
Herid’s eyebrows shot up. “Break the seals? Break the seals? Why would anyone but a madman want to do that? Can they even be broken? I seem to remember reading somewhere they can’t, but I don’t recall now that it said why. What made you think of a thing like that?”
“I don’t know,” Rand sighed.  Break the seals. Break the seals, and end it.
Fanning herself idly with a corner of her shawl, Egwene peered both ways down the crossing hallway, hoping she had not gotten lost again. She was very much afraid she had, and not pleased if it was so. The Sun Palace had miles of corridor, none much cooler than outside, and she had spent little time in them to learn her way.
There were Maidens everywhere in twos and threes—far more than Rand normally brought with him; certainly far more than usual when he was not there. They simply appeared to be strolling, but to her something about them seemed . . . furtive. A number knew her by sight, and she might have expected a friendly word—the Maidens especially seemed to have decided that being a pupil of the Wise Ones outweighed being Aes Sedai, as they thought she was, to the point that she was not Aes Sedai any longer—but when they saw her, they looked as startled as an Aiel was likely to look. Acknowledging nods came a beat late, and they hurried on without speaking. It was not behavior conducive to asking directions.
Instead she frowned at a sweaty-faced servant with thin blue and gold stripes on his cuffs, wondering whether he knew how to get where she wanted to go from here. The difficulty was, she was not exactly sure where it was she did want to go. Unfortunately, the fellow was plainly on edge with so many Aiel about. Seeing an Aiel woman frowning at him—they never seemed to notice her dark eyes, which certainly no Aiel had—and his head probably full of tales about the Maidens, he turned and ran as hard as he could.
She sniffed irritably. She did not really need directions anyway. Sooner or later she had to come on something she recognized. Certainly no point in going back the way she had come, but which of the other three? Choosing one, she strode off firmly, and even some of the Maidens stepped out of her way.
In truth, she was feeling a bit grumpy. Seeing Aviendha again after all this time would have been wonderful, if the woman had not simply nodded to her coolly and ducked into a private conference in Amys’ tent. Private indeed, Egwene learned when she tried to follow.
You were not summoned.   And eat something. A woman is not meant to look like a reed.
Bair and Melaine had come hurrying, summoned by gai’shain, but Egwene was excluded. It had helped a little seeing a string of Wise Ones turned away too, though only a little. After all, she was Aviendha’s friend, and if she was in some sort of trouble, Egwene wanted to help.
“Why are you here?” Sorilea’s voice demanded behind her.
Egwene was proud of herself. She turned calmly to face the Wise One of Shende Hold.  She was all sinew and bone, and though she could channel, she had less strength in the Power than most novices Egwene had met. In fact, in the Tower, she certainly would never have gone beyond novice before being sent away. Of course, channeling did not really count for much among Wise Ones. Whatever the mysterious rules governing Wise Ones, when Sorilea was about, leadership always settled on her. Egwene thought it was pure strength of will.
 That was a relief; it was Sorilea’s normal way of looking at everyone. Had she a bone to pick, the walls would have been crumbling wherever she looked and tapestries catching fire. Well, that was how it seemed, anyway.
“I’ve come to see Rand,” Egwene said. “Walking in from the tents seemed as good exercise as any.” Certainly better than walking five or six times briskly around the city walls, the usual Aiel notion of light exercise. She hoped Sorilea did not ask why. She truly did not like lying to any of the Wise Ones.
Sorilea stared at her a moment as if she had sniffed something hidden, then hitched her shawl up on narrow shoulders and said, “He is not here. He has gone to his school. Berelain Paeron suggests it would not be wise to follow him, and I agree.”
Keeping her face smooth was an effort for Egwene. That the Wise Ones would take to Berelain had been the last thing she expected. They treated her as a woman of sense and respect, which made no sense at all to Egwene, and not because Rand had given her authority. They cared not a twig for any wetlander authority. It seemed ridiculous. The Mayener woman flaunted herself in scandalous clothes and flirted outrageously—when she did not do more than flirt, as Egwene darkly believed she did. Not at all the sort of woman for Amys to smile on like a favorite daughter. Or Sorilea.
Unbidden thoughts of Gawyn floated up in her head. It had only been a dream, and his dream at that. Certainly nothing like what Berelain did.
“When a young woman’s cheeks redden for no apparent reason,” Sorilea said, “there is usually a man involved. What man has attracted your interest? Can we expect to see you lay a bridal wreath at his feet soon?”
“Aes Sedai seldom marry,” Egwene told her coolly.
The leather-faced woman’s snort sounded like cloth ripping. The Maidens and the Wise Ones, indeed all the Aiel, might have decided she was not Aes Sedai so long as she studied with Amys and the others, but Sorilea took it further. She seemed to think Egwene had become Aiel. Added to which, there was nowhere Sorilea did not think she had a right to stick a finger. “You will, girl. You are not one to become Far Dareis Mai and think men are a sport like hunting, if that. Those hips were made for babies, and you will have them.”
“Will you tell me where I can wait for Rand?” Egwene asked, more faintly than she would have liked. Sorilea was not a dreamwalker, able to interpret dreams, and she certainly had none of the Foretelling, but she could be so definite that what she said seemed inevitable. Gawyn’s babies. Light, how could she have Gawyn’s babies? In truth, Aes Sedai almost never married. Rare was the man who wanted to marry a woman who, with the Power, could handle him like a child if she chose.
“This way,” Sorilea said. “Is it Sanduin, that strapping True Blood I saw around Amys’ tent yesterday? That scar makes the rest of his face more handsome . . . ”
Sorilea continued to come up with names as she led Egwene through the palace, always watching from the corner of a shrewd eye for any reaction. She also did her best to list each man’s charms, and since this included describing what he looked like without clothes—Aiel men and women shared the same sweat tents—she certainly got enough blushes.
By the time they reached the rooms where Rand would be spending the night, Egwene was more than glad to offer hasty thanks and firmly shut the sitting room door on her. Luckily, the Wise One must have had business of her own to see to, or she might well have pushed her way in.
Drawing a deep breath, Egwene began smoothing her skirts and adjusting her shawl. They did not need it, but she felt as if she had been tumbled downhill. The woman more than liked to play matchmaker. She was capable of fashioning the bridal wreath for a woman, dragging her to lay it at the feet of the man Sorilea had chosen, and twisting his arm until he picked it up. Well, not exactly dragging and arm-twisting, but it came to the same thing. Of course, Sorilea would not take it that far with her. The thought made her giggle. After all, Sorilea did not really think she had become Aiel; she knew Egwene was Aes Sedai, or thought she was anyway. No, of course there was no reason to worry over that!
With her hands on the folded gray scarf that held her hair back, she froze at the sound of soft footsteps in the bedchamber. If Rand could leap about from Caemlyn to Cairhien, perhaps he had leaped straight to his bedchamber. And perhaps someone—or something—was waiting for him. She embraced saidar and wove several nasty things, ready to use. A gai’shain woman came out, arms full of bundled sheets, and gave a start at the sight of her. Egwene released saidar and hoped she was not blushing again.
Niella looked enough like Aviendha to startle at first glance in that deep-cowled white robe. Until you realized you had to add six or seven years to a face that was perhaps not quite so tanned, perhaps a little plumper. Aviendha’s sister had never been a Maiden of the Spear; a weaver instead, she had completed well over half her year and a day.
Egwene offered no greeting; it would only embarrass Niella. “Do you expect Rand soon?” she asked.
“The Car’a’carn will come when he comes,” Niella replied, eyes meekly downcast. That truly appeared odd; Aviendha’s face, even plumper, did not go well with meekness. “It is for us to be ready when he comes.”
“Niella, do you have any idea why Aviendha would need to closet herself with Amys and Bair and Melaine?” It certainly had nothing to do with dreamwalking; Sorilea had as much ability there as Aviendha.
“She is here? No, I know no reason.” But Niella’s blue-green eyes narrowed slightly as soon as she spoke.
“You do know something,” Egwene insisted. She might as well take advantage of gai’shain obedience. “Tell me what it is, Niella.”
“I know that Aviendha will stripe me till I cannot sit if the Car’a’carn finds me standing here with dirty bedding,” Niella said ruefully. Egwene did not know whether ji’e’toh was involved somehow, yet when they were together, Aviendha held her sister twice as strictly to account as any other gai’shain.
Niella’s robe trailed across the patterned carpet as she glided hurriedly toward the door, but Egwene caught her sleeve. “When your time is up, will you put off the white?”
It was not a proper question, and meekness vanished in pride enough for any Maiden. “To do otherwise mocks ji’e’toh,” Niella said stiffly. Abruptly a slight smile flickered on her lips. “Besides, my husband would come looking for me, and he would not be pleased.” The mild mask returned; her eyes turned down. “May I go now? If Aviendha is here, I would not meet her can I avoid it, and she will come to these chambers.”
Egwene let her go. She had had no right to ask anyway; speaking of a gai’shain’s life before the white, or after, was shaming. She felt a little ashamed herself, though of course she did not really try to follow ji’e’toh. Only enough to be polite.
Alone, she settled into a severely carved and gilded armchair, finding it strangely uncomfortable after so long sitting cross-legged on cushions or the ground. Tucking her legs beneath her, she wondered what Aviendha was discussing with Amys and the other two. Rand, almost certainly. He always concerned the Wise Ones. They did not care about the wetlander Prophecies of the Dragon, but they knew the Prophecy of Rhuidean back to front. When he destroyed the Aiel, as that prophecy said he would, “a remnant of a remnant” would be saved, and they intended to see that the remnant was as large as possible.
That was why they made Aviendha stay close to him. Too close for decency. If she went into the bedchamber, she was sure she would find a pallet made up on the floor for Aviendha. Still, Aiel saw such things differently. The Wise Ones meant Aviendha to teach him Aiel ways and customs, to remind him that his blood was Aiel if not his upbringing. Apparently the Wise Ones thought that needed every waking hour, and considering what they faced, she could not fault them entirely. Not entirely. Just the same, it was not decent, making a woman sleep in the same room with a man.
Still, she could do nothing about Aviendha’s problem, especially when Aviendha did not seem to see the problem. Leaning on her elbow, Egwene tried to think of how she was going to approach Rand. Her mind went round and round, but she had not settled on anything by the time he entered, murmuring something to two Aiel in the hallway before shutting the door.
Egwene bounded to her feet. “Rand, you have to help me with the Wise Ones; they’ll listen to you,” she burst out before she could stop herself. That was not what she had intended at all.
“It is good to see you again too,” he said, smiling. He was carrying that length of Seanchan spear, carved with Dragons since she saw it last. She wished she knew where he had gotten the thing; anything Seanchan made her skin crawl. “I am well, thank you, Egwene. And you?  He looked so tired. And hard, hard enough to make that smile appear odd. He seemed harder every time she saw him.
“You needn’t think you’re amusing,” she glowered. Best to go on as she had begun. Better than backing and filling, giving him more reason to grin. “Will you help me?”
“How?” Making himself at home—well, they were his rooms—he tossed the tasseled spearhead on a small table with leopard-carved legs and shed his sword belt and coat. Somehow he was not sweating any more than the Aiel did.   He pulled one of the gilded chairs around to face her and sprawled in it, booted feet stretched in front of him. He managed to do even that with an air of arrogance. He definitely had too many people bowing to him.
“You do talk nonsense sometimes,” she muttered. For some reason, having no more time to think concentrated her thoughts. Adjusting her shawl carefully, she placed herself in front of him. “I know that you would like to hear from Elayne again.” Why did his face go all sad like that, and at the same time winter cold? Likely because he had not heard from Elayne in so long. “I doubt Sheriam has been giving the Wise Ones very many messages from her for you.” None, so far as she knew, though he had seldom been in Cairhien to receive any. “I’m the one Elayne will trust with that sort of missive. I can bring them to you, if you convince Amys that I’m strong enough to . . . to return to my studies.”
She wished she had not faltered, but he already knew too much about dreamwalking, if not Tel’aran’rhiod. Almost everything about dreamwalking but the name was a close secret among the Wise Ones, particularly those who could dreamwalk. She had no right to give away their secrets.
“Will you tell me where Elayne is?” He might have been asking for a cup of tea.
She hesitated, but the agreement between her, Nynaeve and Elayne—Light, how long ago had they made it?—that agreement held. He was no longer the boy she had grown up with.  If Aes Sedai and Wise Ones struck sparks, Aes Sedai and he would strike a conflagration. There had to be a buffer between the two, and the only buffers available were the three of them. It had to be done, but she hoped they did not get burned up doing it. “I can’t tell you that, Rand. I have no right. It isn’t mine to tell.” And that was the truth, too. For that matter, it was not as if she could tell him where this Salidar was, beyond Altara, somewhere along the River Eldar.
He leaned forward intently. “I know she’s with Aes Sedai. You told me those Aes Sedai support me, or might. Are they afraid of me? I will take oath to stay away from them, if they are. Egwene, I mean to give Elayne the Lion Throne and the Sun Throne. She has claim to both; Cairhien will accept her as quickly as Andor does. I need her, Egwene.”
Egwene opened her mouth—and realized that she was about to tell him all she knew about Salidar. Barely in time she clamped her teeth shut so hard her jaws ached, and opened herself to saidar. The sweet feel of life, so strong it overwhelmed everything else, seemed to help; slowly the urge to talk began to ebb.
He sat back with a sigh, and she stared at him wide-eyed. It was one thing to know he was the strongest ta’veren since Artur Hawkwing, but quite something else to become caught up in it herself. It was all she could do not to hug herself and shiver.
“You won’t tell me,” he said. Not a question. Briskly he rubbed his forearms through his shirtsleeves, reminding her that she held saidar; close like this, he would be feeling it as a faint tingle. “Do you think I meant to force it out of you?” he snapped, suddenly angry. “Am I such a monster now that you need the Power to protect yourself from me?”
“I don’t need anything to protect me from you,” she said as calmly as she could. Her stomach was still turning over slowly. He was Rand, and he was a man who could channel. A part of her wanted to gibber and wail. She was ashamed of it, but that did not make it go away. Putting away saidar, she regretted a tinge of reluctance. Yet it did not matter; if it came to that sort of struggle, unless she managed to shield him he would handle her as easily as if they arm-wrestled. “Rand, I am sorry I can’t help you, but I cannot. Even so, I ask you again to help me. You know it would be helping yourself.”
His anger was swallowed by a maddening grin; it was frightening how quickly that could happen with him. “ ‘A cat for a hat, or a hat for a cat,’ ” he quoted.
But nothing for nothing, she finished mentally. She had heard Taren Ferry folk say that when she was a girl. “You put your cat in your hat and stuff it down your breeches, Rand al’Thor,” she told him coldly. She managed not to slam the door on her way out, but it was a near thing.
Striding away, she wondered what she was going to do. Somehow she had to convince the Wise Ones to let her back into Tel’aran’rhiod—legally, so to speak. Sooner or later he was going to encounter the Aes Sedai of Salidar, and it would help so much if she could talk to Elayne or Nynaeve again first. She was a little surprised that Salidar had not approached him already; what was holding Sheriam and the rest back? Nothing she could do about it, and they probably knew better than she.
One thing she was eager to tell Elayne. Rand needed her. He sounded as if he meant that more than anything he had ever said in his life. That should set to rest all her worries about whether he still loved her. No man could say he needed you that way unless he loved you.
For a few moments Rand sat staring at the door after it closed behind Egwene. She had changed so much from the girl he grew up with. In those Aiel clothes she managed a good imitation of a Wise One—except for the height, anyway; a short Wise One, with big dark eyes—but then, Egwene always did everything with her whole heart. She had stayed as cool as any Aes Sedai, seizing saidar when she thought he was threatening her. That was what he had to remember. Whatever clothes she wore, she wanted to be Aes Sedai, and she would keep Aes Sedai secrets even after he made it clear that he needed Elayne to insure peace in two nations. He had to think of her as Aes Sedai. It was saddening.
Wearily he got to his feet and donned his coat again. There were still the Cairhienin nobles to see, Colavaere and Maringil, Dobraine and the rest. And the Tairens; Meilan and Aracome and that lot would twitch if he gave the Cairhienin a moment more than they got. And the Wise Ones would want their turn at him, and Timolan and the rest of the clan chiefs here he had not met with yet today. Why had he ever wanted to leave Caemlyn? Well, talking with Herid had been pleasant; the questions he brought up were not, but it was nice to talk to someone who never remembered he was the Dragon Reborn. And he had found a little time without a coterie of Aiel surrounding him; he was going to find more of that.
He caught sight of himself in a gilt-framed mirror. “At least you didn’t let her see you were tired,” he told his reflection. That had been one of Moiraine’s more succinct bits of advice. Never let them see you weaken. He just had to become used to thinking of Egwene as one of them.
Apparently squatting at her ease in the garden below Rand al’Thor’s rooms, Sulin tossed a small knife into the dirt, seemingly amusing herself with a game of flip. A rock owl’s cry from one of the windows brought her to her feet with an oath, slipping the knife behind her belt. Rand al’Thor had left his rooms again. Keeping watch over him this way was not going to work. If she had Enaila or Somara here, she would set them on him. Normally she tried to protect him from that sort of nonsense as she would a first-brother.
Trotting to the nearest doorway, she joined three more Maidens—none had come with her—and began to search the warren of corridors while trying to appear just to be walking. Whatever the Car’a’carn wanted, nothing must happen to the only son of a Maiden ever to come back to them.


T-Mobile just told some customers that there was a data breach of their personal information. Here's how to check if you're affected.
by Aaron Holmes- T-Mobile recently suffered a data breach where hackers gained access to some users' personal information, the company confirmed Friday.
- Stolen data included users' names, addresses, phone numbers, and plan details. No financial information or social security numbers were compromised.
- The company did not clarify the extent of the breach or when it happened.
- Visit Business Insider's homepage for more stories.
T-Mobile suffered a data breach earlier this month in which hackers accessed people's personal information, the company confirmed Friday.
A malicious third party gained access to users' account information, including names, addresses, phone numbers, account numbers, and the type of cell phone plan they're on, according to T-Mobile's announcement.
Financial information like credit card numbers were not compromised, and neither were social security number, the company said.
A T-Mobile spokesperson told Business Insider that the breach affected T-Mobile prepaid accounts, and less than 1.5% of T-Mobile customers were impacted.
Am I affected by the T-Mobile data breach?
Only T-Mobile customers were affected, so if you use a different carrier, you're safe.
FCC rules require that T-Mobile notify people who were affected by the breach, and T-Mobile said it will notify all affected users "shortly." However, just because you didn't receive a notification doesn't mean you're safe — T-Mobile notes that it may not have notified you if it doesn't have your up-to-date contact information.
If you're unsure whether you were affected, you can call 1-800-T-MOBILE to reach customer service.


|
My Project
|
Public Member Functions | |
| def | __init__ (self, target, makefile, rule, deps, targetstack, avoidremakeloop) |
| def | resolvedeps (self, serial, cb) |
| def | runcommands (self, indent, cb) |
Public Attributes | |
| target | |
| makefile | |
| rule | |
| deps | |
| targetstack | |
| avoidremakeloop | |
| running | |
| error | |
| depsremaining | |
| remake | |
| resolvecb | |
| didanything | |
| resolvelist | |
| runcb | |
| commands | |


About me
My name is Rick Picolli, 30 years old, and I am a psychologist.
I always thought that I wanted to help people and by doing that, I thought that psychology was the best way to achieve this and I really liked studying people, but when I started working as a psychologist treating people in a clinic or when I started work with human resources, I discovered that this wasn’t something that makes me happy in my daily life, so I starting thinking about what could make me happy and I discover coding.
I really like the idea of creating something from nothing and this creation could help or make difference in people’s life, so that is why I became so passione about it.
I didn't have any experience with programming before, so it has been quite a challenge for me, but I know that with my hard work, I can do it.


Live Server
Web Extension
Live Reload
I don't want proxy setup
Actual Server Address
Live Server Address
Install Live Server
Apply


On the changing notion of code readability
Author: Kasper B. Graversen
[Introduction] [All categories] [All articles] [Edit article ]
Code Readability
We investigate the divide of opinion regarding what constitutes readable code - experience (or lack thereof) and understanding of code (and lack thereof). We show that there are multiple layers of complexity when it comes to issues of readability.
Please show your support by sharing and voting:
Table of Content
- 1. Introduction
- 2. The psychology of less experienced developers
- 3. Investigating "surface complexity"
- 4. Investigating "underlying complexity"
- 4.1 The architectural simplification that never became
- 5. Conclusions
1. Introduction
As made painfully evident by the show "X-factor", the less you know about a subject, the smarter you think you are on that subject. Likewise, discussions on program readability and best practices easily descents into a discussion on personal preferences and habits. Of particular difficulty is the problem that the notion of what is readable code changes with the experience you have with programming. Complexity comes in many forms. Inspired by KhyronVorrac comments on Reddit, perhaps it is helpful to differentiate between surface complexity and underlying complexity when discussing the readability of code.
Surface complexity: The complexity you immediately see when reading code. It is hard to exactly pin point, but includes code formatting, language features, and certain form of documentation.
Underlying complexity: The complexity you face after you have penetrated, or overcome (possibly come to accept) the surface complexities. It is the complexities concerning implementation idioms such as design patterns and best practices.
This is not a complete definition; but it will serve for my current purposes.
Often people focus a lot on the surface complexity. Possibly this is because it is the first obstacle when having to read. In similar vein to how wrong it feels when a scientific paper is typeset using the Comic sans font. But most of the surface complexity can be eradicated with knowing the language you are reading, and by being forgiving towards e.g. a different indent size than what you are used to. Or the fact that method names are always in lower case (Java) or Upper case (C#).
In this article we will look into how a beginners mindset changes with experience, and elaborate on the two kinds of complexities revolving readability issues.
2. The psychology of less experienced developers
Programming is a craft just as carpentry or alchemy. It requires a mixture of precision and good ideas. As with any craft, programming needs be taught as a combination of theory and field work. Inexperienced programmers have a tendency to use a programming style that is not well suited for larger software projects, and, at times, make the more experienced programmers spend wasteful time going through the code.
Not surprisingly, this is part of learning any craft and if I were to do all the plumbing helping out a plumber, I'm sure he would tear his hair out in frustration over my approach.
Unfortunately, inexperienced programmers easily fail to understand good code when they face it. A novice or otherwise incompetent programmer, will look at perfectly good code and cry out in animated vociferation "This code is impenetrable! Who wrote this sh!!t".
You can not throw good code at them and expect it to rub of.
Recently, I overheard a conversation between technical inept people on the subject of code readability. I cringed so hard, my toe nails made bleeding wounds under my feet. I was wearing crutches for a week. Mentally, I was scarred for life.
They discussed a technical presentation where a piece of code, best described as "old legacy code", was undergoing a series of refactorings: A long method was made more readable and testable by separating it into several methods and classes. But to these people, it was utter hell. Even years after the presentation, they laugh in bemusement, ridiculing how the guy presenting "progress" was in fact, to them, making the code harder to understand. To them the initial code was like an open book; a continuous stream of code, that could be read in sequence. The refactored version, on the other hand, was a mess of isolated islands, sprinkled with method calls disrupting the flow of reading, requiring to "jump to definition" to continue on.
With university degrees in mathematics and economics, these people are not dumb. They're just not skilled programmers. That being said, if you have a small program (say below 1000 lines) it may be so small, that you are finding no difference in readability between a bite-sized separated version and one written as one long method. From a testability perspective, however, having to test the 1000 line method I am sure, will prove challenging.
3. Investigating "surface complexity"
Just to repeat. With surface complexity we mean the complexity you immediately see when reading code. It is hard to exactly pin point, but includes code formatting, language features, and certain form of documentation.
3.1 The notion of readability changes with growing experience
As previously stated, programming is a craft and mastery of which, is achieved through reading and writing programs. In my teaching career both at university teaching programming courses, and in industry, again and again I've made the same observation: When students' experience grow, their notion of readability changes. Through a series of examples, we show how the transition in thinking shifts when programmers become more and more experienced.
Given some field txtName
on a Gui we have to figure out if anything has been entered. Having learned to extract into separate methods, lines that relate to the same thing, the less experienced programmer may develop "version A" to perform said check.
Here we look at surface complexity
Version A
bool CheckName()
{
string text;
bool returnValue;
text = txtName.getText();
if (text.equals("") == true)
{
returnValue = true;
}
else
{
returnValue = false;
}
return returnValue;
}
With a bit of experience you can tell that this code is too verbose. It actually hurt readability as the intent of the code is blurred by the trivial assignments. The fact that it has been extracted out, though makes it bearable. This is with the caveat that if all code is as verbose as this, no amount of "extract method" can save you. Finally, you would probably register CheckName()
as really undescriptive. More on this later.
Version B
Students are quick to realize that we don't need the variable text
, and they learn we never write == true
bool CheckName()
{
bool returnValue;
returnValue = txtName.getText().equals("");
if (returnValue)
{
return true;
}
else
{
return false;
}
}
A much shorter version, the returnValue
variable is still a thorn in the eye and is reminiscent of the single-entry-single-return structure.
Version C
bool CheckName()
{
if (txtName.getText().equals(""))
{
return true;
}
else
{
return false;
}
}
Now we are getting somewhere. The intent of the code is prevailing.
Version D
Now is the time to start dusting off the final trivialities. We don't need else
since return false
can only be reached if return true
hasn't been executed.
bool CheckName()
{
if (txtName.getText().equals(""))
{
return true;
}
return false;
}
Version E
An alternative implementation can be achieved using the ternary operator.
bool CheckName()
{
return (txtName.getText().equals("") ? true : false);
}
Version F
We now realize that, when the expression is true we return true, otherwise false. We can thus in-line this directly in by simply returning the result of the expression.
bool CheckName()
{
return txtName.getText() == "";
}
Final version
At this stage, we must ponder whether we need this code to reside inside a methods at all. There are good arguments for concealing code, even tiny chunks of code inside a method, but alternatively we can just use the code as:
if (txtName.getText() == "")
...
It is hard define when, a method containing one line of code is good practice. Often I do it when the line I am extracting is not readily understandable, or maybe it is a central business requirement. When I feel the need to document a line of code in a method, I consider if I instead should extract it into a method and have the method name serve as documentation. Assume a business requirement that all SKU (Stock keeping unit number) is to start with 1
. Rather than in-line checking this in the code, I could be tempted to extracting this into a IsValidSKU()
method. It is a much more compelling thought, than using the the totally generic CheckName()
naming.
Conclusions
Up until version E of the code, we find typical beginners code. Beginners do not write verbose code out of malice. They do it to help themselves. To make the code readable to them.
Sure the seasoned programmer can read the code in the version A form. But as shown, it is utterly verbose and would end up choking the overall readability of any larger code base.
3.2 The veterans perspective
Certainly, it is not easy to be a novice programmer. There are so much to learn. object-oriented programming, parameter propagation, IOC, error handling, databases, layered architecture, unit testing. I could go on. I sometimes lose my breath thinking about it.
But as a veteran coder, life is not always easy either. Sometimes you just look at code and immediately hate it. There are many factors in making code unbearable. Here is a short list that popped into my mind as I typed away. The list is by no means closed. With enough time we could write a 100-page list I am sure. Feel free to edit and extend.
- [ ] Verbose ornamented code
- [ ] Over commenting the obvious, leaving the relevant stuff undocumented
- [ ] Absence of obvious language features (e.g.
catch
orfinally
) - [ ] Misuse of language features such as
ref
or inheritance - [ ] Inconsistent formatting of code
- [ ] Long methods, doing too many things
- [ ] Untested or untestable code
- [ ] Bad naming of variables, or worse, reuse of badly named variables
- [ ] Leaving TODO's in the code when you say you are done
- [ ] Printing to the console (both business- and test-code)
- [ ] Erroneous error handling
- [ ] Moderate to heavy code duplication
Looking at this list in retrospective, it is clear that it revolves around surface complexities.
The other day I was visiting a cemetery for code. http://codebituary.com/ which is a resting place for start-up code that never made it. Through there, I clicked a random project which led to Github, and from there I clicked the first file name I found to be interesting. Take my check list and see how well I would score the below code.
//offline crawl
public static void crawl(){
//0) download main page
String html;
try {
html = URLConnectionReader.getSecureText("https://www......");
} catch (Exception e){
e.printStackTrace();
return;
}
//1) define categories
int num_categories = 0;
String[] categories = new String[1000];
int i = html.indexOf("itemMenuName level2");
while(i>0){
html = html.substring(i+19,html.length());
//find category urls
i = html.indexOf("href=\"");
html = html.substring(i+6,html.length());
categories[num_categories] = html.substring(0,html.indexOf("\""));
System.out.println(categories[num_categories]);
//find next category
num_categories++;
i = html.indexOf("itemMenuName level2");;
}
//write to file
PrintWriter pw = null;
try {
pw = new PrintWriter(new File("Bestbuy_products.txt"));
} catch(Exception e){
e.printStackTrace();
}
//2) for each category page
for(i=0; i<num_categories; i++){
try {
//download page
html = URLConnectionReader.getSecureText(categories[i]);
//process
Product[] temp = process(html);
//detect num of pages
//TODO
//write to file
for(Product product : temp){
pw.print(product.name);
pw.print("@@@@");
pw.print(product.store);
pw.print("@@@@");
pw.print(product.price);
pw.print("@@@@");
pw.print(product.productlink);
pw.println("");
pw.flush();
}
} catch(Exception e){
e.printStackTrace();
pw.close();
return;
}
}
//close file
pw.close();
}
Clearly there is a problem between my understanding of readable code and the above snippet. My intentions with posting this code, is of course not to hang the authors to dry. I find it more relevant to delve into real-life code, than making up examples on my own. But I'm digressing here. The point is that judging the code against my list, there are people out there that are programming in a vastly different manner than I! And eventually this creates tension if such different coding styles are to co-exist in the same project. Presumably both of us think that our code is "readable".
Assume that I and those authors were on the same project. Should it be I or them that should define the conduct of the company/project? I don't know the authors of the above code. Possibly the authors were in a hurry, or maybe this is how they prefer their code. Just to make sure, I went back and checked another file on the project. It was almost an exact copy of the above. Clearly code duplication was not an issue to them.
4. Investigating "underlying complexity"
As previously stated. underlying complexity means the complexity you face after you have penetrated, or, come to accept the surface complexities. It is the complexities concerning implementation idioms such as design patterns and best practices.
For example, it is damn hard to grasp a given piece of code utilizing "template methods", "strategy", "composite", "decorators" or "bridge" when you are unaware of such said patterns.
As shown in Malleable code by using decorators programming with decorators is a very different style than not using them. Both in terms of readability where the implementation tends to get more spread out. But also more fundamentally, how features are to be made up when future extensions are made.
Another programming idiom foreign to the less experienced programmer is that of separation of concerns, and the SOLID principles. If you blindly follow Uncle Bob, a method may be no longer than 10 lines of code, preferably less. Eg. the Extract till you drop
So readability is not only reading the code line by line, but also, understanding the implementation strategies and architecture.
Part of being a professional programmer, is to know his trade. There are many design patterns around, but chances are, that the application you are working on is only using a handful. Spend time asking colleagues and reading up on the patterns and abstractions you do not know.
4.1 The architectural simplification that never became
Once in a multi-layered EJB application, I found a layer that was complete boiler code. For every entity in the system, a glue class had to be constructed in this layer. Anyone familiar with layered architecture knows how too many layers can lead to frustrations.  In fact I would not hesitate to recommending using it. At time though, you feel very unproductive when you want to add some functionality and find yourself spending a full afternoon implementing glue-boiler plate code in numerous layers. Then making a simple change, and having to go over one layer after another performing the same trivial changes - e.g. adding a parameter to a method.
So simplifying away a layer means making the whole team more productive, and less chances of making simple mistakes that may precious time to debug and locate.
Quickly through the use of reflection, I replaced all the implementations of the layer with one class. A whole layer was eradicated. Every one were happy. Or so I thought. At that particular shop, there was a very high density of less experienced programmers. They had domain knowledge, sure. But they did not know the reflection capabilities of the language they were using. With little incentive to learn and grow, instead they were red alert. And so the reflection-implementation had to die. The argument was, that if the least experienced programmer had to fix a bug, was having difficulties reading and understanding what was going on, the bug might not get fixed. Notice how this wrongly became a discussion on whether some code was readable/understandable. When clearly it was a matter of certain team members not knowing (and not wanting to know) the full spectre of features of the programming language.
So is this a clear cut case of underlying complexity. Yes. Is it a case of surface complexity too? Indeed. Here we have a people having readability problems due to lack of understanding the programming language the software is developed in. The use of said features led to an implementation patter that likewise caused readability problems.

- George Carlin
I can understand that people never having been exposed to reflection need to look twice or possibly trice at the code. Code using reflection is different. Very different in the fact that it is a solution that involves a number of types rather than operating on a specific type. Rather than invoking a method with .
it may require searching for methods and dynamically bind arguments to said call. But this is difficult in the same sense that domain applications are difficult to grasp at first when you don't know the domain or the ubiquitous language used in modelling the domain. Heck, it is difficult the same way that you for the first time get exposed to the concepts of ref
, finally
-blocks or lambda's! And surely we wouldn't want those to get squeezed out of the code-base simply because some less experienced team member thinks its "unreadable".
5. Conclusions
Novice and veterans prefer code in different forms. The inexperienced programmer have so many things in his head, remembering the syntax of the language, understanding coding constructs etc. that he is satisfied delivering when it works. He also prefer comments explaining the code in human language.
But as the inexperienced gain more experience he changes his preferences. Suddenly, things needs be broken down, suddenly certain comments are superfluous - in the way - of the code to be read.Rather than reading a 1000-lines long method like a book, he wants the code split into many distinct entities to quickly get an overview of what the software does and digs into the entities, if needed.
Be wary when some one claims that a piece of code is impenetrable. Probe a bit.
- Is it an issue with surface complexity or with underlying complexity? Code readability is hard to quantify and is inherently highly subjective.
- Is the programmer experienced?
- Does he know the business domain of the code?
- Does he know the semantics of that part of the programming language or API that was used?
- If all of those check out right, maybe you are the one doing things the wrong way :-)
Be cautious when requiring dumbing down the code base. It may seem to be resulting in more readable, but in fact may carry with it tons of code duplication and cruft. Things that are instinctively avoided by more experienced programmers. Rather than digress, one should embrace and seize the opportunity to grow and learn. Computer science is very much different to most other fields of profession. It is constantly moving and evolving. Every second year you'll find a major language releases or 3rd party API releases. You cannot fight this.
Congratulations! You've come all the way to the bottom of the article! Please help me make this site better for everyone by commenting below. Or how about making editorial changes? Feel free to fix spelling mistakes, weird sentences, or correct what is plain wrong. All the material is on GitHub so don't be shy. Just go to Github, press the edit button and fire away.
Read the Introduction or browse the rest of the site


Scripts Grapher CSS Test_Style Audio This is an mp3 (ignore) Ignore Ignore Ignore Don't Ignore Don't Ignore This is an .ogg Video This is an mp4 This is an mkv Archive This is a .zip. This is an archive. This is an archive. This is an archive. Image This is a .jpg This is a .svg This is a .bmp This is a .jpeg This is a .gif This is a .png Other This is an other.


Between 1950 and 2011 severe weather events caused at least
- 14 834 deaths
- 139 445 injuries
- $358 billion worth of damage
Now you can prepare yourself using Storm Database Explorer
- state of the art user interface*
- high quality data**
- fast and reliable***
- 100% Open source
- * If you really determined there is a chance you'll find worse.
- ** There is small chance it could be worse.
- *** It works. Most of the time.
... and it can generate cool plots


| Meeting time: | MW 5:30-6:45 |
| Classroom: | PKI 270 |
| Instructor: | Dr. Harvey Siy |
| Office: | PKI 281B |
| Phone: |<PHONE_NUMBER> |
| Office Hours: | MW 1-2pm, TR 3-4pm, or by appointment |
| Email: | hsiy at mail dot unomaha dot edu |
| Textbook: | Object-Oriented Software Engineering (2nd edition) by Bruegge and Dutoit, Prentice Hall 2004. |
| http://oose.globalse.org | |
| Additional: | Principles of Object-Oriented Software Development, 2nd Edition by Anton Eliens |
| http://www.cs.vu.nl/~eliens/online/oo | |
| Additional: | Object-Oriented Software Development Using Java, 2nd Edition by Xiaoping Jia |
| Prerequisites: | Introduction to Software Engineering |
| Term paper | 15% |
| Project | 35% |
| Exams (midterm and final) | 30% |
| Class participation | 5% |
| Homeworks | 15% |
Unfortunately for paper submissions, you must hand them directly to me.


Internal server error - 500
Internal server error
So sorry, something went wrong.
We've been notified about the issue and will take a look at it shortly.


Whistleblower disputes boil over in Trump's impeachment interview
Transcripts show Republicans and Democrats repeatedly skirmishing over GOP questions
by ReutersTranscripts released in the impeachment inquiry show Republicans and Democrats repeatedly skirmishing over GOP questions that appeared aimed at drawing out the identity of the whistleblower who filed the initial complaint against Donald Trump.


{#each headers as h}
{h}
{/each}
{#each (values || [value]) as v, i}
{(questions || [question])[i]}
{#each scale as option}
{/each}
{/each}


ProjectButterfly_core
Classes
Advisor
Company
Date
Manager
PersistentData
Person
Project
Student
SuperUser
Time
Users


Bottle uses a powerful routing engine to find the right callback for each request. The tutorial shows you the basics. This document covers advanced techniques and rule mechanics in detail.
The Router distinguishes between two basic types of routes: static routes (e.g. /contact) and dynamic routes (e.g. /hello/<name>). A route that contains one or more wildcards it is considered dynamic. All other routes are static.
Changed in version 0.10.
The simplest form of a wildcard consists of a name enclosed in angle brackets (e.g. <name>). The name should be unique for a given route and form a valid python identifier (alphanumeric, starting with a letter). This is because wildcards are used as keyword arguments for the request callback later.
Each wildcard matches one or more characters, but stops at the first slash (/). This equals a regular expression of [^/]+ and ensures that only one path segment is matched and routes with more than one wildcard stay unambiguous.
The rule /<action>/<item> matches as follows:
| Path | Result |
|---|---|
| /save/123 | {'action': 'save', 'item': '123'} |
| /save/123/ | No Match |
| /save/ | No Match |
| //123 | No Match |
You can change the exact behaviour in many ways using filters. This is described in the next section.
New in version 0.10.
Filters are used to define more specific wildcards, and/or transform the matched part of the URL before it is passed to the callback. A filtered wildcard is declared as <name:filter> or <name:filter:config>. The syntax for the optional config part depends on the filter used.
The following standard filters are implemented:
You can add your own filters to the router. All you need is a function that returns three elements: A regular expression string, a callable to convert the URL fragment to a python value, and a callable that does the opposite. The filter function is called with the configuration string as the only parameter and may parse it as needed:
app = Bottle()
def list_filter(config):
''' Matches a comma separated list of numbers. '''
delimiter = config or ','
regexp = r'\d+(%s\d)*' % re.escape(delimiter)
def to_python(match):
return map(int, match.split(delimiter))
def to_url(numbers):
return delimiter.join(map(str, numbers))
return regexp, to_python, to_url
app.router.add_filter('list', list_filter)
@app.route('/follow/<ids:list>')
def follow_users(ids):
for id in ids:
...
Changed in version 0.10.
The new rule syntax was introduce in Bottle 0.10 to simplify some common use cases, but the old syntax still works and you can find lot code examples still using it. The differences are best described by example:
| Old Syntax | New Syntax |
|---|---|
| :name | <name> |
| :name#regexp# | <name:re:regexp> |
| :#regexp# | <:re:regexp> |
| :## | <:re> |
Try to avoid the old syntax in future projects if you can. It is not currently deprecated, but will be eventually.
Route decorator can also be directly called as method. This way provides flexibility in complex setups, allowing you to directly control, when and how routing configuration done.
Here is a basic example of explicit routing configuration for default bottle application:
def setup_routing():
bottle.route('/', 'GET', index)
bottle.route('/edit', ['GET', 'POST'], edit)
In fact, any Bottle instance routing can be configured same way:
def setup_routing(app):
app.route('/new', ['GET', 'POST'], form_new)
app.route('/edit', ['GET', 'POST'], form_edit)
app = Bottle()
setup_routing(app)


Source:
https://github.com/horo-t/tiff2bmpsw
This page is a demo of ServiceWorker.
Chrome can't load TIFF images.
But you can see the image below after clicking the button.
This button registers a
ServiceWorker which converts TIFF file to BMP file.
This ServiceWorker is using
LibTIFF library which is compiled to JavaScript by
Emscripten.
You can inspect the ServiceWorker from
chrome://inspect/#service-workers.
If you are using Chrome 39, you have to enable "enable-experimental-web-platform-features" in chrome://flags.


You are viewing an historical archive of past issues. Please
report new issues to the appropriate project issue tracker on
GitHub.
Comments
-
Greg Hurrell
Just did a successful deploy on a staging clone. A bit fiddly, but it works.
-
Greg Hurrell
Rails 3 version has been up and running successfully for a while now, so closing.
-
Greg Hurrell
Status changed:
- From: new
- To: closed
Add a comment
Comments are now closed for this issue.


Breathe
Breathe is a movie starring Andrew Garfield, Claire Foy, and Hugh Bonneville. The inspiring true love story of Robin and Diana Cavendish, an adventurous couple who refuse to give up in the face of a devastating disease. Their...


The art of keeping calm
I delivered last week the website for a big client, and after a few months of very tight schedules, technical explications on the solutions chosen and the limitations of web browsers, debates and frank disagreements, I can’t say it’s been a smooth ride.
However, most of the problems that come up along the way can boil down to some important points that I may not have highlighted enough as being critical for the delivery, and the client’s inability to have things done and agreed in a timely manner:
Make sure they read and understand the whole contract and brief. Working with tight deadlines usually yields some (late) disagreements on the terms of the contract. But they signed it… To avoid problems, take time to detail each point with them and make sure they understand them all.
Make a delivery plan and stick to it, no matter what. Again, with tight deadlines, it’s easy for your client to think something is small enough to be added to the backlog of work, and won’t impact the delivery date. IT ALWAYS DOES! Remind them of the agreed scope and the deadlines set.
Be as inflexible as possible once the deliverables are… ahem… delivered. That is: no change to the design after it’s been signed off, no change to the platform after it’s been chosen and development started, and no change to the website host once it’s been deployed. However, do welcome and discuss minor changes before the deliveries, as they (usually) are small enough to be integrated, but push back on the big ones for further development after the site launched. Once items have been delivered, I consider them done and not requiring changes. Unless there is a major bug that is.
Document all aspects of the website, what your client can, cannot, and should not edit. This last point is important in that it frees you from the kind of situations where your client comes back saying “You didn’t tell us…”. Simply cover your back that way, as you always have a reference to point them to when they try to do things the wrong way.
After the deployment of the site, depending on your support agreements, identify what you can do, and filter out what’s not your job. I deployed the website to one server under one domain name, but it turns out that this client now wants the website to be deployed on a different server under a different domain name. I agreed to do it once, this now falls in the “extras” category. Also, changing the domain name of the website on platforms such as wordpress is not as easy as flicking a switch, and may involve much more work than one might think.
So at some point one have to become inflexible, to play the role of the bad guy in the eyes of his client, and be strict on the deliveries. Ultimately, after the initial awkwardness passed, that can only be beneficial for the agreed outcome of the project.
And while I’d like the website to remain as clear and usable as possible, exactly as it’s been designed, no documentation or training can, unfortunately, prevent it from being ruined by changes made to the content without supervision, control, enforcement of the design rules, ownership, and ultimately… care.


A simple line of text
A
nested
structure with
sub
and
sup
A
nested
structure with
style
A source of multiple lines:
Line1
Line2
A source of multiple
styled
lines:
Line1 with
style
Line2
A source of multiple lines breaks with BR:
Line1
Line2


--- layout: post title: Ski date: '2010-04-21T00:00:00-04:00' tags: - '2010' tumblr_url: http://poetry.liabogoev.com/post/49084358086/ski ---
White fresh powder
Soars through crisp, alpine air,
Brilliant, faceted crystals,
Refracting the light,
Of a white sun.
Thin, metal-edged slats,
Through feather-light snow cut
Leave chaos in their wake
The pristine, undisturbed snow
Parted like water.
Metal columns, stand,
Like artificial trees,
Casting shadows on the snow.
Cables, tight with excitement
Carry impatient skiers
Up the slope.
Excitement builds
At the crest of the hill.
Skis glide over packed snow,
And swish as they stop.
Looking over the edge,
Where tall black pines
Frame a run of snow,
The air, muffled by the snow,
Bitingly cold,
As the sun warms your face.
Rock forward, skis tip,
Savor the moment.
Past the fulcrum,
The weight slowly shifts,
Exhilaration
Begins


Practice without pressure
From grabbing a slice of pizza to hailing a taxi, Bots prepare you for real-life conversations — minus the awkwardness and anxiety.
The hardest part of learning a new language just became easy.
From grabbing a slice of pizza to hailing a taxi, Bots prepare you for real-life conversations — minus the awkwardness and anxiety.
The hardest part of learning a new language just became easy.
Duolingo Bots are powered by artificial intelligence and react differently to thousands of possible answers. Feeling stuck? Hit “help me reply” and they’ll come up with suggestions.
Best of all — the more you practice, the smarter they get.


In order to pay your bill of<PHONE_NUMBER>257823602364023460 BEANS Please enter the OTP sent to your phony number (BEANS-SNAEB-BEANS-xxxx)
OTP: BEANS-OhuiN-
Continue
>


The Kraken plugin allows users to log in to and communicate through other instant messaging services via their XMPP accounts. The gateway itself provides a number of "transports" to other protocols (AIM, ICQ, MSN, Yahoo, etc).
To help identify the differences between the plugin as a whole and the underlying interfaces to external protocols (AIM, ICQ, etc), we refer to the plugin itself as the "gateway" while we refer to the protocol handlers as "transports".
Copy the kraken.jar into the plugins directory of your Openfire installation. The plugin will then be automatically deployed. To upgrade to a new version, copy the new kraken.jar file over the existing file. Please be aware that an upgrade will cause all of the users on your server who are making use of the plugin to be disconnected from their external IM accounts. Your users should be reconnected after the plugin reloads.
By default, after the plugin has been deployed all of its features are disabled. This plugin is configured via the "Gateways" sidebar item located in the Openfire Admin Console. You can enable individual transports via the "Settings" sidebar item, and add new registrations/view existing registrations from the "Registrations" sidebar item.
Before going into specifics, there are some important things you need to know first. A user must be registered with a transport in order to make use of it. Registration is the process wherein a user tells a transport what username and password will be used with the external service. This process also places the transport JID in their roster to that the transport itself can "hear" them come online, and act appropriately (logging them in and such). In this case, we interact with the user's roster directly, so there is no need for a flood of subscription requests to the client itself. A side effect of this is that only users of the local Openfire server will be able to make use of any transport on the gateway. Roster items are created as non-persistent, which means that when the end user logs out or disconnects from the gateway, the associated transport roster items will no longer exist in their roster.
The web interface of the gateway plugin provides a mechanism for setting up registrations on a user's behalf, as well as editing and deleting them. It also provides tools for monitoring who is using the gateway, their status, etc. In a typical setup, a user will be allowed to register an account themselves. See the next section for details on this. You can also set who has access to the specific transports and even enforce manual registrations only. If a specific transport has any options, they will be made available from the web interface. You will see the full hostnames of the transports listed. You do not have to register these with your DNS service. They are referenced internally by Openfire and no external query is necessary.
If you have a firewall set up, you do not need to open any inbound ports. However, you will need to make sure the following outgoing connections will work based on the transport in question:
There is additional online documentation available at: Kraken's Online Readme
Typically, users will use Service Discovery (aka disco) to find out what services are available on a server, and then will be provided with a way to register with whatever transports are made available. Some clients do not have the functionality to interact with transports. In this case, a server admin will need to register the user on their behalf. (see above)
When registering with any Kraken transports, you will see the transport itself show up in your XMPP roster. This is normal and is how the transport knows when you are logged in or not, and detects status changes. Removal of the transport roster items will typically remove your registration with the transport as well.
Special note for Spark: As of this release, and an upcoming release of Spark, you will not have the transports in your roster when you register from Spark. This is an experimental feature for a smoother user experience. Note that if you register from Spark and then move to another client, you will not automatically log into any transports. If you plan to dance between clients and not use Spark exclusively, I would recommend you register from another client than Spark.
If the plugin behaviour is not as expected you can enable server debug logging. This will allow the plugin to start logging. Server debug logging should only be enabled temporarily, as it will generate a lot of additional logging that will both slow your server down and consume a lot of disk space.
Thanks to the Adium X folk for use of a couple of their service icons!


There is only a breaking change for SystemJs users. In your systemjs.config.js replace this:
let map = { ... 'angular-modal-gallery' : 'node_modules/angular-modal-gallery/dist/bundles', ... };
with with:
let map = { ... 'angular-modal-gallery' : 'node_modules/angular-modal-gallery/bundles', ...
I decided to change the structure of this library, the building process, some dependencies, the entire documentation and finally some APIs
I really hope that, after possible difficulties at the beginning, you'll love angular-modal-gallery again :)
by ks89
In order to migrate your application from angular-modal-gallery
2.x.x to 3.x.x, please follow these steps:
angular-modal-gallery
to ^3.0.0
in your package.json and run npm i
npm i --save hammerjs mousetrap
npm i --save-dev @types/hammerjs @types/mousetrap
hammerjs
and mousetrap
into your main module (where you imported ModalGalleryModule.forRoot() in this way:import 'hammerjs'; import 'mousetrap'; import {ModalGalleryModule} from 'angular-modal-gallery'; import {AppComponent} from './app.component'; @NgModule({ declarations: [AppComponent], imports: [ BrowserModule, ModalGalleryModule.forRoot() ], bootstrap: [AppComponent], }) export class AppModule {}
ModalGalleryModule.forRoot()
inside a child module, you should use simply ModalGalleryModule
(without forRoot()).
In fact, forRoot() should be used only for root modules. But, if your module is lazy loaded, forRoot() is still mandatory.
If you are confused and you need help, please open an issue :)imageModal
with modal-gallery
(cancelEvent) = "yourFunction()"
with (close) = "yourFunction($event)"
import {Image, ImageModalEvent} from 'angular-modal-gallery';
Image[]
with your images, instead of a simple array of objects, now you have to instantiate an array of Image
objects, so for instance:images: Array<Image> = [ new Image( './app/assets/images/gallery/img3.jpg', './app/assets/images/gallery/thumbs/img3.png', 'Description 3', null ) ];and this array will be the input
[modalImages]="images"
in angular-modal-gallery
component in your html file.
You should also import hammerjs
and mousetrap
adding:
let map = { 'app' : 'app', '@angular' : 'node_modules/@angular', 'rxjs' : 'node_modules/rxjs', 'angular-modal-gallery' : 'node_modules/angular-modal-gallery/dist/bundles', 'hammerjs' : 'node_modules/hammerjs', 'mousetrap' : 'node_modules/mousetrap' }; // packages tells the System loader how to load when no filename and/or no extension let packages = { 'app' : { main: 'main' }, 'rxjs' : { main: 'Rx' }, 'hammerjs' : { main: 'hammer.js' }, 'mousetrap' : { main: 'mousetrap.js'}, 'angular-modal-gallery' : { main: 'angular-modal-gallery.umd.js' } };
If your are using the [imagePointer]
input, please update .list-img
selector inside your CSS/SCSS in this way:
.list-img { height: 50px; margin-top: 2px; cursor: pointer; }and check the official example to update also your template, accordingly. For instance, with version 3.0.0 you need something like this:


Verona girl presented with 3D model of dream water slide
by Emilie BurdittWISCONSIN DELLS, Wis. - A 5-year-old saw her dream water slide come to life Thursday after showing her idea to Noah's Ark Waterpark in the Wisconsin Dells, according to a news release.
After Hannah Nevins from Verona, Wisconsin, went to Noah's Ark, she went home and used crayons to draw her dream water slide. She sent her design to Noah's Ark, where its graphic design intern, Brianna Thom, created a mockup of the water slide, which was sent back to Nevins.
Nevins' dad, Jason, tweeted the response from Noah's Ark. Noah's Ark then retweeted Jason's tweet, but added a challenge, telling water slide companies to encourage kids to dream and create.
Manufacturer Polin created a small scale 3D model of the water slide design and presented it to Nevins and her family at the International Association of Amusement Parks and Attractions trade show in Orlando, Florida.
Noah's Ark said there are no plans to actually build the slide.


|
|
IFXTaskManagerNode Class ReferenceThis is the main interface for IFXTaskManagerNode.
More...
Inheritance diagram for IFXTaskManagerNode:
List of all members.
Detailed Description
This is the main interface for IFXTaskManagerNode.
In the documentation for this class, "job" refers to the registered task and its associated data. Each job includes an IFXTask which will be executed to handle an event, an IFXTaskData which serves as an event template, a priority to control order of execution with respect to other jobs, and an IFXTaskHandle that uniquely identifies the job. IFXTaskHandles are unique across all task managers.
- Note:
- The associated IID is named IID_IFXTaskManagerNode, and the CID for the component is CID_IFXTaskManagerNode.
Member Function Documentation
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::Execute |
( |
IFXTaskData * |
pTaskData |
) |
[pure virtual] |
|
|
|
This method calls IFXTask::Execute.
The UserData stored in pTaskData is ignored. Each Node has an IFXTaskData "template" which also contains a user data field, and this method copies the registered user data into the actual event user data. This allows clients to specify custom data for each registered event which will be passed to the IFXTask::Execute method.
Execute fails if the job is currently busy; that is, it is currently being executed. You cannot call Execute recursively.
Execute also fails if the job is disabled. A job is disabled if the SetEnabled flag is false.
If the IFXTask::Execute method returns an error result, the reported IFXRESULT is sent to the NotificationManager for handling; the result itself is then discarded and is not returned from this method. See IFXErrorInfo for more information.
- Parameters:
-
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pTaskData is NULL.
- IFX_E_ABORTED if the job is currently busy or if it is disabled.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetCoreServices |
( |
IFXCoreServices ** |
ppCoreServices |
) |
[pure virtual] |
|
|
|
This method retrieves the IFXCoreServices pointer.
- Parameters:
-
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if ppCoreServices is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetEnabled |
( |
BOOL * |
pEnabled |
) |
[pure virtual] |
|
|
|
This method retrieves the enabled flag for this job.
- Parameters:
-
| pEnabled | Receives the enabled flag.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pEnabled is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetMarkForDelete |
( |
BOOL * |
pFlag |
) |
[pure virtual] |
|
|
|
This method retrieves the deletion flag for this job.
- Parameters:
-
| pFlag | Receives the deletion flag.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pFlag is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXTaskManagerNode* IFXAPI IFXTaskManagerNode::GetNext_NoAddRef |
( |
|
) |
[pure virtual] |
|
|
|
This is a list-management method for internal use by the task manager.
Clients should not use this method. See the TaskManager source code.
- Returns:
- Returns an IFXTaskManagerNode pointer.
Implemented in CIFXTaskManagerNode. |
| virtual IFXTaskManagerNode* IFXAPI IFXTaskManagerNode::GetPrev_NoAddRef |
( |
|
) |
[pure virtual] |
|
|
|
This is a list-management method for internal use by the task manager.
Clients should not use this method. See the TaskManager source code.
- Returns:
- Returns an IFXTaskManagerNode pointer.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetPriority |
( |
U32 * |
pPriority |
) |
[pure virtual] |
|
|
|
This method retrieves the priority for this job.
- Parameters:
-
| pPriority | Receives the priority.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pPriority is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetTask |
( |
IFXTask ** |
ppTask |
) |
[pure virtual] |
|
|
|
This method retrieves the task handler for this job.
- Note:
- While it is possible to retrieve the IFXTask interface and call its Execute method directly, it is usually preferable to use the IFXTaskManagerNode::Execute method instead. See IFXTaskManagerNode::Execute for more information.
- Parameters:
-
| ppTask | Receives the task handler.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if ppTask is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetTaskData |
( |
IFXTaskData ** |
ppTaskData |
) |
[pure virtual] |
|
|
|
This method retrieves the task data (event template) for this job.
- Parameters:
-
| ppTaskData | Receives the task data.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if ppTaskData is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetTaskHandle |
( |
IFXTaskHandle * |
pTaskHandle |
) |
[pure virtual] |
|
|
|
This method retrieves the task handle for this job.
The task handle is assigned by the task manager when the job is registered and cannot be changed.
- Parameters:
-
| pTaskHandle | Receives the task handle.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pTaskHandle is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::GetTaskManager |
( |
IFXTaskManager ** |
ppTaskManager |
) |
[pure virtual] |
|
|
|
This method retrieves the task manager for this node.
Each node keeps a pointer to the task manager that it is registered with.
- Parameters:
-
| ppTaskManager | Receives the task manager pointer.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if ppTaskManager is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::Initialize |
( |
IFXCoreServices * |
pCoreServices |
) |
[pure virtual] |
|
|
|
This method initializes the IFXTaskManagerNode.
- Parameters:
-
| pCoreServices | A pointer to the CoreServices object.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_ALREADY_INITIALIZED if the IFXTaskManagerNode object has already been initialized.
- IFX_E_INVALID_POINTER is returned if pCoreServices is invalid.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::MatchPattern |
( |
IFXTaskData * |
pEvent, |
|
|
BOOL * |
pResult |
|
) |
[pure virtual] |
|
|
|
This method matches an event with the pattern stored in the node.
An event is generated by an external source and is defined by an IFXTaskData object. The registered job also has an IFXTaskData object which serves as as event template. This method compares the template to the actual event, and if they match, returns TRUE. If they do not match, it returns FALSE. (See IFXTaskData)
- Parameters:
-
| pEvent | An event which is to be compared to this node's TaskData pattern.
|
| pResult | Receives the result of the comparison, either TRUE or FALSE.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pViewPattern or pResult is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::Reset |
( |
|
) |
[pure virtual] |
|
|
|
This method resets the IFXTaskManagerNode, resetting it to a just-initialized state.
All data is cleared.
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the IFXTaskManagerNode object has not been initialized.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetEnabled |
( |
BOOL |
enabled |
) |
[pure virtual] |
|
|
|
This method sets the enabled flag for this job.
If the enabled flag is FALSE, the job is disabled and will not executed. This is useful for temporarily suspending a job without removing it altogether from a task manager.
- Parameters:
-
| enabled | The enabled flag.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetMarkForDelete |
( |
BOOL |
flag |
) |
[pure virtual] |
|
|
|
This method marks a job for deletion.
A job is sometimes busy and removing it would be unsafe. This flag is used to mark a job for deletion at the earliest safe point.
- Parameters:
-
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetNext |
( |
IFXTaskManagerNode * |
pSetNext |
) |
[pure virtual] |
|
|
|
This is a list-management method for internal use by the task manager.
Clients should not use this method. See the TaskManager source code.
- Parameters:
-
| pSetNext | An IFXTaskManagerNode pointer.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetPrev |
( |
IFXTaskManagerNode * |
pSetPrev |
) |
[pure virtual] |
|
|
|
This is a list-management method for internal use by the task manager.
Clients should not use this method. See the TaskManager source code.
- Parameters:
-
| pArg | An IFXTaskManagerNode pointer.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetPriority |
( |
U32 |
priority |
) |
[pure virtual] |
|
|
|
This method sets the priority for this job.
- Parameters:
-
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetTask |
( |
IFXTask * |
pTask |
) |
[pure virtual] |
|
|
|
This method sets the task handler for this job.
The task handler must support the IFXTask interface, and will be called via IFXTask::Execute. Every job must have a task handler.
- Parameters:
-
| pTask | The IFXTask interface of the task handler.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pTask is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetTaskData |
( |
IFXTaskData * |
pTaskData |
) |
[pure virtual] |
|
|
|
This method sets the task data for this job.
The task data of a registered job serves as an event template to identify which events the job should handle. The task data registered in an IFXTaskManagerNode is never passed to IFXTask::Execute.
- Parameters:
-
| pTaskData | The task data (event template).
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pTaskData is NULL.
Implemented in CIFXTaskManagerNode. |
| virtual IFXRESULT IFXAPI IFXTaskManagerNode::SetTaskManager |
( |
IFXTaskManager * |
pTaskManager |
) |
[pure virtual] |
|
|
|
This method sets the task manager for this node.
Each node keeps a pointer to the task manager that it is registered with.
- Parameters:
-
| pTaskManager | The task manager.
|
- Returns:
- Returns an IFXRESULT code.
- IFX_OK upon success.
- IFX_E_NOT_INITIALIZED if the component has not been initialized.
- IFX_E_INVALID_POINTER is returned if pTaskManager is NULL.
Implemented in CIFXTaskManagerNode. |
© 1999 - 2006 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.
|
|


Favorites Menu, allows you to create a list of favourite pages and organize them into folders. Once you have done that, then,to go to a favourite page,you just need to select the page you want from the Favourites menu.
To add the web page to your favorite listm, follow the given steps :-
1. Click the Favorites menu and select Add to Favorites, or, click Add to Favorites on the Favorites Explorer Bar.The Add Favourite Dialog Box appears.
2. In the Name textbox,change the name of page, if you desire.
3. In the create In box select the location of the favorite page, if you wish to organize favorite pages in folders.
4. Click the OK button.
Your favourite page will be added to Favorite menu or under a submenu as you created.


Main Menu
Bikini Stitches
Download
Default
Pyscho
Greatfather Winter
Attack Bucket Impact01
Attack Shovel Launch03
Attack Shovel Launch02
Attack Bucket Impact02
Attack Shovel Launch01
Attack Bucket Impact03
Attack Shovel Launch04
Attack Bucket Impact04
Attack Bucket Launch04
Attack Shovel Impact04
Attack Shovel Impact01
Attack Bucket Launch03
Attack Bucket Launch02
Attack Shovel Impact02
Attack Bucket Launch01
Attack Shovel Impact03


Connect with the best minds across a wide range of industries to share ideas and brainstorm new solutions to challenging problems.
Hear industry leaders talk about what worked (and what didn't) so that you can save time on your most challenging projects.
Learn about the latest research and technologies that you can use immediately to invent the future.