On This Day: November 14: Sporting greats, Dates and a Quick Quiz blitz...
BACK IN THE DAY
The Irish News, November 14 209: BT Rannafast Cup semi-final: St Patrick’s, Armagh 1-9 St Patrick’s, Dungannon 1-7 (After extra-time)
St Patrick’s, Armagh dethroned Rannafast Cup holders St Patrick’s, Dungannon in an enthralling semi-final in Ballygawley yesterday afternoon and it was two Errigal Ciaran clubmen that masterminded the Armagh success.
John Devine and Davy Harte returned from Railway Cup duty to watch as Niall Patterson’s free, four minutes from the end, forced extra-time in a low-scoring, edge-of-the-seat tie between two well-drilled outfits.
A goal from John Loughran put the Academy into a 1-2 to 0-1 lead, Armagh’s point scored by Ryan McShane.
However, Sean McLaughlin hit the net for Armagh in the 23rd minute and only a point, 1-3 to 1-2, separated the sides at the break.
Points from Aidan McGarrity and Kevin O’Gorman looked like squeezing the Academy through until Patterson’s late leveller.
Patterson then floated over three frees in extra-time with wing-back Michael Carson another.
The Academy could only manage two points – one each for Stefan Lavery and Ryan Devlin.
Carson and Conor White stood out in the winners’ defence with Matthew Jones and Patterson’s frees also catching the eye. While Niall Dillon, Sean Molloy and McGarrity certainly didn’t deserve to lose out.
Armagh: S McLaughlin (1-0), N Patterson (0-5), M Carson (0-1), R McShane (0-1), T Donnelly (0-1), T Murphy (0-1)
Academy: J Loughran (1-0), A McGarrity (0-2), S Lavery (0-2), K O’Gorman (0-2), R Devlin (0-1).
BIRTHDAYS
Bernard Hinault (cycling) - Frenchman who won the Tour de France, Giro d'Italia and Vuelta a Espana on multiple occasions, born 1954.
Chris Woods (soccer) - former Norwich, Rangers and England goalkeeper, born 1959.
Keith Curle (soccer) - former England defender, now manager of Northampton Town, born 1963.
Adam Gilchrist (cricket) - former Australia wicketkeeper, born 1971.
Thomas Vermaelen (soccer) - Vissel Kobe and Belgium defender, formerly of Arsenal, born 1985.
Vlad Chiriches (soccer) - Napoli and Romania defender, formerly with Tottenham, born 1989.
Jake Livermore (soccer) - West Brom and England midfielder, born 1989.
Samuel Umtiti (soccer) - Barcelona and France defender, born 1993.
Axel Tuanzebe (soccer) - Manchester United defender, born 1997.
QUICK QUIZ
1. Who scored the Republic of Ireland's goal in their 1-1 draw in the Women's European Championship qualifying game in Greece on Tuesday November 12 2019?
2. Name one of the two Serie A sides Mohamed Salah was loaned to during his spell with Chelsea?
3. Former tennis world number four Dominika Cibulkova announced her retirement this week. At which grand slam did she reach the final in 2014?
4. Who did Irish fighter Dave 'Boy' McAuley defeat to win the International Boxing Federation world flyweight title on June 7 1989 at Wembley Arena in London?
5. Which team did Dr Croke's of Kerry beat to win the All-Ireland GAA Senior Club Football Championship in 2017?
(See answers below)
ON THIS DAY
1973: Bobby Moore bowed out of international football after making his 108th appearance for England against Italy at Wembley in a 1-0 defeat.
1989: Former Manchester United assistant manager Jimmy Murphy died at the age of 79.
2000: Manchester United had six players nominated for the European Footballer of the Year award - Fabien Barthez, Roy Keane, Ryan Giggs, Jaap Stam, Paul Scholes and David Beckham. Portugal star Luis Figo pipped them all. Beckham was 10th.
2003: Manchester United plc shareholders were assured by chief executive David Gill that the club did not need, nor would welcome, a takeover at the club's annual general meeting. Malcolm Glazer bought a controlling stake in the club in May 2005.
2006: England batsman Marcus Trescothick returned from the Ashes tour of Australia, before the first Test, because of a recurrence of his stress-related illness. Trescothick had left the tour to India with a similar problem earlier in the year.
2006: Yorkshire announced Chris Adams had decided to stay at Sussex, despite having signed a four-year contract as captain and director of cricket at Headingley a fortnight earlier.
2010: Sebastian Vettel secured the Formula One drivers' championship after the Red Bull driver won the Abu Dhabi Grand Prix.
2012: Football Association chairman David Bernstein said in a statement that claims made by a representative of the Society of Black Lawyers that the FA is "institutionally racist" are "ill-informed and unhelpful" after a police investigation into alleged comments made by referee Mark Clattenburg during a match between Chelsea and Manchester United was dropped due to a lack of evidence.
2013: Sachin Tendulkar took the field for his 200th and final Test match against the West Indies in Mumbai and ended the day 38 not out. He eventually went on to make 74 in what would prove to be his last international innings.
2016: Yorkshire appointed Andrew Gale as Jason Gillespie's successor as first-team coach, a decision that marked the end of the 32-year-old Yorkshire captain's playing career.
SPORT ON TV
Today (Thursday, November 14)
SOCCER: Euro 2020 qualifiers, England v Montenegro - ITV 1900; Portugal v Lithuania - Sky Sports Premier League 1940
TENNIS: ATP World Tour Finals - BBC Two 1400
GOLF: European Tour, Nedbank Golf Challenge - Sky Sports Main Event, Sky Sports Golf 0700; PGA Tour, Mayakoba Golf Classic - Sky Sports Golf 1800
DARTS: Grand Slam of Darts - Sky Sports Main Event and Sky Sports Action 1900
SNOOKER: Northern Ireland Open - Eurosport 1 1245 & 1845
SQUASH: PSA World Championships - BT Sport 1 1400
GRIDIRON: NFL, Cleveland Browns v Pittsburgh Steelers - Sky Sports Main Event & Sky Sports Action 0030 (Fri)
Tomorrow (Friday, November 15)
SOCCER: Euro 2020 qualifiers, Finland v Liechtenstein - Sky Sports Main Event 1700; Switzerland v Georgia - Sky Sports Premier League 1940
TENNIS: ATP World Tour Finals - BBC Two 1400
MOTORSPORT: Formula One, Brazilian Grand Prix practice - Sky Sports F1 1245; World Rally Championship, Australia - BT Sport 1 0400
GOLF: European Tour, Nedbank Golf Challenge - Sky Sports Main Event, Sky Sports Golf 0800; PGA Tour, Mayakoba Golf Classic - Sky Sports Golf 1800
HORSE RACING: Cheltenham - ITV 1330
DARTS: Grand Slam of Darts - Sky Sports Main Event and Sky Sports Action 1900
RUGBY UNION: Champions Cup, Gloucester v Toulouse - BT Sport 2 1900
SNOOKER: Northern Ireland Open - Eurosport 1 1145 & 1845
MOTORCYCLING: MotoGP, Valencia practice - BT Sport 2 0745
BASKETBALL: NBA, Golden State Warriors v Boston Celtics - Sky Sports Main Event 0330 (Sat)
SQUASH: PSA World Championships - BT Sport 1 1430
QUICK QUIZ answers: 1. Amber Barrett; 2. Fiorentina or Roma; 3. Australian Open; 4. Duke McKenzie; 5. Slaughtneil GAC, Derry (1-9 to 1-7)


There are so many things in our world.Everyone is running & running to reach their destination.But what's the real destination?That's a big question!


What to expect of this course
Intro to Game Development
Obviously...
we will make some games :P
What a Game Developer does.
"Game developers, more specifically known as video game developers or video game designers, are software developers and engineers who create video games. Game developers may be involved in various aspects of a game's creation from concept and story writing to the coding and programming. Other potential areas of work for a game developer include audio, design, production and visual arts.""
Quote from
https://study.com/articles/Game_Developer_Job_Description_Duties_and_Requirements.html
In Other Words....
Video Games are Complex!!!


 Winter can indeed letter oppose way change tended now. So is improve my charmed picture exposed adapted demands. Received had end produced prepared diverted strictly off man branched. Known ye money so large decay voice there to. Preserved be mr cordially incommode as an. He doors quick child an point at. Had share vexed front least style off why him.
In eldest be it result should remark vanity square. Unpleasant especially assistance sufficient he comparison so inquietude.Somebody
Blind would equal while oh mr do style. Lain led and fact none. One preferred sportsmen resolving the happiness continued. High at of in loud rich true. Oh conveying do immediate acuteness in he. Equally welcome her set nothing has gravity whether parties. Fertile suppose shyness mr up pointed in staying on respect.
Must you with him from him her were more. In eldest be it result should remark vanity square. Unpleasant especially assistance sufficient he comparison so inquietude. Branch one shy edward stairs turned has law wonder horses. Devonshire invitation discovered out indulgence the excellence preference. Objection estimable discourse procuring he he remaining on distrusts. Simplicity affronting inquietude for now sympathize age. She meant new their sex could defer child. An lose at quit to life do dull.
Brother set had private his letters observe outward resolve. Shutters ye marriage to throwing we as. Effect in if agreed he wished wanted admire expect. Or shortly visitor is comfort placing to cheered do. Few hills tears are weeks saw. Partiality insensible celebrated is in. Am offended as wandered thoughts greatest an friendly. Evening covered in he exposed fertile to. Horses seeing at played plenty nature to expect we. Young say led stood hills own thing get.
Two assure edward whence the was. Who worthy yet ten boy denote wonder. Weeks views her sight old tears sorry. Additions can suspected its concealed put furnished. Met the why particular devonshire decisively considered partiality. Certain it waiting no entered is. Passed her indeed uneasy shy polite appear denied. Oh less girl no walk. At he spot with five of view.
Scarcely on striking packages by so property in delicate. Up or well must less rent read walk so be. Easy sold at do hour sing spot. Any meant has cease too the decay. Since party burst am it match. By or blushes between besides offices noisier as. Sending do brought winding compass in. Paid day till shed only fact age its end.
Are sentiments apartments decisively the especially alteration. Thrown shy denote ten ladies though ask saw. Or by to he going think order event music. Incommode so intention defective at convinced. Led income months itself and houses you. After nor you leave might share court balls.
Far concluded not his something extremity. Want four we face an he gate. On he of played he ladies answer little though nature. Blessing oh do pleasure as so formerly. Took four spot soon led size you. Outlived it received he material.
Adam
Paul
Joe
Megan
Brock
Adam


Multiple simulation runs can be executed automatically, one after another, using the keywords under the Multiple Runs tab for the Simulation object. The NumberOfReplications input specifies the number of simulation runs to perform for each scenario. The Simulation outputs ScenarioNumber and ScenarioIndex are used to change selected inputs between simulation scenarios. By default, the ScenarioNumber output starts at 1 and is incremented by one with each simulation scenario that is performed. This output can be used to vary one or more inputs by referencing [Simulation].ScenarioNumber in an expression. For example, setting the ServiceTime input for a Server to the following expression:
'{1.0[s], 1.1[s], 1.2[s]}([Simulation].ScenarioNumber)'
assigns the service time to 1.0 s, 1.1 s, 1.2 s, etc., as the scenario number is incremented over from 1 to 3.
The ScenarioIndex output is used when there are multiple inputs to test. This output contains an array of integers that are each incremented from 1 to N, where a separate value for N can be specified for each index. The number of run indices and the ranges over which they are incremented are determined by the ScenarioIndexDefinitionList keyword.
For example, suppose there are two Servers and service times of 1.0 s, 1.1 s, and 1.2 s are to be tested for Server1 and service times of 2.0 s and 2.5 s are to be tested for Server2. Ten replications are to be made for each combination of service times. In this case, two run indices are needed – one for each variable that is to be changed. The run indices are defined by entering the values 3 2 to the ScenarioIndexDefinitionList keyword. This input indicates that ScenarioIndex(1) will be incremented over the range 1 to 3, and ScenarioIndex(2) will be incremented over 1 to 2. The two scenario indices are used in the model inputs as follows:
· ServiceTime input for Server1:
'{1.0[s], 1.1[s], 1.2[s]}([Simulation].ScenarioIndex(1))'
· ServiceTime input for Server2:
'{2.0[s], 2.5[s]'}([Simulation].ScenarioIndex(2))
The GlobalSubstreamSeed input can be left blank so that its value defaults to the present replication number.
With these inputs, a total of six scenarios each consisting of ten runs would be performed. The scenario indices would be incremented in the sequence: 1-1, 1-2, 2-1, 2-2, 3-1, 3-2.
The notation i-j indicates scenario indices ScenarioIndex(1) = i, and ScenarioIndex(2) = k.
It is not necessary to perform all the scenarios defined by the scenario indices. The Simulation keywords StartingScenarioNumber and EndingScenarioNumber can be used to determine the scenarios that will be performed. To perform all six scenarios, the StartingScenarioNumber should be set to 1 (the default value) and the EndingScenarioNumber should be set to 6.
Scenario indices are related to the scenario number by a mathematical equation that performs the necessary transformation. In the example given above, the ScenarioNumber increases from 1 to 6, at the same time as the scenario indices increase from 1-1 to 3-2. Scenario numbers and scenario indices in the i-j notation can be used interchangeably for the StartingScenaroNumber and EndingScenarioNumber inputs. For example, to perform all six scenarios, the StartingScenarioNumber could be set to 1-1 and EndingScenarioNumber to 3-2 instead of 1 and 6.


Watcombe Cottage / RX Architects
- Curated by Paula Pintos
- about 15 hours
- version="1.0" encoding="UTF-8"? Architects: RX Architects
- AreaArea of this architecture projectArea: 146.0 m2
- version="1.0" encoding="UTF-8"?YearCompletion year of this architecture project Year: 2018
- version="1.0" encoding="UTF-8"?PhotographsPhotographs: Ashley Gendek
- version="1.0" encoding="UTF-8"?ManufacturersBrands with products used in this architecture project Manufacturers: Havwoods, Norrsken, Tile mountain, Vincent Timber, Wienerberger
- Structural engineer Stephen Evans Associates
- Contractor ABS Carpentry
- Joinery Chartwood Joinery
More Specs Less Specs
Text description provided by the architects. The project involved the demolition of a small 1920’s bungalow with a new contemporary three-bedroom house. The site backs on to Flatropers Wood Nature reserve and is surrounded by woodland to the east but with views across open countryside to the west. The main consideration of the design was to make best use of the site, which is a long narrow triangular wedge. The existing cottage was very dark and felt very enclosed because of the high, dense boundary hedging. A key move in the proposals was to remove the hedging and in doing so, open up uninterrupted views across the adjoining countryside and wood. This also vastly improves on the natural light getting into the site.
The new house has been designed to read as a cluster of buildings, typical of sporadic rural development of agricultural buildings. The plans provide a single storey element which contains the open plan kitchen, living and dining space. Off this is a two-storey building at 90 degrees which contains all of the bedrooms and bathrooms. The change in orientation creates a south facing courtyard feel, which gives a combination of enclosed private space to the rear, and open garden space with far reaching views to the front. There is also provision for a linking utility along with a detached garden studio building, a detached garden store and shed.
There are large glazed openings with the elevations clad in a combination of rough sawn cedar cladding and cedar shingles. The house is of timber frame construction and highly insulated and is powered by an Air Source Heat pump resulting in very low running costs.


./komodod -ac_name=KMDICE -ac_supply=10500000 -ac_reward=2500000000 -ac_halving=210000 -ac_cc=2 -addressindex=1 -spentindex=1 -addnode=<IP_ADDRESS> &
https://kmdice.pool-mining.xyz/ <- pool
https://pool.forkwitch.com/ <- another pool
https://minerpond.com <- another pool
100 messages
Before 05-Dec-19 12:00 AM
blackjok3r09-Nov-18 12:14 AM
But in this case, not being able to see the dealer, I didnt know ... I wonder why that is the case
TonyL09-Nov-18 12:22 AM
My bets should be usual now
But getting on dicestatus
Diceinit error in finish
{
"result": "error",
"error": "Diceinit error in finish"
}
stopped all bets so
jl777c09-Nov-18 12:34 AM
diceinit would be from wrong name or funding txid
i saw some dicebet for the other plan and that was confusing things
and now it is running stable, no deadlocks no crashes for an hour
TonyL09-Nov-18 01:25 AM
I'll try now to play from 3 nodes
Just have to update
jl777c09-Nov-18 01:25 AM
all the various edge cases seem to be handled, at least it is completing all bets and having just a dozen or so pending, waiting on confirmation
maybe 3 nodes will crash it
TonyL09-Nov-18 01:28 AM
Done, run gambling on 3 nodes
jl777c09-Nov-18 01:33 AM
@blackjok3r you might want to study how I sped up the dealer node 1000x, dicefinish() is a dedicated thread and actually not that complex considering what it does
1
blackjok3r09-Nov-18 01:33 AM
Will have a good read today thanks
jl777c09-Nov-18 01:33 AM
it was looking a bit bleak for a while, but I finally managed to get it stabilized
blackjok3r09-Nov-18 01:33 AM
Great work
jl777c09-Nov-18 01:34 AM
the dicestatus loop uses the same DiceQueue that the realtime validation does
mutexes to protect data structure
queueing and I will change the linear search with hashing tomorrow, but everything is all in nice little functions already
so dice CC can now be a model for high performance mempool processing for games or any challenge response
the 51% secret reveal attack vector is also defended against, just need to actually validate the refund tx
1
TonyL09-Nov-18 01:37 AM
Are things stable now with 3 nodes?
jl777c09-Nov-18 01:37 AM
i am not seeing any problems on the dealer node
things still seem to be instant response
TonyL09-Nov-18 01:38 AM
Great
@jl777c Were there any changes in RNG model ?(edited)
blackjok3r09-Nov-18 01:38 AM
Will have a play with it myself too, and do some reading of the code.

TonyL09-Nov-18 01:38 AM
If so I can re-check RNG fairness
jl777c09-Nov-18 01:39 AM
I disabled 1:1 odds for RPC, but we should really validate the fairness. i didnt change the RNG, but maybe something in the system changes
TonyL09-Nov-18 01:40 AM
Oh it's not a big deal that there is no 1:1 since we have all others
Will re-check it tomorrow
Now such test will be much much more faster than before because it's possible to place much more bets/minute
jl777c09-Nov-18 01:42 AM
yes, maybe 5 million bets can be made in a day
1
TonyL09-Nov-18 01:43 AM
Nice capacities even for poker room
jl777c09-Nov-18 01:43 AM
still not sure if more than 1000 bets per minute can be sustained
blackjok3r09-Nov-18 01:43 AM
Thats a pretty incredible rate for a single node ot handle
TonyL09-Nov-18 01:44 AM
Will one block size fit 1000 bets?(edited)
jl777c09-Nov-18 01:44 AM
i cleared 1000 backlogged bets and it seemed to take only about 10 seconds
1
5000 to 7000 bets will fit in a block
1
oh, half that
dicebet -> dicefinish
2 tx per bet
TonyL09-Nov-18 01:45 AM
I'm not totally sure how many I'm placing now in single block
But should be around few hundred
jl777c09-Nov-18 01:45 AM
30609 Nov 8, 2018 1:04:58 PM 651 202416
6500 tx possible if to extrapolate that one
blackjok3r09-Nov-18 01:46 AM
Its not easy to place a full block, with the utxo selection.. Even if your node has 5000 utxo to choose from, it wills till choose the smae ones somehow if you bet too fast
jl777c09-Nov-18 01:47 AM
maybe something like dicefinish is needed. i allocate utxo for all the pending bets at once
so one iteration through the utxos and all pending bets have their utxo
blackjok3r09-Nov-18 01:47 AM
tbh who is going to be betting that many at once ... its mostly for testing the limits that we need it .. Normally a single node would be betting only 1-2 at a time.
TonyL09-Nov-18 01:48 AM
Maybe not dice but some other CC
Like a slots
In slots you may do like 50-60 spins for a minute
jl777c09-Nov-18 01:48 AM
only the wins need to do the normal utxo scan, but at 1:2 odds, it is only one third the tx. I didnt bother batch selecting the dicewin utxo as it seems faster now than a dozen test nodes can blast
TonyL09-Nov-18 01:52 AM
Hmm just had an idea (not connected to dice) - make a chess game based on oraclesCC. Each game is a oracle, 2 players are publishers publish moves one by one - after game can check moves from it. Will it be a good demonstration?
jl777c09-Nov-18 01:54 AM
a dapp could validate the moves
when we get the bet CC, people can play for money
TonyL09-Nov-18 01:55 AM
There are physical chess boards which broadcast moves
Digital Chess Clocks, Electronic Chess Boards, Chess Computers, Starter Boxes, Game Timers and more. Leader in Chess Development and Innovative Products.
So may be IOT and blockchain in action
1
jl777c09-Nov-18 02:01 AM
I forgot to add a bit of sleep in my polling loop. that is why CPU usage was so much
now it is 10% to 20%, with peaks to 50%.
1
jl777c09-Nov-18 02:16 AM
had to take the dealer node offline for a few minutes. had a 200 bet backlog, which it cleared in a few seconds
it not only seems to keep up in realtime with plenty to spare, but i think i can catch up thousands of bets per block if ever it is offline for some time
and best of all, it appears to be processing every last dicebet. no edge cases that confuse it anymore
blackjok3r09-Nov-18 02:21 AM
Awesome work
jl777c09-Nov-18 02:21 AM
once you understand how i did it, i think it will help you with any of your realtime processing stuff
1
jl777c09-Nov-18 08:22 AM
fixed a deadlock (maybe more exists under high load)
added basic refund validation
automatically creates 0.0002 utxos for the parallel txconstruction and also creates 0.023 utxo that are needed to fund the sendmany 0.0002
reduced CPU usage now it ranges from 1% to 20% maybe under stress test it will go up
all that seems left is to fix whatever bugs a massive stress test finds, oh, and changing the silly linear searches to hashtables, that will make it go even faster
KMDICE is ready for a mass stress test
1
siu - Chainmakers09-Nov-18 09:37 AM
compiling and testing
siu - Chainmakers09-Nov-18 10:13 AM
working good so far
error code: -22
error message:
TX decode failed
siu - Chainmakers09-Nov-18 10:24 AM
im getting more and more ot TX decode failed and bets that stay pending
jl777c09-Nov-18 10:33 AM
i see only 4 pending bets
txdecode fail is when your dicebet conflicts with another nodes
blackjok3r09-Nov-18 10:35 AM
just finishing up what I have been working on and will run some tests on this and get to reaading the code.
jl777c09-Nov-18 11:06 AM
there are a stubborn 8bets or so that are not being processed, investigating


South Korean minister to visit Japan ahead of deadline on intelligence pact
SEOUL (Reuters) - South Korean Foreign Minister Kang Kyung-wha will visit Japan on Friday for a meeting of the Group of 20 big economies, a diplomatic source said, as the neighbors’ pact to share intelligence is set to end over a diplomatic and trade dispute.
Saturday is the pact’s deadline, and Kang is traveling regardless of a final decision by South Korea, which is still being discussed, the source said on condition of anonymity, because of the sensitivity of the discussions.
South Korea’s move to let its GSOMIA pact with Tokyo lapse defies mounting U.S. pressure to maintain a key element of security cooperation among the three.


This is straight forward, this deals with the turn signals on the back of the bike. I have a circuit using a standard 555 Timer, with the switch being a on the bicycle handle bars. I designed the circuit to turn the light on for .5s, off for .5s, and so on until it's off. For the LEDs, after some research in digikey's automotive section, I found high power LEDs used in exteriror signals and brake lights rated at .5W per LED. It may sound like a lot, but remember these lights are only on for a few seconds at a time when you are making a turn.


Missing Date Details We're missing the start and end dates from this show. {% include boxes/phrase_if_you_can_help.html %}


//adding the css sheet to this html file
//creating a form for adding text
//field for adding the chat message
//button for sending the chat


IO::Scalar - IO:: interface for reading/writing a scalar
Perform I/O on strings, using the basic OO interface...
use 5.005;
use IO::Scalar;
$data = "My message:\n";
### Open a handle on a string, and append to it:
$SH = new IO::Scalar \$data;
$SH->print("Hello");
$SH->print(", world!\nBye now!\n");
print "The string is now: ", $data, "\n";
### Open a handle on a string, read it line-by-line, then close it:
$SH = new IO::Scalar \$data;
while (defined($_ = $SH->getline)) {
print "Got line: $_";
}
$SH->close;
### Open a handle on a string, and slurp in all the lines:
$SH = new IO::Scalar \$data;
print "All lines:\n", $SH->getlines;
### Get the current position (either of two ways):
$pos = $SH->getpos;
$offset = $SH->tell;
### Set the current position (either of two ways):
$SH->setpos($pos);
$SH->seek($offset, 0);
### Open an anonymous temporary scalar:
$SH = new IO::Scalar;
$SH->print("Hi there!");
print "I printed: ", ${$SH->sref}, "\n"; ### get at value
Don't like OO for your I/O? No problem.
Thanks to the magic of an invisible tie(), the following now
works out of the box, just as it does with IO::Handle:
use 5.005;
use IO::Scalar;
$data = "My message:\n";
### Open a handle on a string, and append to it:
$SH = new IO::Scalar \$data;
print $SH "Hello";
print $SH ", world!\nBye now!\n";
print "The string is now: ", $data, "\n";
### Open a handle on a string, read it line-by-line, then close it:
$SH = new IO::Scalar \$data;
while (<$SH>) {
print "Got line: $_";
}
close $SH;
### Open a handle on a string, and slurp in all the lines:
$SH = new IO::Scalar \$data;
print "All lines:\n", <$SH>;
### Get the current position (WARNING: requires 5.6):
$offset = tell $SH;
### Set the current position (WARNING: requires 5.6):
seek $SH, $offset, 0;
### Open an anonymous temporary scalar:
$SH = new IO::Scalar;
print $SH "Hi there!";
print "I printed: ", ${$SH->sref}, "\n"; ### get at value
And for you folks with 1.x code out there: the old tie() style still works,
though this is unnecessary and deprecated:
use IO::Scalar;
### Writing to a scalar...
my $s;
tie *OUT, 'IO::Scalar', \$s;
print OUT "line 1\nline 2\n", "line 3\n";
print "String is now: $s\n"
### Reading and writing an anonymous scalar...
tie *OUT, 'IO::Scalar';
print OUT "line 1\nline 2\n", "line 3\n";
tied(OUT)->seek(0,0);
while (<OUT>) {
print "Got line: ", $_;
}
Stringification works, too!
my $SH = new IO::Scalar \$data;
print $SH "Hello, ";
print $SH "world!";
print "I printed: $SH\n";
This class is part of the IO::Stringy distribution; see IO::Stringy for change log and general information.
The IO::Scalar class implements objects which behave just like IO::Handle (or FileHandle) objects, except that you may use them to write to (or read from) scalars. These handles are automatically tiehandle'd (though please see WARNINGS for information relevant to your Perl version).
Basically, this:
my $s;
$SH = new IO::Scalar \$s;
$SH->print("Hel", "lo, "); ### OO style
$SH->print("world!\n"); ### ditto
Or this:
my $s;
$SH = tie *OUT, 'IO::Scalar', \$s;
print OUT "Hel", "lo, "; ### non-OO style
print OUT "world!\n"; ### ditto
Causes $s to be set to:
"Hello, world!\n"
Returns the self object on success, undefined on error.
Warning: this continues to always cause a seek to the end of the string, but if you perform seek()s and tell()s, it is still safer to explicitly seek-to-end before subsequent print()s.
seek OFFSET, WHENCE
, q.v.
getpos()
.
Perl's TIEHANDLE spec was incomplete prior to 5.005_57;
it was missing support for seek()
, tell()
, and eof()
.
Attempting to use these functions with an IO::Scalar will not work
prior to 5.005_57. IO::Scalar will not have the relevant methods
invoked; and even worse, this kind of bug can lie dormant for a while.
If you turn warnings on (via $^W
or perl -w
),
and you see something like this...
attempt to seek on unopened filehandle
...then you are probably trying to use one of these functions
on an IO::Scalar with an old Perl. The remedy is to simply
use the OO version; e.g.:
$SH->seek(0,0); ### GOOD: will work on any 5.005
seek($SH,0,0); ### WARNING: will only work on 5.005_57 and beyond
$Id: Scalar.pm.html 625 2005-06-09 14:20:30Z nj7w $
Eryq (
The full set of contributors always includes the folks mentioned in CHANGE LOG. But just the same, special thanks to the following individuals for their invaluable contributions (if I've forgotten or misspelled your name, please email me!):
Andy Glew,
for contributing getc()
.
Brandon Browning,
for suggesting opened()
.
David Richter,
for finding and fixing the bug in PRINTF()
.
Eric L. Brine, for his offset-using read() and write() implementations.
Richard Jones,
for his patches to massively improve the performance of getline()
and add sysread
and syswrite
.
B. K. Oxley (binkley), for stringification and inheritance improvements, and sundry good ideas.
Doug Wilson, for the IO::Handle inheritance and automatic tie-ing.
IO::String, which is quite similar but which was designed more-recently and with an IO::Handle-like interface in mind, so you could mix OO- and native-filehandle usage without using tied().
Note: as of version 2.x, these classes all work like their IO::Handle counterparts, so we have comparable functionality to IO::String.


We are going through a period of major change at Esendex. Not only are we moving to new headquarters, opening an office in San Francisco and rebranding, all in the first two weeks of September, but we’re also hiring like mad. As result of this hiring, I’m spending a lot of my time at the moment explaining how the development team work to both people who join us and those that we interview.
I’ve realised tonight that as I, and they, describe how the team work, I’ve become really proud of them
We’ve embrace Agile development in a big way. We live and breathe TDD (Test Driven Development), BDD (Behaviour Driven Development), CI (Continuous Integration), Pair Programming and any other facets of the agile approach that help us deliver better solutions.
The issue for many developers is that Agile can be bloody hard work. You have to review and critique what you’re doing all the time, be it code or practice. It’s about constantly striving for development bliss, knowing full well that true nirvana is a utopian dream.
Agile is not just a methodology, it’s a state of mind.
The best developers are driven by this desire for self-improvement and I’m lucky enough to have a team of them working for me.
It’s been 10 years since my agile epiphany when a fellow contractor on a job suggested I read Extreme Programming Explained by Kent Beck. For the first time since then I truly believe I have an excellent agile team. Some have learnt the skills over their years with us others have joined us with a rich set of experiences, but all have an overwhelming desire to be the best they can be.
The Esendex messaging platform is rock solid and has been the focus of our efforts and indeed the foundation of our success over the years. But to date, if I’m honest, we haven’t really excelled in giving our customers the best web application experience.
Our new Echo product is a huge step forward from our previous Web SMS tool and has improved the experience for many of our customers but it does bear some of the scars of legacy practices. Elements of it are not examples of how good the development team can be and they are desperate to resolve these.
However, being agile is not about wholesale, sweeping and thus high risk changes. It’s about incremental delivery and improvement. Targeting finite resources on those requirements that are most pressing.
The great thing for me, and you if you’re a customer, is that that is exactly what the team are doing.  Always striving for quality, always improving our solutions and themselves, always moving forward.
I’m truly proud of our development team, they know exactly where they are, where they want to be and have a damn good idea of how to get there.
I’m lucky to have them.


Testimaonials
-
- Dee Able Proctor
-
Thank you so much for taking such good care of Beignet while we were away. We really appreciate all you do for her and our family.
-
- Harriet
-
Thank you so much for all your help. Bella and I are so happy that we found you!


Trouble
in
Tribble Town
ROUND
00
TIME
00
POINTS
00
You've responded to a destress call from the Tribble homeworld, Iota Geminorum IV. The Tribble's are currently under attack by a Klingon armada that was sent by the Klingon Empire to destroy the Tribble homeworld.
The Tribble's have no means of defense and you're the only ship around for lightyears in this star system. It's up to you to save the Tribbles from the Klingon's!
Save the Tribbles
Avoid the Klingons


Mxui.Form.Combobox.static.defaults
attribute
Source
Default setttings for the Combobox. These can all be overridden.
- classNames: String. When mxui_form_combobox is called on an
element, it is wrapped in a div. The element is given the class that
is defined by
classNames
.
- filterEnabled: Boolean. Controls whether autocompletion is enabled on the combobox.
- displayHTML: Boolean. If true, show the contents of a list item as rich HTML. If false, show it as plain text.
- selectedClassName: String. The class that will be assigned to options that the user focuses on.
- activatedClassName: String. The class that will be assigned to options that the user clicks.
- disabledClassName: String. The class that will be assigned to options that are disabled and the user cannot select.
- width: Number/null. The width of the Combobox.
- emptyItemsText: String. The text that is shown when the Combobox has no items to display.
- watermarkText: String. The text to display if there is no option selected.
- showNoSelectionOption: Boolean. Lets the user choose to make no selection.
- noSelectionMsg: String. The text to show for a non-selection.
- storeSerializedItem: Boolean. If true, store the attributes of the currently selected item as JSON in a hidden input. If false, just store the item's <option> value in the hidden input.
- nonSerializedAttrs: String[]. A blacklist array of attributes to not store, assuming
storeSerializedItem
is true.
- overrideDropdown: Boolean. Determines whether to use the standard Combobox dropdown animation, or the animation function bound to the 'show:dropdown' event.
- noItemsMsg: String. Text to show when no items are available in an autocomplete-enabled field.
render: Object. This method defines the HTML that wraps a Combobox item. To override, initialize the Combobox with a function like so:
$("input").mxui_form_combobox({
render: {
'itemTemplate': function(item, val){
}
}
});
Where item
is the item being drawn, and val
is the value that the item represents internally.


This inspections checks whether XML resources are stored in resource folder which type is recommended by documentation


Saturday, November 22, 2014
According to Ruby-doc (my favorite reference source.......):
The Enumerable mixin provides collection classes with several traversal and searching methods, and with the ability to sort.
Wut. Basically, enumberables allow us to take elements from collections (arrays, hashes, etc) one at a time. We can do certain things to each one of them. Depending on what we do, we may have new results or the same old original results.
Let's use these three enumerators to illustrate how enumberable methods work: .each, .map, and .map!, along with an array called not_fun. Inside not_fun are three activities, strings to be exact:
> not_fun = ["washing dishes", "dieting", "doing paperwork"]
=> ["washing dishes", "dieting", "doing paperwork"]
.each method allows you to go through the block of code for each element (in this case, our activity strings) of the array, but it returns the original object (the no_fun array).
> not_fun.each {|activity| activity.capitalize + " is so fun...not."}
=> ["washing dishes", "dieting", "doing paperwork"]
> not_fun
=> ["washing dishes", "dieting", "doing paperwork"]
With .each, we capitalize each activity and form a sentence. However, you will see that it returned the original array without capitalization or the rest of the sentence. The reason why is .each doesn't modify the array. Also you don't see "Washing dishes is so fun...not" because we didn't put puts in the block of code. But don't worry about that because puts, return, p, and prints are a whole different beast to mess with.
.map method returns the new object with changes but it doesn't change the original array.
However, in the end you can still pull the original worksheet from the protector sheet and it's as if his chubby crooked-line-drawing hands have never touched it.
Here you see that with .map, it returns a modified array where the activity is capitalized and in a complete sentence for each activity. However, if you run the array again, you will see it returned the original array without capitalization and sentence:
> not_fun
=> ["washing dishes", "dieting", "doing paperwork"]
.map! has an ! attached to it, making it a "destructive" version of .map. Destructive means it will modify and replace the original object with the changes done to each element.
> not_fun.map! {|activity| activity.capitalize + " is so fun...not."}
=> ["Washing dishes is so fun...not.", "Dieting is so fun...not.", "Doing paperwork is so fun...not."]
When you run the not_fun array, you will see it has changed into a new array:
> not_fun
=> ["Washing dishes is so fun...not.", "Dieting is so fun...not.", "Doing paperwork is so fun...not."]


[ THE ROYAL HOTEL ]
BOOK NOW
f
MENU
X

| BOOK A TABLE
| BOOK A ROOM
| BOOK A WEDDING
| BOOK A EVENT |
X

HOME
ABOUT US
THE FIFTY FIVE
ROOMS
WEDDINGS
CELEBRATIONS
MEETING AND EVENTS
SELECT DATES
Fitness and Creation
Airport Pick And Drop
Spa
Free Wi-fi
Free Parking
Outside terrace
Arrival Date :
Departure Date:
Rooms :
Adults :
Children :
SPECIAL CODES
ADVANCED SEARCH
Promotion Code
Room Type
Standard Single :
Standard Double:
Executive Double :
Royal Suite :
submit
HOME
ABOUT US
EVENTS
The Fifty Five
The Royal Hotel
,
A14 Civilline,
Delhi
Tel: 01786 832 284
Mail To Us
Royal Hotel, Stirling 2017
.


Why Userful?
Freedom of choiceUserful is not dependant on proprietary hardware giving you the freedom to deploy any kind video wall for any kind of purpose. |
Grows with your businessOur video wall controller can handle as many displays as you need without having to replace your equipment every time you want to scale up. |
Cost Effective & SecureUserful utilizes a PC and a local network to run any video wall which reduces the cost of deployment and increases the reliability and security of your content. |


Well for awhile I had wanted to get a couple of 20 mg adderall from a friend. After a week, I was finally able to get some and that day was earlier today. I've had experience once with methylphenidate-Ritalin, in the form of 5 mg pills. I liked those, they made me stay wide awake in school and focus everything in on class work. The only problem I found with methylphenidate was that it's out of my system within half the time of dextro-amphetamine, my guesstimate would be 4-6 hours half life. I ended up crashing before the day was even over, not fun. Coming off of an amphetamine is a very uncomfortable feeling. Mentally I feel worn out, like I havenít slept in awhile, almost like staying up for a day or two, not being able to sleep. I didn't worry about sleep when I took Ritalin, because by the time I was coming down, it was the end of the day so I could simply go home and rest.
So once I got home with the 40 mgs of adderall, I used the restroom, went in my room, and shut the door. Prepping for insuffulation, I crushed each individual pill using a metal bottle cap, worked very well. I railed one pill and my nostril burnt for about 5 minutes later, perhaps it wasn't fine enough of a powder, though I was sure there werenít big chunks in the pile, no signs of bleeding.
Allowing the chemical to take hold, I sat back at my desk and chilled out looking on the forum I frequent. About a minute or two later, I taste the drip so I retrieve some water from my bathroom to clear my palate after each glob of mucus disgusts my tongue. Effects begin to take effect gradually as 5 minutes pass. Once 10 minutes have passed, I feel more alert, and I'm focusing in on every detail around me. Once my nostril is done burning, I shoot half of the other pill in the latter nostril, and then eat the other half. This was around 4:10 PM when all of the adderall was in me.
Around 6 or so PM, after forcing myself to finish my plate at dinner and having a good chat with my parents, I go smoke a bowl of weed and that adds a great effect. I'm a chronic marijuana smoker, I smoke at least twice a day on an average day. At first when I was getting used to the adderall, even though I felt no signs of euphoria, I didn't have an urge to smoke. I decided to see what adderall and sweet leaf would be like. It took me almost 3 minutes to finish a gram or so of mids, usually I take 5 to 10 minutes, but this time the smoke heating my throat didnít bother me, and I was able to maintain sucking it down. As I walked back to my room, I felt the two drugs fuse.
After smoking weed I'll feel lethargic and unmotivated. Well the adderall filled those two spaces and the feeling was quite unique. The familiar stoned feeling filled my head, but I didnít feel like sitting at my desk playing video games as I usually do whilst stoned, instead I studied for my final exams I have to take later this week. After chilling out studying and talking to people on my computer, I picked up my bass to see if I could possibly play faster with more precision. Was I right? Damn straight.
After practicing some bass, I took a shower which really gave me more energy, the warm water felt relaxing, washing my hair was fun, lathering my hair is usually a mundane thing to me, but the adderall made me appreciate the feeling more. Now, I'm hear finishing up my trip report. I had always thought of making a report but was too lazy. Adderall = no lazy.
I can defiantly see the addiction potential in dextro-amphetamine. Adderall is different than Ritalin, a lot. Adderall wires me longer, about double the duration of methylphenidate. People may say they get high off of adderall, that didn't occur for me. I felt no significant euphoria at all like I subtly did with Ritalin. A sense of well being was defiantly imminent, as since I dosed (over 7 hours later) I have felt more social and more open to speaking. Adderall makes me talkative. It's controllable, but I don't want to fight it. Having a deep talk with a friend makes time fly while under the influence. I now understand how people could grow an addiction in the way it makes me much more motivated to work or study. As I pointed out, I didn't notice or anticipate any euphoria, though some people claim they do achieve a euphoric state similar to cocaine at higher doses.
Hours have passed since dosing, and I'm still alert and focused, in fact if it werenít for adderall there would be no way I could have done this at 11:20 PM. I would recommend adderall for anyone looking to really hit the books and cram for a final, or get a term paper done. Pretty much anything you can think of which requires mental problem solving or even physical activity can be enhanced with adderall. I can see myself possibly taking it before a show to improve my playing, but I would use it sparingly as amphetamines are just plain bad on your heart. Although I usually hate writing, I'm pretty good with words, once the thought of me writing a report came to mind, I decided to spend an hour writing a good experience. Here I am now, about to take some of my prescribed ambien to help me get to sleep.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


FranzXaver is a library of JavaFX components and tools, and also includes a collection of JavaFX example applications. Some of the examples are pure JavaFX API examples, others are using the components provided by the FranzXaver library.
I did not want to create yet another "MyJavaFXExamples", "JavaFXComponents" or similar project. The street where I live is named after an ambassador from the Baden region in Germany, Franz Xaver Honold. Since his first name initials match the FX in JavaFX, I choose to name this project after him.
SvgLoader - An Apache Batik based SVG loader which reads svg files and returns a JavaFX scene graph according to the svg file. With this library, its possible to author JavaFX components with an SVG authoring tool like Inkscape and create new controls based on the svg file.
SnapSlider - a javafx.scene.control.Slider
based component which makes sure that the final slider value is properly delivered to the application.
ColorSeparator - a tool class which separates a given JavaFX image into its color channels and returns distinct images for each color channel.
Meter - an example for a custom control which uses the SvgLoader to implement an analog meter.
MultiSegmentPanel - an example for a custom control which uses the SvgLoader to implement a 7 segment and a 14 segment display.
afester.javafx.examples.border.BorderExample
- An example which demonstrates how to add a border to a JavaFX node, including 9-patch scaling. See 9-patch scaling in JavaFX for more information.
afester.javafx.examples.colorchannels.ColorChannelsExample
- An example which shows how to separate an image into its red, green and blue color channels. See Separating color channels in JavaFX for more information.
afester.javafx.examples.svg.SvgLoaderResultViewer
- An application which shows the result of a scene graph which has been loaded with the SVG loader. The svg file can be selected from the file system, and the result can be scaled.
afester.javafx.examples.layouts.LayoutExamples
- An example which shows the different layout algorithms (panes) supported by JavaFX.
afester.javafx.examples.svg.TigerExample
- The most simple SVG example which loads an SVG file and renders it as a JavaFX scene graph.
afester.javafx.examples.animation.counter.AnimatedCounter
- An example which animates a sequence of bitmap graphics to show a count down counter.
afester.javafx.examples.animation.game.DrivingCar
- An example which shows a simple animation of a driving car where the car can be controlled with the cursor keys (speed and left/right).
afester.javafx.examples.animation.game.BouncingBall
- An example which shows an animated ball which can be bounced through a platform which can be moved with the cursor keys.
afester.javafx.examples.components.sevensegment.SegmentDisplay
- An example which shows stylable 7-segment and 14-segment displays.
afester.javafx.examples.components.meter.MeterSample
- An example which shows the analog meter.


{!extends base.html !} {!block title!}{%set page 'sponsor'%}Jangod, support for its growth{!endblock!} {!block content!} This page is building. {!endblock!}


Microsoft Applied Robotics Research Library
Hololens Navigation Dashboard
Required ROS Nodes
Pepper ROS Stack
unknown
HoloLens ROS Bridge
unknown
Sequence
-
Anchor Localizer
unknown
Static Calibration
unknown
Dynamic Adjuster
unknown
Localizer
unknown
Application
Exit Dashboard
Status


The following is a list of things you would have to have intstalled to be able to set up your Snowbots workspace.
Download for the corresponding native OS that you are running the virtual machine on.
It is very important that you are installing v4.3 instead of the newest version as Vagrant is not compatible
Like Git please download according to your native OS. eg.Windows, download the .msi package, Mac download the .dmg package
Please install these 3 programs in order from left to right and restart your computer after the Vagrant installation daemon prompts you to.
The rest of the Vagrant setup process will take place in the git terminal
Open Git (aka. git-bash), and you should see the following
eg. If you want to put things into your D:\ drive, $cd /D
In my example case, I am putting things on my desktop
The reason you have to perform this action is because the Vagrant image file is located in the repo
Tip: You can paste into git-bash by pressing Insert
To do that, you use the $ cd
command again
After you $cd Snowflake
, typing in $ls
should show you a list of the files like this:
Next you will run Vagrant to create a virtual box with our image
Allow the program to download the virtual box and adjust it according to our image file
In the process, you should see a bunch of green text, that means it is working.
Now that you can SSH into your virtual box, we can check to see if it has been installed properly.
We will use the $ catkin_make
command
If there are no problems, you should be able to see the [100%] shown on the side
To learn more about running programs in ROS, check out the official ROS tutorial
If you have any questions please feel free to contact any of the software members! Or Email us any concerns you have @:


--- layout: default --- HOME EDIBLE BERRIES INEDIBLE BERRIES RECIPES Here is a list of a few berries and their nutritional traits.
Here is a list of a few berries and their nutritional traits.


{% extends "baseNoAuth.html" %} {% block content %}
Social distribution is a blogging/social network platform that will allow the importing, distributing, and sharing of other sources of posts and content. An author sitting on one server can aggregate the posts of their friends on other servers.


Publications
Dissertation
Simulation-Based Search for Hybrid System
Control and Analysis, Stanford University, Palo Alto, California, USA,
June 2000. Also available as
Stanford
Knowledge Systems Laboratory technical report KSL-00-15. (abstracts:
short,
long)
(PDF, PS)
Papers
-
(with Laura E. Brown et al.)
Model AI
Assignments 2016 in the Proceedings of the 30th AAAI Conference on
Artificial Intelligence (AAAI-16), February 12–17, 2016, Phoenix, Arizona
USA, AAAI Press, Palo Alto, California, USA, pp. 4139-4140.
http://modelai.gettysburg.edu/2016/kmeans/
-
(with Michael Wollowski et al.) A Survey
of Current Practice and Teaching of AI in the Proceedings of the 30th
AAAI Conference on Artificial Intelligence (AAAI-16), February 12–17, 2016,
Phoenix, Arizona USA, AAAI Press, Palo Alto, California, USA, pp. 4119-4124.
-
(with Colin Messinger ‘17 and Zuozhi Yang ‘17) Learning
and Using Hand Abstraction Values for Parameterized Poker Squares in the
Proceedings of the 30th AAAI Conference on Artificial Intelligence
(AAAI-16), February 12–17, 2016, Phoenix, Arizona USA, AAAI Press, Palo
Alto, California, USA, pp. 4095-4100.
-
(with Yoshiaki Yamaguchi) First Player’s Cannot-Lose
Strategies for Cylinder-Infinite-Connect-Four with Widths 2 and 6, in
Plaat, Aske, van den Herik, Jaap, Kosters, Walter (eds.), LNCS 9525:
Advances in Computer Games, 14th International Conference, ACG 2015, Leiden,
The Netherlands, July 1-3, 2015, Revised Selected Papers, Springer,
Switzerland, 2015, pp. 113-121.
-
(with Darren Glass) Optimal Defensive
Strategies in One-Dimensional RISK, Mathematics Magazine, vol. 88 no. 3,
June 2015, pp. 217–230.
-
Pedagogical Possibilities for the 2048 Puzzle
Game, The Journal of Computing Sciences in Colleges, vol. 30, no. 3,
January 2015, pp. 38-46. (Best Paper Award CCSC Eastern 2014)
-
(with Laura E. Brown et al.)
Model AI
Assignments 2014, in Proceedings of EAAI-14: The 5th Symposium on Educational Advances in Artificial Intelligence, Quebec City,
Quebec, Canada, July 28-29, 2014. (included in collocated 28th AAAI
proceedings, vol. 4, pp. 3054-3055)
Monte Carlo Simulation and Monte
Carlo Reinforcement Learning assignments:
http://modelai.gettysburg.edu/2014/mc1/index.html
-
(with Marcin Malec ‘13, Clifton G.M. Presser, and Forrest Jacobs ‘12) Optimal,
Approximately Optimal, and Fair Play of the Fowl Play Card Game, in the
Proceedings of the 8th International Conference on Computers and Games
CG2013, Yokohama, Japan, August 13-15, 2013, Lecture Notes in Computer
Science LNCS 8427, Springer Verlag, Heidelberg/Berlin, pp. 233-243, June
2014. (http://link.springer.com/book/10.1007/978-3-319-09165-5)
-
(with Marc Lanctot et al.)
Model AI
Assignments 2013, in Proceedings of EAAI-13: The 4th Symposium on Educational Advances in Artificial Intelligence, Bellevue,
Washington, July 15-16, 2013. (included in collocated 27th AAAI
proceedings, pp. 1602-1603)
Counterfactual Regret Minimization assignments:
http://modelai.gettysburg.edu/2013/cfr/index.html
-
(with Laura E. Brown et al.) Model AI Assignments 2012, in
Proceedings of EAAI-12: The
3rd
Symposium on Educational Advances in Artificial Intelligence, Toronto,
Ontario, Canada, July 23-24, 2012.
(included in collocated 26th AAAI proceedings)
Pig Solution assignments:
http://modelai.gettysburg.edu/2012/pig/
-
(with Steven Hnath ‘12) Approximating Optimal Dudo Play with Fixed-Strategy
Iteration Counterfactual Regret Minimization,
in van den Herik, H. Jaap and Plaat, Aske, eds., LNCS 7168: Advances
in Computer Games, 13th International Conference, ACG 2011, Tilburg, The
Netherlands, November 20-22, 2011, Revised Selected Papers, Springer, 2012, pp.
169-182.
-
(with Marie desJardins et al.) Model AI
Assignments 2011, in Proceedings of EAAI-11: The
2nd
Symposium on Educational Advances in Artificial Intelligence, San Francisco,
California, August 9-10, 2011.
(included in collocated 25th AAAI proceedings)
Clue Deduction assignments:
http://modelai.gettysburg.edu/2011/clue/
-
Rook
Jumping Maze Generation for AI Education, in
Proceedings of the 24th
International FLAIRS Conference (FLAIRS-2011), Palm Beach, Florida, May
18-20, 2011, pp. 382-387.
-
(with Adrian Fisher, Munyaradzi T. Choga
‘12, Samir M. Lalvani
‘13, and Kyle D.
McCarty ‘11) Rook
Jumping Maze Design Considerations, in van den Herik, H. Jaap, Iida,
Hiroyuki, and Plaat, Aske, eds., LNCS 6515: Computers and Games, 7th
International Conference, CG 2010, Kanazawa, Japan, September 24-26, 2010,
Revised Selected Papers, Springer, 2011, pp. 188-198.
-
(with John DeNero et al.)
Model AI
Assignments, in Proceedings of EAAI-10: The 1st
Symposium on Educational Advances in Artificial Intelligence, Atlanta,
Georgia, July 13-14, 2010. (included in collocated 24th AAAI proceedings)
Rook Jumping Maze Generation assignments:
http://modelai.gettysburg.edu/2010/rjmaze/
-
(with Clifton G.M. Presser)
Practical Play
of the Dice Game Pig, The UMAP Journal 31(1)
(2010), pp. 5-19.
-
(with Ingrid Russell, Zdravko Markov, and Susan Coleman)
MLExAI: A
Project-Based Application-Oriented Model, ACM
Transactions on Computing Education, Vol. 10, No. 3, Article 11, 2010.
- (with Christopher La Pilla ‘04)
Decision-Theoretic Simulated Annealing, in
Proceedings of the 23rd
International FLAIRS Conference (FLAIRS-2010), Daytona Beach, Florida, May
19-21, 2010, pp. 50-55.
- (with Nick Parlante et al.)
Nifty Assignments,
in Proceedings of the 41st
Technical Symposium on Computer Science Education, March 10-13, 2010,
Milwaukee, Wisconsin, ACM, pp. 478-479.
All Assignments:
http://nifty.stanford.edu/
Pig
Assignments: http://nifty.stanford.edu/2010/neller-pig/
- (with Ingrid Russell, Zdravko Markov) Throw Down an AI
Challenge, in Using AI to Motivate Greater Participation in Computer
Science, Papers from the AAAI Spring Symposium, Technical Report SS-08-08,
AAAI Press, 2008.
- (with Zdravko Markov, Ingrid Russell, and Neli Zlatareva)
Pedagogical Possibilities for the N-Puzzle Problem,
Proceedings of the
36th ASEE/IEEE Frontiers in Education Conference, October 28-31, 2006, San
Diego, California (PDF,
resources)
- (with Zdravko Markov, Ingrid Russell) Clue Deduction:
Professor Plum Teaches Logic, Proceedings of the 19th International
FLAIRS Conference (FLAIRS-2006), Melbourne Beach, Florida, May 11-13, 2006, pp.
214-219 (PDF, PDF
slides,
resources).
- (with Clifton G.M. Presser, Ingrid Russell, Zdravko Markov)
Pedagogical Possibilities for the Dice Game Pig,
Journal of Computing Sciences in Colleges,
vol. 21, no. 6, pp. 149-161, June 2006
(PDF, PDF slides,
resources).
- (with Clifton G.M. Presser) Pigtail: A Pig Addendum,
The UMAP Journal 26(4) (2005), pp.
443-458.
- (with Zdravko Markov, Ingrid Russell, and Susan Coleman)
Enhancing Undergraduate AI Courses through Machine Learning Projects,
Proceedings of the 35th ASEE/IEEE Frontiers in Education Conference, October
19-22,
2005, Indianapolis, Indiana.
- (with Ingrid Russell, Zdravko Markov, Michael Georgiopoulos, and Susan Coleman)
Unifying an Introduction to Artificial Intelligence Course through Machine
Learning Laboratory Experiences, Proceedings of the 25th American Society
for Engineering Education Annual Conference and Exposition, Portland, Oregon, June
12-15, 2005, ASEE
Press.
- Teaching Stochastic Local Search, in I. Russell and
Z. Markov, eds. Proceedings of the 18th International FLAIRS Conference
(FLAIRS-2005), Clearwater Beach, Florida, May 15-17, 2005, AAAI Press, pp.
8-13.
- (with Clifton G.M. Presser) Optimal Play of the Dice
Game Pig, The UMAP Journal 25(1) (2004), pp. 25-47.
(PDF)
- (with Ingrid Russell) Implementing the Intelligent Systems
Knowledge Units of Computing Curricula 2001, in the Proceedings
of Frontiers in Education Conference (FIE ’03), Boulder, Colorado, November 5-8,
2003, IEEE Press. (PDF, PS)
- (with David C. Hettlinger ‘04)
Learning Annealing
Schedules for Channel Routing, in H. R. Arabnia and L. T. Yang, eds. Proceedings of the International Conference on VLSI (VLSI ’03), Las Vegas,
Nevada, June 23-26, 2003, pp. 298-302, Computer
Science Research, Education, & Applications
(CSREA) Press, Las Vegas, 2003. (PDF,
PS)
- (with Amy J. Kerr ‘03, Christopher J. La Pilla ‘04, and Michael D. Schompert
‘03) Java Resources for Teaching Reinforcement Learning,
in H. R. Arabnia and Y. Mun, eds. Proceedings of the International Conference
on Parallel and Distributed Processing Techiniques and Applications (PDPTA ’03),
Las Vegas, Nevada, June 23-26, 2003, pp. 1497-1501,
Computer Science
Research, Education, & Applications (CSREA) Press, Las Vegas, 2003. (PDF,
PS)
- Iterative-Refinement for Action Timing Discretization,
in Proceedings of the 18th National Conference on Artificial Intelligence
(AAAI'02), pages 492-497, Menlo Park, CA, USA, 2002. AAAI Press. (PDF)
- Extended Abstract: Action Timing Discretization with
Iterative-Refinement, in Sven Koenig and Robert C. Holte, eds., LNAI
2371: Abstraction Reformulation and Approximation, 5th International Symposium,
SARA 2002, Kananaskis, Alberta, Canada, August 2002, Proceedings, pages
170-177. Springer, Berlin, 2002. (PDF)
- Action-Based Discretization for AI Search, in S.
Marshall, ed., Proceedings of the Game Developers Conference 2002 (GDC
2002, San Jose Convention Center, San Jose, California, USA, 2002),
CMP United Business Media LLC, 2002. (PDF,
DOC)
Lecture available via Gamasutra.
See also
http://www.gdconf.com/archives/2002/.
- Information-Based Alpha-Beta Search and the Homicidal
Chauffeur, in C.T. Tomlin and M.R. Greenstreet, eds., Lecture Notes
in Computer Science 2289, Hybrid Systems: Computation and Control, Proceedings
of the Fifth International Workshop (HSCC '02, Stanford University, Palo
Alto, California, USA, 2002), pp. 323-336, Springer Verlag, 2002. (abstract,
PDF)
- Heuristic Optimization and Dynamical System Safety
Verification, in P. Antsaklis et al, eds., Lecture Notes in Computer
Science 1567, Hybrid Systems V: Proceedings of the Fifth International
Workshop on Hybrid Systems (HS '97, Center for Continuing Education, University
of Notre Dame, South Bend, IN, USA, 1997), Springer Verlag, 1999. (abstract)
- Information-Based Optimization Approaches to Dynamical
System Safety Verification, in Henzinger, T.A. and Sastry, S. (eds.),
Lecture Notes in Computer Science 1386, Proceedings of Hybrid Systems:
Computation and Control (HSCC '98), First International Workshop, Berkeley,
California, USA, April 1998
, Springer Verlag, 1998. (abstract)
- Chouiery, B. et. al. Toward a Practical Theory of Reformulation for Reasoning
about Physical Systems,
- Proceedings of the Symposium on Abstraction, Reformulation,
and Approximation (SARA '98), pp. 25-36, Pacific Grove, CA, 1998.
- Proceedings of the 12th International Workshop on
Qualitative Reasoning (QR '98), AAAI Technical Report WS-98-01,
pp. 21-31, Cape Cod, MA, 1998.
- Technical Report KSL-98-18, Knowledge Systems Laboratory,
Department of Computer Science, Stanford University, Stanford, CA, 1998.
- Preliminary Thoughts on the Application of Real-Time
AI Game-Tree Search to Control, in
Proceedings of the IFAC Symposium
on Artificial Intelligence in Real-Time Control, October 5-8, 1998, Grand
Canyon National Park, Arizona, USA, Elsevier Science, Oxford, UK, 1998.
(abstract)
- Algorithms for Real-Time Game-Tree Search for Hybrid
System Control, in Hybrid Systems and AI: Modeling, Analysis and
Control of Discrete + Continuous Systems of the AAAI-1999 Spring Symposium
Series, AAAI Technical Report SS-99-05, pp. 138-143, AAAI Press, Menlo
Park, California, USA, March, 1999. (abstract)
- Extending Search for Hybrid Systems: Action Timing
in Real-Time Autonomous Systems of the AAAI-2000 Spring Symposium
Series, March 20-22, 2000, Stanford University, Stanford, California, USA.
(abstract)
Posters
- (with Ingrid Russell and Zdravko Markov) Teaching AI Through Machine learning
Projects, abstract in Proceedings of the 11th Annual Conference on Innovation
and Technology in Computer Science Education (ITiCSE'06), June 26-28, 2006,
Bologna, Italy, ACM Press, p. 323.
Talks
-
Monte
Carlo Approaches to Parameterized Poker Squares, The 9th International
Conference on Computers and Games (CG2016), Leiden University, Leiden, the
Netherlands, June 29th, 2016.
-
A Simple Game with Complex Play: Perspectives on Perfect and Practical Play
of Pig, Alumni College, Gettysburg College, Gettysburg, Pennsylvania,
June 2, 2016.
-
An
Introduction to k-Means Clustering, The 30th AAAI Conference on
Artificial Intelligence (AAAI-16), February 13, 2016.
Peer-reviewed k-Means Clustering assignments with supporting software, Weka tutorial,
PowerPoint presentation, review of online resources, notation guide, data
sets, etc. are available at:
http://modelai.gettysburg.edu/2016/kmeans/
- (with Zuozhi Yang ‘17)
The Parameterized Poker Squares EAAI NSG Challenge and
Learning and Using Hand Abstraction Values for Parameterized Poker Squares,
The 30th AAAI Conference on Artificial Intelligence (AAAI-16), February 13,
2016.
- Faith and Finance, Gettysburg College Christian Fellowship, Gettysburg College, Gettysburg, Pennsylvania, April 9th, 2010,
April 9th, 2011,
April 14th, 2012,
March
23rd, 2013,
March 1st,
2014, February 21st, 2015,
April 2nd (DCF) and 8th (2 sections of Math 103), 2016.
- A Brief Introduction to Interactive Fiction,
Gettysburg College Game Club, February 2nd, 2016, October 17th, 2012.
-
A Sampling of Card Games, Gettysburg College Game Club, October 7th,
2015.
-
Getting Things Done for the Glory of God, Gettysburg College Christian
Fellowship, Gettysburg College, Gettysburg, Pennsylvania,
September 26th, 2015.
- (with Yoshiaki Yamaguchi) First Player’s
Cannot-Lose Strategies for Cylinder-Infinite-Connect-Four with Widths 2 and
6, The 14th Advances in Computer Games Conference (ACG 2015), Leiden,
Netherlands, July 3, 2015.
- Dice Games Properly
Presented: Gettysburg College Game Club, February 25, 2015.
- The Parameterized Poker Squares EAAI NSG
Challenge, EAAI-14: The 5th Symposium on Educational Advances in Artificial Intelligence, Quebec City,
Quebec, Canada, July 28, 2014; Gettysburg College, January 29, 2015.
- Pedagogical Possibilities for the 2048 Puzzle
Game, CCSCE-14: The 30th Annual CCSC Eastern Conference, York College of
Pennsylvania, York, PA, November 14-15, 2014. (Best Paper Award)
- Game
Resources and Recommendations: Gettysburg College Game Club, November 16th,
2010; October 29th, 2014
- An Introduction to Monte Carlo Techniques in
Artificial Intelligence - Part I, EAAI-14: The 5th Symposium on Educational Advances in Artificial Intelligence, Quebec City,
Quebec, Canada, July 28-29, 2014.
- Plentiful Possibilities
for Pen, Pencil, and Paper Play, Gettysburg College Game Club, February
12th, 2014.
- Amazons, Penguins, and Amazon
Penguins, Gettysburg College Game Club, October 16th, 2013.
- Android Programming Tutorial, Gettysburg College Computer Science
Colloquium: October 14th, 2011, September 13th, 2012, September 12th, 2013.
- (with Marcin Malec) Optimal,
Approximately Optimal, and Fair Play of the Fowl Play Card Game, CG2013:
The 8th International Conference on Computers and Games, Yokohama, Japan,
August 13-15, 2013. (PPT Version)
- An Introduction to Counterfactual Regret
Minimization, EAAI-13: The 4th Symposium on
Educational Advances in Artificial Intelligence, Bellevue, Washington,
July15-16, 2013.
- The Poker Squares
Family, Gettysburg College Game Club, March 6th, 2013.
- The Poker Squares Challenge
- Solving the Dice Game Pig: an introduction to
dynamic programming and value iteration, EAAI-12: The
3rd
Symposium on Educational Advances in Artificial Intelligence, Toronto,
Ontario, Canada, July 23-24, 2012.
- (with Steven Hnath)
Approximating Optimal Dudo Player with Fixed-Strategy Iteration
Counterfactual Regret Minimization, Advances in Computer Games, 13th
International Conference, Tilburg, The Netherlands, November 20th,
2011.
- Gettysburg College Computer Science Colloquium, November 17th,
2011
- Perspectives on Perfect and Practical Play of Pig,
Harrisburg Area Community College Honors Lecture, Gettysburg, Pennsylvania,
November 15, 2011.
-
A Sampling of Chess and Chip Games, Gettysburg College Game Club,
October 19, 2011.
- Model AI Assignments: Clue Deduction: an
introduction to satisfiability reasoning, EAAI-11: The 2nd
Symposium on Educational Advances in Artificial Intelligence, San Francisco,
California, August 9, 2011.
Clue Deduction Assignments:
http://modelai.gettysburg.edu/2011/clue/
-
Rook Jumping Maze Generation for AI Education,
24th
International FLAIRS Conference (FLAIRS-2011), Palm Beach, Florida, May
18-20, 2011.
- (with Mehran Sahami, Marie desJardins, and Zachary Dodds)
EAAI: Educational Advances in
Artificial Intelligence, The 42nd ACM Technical Symposium on Computer
Science Education, Dallas, Texas, March 10, 2011.
- Game
Resources and Recommendations: Gettysburg College Game Club, November 16th,
2010
- Dudo: An Introduction to the Incan
Dice Game:
- Rook
Jumping Maze Design Considerations, Computers and Games, 7th
International Conference, CG 2010, Kanazawa, Japan, September 26th,
2010.
- Model AI Assignments: Rook Jumping Maze Generation, EAAI-10: The 1st
Symposium on Educational Advances in Artificial Intelligence, Atlanta,
Georgia, July 13, 2010.
Rook Jumping Maze Generation Assignments:
http://modelai.gettysburg.edu/2010/rjmaze/
-
Decision-Theoretic Simulated Annealing,
23rd International
FLAIRS Conference (FLAIRS-2010), Daytona Beach, Florida, May 19-21, 2010.
- The Game of Pig for CS1, SIGCSE 2010, Milwaukee, Wisconsin, March 13th, 2010. (resources)
- Beyond This Milestone, December Graduates Recognition Ceremony, Gettysburg College, Gettysburg, Pennsylvania, December 17th, 2009.
- Plentiful Possibilities
for Pen, Pencil, and Paper Play, Gettysburg College Game Club, Gettysburg
College, Gettysburg, Pennsylvania, November 3rd, 2009.
-
Amazons, Penguins, and Amazon Penguins, Gettysburg College Game Club,
Gettysburg College, Gettysburg, Pennsylvania, October 20th, 2009.
- Rook Jumping Mazes: a Computer Science design project, Computer Science
Colloquium, Gettysburg College, Gettysburg, Pennsylvania, September 17th, 2009.
- Follow-up lab:
MazeLab: the rook jumping maze design project, Computer Science Colloquium,
Gettysburg College, Gettysburg, Pennsylvania, September 24th, 2009.
- The Arduino: Computational Invention
Made Easy, Computer Science Colloquium, Gettysburg College, Gettysburg,
Pennsylvania, September 11th, 2008.
- Throw Down an AI Challenge, in Using AI to
Motivate Greater Participation in Computer Science, Papers from the AAAI Spring
Symposium, Technical Report SS-08-08, AAAI Press, March 27, 2008 (PDF
slides, PDF paper).
- (with Megan Knauss '09) Dudo: Exploring the Incan
Bluffing Dice Game, Friday Faculty Luncheon, Gettysburg College, Gettysburg,
Pennsylvania, February 8th, 2008. (PDF)
- (with Monica Ranadive '07) Cluedoku: Generating and Solving Clue Logic Puzzles, Friday Faculty Luncheon, Gettysburg College, Gettysburg, Pennsylvania, September 8th, 2006. (PDF)
- Clue Deduction: Professor Plum Teaches Logic,
19th International FLAIRS Conference (FLAIRS-2006), Melbourne Beach, Florida,
May 11-13, 2006 (PDF,
PDF slides,
resources).
- Pedagogical Possibilities for the Dice Game Pig,
Papers of the Eleventh Annual CCSC Northeastern Conference, April 21-22,
2006, College of the Holy Cross, Worcester, MA in the Journal of
Computing Sciences in Colleges, vol. 21, no. 6, pp. 149-161, June 2006 (PDF,
PDF slides,
resources).
- The Game of Go: from ancient art to modern research, Friday Faculty Luncheon, Gettysburg College, Gettysburg,
Pennsylvania, September 30th, 2005.
- Teaching Stochastic Local Search, 18th
International FLAIRS Conference (FLAIRS-2005), Clearwater Beach, Florida, May
15-17, 2005 (PPT,
resources).
- Implementing the Intelligent Systems
Knowledge Units of Computing Curricula 2001, in the Proceedings
of Frontiers in Education Conference (FIE ’03), Boulder, Colorado, November 5-8,
2003, IEEE Press. (PDF, PS,
resources)
- (with Ingrid Russell, Michael Georgiopoulis, Jose Castro, Daniel McCracken,
Laurie King, and Dennis Bouvier) Condensing the CC-2001
Core in an Integrated Curriculum, Journal of Computing Sciences in
Colleges, vol. 18, no. 5, pp. 65-69, May 2003. (PDF,
PS, resources)
- (with David Hettlinger '04 and Amy Kerr '03) Applying
Machine Learning to Circuit Design,
Mathematics and Computer Science Colloquium, Gettysburg College, Gettysburg,
Pennsylvania, December 5th, 2002.
- Forging Word Puzzles: From Blacksmithing
to Wordsmithing,
- Mathematics Colloquium, Gettysburg College, Gettysburg,
Pennsylvania, October 20th, 2005.
- Friday Faculty Luncheon, Gettysburg College, Gettysburg,
Pennsylvania, November 22nd, 2002.
- Action Timing Discretization with Iterative-Refinement
,
at the 5th International Symposium on Abstraction, Reformulation, and Approximation
(SARA '02), Kananaskis, Alberta, Canada, August 2002.
- Pondering Probabilistic Play Policies for Pig,
- Computer Science Colloquium, Middlebury College, Middlebury, Vermont,
November 11th, 2005.
- Computer Science Colloquium, Vassar College, Poughkeepsie, New York, February,
2003.
- Mathematics and Computer Science Colloquium, Gettysburg College, Gettysburg,
Pennsylvania, April 4th, 2002.
- Mathematics Seminar, Shippensburg University, Shippensburg, Pennsylvania,
December 3rd, 2002.
- Information-Based Alpha-Beta Search and the
Homicidal Chauffeur, at Hybrid Systems: Computation and Control, the
Fifth International Workshop (HSCC '02, Stanford University, Palo Alto,
California, USA, 2002).
- Action-Based Discretization for AI Search,
at the Game Developers Conference 2002 (GDC 2002, San Jose Convention Center,
San Jose, California, USA, 2002). (See also Recursive
Best-First Search Example handout (HTML) or (DOC).)
- Heuristic Optimization and Dynamical System
Safety Verification at Hybrid Systems V, University of Notre Dame,
September 12th, 1997 (see also paper).
- Information-Based Optimization Approaches
to Dynamical System Safety Verification, at Hybrid Systems: Computation
and Control (HSCC '98), First International Workshop, Berkeley, California,
USA, April 15th, 1998 (see also paper).
- AI Game-Tree Search for Hybrid System Control, at the IFAC Symposium
on Artificial Intelligence in Real-Time Control, October 5-8, 1998, Grand
Canyon National Park, Arizona, USA (see also paper).
- AI Game-Tree Search for Real-Time Hybrid System Control, at the
American Association of Artificial Intelligence 1999 Spring Symposium on
Hybrid Systems and AI: Modeling, Analysis, and Control of Discrete and
Continuous Systems, March 21-23, 1999, Stanford University, Palo Alto,
California, USA (see also paper).
Todd Neller


§833-6 Short title. This chapter may be cited as the Uniform Rendition of Accused Persons Act. [L 1971, c 115, §7; HRS §713C-6; ren L 1972, c 9, pt of §1]


Next: clrhash, Previous: maphash, Up: Hash Tables Dictionary
with-hash-table-iterator
(name hash-table)
{declaration}* {form}* ⇒ {result}*
name—a name suitable for the first argument to macrolet.
hash-table—a form, evaluated once, that should produce a hash table.
declaration—a declare expression; not evaluated.
forms—an implicit progn.
results—the values returned by forms.
Within the lexical scope of the body, name is defined via macrolet such that successive invocations of (name) return the items, one by one, from the hash table that is obtained by evaluating hash-table only once.
An invocation (name) returns three values as follows:
A generalized boolean that is true if an entry is returned.
The key from the hash-table entry.
The value from the hash-table entry.
After all entries have been returned by successive invocations of (name), then only one value is returned, namely nil.
It is unspecified what happens if any of the implicit interior state of an iteration is returned outside the dynamic extent of the with-hash-table-iterator form such as by returning some closure over the invocation form.
Any number of invocations of with-hash-table-iterator can be nested, and the body of the innermost one can invoke all of the locally established macros, provided all of those macros have distinct names.
The following function should return t on any hash table, and signal an error if the usage of with-hash-table-iterator does not agree with the corresponding usage of maphash.
(defun test-hash-table-iterator (hash-table) (let ((all-entries '()) (generated-entries '()) (unique (list nil))) (maphash #'(lambda (key value) (push (list key value) all-entries)) hash-table) (with-hash-table-iterator (generator-fn hash-table) (loop (multiple-value-bind (more? key value) (generator-fn) (unless more? (return)) (unless (eql value (gethash key hash-table unique)) (error "Key ~S not found for value ~S" key value)) (push (list key value) generated-entries)))) (unless (= (length all-entries) (length generated-entries) (length (union all-entries generated-entries :key #'car :test (hash-table-test hash-table)))) (error "Generated entries and Maphash entries don't correspond")) t))
The following could be an acceptable definition of maphash, implemented by with-hash-table-iterator.
(defun maphash (function hash-table) (with-hash-table-iterator (next-entry hash-table) (loop (multiple-value-bind (more key value) (next-entry) (unless more (return nil)) (funcall function key value)))))
The consequences are undefined if the local function named name established by with-hash-table-iterator is called after it has returned false as its primary value.
Traversal Rules and Side Effects
Next: clrhash, Previous: maphash, Up: Hash Tables Dictionary


Cend · Digital Product re-design and film
2018.Bain is a world-renowned consultancy, with a rising digital presence under the name of ADAPT (Advanced Digital and Product Team). As the first ever intern at ADAPT, I took on a range of projects, including the production of a ‘product story’ of one of our clients, which we will call Cend.
Sketch Flinto Video Editing Invision After Effects Premiere
The Project Cend Product Story
Hang On! This project contains protected material.
Please, EMAIL me if you would like to see more. I am very passionate about this project, and am eager to share with you!
If you see content below, please understand that these materials are sensitive, and should not be shared widely with others. Thank you.
Mobile Redesign Cend Product
In order to share this story, Cend had to be redesigned for client confidentiality. Through this process, I gained valuable insights into how brand identity can be visually addressed in the digital product, both with broader strokes such as colour and font, but also less tangible qualities such as nuanced motion and grid systems.
Define The Problem
Cend's original sign-up process was lengthy, requiring more than 5 steps and 18 fields. The ADAPT team reduced these down to a single page, and were keen to show this off in the sanitiesed designs I was working on.
Construct the Product
In creating the sanitiesd version of the product, I devised a new hypothetical name and logo that evoked the qualities that ADAPT had lifted in pronounced during the case work. This formed the basis for the rest of my visual exploration, which included an extensive dark-themed iteration. We eventually settled on the fluid but sophisticated scheme you see today.
The Film Cend Product Story
Watch the entire film above.
Narrative
Alongside storyboarding and writing the script, I edited and animated the sequences shown in the film. Taking inspiration by famous Apple product launch films, I was careful to consider that the objective of this video was not just to illustrate the product, as many of the previous films for Bain had been, but to tell the entire process story. By creating wireframes that grew and evolved, I illustrated iteration and change without investing too much into charts and data.
Motion
Motion design was themed to heighten the imporvements introduced by the Bain team, including the fluid and simple sign-up process. Editing shots to sound gave the film a pop feel and kept the audiences engaged and excited. Further beauty shots enhanced the overall immersion of the film and placed the product in the real world, or less 'protoype-y' settings.


The goal of the game is to remove all blocks from the screen. Move your
mouse left and right to move the slider.
You have 3 lives to start. You can gain lives by hitting a block with
the same color as the ball.
You start off with 0 score. Gain +1 score by breaking the blocks, gain
+5 score when a block is broken that has the same color as the ball.


This is second (and last) post about my quest to make a real-time game playable in stock Notepad.exe. In the previous article, I talked through using a quick and dirty memory scanner to get access to Notepad’s on screen text buffer (and build a ray tracer that rendered into it). In this post I’m going to talk about how I handled getting user input, and finally ended up at a fully playable Snake game in stock Notepad.
The title of this post gives away the fact that I ended using hooks to capture user input, but I originally thought I could do it with just DLL injection instead. I barely knew what DLL injection was but I knew it could cause things to happen in an already running process. This seemed like a decent place to start. As it turns out, you need to understand dll injection to work with hooks anyway, so it’s not a bad spot to start this blog post too.
I started by googling the hell out of “DLL injection,” and found this excellent article that breaks down what DLL Injection is and has a great github repo with examples of different ways to go about it. I didn’t have a clue about how I was going to use any of this capture keyboard input, but I figured I’d try to inject something simple into a running Notepad process anyway.
Based on the injection article I just linked, the easiest way to inject a dll seems to be:
Writing a DLL that does something in dllmain() is really easy if you aren’t doing a whole lot with it. I found later on that there’s a whole lot of stuff that you can’t do in dllmain (more info here), but for my first test project I just popped open a message box. The entire code for the DLL payload was just a few lines.
//a small dll payload that spawns a message box in whatever process loads the dll
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD ul_reason_for_call, LPVOID lpvReserved)
{
switch (ul_reason_for_call){
case DLL_PROCESS_ATTACH:
MessageBox(NULL, "Process attach!", "Woohoo", 0);
break;
}
}
The tricky part, as you might imagine, was getting Notepad to load this in the first place. Just like the above payload, my injection code was almost entirely copied from the InjectAllTheThings repo I linked above. Unlike the payload, it’s a lot longer. I’m including it here because if you’ve never seen how to do this before, I assume this will be more convenient than having to click a link to github, but I’m not going to dive into how it works because the article/repo I linked above can teach you about it a whole lot better than I can.
//Injector_LoadLibrary is a dll injector that uses LoadLibraryA to inject a dll into a running process
// usage: Injector_LoadLibrary <process name> <path to dll>
#include <stdio.h>
#include <Windows.h>
#include <TlHelp32.h> //for PROCESSENTRY32, needs to be included after windows.h
void printHelp()
{
printf("Injector_LoadLibrary\nUsage: Injector_LoadLibrary <process name> <path to dll>\n");
}
void createRemoteThread(DWORD processID, const char* dllPath)
{
HANDLE handle = OpenProcess(
PROCESS_QUERY_INFORMATION | //Needed to get a process' token
PROCESS_CREATE_THREAD | //for obvious reasons
PROCESS_VM_OPERATION | //required to perform operations on address space of process (like WriteProcessMemory)
PROCESS_VM_WRITE, //required for WriteProcessMemory
FALSE, //don't inherit handle
processID);
if (handle == NULL)
{
fprintf(stderr, "Could not open process with pid: %lu\n", processID);
return;
}
//once the process is open, we need to write the name of our dll to that process' memory
size_t dllPathLen = strlen(dllPath);
void* dllPathRemote = VirtualAllocEx(
handle,
NULL, //let the system decide where to allocate the memory
dllPathLen,
MEM_COMMIT, //actually commit the virtual memory
PAGE_READWRITE); //mem access for committed page
if (!dllPathRemote)
{
fprintf(stderr, "Could not allocate %zd bytes in process with pid: %lu\n", dllPathLen, processID);
return;
}
BOOL writeSucceeded = WriteProcessMemory(
handle,
dllPathRemote,
dllPath,
dllPathLen,
NULL);
if (!writeSucceeded)
{
fprintf(stderr, "Could not write %zd bytes to process with pid %lu\n", dllPathLen, processID);
return;
}
//now get address of LoadLibraryW function inside Kernel32.dll
//TEXT macro "Identifies a string as Unicode when UNICODE is defined by a preprocessor directive during compilation. Otherwise, ANSI string"
PTHREAD_START_ROUTINE loadLibraryFunc = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32.dll")), "LoadLibraryA");
if (loadLibraryFunc == NULL)
{
fprintf(stderr, "Could not find LoadLibraryA function inside kernel32.dll\n");
return;
}
//now create a thread in remote process that loads our target dll using LoadLibraryA
HANDLE remoteThread = CreateRemoteThread(
handle,
NULL, //default thread security
0, //stack size for thread
loadLibraryFunc, //pointer to start of thread function (for us, LoadLibraryA)
dllPathRemote, //pointer to variable being passed to thread function
0, //0 means the thread runs immediately after creation
NULL); //we don't care about getting back the thread identifier
if (remoteThread == NULL)
{
fprintf(stderr, "Could not create remote thread.\n");
return;
}
else
{
fprintf(stdout, "Success! remote thread started in process %d\n", processID);
}
// Wait for the remote thread to terminate
WaitForSingleObject(remoteThread, INFINITE);
//once we're done, free the memory we allocated in the remote process for the dllPathname, and shut down
VirtualFreeEx(handle, dllPathRemote, 0, MEM_RELEASE);
CloseHandle(remoteThread);
CloseHandle(handle);
}
DWORD findPidByName(const char* name)
{
HANDLE h;
PROCESSENTRY32 singleProcess;
h = CreateToolhelp32Snapshot( //takes a snapshot of specified processes
TH32CS_SNAPPROCESS, //get all processes
0); //ignored for SNAPPROCESS
singleProcess.dwSize = sizeof(PROCESSENTRY32);
do {
if (strcmp(singleProcess.szExeFile, name) == 0)
{
DWORD pid = singleProcess.th32ProcessID;
printf("PID Found: %lu\n", pid);
CloseHandle(h);
return pid;
}
} while (Process32Next(h, &singleProcess));
CloseHandle(h);
return 0;
}
int main(int argc, const char** argv)
{
if (argc != 3)
{
printHelp();
}
createRemoteThread(findPidByName(argv[1]), argv[2]);
return 0;
}
This was enough to get a message box popping up in a running instance of Notepad, which was super cool. Unfortunately I realized pretty much immediately after I got this working that I had no idea how to go from popping a message box to using this to actually change Notepad’s behaviour.
My message box app could make something new happen in another process, but I actually needed to be able to change the behaviour of the target process. I had heard vaguely about api hooking before, and my limited understanding of it was that it allowed you to either replace existing code paths, or add additional functionality to them. This seemed roughly in line with what I wanted, so I dove down this rabbit hole next.
Googling for how hooking works was less straightforward than dll injection, mostly because hooking is much more complicated. I eventually realized that as long as I wanted to change a program’s reponse to a Windows system message, I could bypass a lot of this complexity and use a Win32 hook. Given that keyboard input is sent to Windows processes via WH_KEYBOARD messages, I was in luck.
The MDSN page for hooks provides some basic information about how these types of hooks work, but the general idea is like this (note: I’m a super beginner at all of this so take everything I say with a grain of salt):
Given this information, it seemed reasonable to try to intercept the keyboard events sent to Notepad by creating a hook function which intentionally didn’t call the next function in the hook chain. After persuing the msdn docs page about using hooks, I figured out that I was going to need to install a WH_KEYBOARD hook into Notepad’s Edit control.
The docs also point out that if you want to install a hook in a process other than your own, what you’re really doing is a form of dll injection. You need to place the hook function in a dll, and use SetWindowsHookEx() to load that dll’s code into the target application.
So with all that in mind, I put on my robe and wizard hat and got to work.
I started off by just trying to prevent Notepad from receiving keyboard input at all. All I needed to do for this was to hook the WH_KEYBOARD and then not call the next hook in the hook chain, which seemed like an easy place to start. To write a hook function for WH_KEYBOARD, all you need to do is make sure to match the function signature of KeyboardProc(). Given that I needed this function to do basically nothing, this was pretty easy:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "inject_payload_disablekeyinput.h"
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
return 1;
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD ul_reason_for_call, LPVOID lpvReserved)
{
return true;
}
The code for installing a windows hook is very straightforward (and shown below).
bool installRemoteHook(DWORD threadId, const char* hookDLL)
{
HMODULE hookLib = LoadLibrary(hookDLL);
if (hookLib == NULL) return false;
HOOKPROC hookFunc = (HOOKPROC)GetProcAddress(hookLib, "KeyboardProc");
if (hookFunc == NULL) return false;
SetWindowsHookEx(WH_KEYBOARD, hookFunc, hookLib, threadId);
return true;
}
The threadId function argument is used to install the hook only for Notepad’s Edit control (otherwise it becomes a global hook). Getting the thread id is juat a matter of calling GetWindowThreadProcessId() on the HWND for the Edit control. You can get the HWND with the GetWindowForProcessAndClassName() function from my last post. Here’s that function again:
HWND GetWindowForProcessAndClassName(DWORD pid, const char* className)
{
HWND curWnd = GetTopWindow(0); //0 arg means to get the window at the top of the Z order
char classNameBuf[256];
while (curWnd != NULL){
DWORD curPid;
DWORD dwThreadId = GetWindowThreadProcessId(curWnd, &curPid);
if (curPid == pid){
GetClassName(curWnd, classNameBuf, 256);
if (strcmp(className, classNameBuf) == 0) return curWnd;
HWND childWindow = FindWindowEx(curWnd, NULL, className, NULL);
if (childWindow != NULL) return childWindow;
}
curWnd = GetNextWindow(curWnd, GW_HWNDNEXT);
}
return NULL;
}
One thing to note about the installRemoteHook() function is that because it gets the function pointer for the callback with GetProcAddress(), the compiled name of the hook callback is important. This meant that I needed to make sure that to export that function using “extern C” to prevent the compiler from mangling the function name.
#pragma once
extern "C"
{
__declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam);
}
If you want to see what all of this looks like in pactice, the github repo for this blog post has a proof of concept hooking app uses the hook payload described above to disable key input to an instance of Notepad.
Simply preventing Notepad from getting keyboard input was cool and all, but it was a far cry from being able to redirect that output to a game. What I wanted to be able to do was both prevent Notepad from getting keyboard input (so that the user couldn’t type characters and mess up what I was rendering), and redirect that key input to the process I was using to control my game logic.
Redirecting the key input to a different process wasn’t much more difficult than preventing key input. I just copy/pasted the code for disabling key input and made the following changes:
I’m not going to walk through how to set up windows sockets (but all the code for doing so is on the github page for this project). Instead, I just want to share the hook payload that I used to make this all happen.
SOCKET sock = INVALID_SOCKET;
LRESULT CALLBACK KeyboardProc(int code, WPARAM wParam, LPARAM lParam)
{
const int BUFLEN = 512;
char sendBuf[BUFLEN];
memset(sendBuf, '\0', BUFLEN);
if (sock == INVALID_SOCKET){
sock = CreateClientSocket("localhost", "1337");
}
int isKeyDown = (int)lParam >> 30;
if (isKeyDown){
_itoa_s<512>((int)wParam, sendBuf, 10);
send(sock, sendBuf, (int)strlen(sendBuf), 0);
}
return 1;
}
Extracting the key state from the lparam was a little weird, but it seemed like the best way to get at that information. If you wanted to write a more robust input handling hook, you’d probably care about more of the data in that parameter than I did, but this was enough for getting WASD.
Once this was working, it was a very small jump from there to a working real time game.
So yeah, the fruit of all this labor isn’t super exciting. I made Snake. It lends itself super well to ascii graphics (even if the fact that characters are taller than they are wide is a bit annoying), and I already had the gameplay logic written from a couple posts ago.
There’s not really much interesting to say about implementing Snake, and I’ve already talked through everything else, so I’m going to end things off with another gif of me playing snake in a hijacked Notepad.exe window. I hope you enjoyed the process of getting here as much as I did, because the end product is (as promised) super dumb.


Syntax:
string-trim character-bag string => trimmed-string
string-left-trim character-bag string => trimmed-string
string-right-trim character-bag string => trimmed-string
Arguments and Values:
character-bag---a sequence containing characters.
string---a string designator.
trimmed-string---a string.
Description:
string-trim returns a substring of string, with all characters in character-bag stripped off the beginning and end. string-left-trim is similar but strips characters off only the beginning; string-right-trim strips off only the end.
If no characters need to be trimmed from the string, then either string itself or a copy of it may be returned, at the discretion of the implementation.
All of these functions observe the fill pointer.
Examples:
(string-trim "abc" "abcaakaaakabcaaa") => "kaaak" (string-trim '(#\Space #\Tab #\Newline) " garbanzo beans ") => "garbanzo beans" (string-trim " (*)" " ( *three (silly) words* ) ") => "three (silly) words" (string-left-trim "abc" "labcabcabc") => "labcabcabc" (string-left-trim " (*)" " ( *three (silly) words* ) ") => "three (silly) words* ) " (string-right-trim " (*)" " ( *three (silly) words* ) ") => " ( *three (silly) words"
Side Effects: None.
Affected By:
The implementation.
Exceptional Situations: None.
See Also: None.
Notes: None.


Having more than 12+ years of work experience in Information technology.
Involved in software development of web based applications developed on J2EE platform.
Worked on Maintenance & Development projects.
Experience on working with development and Maintenance project for Experian and General Electric.
Participated in following phases of SDLC – Design, Coding, and Unit Testing & Implementation. Knowledge of Requirement Management phase.
Well versed with Struts 2.0, Hibernate 3.0 and Spring 2.5 core frameworks, python, nodejs, angular, react.
Open to learn new technologies and frameworks.
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
Bring to the table win-win survival strategies to ensure proactive domination. At the end of the day, going forward, a new normal that has evolved from generation X is on the runway heading towards a streamlined cloud solution. User generated content in real-time will have multiple touchpoints for offshoring.
GPA: 68%
12th: 68%
Apart from being a web developer, I enjoy most of my time being outdoors i.e. farming, travelling, gaming, volunteer work and team sports.
When forced indoors, I follow a number of sci-fi and fantasy genre movies and television shows, I am an aspiring chef, and I spend a large amount of my free time exploring the latest technolgy advancements in the front-end web development world.


Luke 1:64
And his mouth was opened immediately, and his tongue loosed, and he spake, and praised God.


Free issue boards with GitHub Issue sync, PR automation & features for a CI/CD world!
Built for
developers
GitHub is a development platform inspired by the
way you work. From open source to business, you
can host and review code, manage projects, and
build software alongside 40 million developers.
Default branch
The default branch is considered the “base” branch in your repository, against which all pull requests and code
commits are automatically made, unless you specify a different branch.
The default branch is set to master. To change this setting, add another branch.


To win, stack three suits from 1 to 9 in the top-right corner of the table.
Cards can be stacked and moved in the center of the table,
but only if they are of the alternating suits and decreasing values.
The free cells at the top-left corner of the table can store one card of any type.
When all four dragons of a single type are exposed, they can all be permanently
moved to an open free cell by pushing the corresponding button.


Drag and drop file here or UPLOAD FILE
{{ uploadingFile.fileName }}
{{ uploadingFile.uploadSize }} of {{ uploadingFile.fileSize }}
{{ uploadingFile.uploadProgress }}%


Ping-Pong!
Enter a number to see a special string of Ping-Pongs divisible by 3 and 5.
Here's the deal:
-
Ping-Pong will count up (or down! hint-hint) to your number. However:
-
All multiples of 3 are changed to "ping".
-
All multiples of 5 are changed to "pong".
-
When these multiples align: Ping-Pong!