text:
Sparty has a beautiful campus compared to Michigan (not that Michigan's is bad). It's actually in a great location, midway between Detroit and Grand Rapids. Wasteland is Mount Pleasant (CMU) and north.
I have been to MSU's campus, its nice. Still its East Lansing, if you they don't have Izzo how do you sell that community to a top recruit that isn't from Michigan? I've been to Lawrence and seen KU as well. Like a traditional midwest college town, lots to be said about that for students and even retirees. But its not a place i'd expect inner city kids or kids who have been going through the system of club teams and/or private high school programs that they go travel around playing games. If not for those coaches and their proven success getting kids to the NBA, they aren't going to get many kids to go there.
Tonight's Thunder-Rockets game was postponed because Houston did not have the league-required eight available players to participate due to COVID-19 testing.
Seven of the NBA's 30 teams will allow a reduced number of spectators when the season starts
Toronto (playing in Tampa)
Policy change in Memphis.
After allowing some fans to watch a pair of preseason games at FedEx Forum, the management team of the Memphis Grizzlies has reversed its policy.
No fans at any regular season games until further notice.
Valuist
The NBA needs fans more than the other sports, IMO. Those games in the Orlando bubble just felt like AAU games.
Valuist said:
with all the covid stuff the NBA should give away NBA season pass for free -- now less games and same price?
I think Chicago State moved from 95th and King to Madison St. Bulls only gave up 83 in the 1st half.
Likes: Valuist and John Kelly
WildBill said:
Inner city colleges have really dropped off over the last 30 years. Those kids want to get away from home.
And who can blame those inner city kids.
MrTop said:
We need Adam Silver to register at EOG.
Then again, maybe not.
So true, Valuist.
BYOJ = Bring Your Own Juice.
So far, 8 unders to 1 over on this first day of 2021.
39% of the shots to date have come from behind the line...a record
When handicapping pro and college basketball, you must consider the difference between a quality 3-point attempt and a suspect one.
I maintain the shooter's landing spot would be a great place to start the analysis.
Show me a long-range bomber who is leaning into the shot (landing inside the arc) and I'll show you a high-quality three.
I saw Steph Curry's brother, Seth, recently take a 3-point shot with all his momentum heading to the target and by the time the ball went through the hoop, Curry had one foot in the lane to follow-up his shot.
In shooting clinics these days, however, they instruct NBA players to hold the follow-through as opposed to following up one's shot.
Too much traffic and distance between the shooter and the rebound.
In college basketball, I'd love the see the difference in 3-point shooting percentage between the following two scenarios: 1) When the pass before the 3-point attempt comes from inside the arc and 2) When the pass before the 3-point attempt comes from the perimeter.
Heim said:
I don't want to say this is ruining the game, but I much prefer the slow it down, physical style of the 80's-90's
The NBA is getting like the all-or-nothing nature of Major League Baseball.
It's becoming hard to watch with one three-point heave after another.
College football is also going this route with the emphasis on explosive offensive plays.
For me, a 48-45 college football game lacks suspense or intrigue until the final few minutes.
Same with a 145-140 NBA game or a 9-8 baseball score.
And for every 9-8 baseball score, you get plenty of 13-3 or 14-4 final scores.
But television likes the high-scoring nature of games, no matter how the teams score the points, because that's what attracts the average viewer.
It's now to the point where no one play really matters because teams are able to score in bunches.
Let's remember, Arena Football ended up in Chapter 7 bankruptcy.
Likes: Don Quixote and kane
kane said:
The good teams going at it was the best theater, you saw so many guys who brought more to the defensive side than offensive side. That being said, it was pretty lousy stuff if the game didn't mean much.
I think the "new" game is very well suited for regular season watching and will keep more fans engaged, but the playoffs will still get down to execution and defense so something for everyone. Fans don't seem to get turned off by games going much more defensive in the playoffs because the teams are good and you can enjoy the intensity of key possessions at the end of the games where its not the lazy defense and 10 second possessions of January games.
Ten-second possessions in January games.
Well put, WILDBILL.
One of the interesting ideas I heard about that's being developed is exactly that, bets that end at a synchronized time. All it will take is to have the NBA data aligned with official time and have that shown on a screen. So you get free tonight and there are 3 NBA games going on. Its 6pm and you only have 25 minutes lets say, at 6:30pm you are heading out the door to go to dinner. In a dynamic betting world, you can choose the time clock and make a bet. Tune in for that 25 minutes and watch while you get ready. This will send viewing time of the game through the roof and NBA partner books can sell you the video for that timeframe once you bet it. You either buy some credits with NBA TV or with your book and you use so many to watch this tidbit of action. The NBA could get say 50 cents from you to watch this game whereas they wouldn't have gotten your eyeballs on it at all in the current setup and therefore zero revenue.
Not only that, but think about what the betting revolution brings in terms of what fans are looking for and then think what makes sports betting exciting? Close ATS finishes of course. You want a lot of shots, a lot of possessions and a lot of "action". You don't care much about the end of game winner, you just want some bang for your buck. So an NBA with the modern approach to offense and defense in these not so meaningful games actually works really well with this idea.
Now that's gambling, BILL.
The number of bad beats would be endless.
The crybaby stories would start out, "So it's 6:28 on a Friday night..."
the only time you get credit for 3pt shot made is last 5 minutes of the game
Even better will be all the bettors crying about how a coach called a time out at 6:28pm in the middle of the quarter that with the commercial ran to the 6:30 deadline.
And you'd have to be careful about fans/gamblers running on the court or otherwise disrupting the action to delay the game.
"There's a fan on the court and he's wearing an Illinois jersey that reads 'Brock Landers" on the back."
Likes: MadTiger and lastyle7
I'm really starting to believe that the money will be back middle to middle-bad teams throughout this regular season. The way the Pistons have played the Celtics this last week has demonstrated how these teams whom lack talent, will really fight and claw every night. They won't need to worry about 'resting' their key starters since they lack star power to begin with. And you will never have to worry about them giving 100% almost every night. Look at a player like Jerami Grant with the Pistons...gives 100% every night and fills up the stat sheet on both ends of the floor. Not sure what his contract situation was with the Nuggets but was surprised they let him get away.
4 teams that suck but will likely cover a lot of spreads by the end of this year...
choslamshe said:
Grant wanted this situation. Nuggets claim they agreed to match the crazy deal he signed but he didn't want to be 4th fiddle on the team and not get offensive plays called for him. Guy was a backup in OKC until a couple years ago and was a backup in DEN and now got a 3 year/60m contract. I say good for him, but he chose to be on a losing team to get more exposure in hopes he gets an even bigger deal in a few years.
Memphis Grizzlies worse team in NBA
Drnkyourmlkshk
lastyle7 said:
Umm no. Morant and JJJ are hurt but still better coached and more talent than Detroit and minnesota.
Unfortunately for him he will be on the trading block every ASB all 3 years. Hes the only player they have with potential to get draft picks. No one is touching the Griffin contract without getting cash along with it.
They're a playoff team imo assuming they can stay in range until Morant gets back. But Jones,
a adequate replacement.
Hard to believe the league forced the Sixers to play today. Amazing ending for spread bettors, Sixers trailing by 20 with a minute left score last 8 points and cover the 13/13.5 spread.
Murphy's Best
Wow what a bad beat!
Just now seeing the play-by-play.
Ty Maxey hit a pair of three-pointers in the game's final 63 seconds.
Only seven players appeared in the game for the Sixers.
Denver dressed the roster maximum of 15 players and all 15 appeared in the game.
Not a good look for the league.
Philly head coach Doc Rivers did not want to play the game.
If the league is fortunate to get through the season, they should do what they did last year and put all playoff teams in a bubble, imagine playoff games where teams are missing a bunch of players or their star player, during the season I guess it's manageable but not in the playoffs
That is pretty incredible to use 15 players in a game against 7. Nuggets played down to the competition in the first half before the depth edge led to them pulling away in the third quarter.
I bet it at -6 so I didn't take a beat, was just mentioning the beat to those who bet the closer.
There couldnt have been many and probably just middlers who were pretty happy I'd imagine.
IMO these Covid heavy games, like Celtics today should be off the board. Safeguards both player and book.
Evident Friday night, Lakeshow struggling for playoff spot without Davis.
Likes: bomzee


The search for something special for the construction of its exclusive honeymoon accommodation led Sea Change Villas to choose Lockwood Homes. Starting in 2003 with an initial three buildings, each featuring three bedrooms with their own individual private swimming pools, lagoon views, and tropical surroundings, Sea Change Villas has since expanded to 12 units, offering a private and upmarket alternative to the more conventional hotel style accommodation available in Rarotonga.
Rob Grant, who runs Sea Change Villas, says the vision for the property was to 'stand out from the crowd' by offering quality, highly-appointed villas in conjunction with outstanding, personalised customer service, for the ultimate Cook Island experience.
The construction of the buildings plays a key part in delivering on that vision: "[Back in 2003] Lockwood was doing a visit to the islands when I first met up and discussed the idea of developing our executive 3 bedrooms villas," he recalls.
While Grant's specification and vision are straightforward, not many buildings could fit his exacting standards. But one did. "Lockwood ticked all these boxes and more," he confirms.
A hands-on individual, Grant trained builders on the island to erect the pre-fabricated building system, with support from Lockwood itself. "Lockwood supplied a qualified builder to assist us to get the first one built," he explains.
Fifteen years on, the quality Lockwood construction has taken in its stride multiple storms, cyclones and the relentless tropical heat of the Cook Islands. "What's become clear over the years is that these buildings are made to last. There's very little maintenance required, they stay very fresh and up-to-date looking," says Grant.


Last generation cycling jersey. Designed for your hardest challenges and most intensive trainings. Minimalism in the cut and graphics, specially indicated for advanced cyclists demanding maximum confort and high quality materials.


Welcome to my Web page. I am a nephrologist, which means I specialize in the function and diseases of the kidneys. I have practiced for more than 17 years at Bellflower Medical Center. I am the lead physician of my department, a role that I assumed more than 13 years ago. I am also the medical director of the peritoneal and hemodialysis services here. I feel fortunate to be able to work at Kaiser Permanente, as a physician and as an administrator who is working to make our organization one of the best health care delivery systems in the country.
I was born in Karachi, Pakistan. Even when I was a young child, I knew that I wanted to be a doctor. I knew that I wanted to make a difference in people's lives, and practicing medicine gives me that opportunity. I moved to the United States more than 25 years ago. Southern California has been my home since then, except for a brief period when I moved to Rochester, New York, to do my internal medicine residency. I love living in Southern California mostly because of the beautiful weather and the cultural diversity it offers.
Medicine as a career is a very special opportunity to help people in a meaningful way. My goal as a nephrologist has always been to offer members with kidney disease all the options of kidney-related care in a friendly and caring environment. I have helped to build a team made up of physicians, nurses, a social worker, a dietician, and a pharmacist to facilitate care for this group of members. I feel very honored that people have entrusted me with their care and strive to treat them as I would my own family.
My family is my major priority. I enjoy going to the gym at least three times a week with my teenage son. I also try to remain in shape by using my treadmill at home. In my spare time, I like to garden.


text:
Q: Getting null is not an object error even though console log shows the value I'm getting null is not an object for (val.uid) in the fetchNickname function, even though the console log shows the value of it correctly
if(this.props.user){
            _.map(this.props.user, (val) =>{
                console.log(val.uid)
                this.props.fetchNickname(val.uid)
            })
            setTimeout(() =>{
                this.props.info.map((one) =>{
                    this.setState({name: one.Nickname})
                })
            }, 1000)
        }
        setTimeout(() =>{
            this.setState({loaded: true})
        }, 1500)

redpajama_set_name: RedPajamaStackExchange


Jim Yamashita was born in Vancouver in 1940. Shortly thereafter, during the Second World War, his family was evacuated to Manitoba. Following two years living on a sugar beet farm near the town of Steinbach, the family settled at 859 Arlington Street in Winnipeg's West End. Even at a young age Yamashita, the son of garment workers, was intrigued by creating small structures out of toothpicks.
Upon a suggestion from his uncle he pursued architecture, beginning at the University of Manitoba Faculty of Architecture in 1958. Graduating five years later, in May of 1963, Yamashita moved to Regina due to poor economic conditions in Winnipeg. Here he worked in the offices of Stock, Keith and Associates architects and engineers. He returned to Winnipeg after one year, gaining a position with the architecture firm of George A Stewart; projects here were generally handled by by individual associates and included suburban libraries, small civic projects and work for the Salvation Army. Having registered with the Manitoba Association of Architects, in 1966, Yamashita was hired by the prominent Winnipeg firm Libling Michener. In 1968, after only a brief time at this office, the young architect joined with fellow Libling Michener colleague Ron Keenberg and Stan Osaka to submit a design for the Winnipeg Art Gallery national competition; the three earned an honourable mention for their entry. This collaboration led toward the forming of a new partnership and the subsequent establishment of the firm, IKOY, which would gain national attention.
IKOY – the firm with whom Yamashita would make his name – drew its moniker from the names of its principle designers: Roy Isaac (I), Keenberg (K), Stan Osaka (O) and Yamashita (Y). Early on times were difficult for the young practice and Yamashita's wife, a teacher, became the family's main breadwinner. As a firm, IKOY was known for a highly distinctive style which often involved a certain sort of "high-tech" look and feel. Yamashita cites as inspiration for much of this techniques a design seminar by Jim Powers' in Nashville, Tennessee on project systems and systems drafting. Indeed, in a project such as IKOY's highly acclaimed offices (396 Assiniboine Avenue, 1978) which Yamashita has named as his favourite project, it is clear the degree to which the firm sought to reveal and highlight the construction systems entailed – often calling attention to these uncovered elements with bright paint. Here and elsewhere, IKOY developed their own "six component system" (including mechanical, electrical, skin, design strategy, implementation) and began to write and lecture on it. Such programs dovetailed with the early use of CAD (computer aided drafting) systems. Other projects which make plain this unmistakable aesthetic, (termed "tool-kit architecture,") are the University of Manitoba's Wallace Building (125 Dysart Road, 1984) and the Red River Community College Auto Diesel Shop (2055 Notre Dame Avenue, 1986), the latter of which won the firm a Governor General's prize. Similar inimitable landmarks of the firm's open assembly idiom are the 1987 Winnipeg RCMP Forensic Lab (621 Academy Road) and the contemporaneous William G. Davis Computer Research Centre at the University of Waterloo, which was hailed by critic Adele Freeman as "one of the most exciting buildings to appear on the parched Canadian landscape in years." The more subtly colourful Deer Lodge Centre (2109 Portage Avenue, 1986) and the expansion of the Winnipeg International Airport Terminal Building were other significant projects during this period. Further IKOY works which diverged from a brightly coloured, "tool-kit" template include the wood-clad mix of pitched roofs and exposed orthogonal structures of the 1985 Westboine Housing Co-operative (32 Shelmerdine Drive) and York Estates (134 Smith Street, 1981), an ensemble of a largely typical boxy apartment block with an angular roofline and lobby, which won an honourable mention by the Canadian Housing Design Council. The first of these bears some resemblance to one of Yamashita's personal projects, the spare, elegant design of his former home at 565 Parkwood Place (1979). Throughout these years, while Keenberg took the lead in design, Yamashita frequently assumed the key role in the firm's quality control methodologies. As partner in charge or project manager Yamashita ensured projects were built on time and on budget.
Yamashita departed IKOY in 1993 and joined the established Winnipeg office of Smith Carter Architects and Engineers. Notable projects with which he has here been associated include Manitoba Hydro Place (360 Portage Avenue, 2009; with KMPB). In a 2007 interview with the Winnipeg Architecture Foundation, Yamashita describes the changes he has seen over his years in the field to include a move toward process-based contracts versus an earlier era of social and political networking.
Beyond his architectural practice, the architect has also served in 1968 as President of the Manitoba Japanese Junior Council. He has also lectured at the University of Manitoba Faculty of Architecture (1986-1998), has served on the Faculty's Partner's Program Advisory Board (1994 - 2006) and was appointed to the Board of Governors of the University of Manitoba Alumni Association. Yamashita was furthermore active on the Council of the Manitoba Association of Architects, has participated in a special task for the Royal Architectural Institute of Canada and has served on the Standards Council of Canada.
Architectural Record 174 (no. 3, 1986): 106-11.
Architectural Record 175 (no.6 1987): 126-135.
Architecture (Washington)76 (no.9 1987): 56-59.
Architectural Record 171 (no. 4, 1983): 146-9.
Architectural Review 167 (no. 999, 1980): 318.
Architecture Minnesota 8 (no. 1, 1982): 40-45.
"Awards for Residential Design." Canadian Housing Design Council. 1981. 110.
"College of Fellows." Royal Architectural Institute of Canada 50th Anniversary. 1990. 29. "Competition: Winnipeg Art Gallery." The Canadian Architect (February 1968): 42.
Freeman, Adele. Sightlines. Toronto: Oxford University Press, 1990. 181.
Le Tourneau, M. "An eye for design." Winnipeg Free Press. 18 January 1998.
Thompson, William P. Winnipeg Architecture. Winnipeg: Queenston House, 1982.


text:
The Lankans are slipping
Trevine
Roar Pro
Sri Lanka's triumphant Test match euphoria has quickly dissipated into the previously familiar role of eating humble pie.
The South Africans exacted revenge for their embarrassment in the Tests by grinding their opponents into the dust, leading three to zero in the one-dayers in a relentless display of ferocity.
Already, the series has moved into a dead rubber situation with two games remaining as the struggling Sri Lanka line-up find that their horses for courses squad do not match up to the heroes that dethroned the hosts in the two-Test series a few weeks prior.
One-day skipper Lasith Malinga's desperate move to publicly scorn his squad for their lack of respect at being given national selection and reminding them of the pride associated with donning the Sri Lanka cap appears to have added more fuel to the fire rather than dousing it.
Factions within appear to suggest that a change at the head may yet bring out the best from this talented but currently dysfunctional team.
Glenn Maxwell's Test career cruelled by World Cup flop
After the emotions, you have to admit England always had it in them
Cricket World Cup 2019: Reflections – Part 2
The unsatisfied expectations from the 2019 World Cup
Recapturing the nation: The 2019 Ashes
Port Elizabeth and Cape Town beckon in the next two encounters, which will be of academic interest before the Lankans figure in three T20s before departing the southern hemisphere with little comfort but plenty to dwell on for their efforts.
What has been clear in the whitewash is that the current squad lack the temperament and depth in their batting as they clearly squandered a chance of winning games they could have after the bowlers did a great job in containing the strong South African batting lineup.
Niroshan Dickwella has failed as an opener and should move down the order for better impact and experienced Upul Tharanga should be made to prove his worth in the squad by filling that role or consider his career over.
The Sri Lankan fielding which was exceptional in the Tests, was appalling to a point where fielding coach Steve Rixon was visibly wincing as if in pain at the morass of mistakes.
Everything fell apart in the rain-hampered third match where they let the South Africans get away to a huge total thanks to sloppy fielding and erratic bowling mainly by proven specialists like Thisara Perera whose form or motives need questioning.
With the World Cup fast looming on the horizon Sri Lanka desperately needs some wise heads and proper direction in a hurry if they are to avoid humiliation after their proud record in previous editions which included that historic victory in Lahore in 1996.
Sports opinion delivered daily
Scott Pryde
Sri Lanka stun England in World Cup boilover
A contender for game of the Cricket World Cup has seen Sri Lanka come away with a thrilling 20-run upset win over England at Headingley.
Dan Liebke
The Liebke Ratings: Australia vs Sri Lanka
Australia moved on to The Oval, the ground from which the geometric shape gets its name. Their foe? Sri Lanka, whose cunning strategy of playing primarily in washed out games saw them perched just a point outside of the top four.
Australia survive scare to defeat Sri Lanka and go top of Cricket World Cup table
An 87-run win might look comfortable on paper for Australia, but their fourth win in five starts at the Cricket World Cup against Sri Lanka was anything but.
How to watch Australia vs Sri Lanka: Cricket World Cup live stream, TV guide, start time
Australia will confront possibly their easiest game of the Cricket World Cup in London when they clash with a struggling Sri Lanka. This is The Roar's guide to streaming the match online, or watching it on TV.
Ronan O'Connell
Australia vs Sri Lanka: 2019 Cricket World Cup preview
Without ever hitting full flight so far in this World Cup Australia are in a strong position, with three wins and one loss on the board.
WATCH: Sri Lankan captain inexplicably ducks... on a free hit?
Sri Lanka were in all sorts of trouble in their opening World Cup match against New Zealand in Cardiff.

redpajama_set_name: RedPajamaCommonCrawl


Probably the best sandwich in the world!
Yesterday I have invented the best sandwich in the world! Some will call it gourmet!
Toast two pieces of Warburtons medium white bread (or similar – any good white toast should be ok).
Spread a medium layer of Red Onion Chutney (I recommend English Provender Co.) on one piece of toast. Let it sink in a bit.
Pour some Red Hot Buffalo Chicken Wings Sauce (I recommend Frank's) on the other piece of bread.
Cover the onion chutney with a medium slice of fresh, mild gouda cheese.
Put a think slice of a thick Chorizo sausage in the middle.
Put generous slices of sweet tomato.
Add two slices of strong, white onion.
Put few cucumber slices on top of the onion. Add salt.
Close the sandwich. Cut and consume immediately!
I have no photo of this exquisite dish, because the sandwich disappears before I manage to find a camera. Try it!


text:
Set: East of West (Complete with Variants)
Slot: East of West 2 Second Printing
East of West #2 Signature Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 7 13 22 35 44 66
East of West #2 Apparent MA Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 6 7 11
East of West #2 Apparent SA Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 5 8 10 14
East of West #2 Apparent EA Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 5 7
East of West #2 Apparent MP Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 4 7 8 13
East of West #2 Apparent EP Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 5 6 9
East of West #2 Universal Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 6 12 20 32 40 60
East of West #2 Qualified Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 3 5 10 17 27 34 51
East of West #2 Apparent SP Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 5 9 11 16
East of West #2 Apparent Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 6 8 12
East of West #2 Apparent SS Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Apparent SS MA Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Apparent SS SA Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Apparent SS EA Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Apparent SS MP Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Apparent SS SP Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Apparent SS EP Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Conserved Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 A-1 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 4 7 11 14 20
East of West #2 A-4 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 6 9 11 17
East of West #2 B-1 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 5 8 10 14
East of West #2 B-2 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 4 7 9 13
East of West #2 C-1 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 5 6 9
East of West #2 SS A-1 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 SS B-1 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 SS C-1 Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 3 6 10 16 20 30
East of West #2 Qualified SS Second Printing 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 3 4 6 11 19 30 38 57


text:
package com.heatonresearch.aifh.examples.discrete;

import com.heatonresearch.aifh.discrete.DiscreteAnneal;
import com.heatonresearch.aifh.randomize.GenerateRandom;
import com.heatonresearch.aifh.randomize.MersenneTwisterGenerateRandom;

/**
 * This example program shows how to use discrete simulated annealing to find solutions to the Kapsack problem.
 * <p/>
 * http://en.wikipedia.org/wiki/Knapsack_problem
 */
public class KnapsackAnneal extends DiscreteAnneal {
    /**
     * Number of items to choose from.
     */
    public static final int NUM_ITEMS_TO_CHOOSE = 25;

    /**
     * The max weight of the knapsack.
     */
    public static final int KNAPSACK_MAX_WEIGHT = 50;

    /**
     * The max weight for an item.
     */
    public static final int ITEM_MAX_WEIGHT = 20;

    /**
     * The max value for an item.
     */
    public static final int ITEM_MAX_VALUE = 1000;

    /**
     * The profit for each item.
     */
    private final int[] profit = new int[NUM_ITEMS_TO_CHOOSE + 1];

    /**
     * The weight for each item.
     */
    private final int[] weight = new int[NUM_ITEMS_TO_CHOOSE + 1];

    /**
     * The current items taken.
     */
    private final boolean[] currentTaken;

    /**
     * A backup of the items taken, in case we need to revert.
     */
    private final boolean[] backupTaken;

    /**
     * The best set of items so far.
     */
    private final boolean[] bestTaken;

    /**
     * A random number generator.
     */
    private final GenerateRandom rnd = new MersenneTwisterGenerateRandom();

    /**
     * Construct the object and init.
     */
    public KnapsackAnneal() {
        super(1000, 40000, 0.001);

        this.currentTaken = new boolean[NUM_ITEMS_TO_CHOOSE];
        this.backupTaken = new boolean[NUM_ITEMS_TO_CHOOSE];
        this.bestTaken = new boolean[NUM_ITEMS_TO_CHOOSE];

        for (int i = 0; i < this.currentTaken.length; i++) {
            this.currentTaken[i] = this.rnd.nextBoolean();
        }
        balance();
    }

    /**
     * Run the example.
     */
    public void run() {

        // Generate a random set of items.
        for (int n = 0; n < NUM_ITEMS_TO_CHOOSE; n++) {
            profit[n] = (int) (Math.random() * ITEM_MAX_VALUE);
            weight[n] = (int) (Math.random() * ITEM_MAX_WEIGHT);
        }

        // now begin main loop, and find a minimum
        while (!done()) {
            this.iteration();
            System.out.println("Iteration #" + getK() + ", Best Score=" + this.getBestScore() + "," + getStatus());
        }

        // print results
        System.out.println("item" + "\t" + "profit" + "\t" + "weight" + "\t" + "take");
        for (int n = 0; n < NUM_ITEMS_TO_CHOOSE; n++) {
            System.out.println((n + 1) + "\t" + profit[n] + "\t" + weight[n] + "\t" + bestTaken[n]);
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void backupState() {
        System.arraycopy(this.currentTaken, 0, this.backupTaken, 0, this.currentTaken.length);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void restoreState() {
        System.arraycopy(this.backupTaken, 0, this.currentTaken, 0, this.currentTaken.length);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void foundNewBest() {
        System.arraycopy(this.currentTaken, 0, this.bestTaken, 0, this.currentTaken.length);
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public void moveToNeighbor() {

        // check for strange case where we have everything!
        // This means that the max allowed knapsack weight is greater than the total of grabbing everything.
        // This is kind of pointless, but don't go into an endless loop!
        boolean holdingEverythingAlready = true;
        for (final boolean aCurrentTaken : this.currentTaken) {
            if (!aCurrentTaken) {
                holdingEverythingAlready = false;
                break;
            }
        }

        if (!holdingEverythingAlready) {
            // try to add something
            int pt = this.rnd.nextInt(this.currentTaken.length); // prime
            while (this.currentTaken[pt]) {
                pt = this.rnd.nextInt(this.currentTaken.length);
            }

            // add the item we found
            this.currentTaken[pt] = true;

            // We probably need to drop something now.
            balance();
        }

    }

    /**
     * {@inheritDoc}
     */
    @Override
    public double evaluate() {
        if (calculateTotalWeight() > KNAPSACK_MAX_WEIGHT) {
            return 0;
        }

        int result = 0;
        for (int i = 0; i < this.currentTaken.length; i++) {
            if (this.currentTaken[i]) {
                result += this.profit[i];
            }
        }
        return result;
    }

    /**
     * @return The total weight.
     */
    private int calculateTotalWeight() {
        int result = 0;
        for (int i = 0; i < this.currentTaken.length; i++) {
            if (this.currentTaken[i]) {
                result += this.weight[i];
            }
        }
        return result;
    }

    /**
     * Balance and keep below max weight.
     */
    private void balance() {
        while (calculateTotalWeight() > KNAPSACK_MAX_WEIGHT) {
            final int remove = rnd.nextInt(this.currentTaken.length);
            this.currentTaken[remove] = false;
        }
    }

    /**
     * The main method.
     *
     * @param args Not used.
     */
    public static void main(final String[] args) {
        final KnapsackAnneal prg = new KnapsackAnneal();
        prg.run();
    }
}

redpajama_set_name: RedPajamaGithub


text:
Google Play Coffee break with iMumz | From start-up to scale-up
Today I'm excited to announce that we are launching the second episode of Google Play Coffee breaks. In this episode I enjoyed a virtual coffee with Ravi Teja Akondi, co-founder and CEO of iMumz. iMumz caters to expecting and new parents to help them practice wellbeing and mindfulness during the early stages of parenthood. Ravi and his team recently graduated from Appscale Academy, an initiative aimed at supporting promising Indian app start-ups and helping them grow into global businesses. It's great to see their continued growth and to hear them share tips and learnings they picked up along the way.
Watch the full Coffee breaks episode and get my take on it below:
The team at iMumz created their app with the mission to help expecting and new parents easily follow a healthy lifestyle every day, encouraging them to practice mindfulness daily. The app provides support to parents focusing on well-being during the first 1,000 days of pregnancy; that is 270 days of pregnancy and the first two years of parenthood. Today, the app helps over 600,000 people achieve these goals.
Ravi recalled how in the early days the iMumz team sent out actionable insights to their audience via a messenger app. They started by customizing small daily routines for those seeking to learn more about wellness during pregnancy and parenthood. By tracking the completion rates and retention rates, the team were able to see that they were really creating something valuable and gained the confidence to take the business from a messaging service to a full mobile application.
The first step for the iMumz team was to work on building out a community of early adopters. After conducting initial market research the team realized those in tier one cities - the metro cities in India - were the most likely to become early adopters. As they expanded to more and more parents, they learnt how important it was to tailor their pricing to different types of audiences. Experimentation was key to understanding what their different audiences were willing to pay. Remember that beyond the really useful data you can gather from running experiments, you can also get incredibly valuable direct and written feedback from users by inviting them into closed testing groups you can easily set up in the Play Console, without this feedback impacting your star rating.
Nurturing your app community
Through experimenting and listening to users, iMumz learnt that parents-to-be wanted to connect with others like them, and the team quickly realized that the people using their app needed a community. People wanted to connect with others going through similar life events. By building out community spaces the team was able to help initiate discussions on specific topics; such as breastfeeding, baby-led weaning, and self care postpartum. The community has since helped important conversations develop naturally, and provides iMumz users with another level of peer support. Today, their community is vibrant, with more than 5,000 conversations taking place every day!
When it comes to building out a community it's important that your messaging to users feels genuine and authentic. This was especially important for iMumz, given the app caters to a sensitive and important set of life moments for parents. To start, as with any message, making message content relevant and timely is critical. For example, consider the time of day when determining the best time to post new content, updates, or sending push notifications, and remember different time zones when you're dealing with a global audience. Additionally, it can help to put a relatable person or character behind the message (remember to localize this to your audience though).
Ravi also shared two key learnings he felt made the biggest difference to the growth of his app:
1) Experiment. There are so many ideas you might find counterintuitive - don't automatically discount any or jump to conclusions until you test them. Be data driven. That's going to help you provide more value, faster.
2) Narrow down what you're working on, so you focus on one task or challenge at a time. You might be tempted to do many things at once, but narrowing down will help give you amplified results.
To where does the future lead?
Moving forward, the team at iMumz plan to stay focused on their mission; making the future generation healthier, happier, and more intelligent. They also have global aspirations and they plan to launch across a few selected geographies soon, launching localized versions of the app.
It was such a pleasure to speak to Ravi about his experiences and I can't wait to see iMumz's continued growth and next steps. I get so much inspiration from speaking with the people behind apps like iMumz, and I know that inspires my team to continue investing in and developing initiatives such as Appscale Academy.
We are looking forward to continuing to learn from more businesses, and see what you all do next. Stay tuned for the next episode of Coffee Breaks.
Tamzin Taylor, Head of Play Partnerships, Western Europe
Do you have any questions for iMumz? What are your own tips for other app or game businesses? Let us know on Twitter.
Posted by Tamzin Taylor, Head of Google Play Partnerships, Western Europe
Etiketler: android developers , Featured , Google Play


text:
//-----------------------------------------------------------------------
// <copyright file="BlueMarbleApp.cs" company="Microsoft Corporation">
//     Copyright (c) Microsoft Corporation 2011. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing.Imaging;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Xml.Linq;
using Microsoft.Research.Wwt.Sdk.Core;

namespace Microsoft.Research.Wwt.Sdk.Samples
{
    /// <summary>
    /// BlueMarble sample demonstrates how to visualize Equirectangular images in WWT.
    /// The input can be either a single equirectangular image or multiple images with each image covering a portion of the world.
    /// The application can be invoked as,
    /// BlueMarbleApp /Input="Input file" /Projection="Projection Type - Mercator or Toast" [/OutputDir="Output Directory"].
    ///     [/InputBoundary="Top Left Latitude, Top Left Longitude, Bottom Right Latitude, Bottom Right Longitude"]
    /// BlueMarble images can be downloaded from http://visibleearth.nasa.gov/view_rec.php?id=2429.
    /// </summary>
    /// <remarks>
    /// Single BlueMarble image can be downloaded from http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x5400x2700.jpg
    /// Multipart BlueMarble images can be downloaded from,
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.A1.jpg
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.A2.jpg
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.B1.jpg
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.B2.jpg
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.C1.jpg
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.C2.jpg
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.D1.jpg
    /// http://eoimages.gsfc.nasa.gov/ve//7100/world.topo.bathy.200401.3x21600x21600.D2.jpg
    /// Details about how the multipart image is composed can be seen here - http://earthobservatory.nasa.gov/Features/BlueMarble/bmng.pdf
    /// </remarks>
    public static class Program
    {
        /// <summary>
        /// Entry point.
        /// </summary>
        /// <param name="args">
        /// Command line arguments.
        /// </param>
        public static void Main(string[] args)
        {
            // Read, parse and validate command line arguments.
            CommandLineArguments cmdLine = Program.Initialize(args);
            if (cmdLine != null)
            {
                try
                {
                    if (cmdLine.Input.Trim().EndsWith(".xml", StringComparison.CurrentCultureIgnoreCase))
                    {
                        if (cmdLine.InputBoundaryAsBoundary != null)
                        {
                            ProcessMultipartEquirectangularImage(
                                cmdLine.Input,
                                cmdLine.OutputDir,
                                cmdLine.ProjectionAsEnum,
                                cmdLine.InputBoundaryAsBoundary ?? new Boundary(-180, -90, 180, 90));
                        }
                        else
                        {
                            // If the input is an XML file, it's a configuration file for multiple equirectangular images.
                            ProcessMultipartEquirectangularImage(cmdLine.Input, cmdLine.OutputDir, cmdLine.ProjectionAsEnum);
                        }
                    }
                    else
                    {
                        if (cmdLine.InputBoundaryAsBoundary != null)
                        {
                            ProcessEquirectangularImageSpecificRegion(
                                cmdLine.Input,
                                cmdLine.OutputDir,
                                cmdLine.ProjectionAsEnum,
                                cmdLine.InputBoundaryAsBoundary ?? new Boundary(-180, -90, 180, 90));
                        }
                        else
                        {
                            // Otherwise, let's try to process it as a single image.
                            ProcessEquirectangularImage(cmdLine.Input, cmdLine.OutputDir, cmdLine.ProjectionAsEnum);
                        }
                    }
                }
                catch (OutOfMemoryException ex)
                {
                    Trace.TraceError("{0}: " + ex.Message, DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
                }
                catch (Exception ex)
                {
                    Trace.TraceError("{0}: " + ex.Message, DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
                }
            }
        }

        /// <summary>
        /// Processes the input equirectangular image.
        /// </summary>
        /// <param name="inputImage">
        /// Input image path.
        /// </param>
        /// <param name="outputDir">
        /// Output directory where pyramid is generated.
        /// </param>
        /// <param name="projection">
        /// Projection type.
        /// </param>
        private static void ProcessEquirectangularImage(string inputImage, string outputDir, ProjectionTypes projection)
        {
            Trace.TraceInformation("{0}: Reading image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            ImageFormat imageFormat = ImageFormat.Png;

            // Set the grid boundaries
            var imageBoundary = new Boundary(-180, -90, 180, 90);

            // Build an image grid using the input image
            var imageGrid = new ImageGrid(inputImage, true);

            // Build the grid map for equirectangular projection using the image grid and boundary co-ordinates
            var equirectangularGridMap = new EquirectangularGridMap(imageGrid, imageBoundary);

            // Build the color map using equirectangular projection grid map
            var imageColorMap = new ImageColorMap(equirectangularGridMap);

            var maximumLevelsOfDetail = TileHelper.CalculateMaximumLevel(imageGrid.Height, imageGrid.Width, imageBoundary);

            // Define ITileCreator instance for creating image tiles.
            ITileCreator tileCreator = TileCreatorFactory.CreateImageTileCreator(imageColorMap, projection, outputDir);

            // Define plumbing for looping through all the tiles to be created for base image and pyramid.
            var tileGenerator = new TileGenerator(tileCreator);

            // Start building base image and the pyramid.
            Trace.TraceInformation("{0}: Building base and parent levels...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            tileGenerator.Generate(maximumLevelsOfDetail);

            string fileName = Path.GetFileNameWithoutExtension(inputImage);

            // Generate Plate file.
            Trace.TraceInformation("{0}: Building Plate file...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            ImageTileSerializer pyramid = new ImageTileSerializer(TileHelper.GetDefaultImageTilePathTemplate(outputDir), ImageFormat.Png);
            PlateFileGenerator plateGenerator = new PlateFileGenerator(
                Path.Combine(outputDir, fileName + ".plate"),
                maximumLevelsOfDetail,
                ImageFormat.Png);
            plateGenerator.CreateFromImageTile(pyramid);

            // Generate Thumbnail Images.
            Trace.TraceInformation("{0}: Building Thumbnail image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string thumbnailFile = Path.Combine(outputDir, fileName + ".jpeg");
            TileHelper.GenerateThumbnail(inputImage, 96, 45, thumbnailFile, ImageFormat.Jpeg);

            // Get the path of image tiles created and save it in WTML file.
            Trace.TraceInformation("{0}: Building WTML file..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string pyramidPath = WtmlCollection.GetWtmlTextureTilePath(TileHelper.GetDefaultImageTilePathTemplate(outputDir), imageFormat.ToString());

            // Create and save WTML collection file.
            WtmlCollection wtmlCollection = new WtmlCollection(fileName, thumbnailFile, pyramidPath, maximumLevelsOfDetail, projection);
            string path = Path.Combine(outputDir, fileName + ".wtml");
            wtmlCollection.Save(path);
            Trace.TraceInformation("{0}: Collection successfully generated.", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
        }

        /// <summary>
        /// Processes the input equirectangular image.
        /// </summary>
        /// <param name="inputImage">
        /// Input image path.
        /// </param>
        /// <param name="outputDir">
        /// Output directory where pyramid is generated.
        /// </param>
        /// <param name="projection">
        /// Projection type.
        /// </param>
        /// <param name="inputBoundary">
        /// Input image boundary.
        /// </param>
        private static void ProcessEquirectangularImageSpecificRegion(string inputImage, string outputDir, ProjectionTypes projection, Boundary inputBoundary)
        {
            Trace.TraceInformation("{0}: Reading image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            ImageFormat imageFormat = ImageFormat.Png;

            // Check if the image is circular.
            double longitudeDelta = inputBoundary.Right - inputBoundary.Left;
            bool circular = (360.0 - longitudeDelta) < 0.000001;

            // Build an image grid using the input image
            var imageGrid = new ImageGrid(inputImage, circular);

            // Build the grid map for equirectangular projection using the image grid and boundary co-ordinates
            var equirectangularGridMap = new EquirectangularGridMap(imageGrid, inputBoundary);

            // Build the color map using equirectangular projection grid map
            var imageColorMap = new ImageColorMap(equirectangularGridMap);

            var maximumLevelsOfDetail = TileHelper.CalculateMaximumLevel(imageGrid.Height, imageGrid.Width, inputBoundary);

            // Define ITileCreator instance for creating image tiles.
            ITileCreator tileCreator = TileCreatorFactory.CreateImageTileCreator(imageColorMap, projection, outputDir);

            // Define plumbing for looping through all the tiles to be created for base image and pyramid.
            var tileGenerator = new TileGenerator(tileCreator);

            // Define bounds of the image. Image is assumed to cover the entire world.
            // If not, change the coordinates accordingly.
            // For Mercator projection, longitude spans from -180 to +180 and latitude from 90 to -90.
            Boundary gridBoundary = new Boundary(inputBoundary.Left, inputBoundary.Top, inputBoundary.Right, inputBoundary.Bottom);
            if (projection == ProjectionTypes.Toast)
            {
                // For Toast projection, longitude spans from 0 to +360 and latitude from 90 to -90.
                gridBoundary.Left += 180;
                gridBoundary.Right += 180;
            }

            // Start building base image and the pyramid.
            Trace.TraceInformation("{0}: Building base and parent levels...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            tileGenerator.Generate(maximumLevelsOfDetail, gridBoundary);

            string fileName = Path.GetFileNameWithoutExtension(inputImage);

            // Generate Plate file.
            Trace.TraceInformation("{0}: Building Plate file...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            ImageTileSerializer pyramid = new ImageTileSerializer(TileHelper.GetDefaultImageTilePathTemplate(outputDir), ImageFormat.Png);
            PlateFileGenerator plateGenerator = new PlateFileGenerator(
                Path.Combine(outputDir, fileName + ".plate"),
                maximumLevelsOfDetail,
                ImageFormat.Png);
            plateGenerator.CreateFromImageTile(pyramid);

            // Generate Thumbnail Images.
            Trace.TraceInformation("{0}: Building Thumbnail image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string thumbnailFile = Path.Combine(outputDir, fileName + ".jpeg");
            TileHelper.GenerateThumbnail(inputImage, 96, 45, thumbnailFile, ImageFormat.Jpeg);

            // Get the path of image tiles created and save it in WTML file.
            Trace.TraceInformation("{0}: Building WTML file..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string pyramidPath = WtmlCollection.GetWtmlTextureTilePath(TileHelper.GetDefaultImageTilePathTemplate(outputDir), imageFormat.ToString());

            // Create and save WTML collection file.
            WtmlCollection wtmlCollection = new WtmlCollection(fileName, thumbnailFile, pyramidPath, maximumLevelsOfDetail, projection, inputBoundary);
            string path = Path.Combine(outputDir, fileName + ".wtml");
            wtmlCollection.Save(path);
            Trace.TraceInformation("{0}: Collection successfully generated.", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
        }

        /// <summary>
        /// Processes a list of input image tiles and generates pyramid for level N.
        /// </summary>
        /// <param name="inputFilePath">Xml file with list of image tile information.</param>
        /// <param name="outputDir">Output directory where the image tiles of pyramid has to be stored.</param>
        /// <param name="projection">Projection to be used.</param>
        private static void ProcessMultipartEquirectangularImage(string inputFilePath, string outputDir, ProjectionTypes projection)
        {
            ImageFormat imageFormat = ImageFormat.Png;

            Trace.TraceInformation("{0}: Reading image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));

            // Get the list of equirectangular images input.
            string[,] imageTiles = Program.GetInputImageList(inputFilePath);

            // Set the grid boundaries
            var imageBoundary = new Boundary(-180, -90, 180, 90);

            // Build an image grid using the input images
            var imageGrid = new ImageGrid(imageTiles, true);

            // Build the grid map for equirectangular projection using the image grid and boundary co-ordinates
            var equirectangularGridMap = new EquirectangularGridMap(imageGrid, imageBoundary);

            // Build the color map using equirectangular projection grid map
            var imageColorMap = new ImageColorMap(equirectangularGridMap);

            var maximumLevelsOfDetail = TileHelper.CalculateMaximumLevel(imageGrid.Height, imageGrid.Width, imageBoundary);

            // Define ITileCreator instance for creating image tiles.
            ITileCreator tileCreator = TileCreatorFactory.CreateImageTileCreator(imageColorMap, projection, outputDir);

            // Define plumbing for looping through all the tiles to be created for base image and pyramid.
            var tileGenerator = new TileGenerator(tileCreator);

            // Start building base image and the pyramid.
            Trace.TraceInformation("{0}: Building base and parent levels...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            tileGenerator.Generate(maximumLevelsOfDetail);

            string fileName = Path.GetFileNameWithoutExtension(inputFilePath);

            // Generate Plate file.
            Trace.TraceInformation("{0}: Building Plate file...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            ImageTileSerializer pyramid = new ImageTileSerializer(TileHelper.GetDefaultImageTilePathTemplate(outputDir), ImageFormat.Png);
            PlateFileGenerator plateGenerator = new PlateFileGenerator(
                Path.Combine(outputDir, fileName + ".plate"),
                maximumLevelsOfDetail,
                ImageFormat.Png);
            plateGenerator.CreateFromImageTile(pyramid);

            // Generate Thumbnail Images.
            Trace.TraceInformation("{0}: Building Thumbnail image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string thumbnailFile = Path.Combine(outputDir, fileName + ".jpeg");
            TileHelper.GenerateThumbnail(pyramid.GetFileName(0, 0, 0), 96, 45, thumbnailFile, ImageFormat.Jpeg);

            // Get the path of image tiles created and save it in WTML file.
            Trace.TraceInformation("{0}: Building WTML file..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string pyramidPath = WtmlCollection.GetWtmlTextureTilePath(TileHelper.GetDefaultImageTilePathTemplate(outputDir), imageFormat.ToString());

            // Create and save WTML collection file.
            WtmlCollection wtmlCollection = new WtmlCollection(fileName, thumbnailFile, pyramidPath, maximumLevelsOfDetail, projection);
            string path = Path.Combine(outputDir, fileName + ".wtml");
            wtmlCollection.Save(path);
            Trace.TraceInformation("{0}: Collection successfully generated.", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
        }

        /// <summary>
        /// Processes a list of input image tiles and generates pyramid for level N.
        /// </summary>
        /// <param name="inputFilePath">Xml file with list of image tile information.</param>
        /// <param name="outputDir">Output directory where the image tiles of pyramid has to be stored.</param>
        /// <param name="projection">Projection to be used.</param>
        /// <param name="inputBoundary">Input image boundary.</param>
        private static void ProcessMultipartEquirectangularImage(string inputFilePath, string outputDir, ProjectionTypes projection, Boundary inputBoundary)
        {
            ImageFormat imageFormat = ImageFormat.Png;

            Trace.TraceInformation("{0}: Reading image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));

            // Get the list of equirectangular images input.
            string[,] imageTiles = Program.GetInputImageList(inputFilePath);

            // Check if the image is circular.
            double longitudeDelta = inputBoundary.Right - inputBoundary.Left;
            bool circular = (360.0 - longitudeDelta) < 0.000001;

            // Build an image grid using the input images
            var imageGrid = new ImageGrid(imageTiles, circular);

            // Build the grid map for equirectangular projection using the image grid and boundary co-ordinates
            var equirectangularGridMap = new EquirectangularGridMap(imageGrid, inputBoundary);

            // Build the color map using equirectangular projection grid map
            var imageColorMap = new ImageColorMap(equirectangularGridMap);

            var maximumLevelsOfDetail = TileHelper.CalculateMaximumLevel(imageGrid.Height, imageGrid.Width, inputBoundary);

            // Define ITileCreator instance for creating image tiles.
            ITileCreator tileCreator = TileCreatorFactory.CreateImageTileCreator(imageColorMap, projection, outputDir);

            // Define bounds of the image. Image is assumed to cover the entire world.
            // If not, change the coordinates accordingly.
            // For Mercator projection, longitude spans from -180 to +180 and latitude from 90 to -90.
            Boundary gridBoundary = new Boundary(inputBoundary.Left, inputBoundary.Top, inputBoundary.Right, inputBoundary.Bottom);
            if (projection == ProjectionTypes.Toast)
            {
                // For Toast projection, longitude spans from 0 to +360 and latitude from 90 to -90.
                gridBoundary.Left += 180;
                gridBoundary.Right += 180;
            }

            // Define plumbing for looping through all the tiles to be created for base image and pyramid.
            var tileGenerator = new TileGenerator(tileCreator);

            // Start building base image and the pyramid.
            Trace.TraceInformation("{0}: Building base and parent levels...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            tileGenerator.Generate(maximumLevelsOfDetail, gridBoundary);

            string fileName = Path.GetFileNameWithoutExtension(inputFilePath);

            // Generate Plate file.
            Trace.TraceInformation("{0}: Building Plate file...", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            ImageTileSerializer pyramid = new ImageTileSerializer(TileHelper.GetDefaultImageTilePathTemplate(outputDir), ImageFormat.Png);
            PlateFileGenerator plateGenerator = new PlateFileGenerator(
                Path.Combine(outputDir, fileName + ".plate"),
                maximumLevelsOfDetail,
                ImageFormat.Png);
            plateGenerator.CreateFromImageTile(pyramid);

            // Generate Thumbnail Images.
            Trace.TraceInformation("{0}: Building Thumbnail image..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string thumbnailFile = Path.Combine(outputDir, fileName + ".jpeg");
            TileHelper.GenerateThumbnail(pyramid.GetFileName(0, 0, 0), 96, 45, thumbnailFile, ImageFormat.Jpeg);

            // Get the path of image tiles created and save it in WTML file.
            Trace.TraceInformation("{0}: Building WTML file..", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
            string pyramidPath = WtmlCollection.GetWtmlTextureTilePath(TileHelper.GetDefaultImageTilePathTemplate(outputDir), imageFormat.ToString());

            // Create and save WTML collection file.
            WtmlCollection wtmlCollection = new WtmlCollection(fileName, thumbnailFile, pyramidPath, maximumLevelsOfDetail, projection, inputBoundary);
            string path = Path.Combine(outputDir, fileName + ".wtml");
            wtmlCollection.Save(path);
            Trace.TraceInformation("{0}: Collection successfully generated.", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
        }

        /// <summary>
        /// Parses the input xml file and returns an array of input image file paths.
        /// Input XML should be in the format of M X N format where
        ///     N = number of images in the horizontal direction
        ///     M = number of images in the vertical direction
        /// </summary>
        /// <param name="xmlFilePath">
        /// Xml file with list of input image tile details.
        /// </param>
        /// <returns>
        /// Two dimensional array of image filename.
        /// </returns>
        private static string[,] GetInputImageList(string xmlFilePath)
        {
            if (!File.Exists(xmlFilePath))
            {
                throw new FileNotFoundException("Invalid Input xml file");
            }

            string[,] imageList = null;

            XDocument xmlDoc = null;
            try
            {
                // Read and parse all the input images into ImageTile objects.
                xmlDoc = XDocument.Load(xmlFilePath);
                var rows = xmlDoc.Elements("Regions").Elements("Row");

                int rowCount = 0;
                int columnCount = 0;
                foreach (XElement row in rows)
                {
                    var regions = row.Elements("Region");
                    if (rowCount == 0)
                    {
                        imageList = new string[rows.Count(), regions.Count()];
                    }

                    columnCount = 0;
                    foreach (XElement region in regions)
                    {
                        imageList[rowCount, columnCount] = region.Element("ImagePath").Value;
                        columnCount++;
                    }

                    rowCount++;
                }
            }
            catch
            {
                throw;
            }
            finally
            {
                xmlDoc = null;
            }

            return imageList;
        }

        /// <summary>
        /// Parses the command line arguments and initializes the object.
        /// </summary>
        /// <param name="args">
        /// Command line arguments.
        /// </param>
        /// <returns>
        /// Parsed command line arguments.
        /// </returns>
        private static CommandLineArguments Initialize(string[] args)
        {
            const string ErrorMessage =
            "Incorrect arguments..\nUsage: BlueMarbleApp /Input=<Input file>"
            + " /Projection=<Projection Type - Mercator or Toast>  [/OutputDir=<Output Directory>]"
            + " [/InputBoundary=<Top Left Latitude, Top Left Longitude, Bottom Right Latitude, Bottom Right Longitude>]";

            if (args == null || args.Length < 2)
            {
                Trace.TraceError("{0}: " + ErrorMessage, DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
                return null;
            }

            CommandLineArguments cmdLine = new CommandLineArguments(args);

            if (string.IsNullOrEmpty(cmdLine.Input))
            {
                Trace.TraceError("{0}: " + ErrorMessage, DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
                return null;
            }

            if (!string.IsNullOrEmpty(cmdLine.Projection))
            {
                ProjectionTypes projection;
                if (!Enum.TryParse(cmdLine.Projection, true, out projection))
                {
                    Trace.TraceError("{0}: " + ErrorMessage, DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
                    return null;
                }
            }
            else
            {
                Trace.TraceError("{0}: " + ErrorMessage, DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture));
                return null;
            }

            if (string.IsNullOrWhiteSpace(cmdLine.OutputDir))
            {
                string outputFolderName = string.Format(CultureInfo.InvariantCulture, "{0}_{1}_{2}", Path.GetFileNameWithoutExtension(cmdLine.Input), cmdLine.Projection, DateTime.Now.ToString("yyyyddMM-HHmmss", CultureInfo.InvariantCulture));
                cmdLine.OutputDir = Path.Combine(TileHelper.DefaultOutputDirectory, outputFolderName);
                Trace.TraceInformation("{0}: Output directory {1}", DateTime.Now.TimeOfDay.ToString(@"hh\:mm\:ss", CultureInfo.InvariantCulture), cmdLine.OutputDir);
            }

            if (!Path.IsPathRooted(cmdLine.Input))
            {
                cmdLine.Input = Path.GetFullPath(cmdLine.Input);
            }

            if (!Path.IsPathRooted(cmdLine.OutputDir))
            {
                cmdLine.OutputDir = Path.GetFullPath(cmdLine.OutputDir);
            }

            return cmdLine;
        }

        /// <summary>
        /// Encapsulates the command line arguments used.
        /// </summary>
        internal class CommandLineArguments
        {
            /// <summary>
            /// Initializes a new instance of the CommandLineArguments class.
            /// </summary>
            /// <param name="args">arguments parameter</param>
            public CommandLineArguments(string[] args)
            {
                if (args != null)
                {
                    var argsCollection = new Dictionary<string, string>();
                    //// Load arguments into a collection
                    foreach (string arg in args)
                    {
                        if (arg.IndexOf('=') > 0)
                        {
                            var argument = arg.TrimStart(new char[2] { '/', '-' });
                            var argumentKey = argument.Substring(0, argument.IndexOf('='));
                            var argumentValue = argument.Substring(argument.IndexOf('=') + 1);
                            if (!argsCollection.ContainsKey(argumentKey))
                            {
                                argsCollection.Add(argumentKey.ToUpperInvariant(), argumentValue);
                            }
                        }
                    }

                    //// Set properties based on collection key value
                    foreach (KeyValuePair<string, string> pair in argsCollection)
                    {
                        switch (pair.Key)
                        {
                            case "INPUT":
                                this.Input = pair.Value;
                                break;
                            case "OUTPUTDIR":
                                this.OutputDir = pair.Value;
                                break;
                            case "PROJECTION":
                                this.Projection = pair.Value;
                                break;
                            case "INPUTBOUNDARY":
                                this.InputBoundary = pair.Value;
                                break;
                        }
                    }
                }
            }

            /// <summary>
            /// Gets or sets the Input image path.
            /// </summary>
            public string Input { get; set; }

            /// <summary>
            /// Gets or sets the Output pyramid directory.
            /// </summary>
            public string OutputDir { get; set; }

            /// <summary>
            /// Gets or sets the projection.
            /// </summary>
            public string Projection { get; set; }

            /// <summary>
            /// Gets or sets the input boundary.
            /// </summary>
            public string InputBoundary { get; set; }

            /// <summary>
            /// Gets the input boundary.
            /// </summary>
            public Boundary InputBoundaryAsBoundary
            {
                get
                {
                    return ParseBoundary(this.InputBoundary);
                }
            }

            /// <summary>
            /// Gets the projection type as an enumeration value.
            /// </summary>
            public ProjectionTypes ProjectionAsEnum
            {
                get
                {
                    return (ProjectionTypes)Enum.Parse(typeof(ProjectionTypes), this.Projection, true);
                }
            }

            /// <summary>
            /// Converts the string representation of the boundary to Boundary object.
            /// </summary>
            /// <param name="boundary">
            /// String representation of the boundary
            /// </param>
            /// <returns>
            /// An object of type Boundary.
            /// </returns>
            private static Boundary ParseBoundary(string boundary)
            {
                if (string.IsNullOrWhiteSpace(boundary))
                {
                    return null;
                }

                string[] points = boundary.Split(',');
                if (points.Length != 4)
                {
                    return null;
                }

                return new Boundary(
                    double.Parse(points[1], CultureInfo.InvariantCulture),
                    double.Parse(points[2], CultureInfo.InvariantCulture),
                    double.Parse(points[3], CultureInfo.InvariantCulture),
                    double.Parse(points[0], CultureInfo.InvariantCulture));
            }
        }
    }
}


text:
MBE for Rugby Club President
THE President of Banbridge Rugby Club has been awarded an MBE.
A farmer for 40 years, John Best, who hails from Newry, received an MBE for his services to the agri-food industry in Northern Ireland.
John is well-known in farming circles, particularly in his role as chairman of the seeds and cereals committee with the Ulster Farmers' Union.
Commenting on the award, John said: "I was very surprised – pleasantly surprised – and honoured.
"The award is a reflection on all the people who have worked with me over the years."
John is the father of Irish rugby internationals Rory and Simon Best. John's wife Pat received an MBE from the Queen in December last year, and the Best family can now look forward to another day out at Buckingham Palace.


text:
Female police officer thrown from car by armed robber
A man has been sentenced for attacking a police officer and attempting to steal her police vehicle.
Armed with weapons and wearing a balaclava Owen Smith had robbed a Tesco in Horsham, stealing cigarettes alcohol and cash with another man.
But he was disturbed by a patrolling police car that happened to pull up in the store's car park,.
The 29-year-old thief ran at it with a baseball bat, opening the door and attacking PC Ellie Young in the driver's seat, pulling her from the vehicle.
Owen Smith and his accomplice threatened staff as they stole cigarettes and alcohol
CCTV shows the officer and her colleague PC Vicky Canales immediately leaping up to continue to tackle Smith, despite receiving injuries to her arms, legs, neck and shoulders.
Police officers were on their way to the scene after a staff member of Tesco Express managed to escape the robbery and alert authorities.
Smith managed to get into the driving seat, but other members of the public and the newly arrived officers rushed to the vehicle as it moved, preventing his attempt to make a speedy getaway.
Other officers came to the aid of the two PCs
Owen Smith attempted to steal a police car. Pic: Sussex Police
Smith was tasered and arrested, but his accomplice ran away and is yet to be apprehended.
Detective Chief Inspector Justina Beeken commended both the bravery of the officers and members of the public that ran towards the crime as it unfolded.
"Watching the CCTV of Owen Smith attacking our officers is absolutely harrowing, not least due to the ferocity of the attack," she said.
"No officer should be attacked while doing their job and I am thankful that no officers were more seriously hurt."
Smith pleaded guilty on 30 August to assault by beating a police constable, possession of an offensive weapon, robbery and taking a police vehicle without consent.
He was sentenced to 14 years in prison at Hove county court.
Metropolitan police to launch clothing range
Half the UK population will spend money on celebrating Halloween
Politics39 mins ago
Facebook apologizes for Xi Jinping 'Mr. S—hole' Burmese translation
Malaysia sends plastic waste back to UK insisting it is not world's 'rubbish dump' | UK News


Color information hex 3f06f8: RGB percentage, decimal and hexa, CMYK, HSL proportion, color gradient, tints, shades, tons, palettes color and other inspirations!
The color hexa 3f06f8 is equivalent in RGB decimal 63, 6, 248 is 63 of red, 6 of green and 248 of blue. It can also be represented by the HSL (hue, saturation and lightness) parameters, which are 0.706 of hue (70), 0.953 of saturation (95) and 0.498 of lightness (49).


The bold modern geometric sterling silver earrings with ruby is an abstract interpretation of the legendary Ithaca, the Greek island that was home for the mythical Ulysses.
There are two 18k gold coordinates in which the flat one marks the island encrusted on a sea of kiln fired enamel.
The bold modern geometric sterling silver piece is an abstract interpretation of the legendary Ithaca, the Greek island that was home for the mythical Ulysses.
The pendant element is 0.5 inch.
The bold modern geometric design of this Coordinates collection is an abstract interpretation of the legendary Ithaca, the Greek island that was home for the mythical Ulysses.
An enchanting addition to every outfit!
The necklace can be sterling silver or leather in red color.


text:
Astro Guyz
The Sky is Waiting.
Astro Culture
Great Books of Science
Great Science Fiction Novels
Astro News & Commentary
The Debunker
Weekly Astro-events
Do It Yourself Astronomy
Astronomy on the Cheap
The Vagabond Astronomer
Observational Astronomy
Astronomers' Tales
Astronomy: a Philosophy
Extreme Astronomy
Classic Experiments Waiting to be Duplicated
Real Science you can do
You are here: Home / Categories / Astro Culture / Friday Review: Searching for the Fleet by Kristine Kathryn Rusch
Friday Review: Searching for the Fleet by Kristine Kathryn Rusch
August 17, 2018 By David Dickinson Leave a Comment
On sale on September 18th, and available for pre-order now.
One of the most amazing science fiction series in recent years now has an exciting new installment.
We're talking about Searching for the Fleet, the latest chapter in the Diving Into the Wreck saga by Kristine Kathryn Rusch out September 18th, 2018 from WMG Publishing. Searching for the Fleet follows Captain Johnathan "Coop" Cooper and Engineer Yash Zarlengo and the crew of the Ivoire as they continue to salvage the spacecraft Boneyard known as The Lost Souls in search of the ancient mythical Fleet.
Think of the Diving universe as an exciting mystery saga, pitting the drama of ship salvage against the dangers of space. Yash and Coop were trained by the best ship diver in the business: Boss, who kicked off the whole saga in the first novel, Diving Into the Wreck.
The Diving series is a unique and intriguing tale of science fiction, and Searching for the Fleet is a worthy addition to the saga. At the heart of the series is the anacapa drive, a spacecraft engine that allows ships and crew to pilot through foldspace and jump immense distances in real space.
What I really love about the world-building in the Diving Saga is how the lost technology of the anacapa warp drive isn't fully understood, and how we get a glimpse into just how temperamental they truly are in the current series installment, Searching for the Fleet. Though these drives give the modern Fleet dominance, they're feared at best… and misused at worst.
The anacapa drive is actually a unique way to tackle the standard science fiction writer's conundrum of faster-than-light travel. What if we really did gain an FTL capability that we didn't fully understand? The anacapa drive is one of the most innovative science fiction plot devices since Frank Herbert's spice-fueled Guild Navigators in Dune.
Searching for the Fleet actually gives us some interesting new perspectives on the origins and functioning of the valuable anacapa drives, as the story flashes back over thousands of years… though the mystery only manages to deepen, as we discover that even those who maintained the anacapa drives back in the older days of the Fleet (think thousands of years ago) didn't fully understand them, and these units become even more strange and mysterious.
But I won't venture beyond that, lest I introduce any spoilers. I've enjoyed following the Diving saga, and would put it up there with some of our all time faves, including The Quiet War and The Strange Tale of Spring-Heeled Jack. Really: it's that good! Be sure to read Searching for the Fleet for an exciting new dimension in the Diving universe.
Fans and readers of this site and The Diving series will recall our reviews of Skirmishes, Boneyards, City of Ruins and the book that started it all, Diving Into the Wreck.
Kristine Kathryn Rusch is one of the most prolific writers in science fiction, fantasy, mystery and more. Be sure to check out our reviews of Masterminds, Starbase Human and The Peyti Crisis.
Filed Under: Astro Culture, Astro News, Astro News & Commentary, Great Science Fiction Novels Tagged With: diving into the wreck, diving universe, kristine kathryn rusch, new scifi, searching for the fleet, wmg, wmg publishing
Search AstroGuyz
The Current Number of Exoplanets Discovered is: 4168
Follow @Astroguyz
Advertise on Astroguyz!
Science Book Reviews
Unmasking Europa
A Professor, A President and Meteor
The Calculus Diaries
Confessions of an Alien Hunter
The Sun Kings
Astro Documentaries
From Earth to the Moon
Journey to Palomar
Naming Pluto
Pictured is a Delta IV rocket launch from Cape Canaveral on November 21st, 2010. The image is a 20 second exposure taken at dusk, shot from about 100 miles west of the launch site. The launch placed a classified payload in orbit for the United States Air Force.
DIY Astronomy
How to Guide for Satellite Spotting
Tips for Meteor Shower Observing
Desktop Science Programs
Observing in Bright Skies
Difficult but not impossible to catch against the dawn or dusk sky, spotting an extreme crescent moon can be a challenge. The slender crescent pictured was shot 30 minutes before sunrise when the Moon was less than 20 hours away from New. A true feat of visual athletics to catch, a good pair of binoculars or a well aimed wide field telescopic view can help with the hunt.
Make Your Own Telescope for Less than 50 Bucks!
Family Backyard Stargazing
How to Make an Observatory from a Kit Shed
Make Your Own Solar Filter
Free Space Launch Viewing Sites
Affordable, Low-Tech Satellite Imaging
World Wide Telescope Review
The Sun is our nearest star, and goes through an 11-year cycle of activity. This image was taken via a properly filtered telescope, and shows the Sun as it appeared during its last maximum peak in 2003. This was during solar cycle #23, a period during which the Sun hurled several large flares Earthward. The next solar cycle is due to peak around 2013-14.
Astronomy Gear Reviews
Trick Out Your Scope
Starry Night Pro 6
Classic 1X Finder
Canon's Image-Stabilized Binoculars
Personal Solar Telescope
Astronomy Uses for the Glovelite
Located in the belt of the constellation Orion, Messier 42, also known as the Orion Nebula is one of the finest deep sky objects in the northern hemisphere sky. Just visible as a faint smudge to the naked eye on a clear dark night, the Orion Nebula is a sure star party favorite, as it shows tendrils of gas contrasted with bright stars. M42 is a large stellar nursery, a star forming region about 1,000 light years distant.
Astronomical Observing Targets
Geminorum
A Clone of Albireo
Beta Monocerotis: A True Triple
O'Neill's Bridge
Orbiting the planet in Low Earth Orbit (LEO) every 90 minutes, many people fail to realize that you can see the International Space Station (ISS) from most of the planet on a near-weekly basis. In fact, the ISS has been known to make up to four visible passes over the same location in one night. The image pictured is from the Fourth of July, 2011 and is a 20 second exposure of a bright ISS pass.
Next to the Sun, the two brightest objects in the sky are the Moon and the planet Venus. In fact, when Venus is favorably placed next to the Moon, it might just be possible to spot the two in the daytime. Another intriguing effect known as earthshine or ashen light is also seen in the image on the night side of the Moon; this is caused by sunlight reflected back off of the Earth towards our only satellite.
A mosaic of three images taken during the total lunar eclipse of December 21st, 2010. The eclipse occurred the same day as the winter solstice. The curve and size of the Earth's shadow is apparent in the image.
Science Fiction Reviews
Solis, by A. A. Antanasio
Diving Into the Wreck
The Quiet War
1984, by George Orwell
Copyright © 2020 · Education Theme on Genesis Framework · WordPress · Log in


text:
Alain Simard peut désigner :
 Alain Simard (né en 1964), un réalisateur de télévision, musicien, chanteur et compositeur québécois ;
 Alain Simard (né en 1950), un homme d'affaires québécois.

redpajama_set_name: RedPajamaWikipedia


Calvin Klein Underwear 3 Pack Trunk Boxer Shorts in White, Grey And Black, Three pairs of classic Calvin Klein cotton stretch trunks in white, grey heather and black with an elasticated waistband in white featuring the signature Calvin Klein logo woven in black. 95% Cotton And 5% Elastane. Brand New Collection Of Calvin Klein Boxers, Trunks and Underwear Live.
Rated 4.7/5 based on 9 Customer Review(s).


Upon clearing Customs and Immigration, you are met by our guide . Your guide will present you with a welcome packet including all necessary documentation and vouchers and all contact information of your guide and local offices.
Yangon lies in the fertile delta of southern Myanmar, on the wide Yangon River. The city is filled with tree-shaded boulevards, while shimmering stupas float above the treetops. The city became the capital only in 1885, when the British completed the conquest of Upper Myanmar and Mandalay's brief period as capital of the last Burmese kingdom ended.
Start the day in the heart of Yangon which features an interesting selection of monuments and colonial buildings. Among others, you will see the Independent Monument, the High Court, the City Hall and the Sule Pagoda. Afterwards, visit the National Museum (closed on Mondays and Public Holidays) to gain an insight into Myanmar. See the eight metre high Sihasana Lion Throne, used by the last Burmese king, and other fascinating artefacts from Burmese history and culture. Enjoy a break at Bogyoke (Scott) Market, a pleasant covered market containing crafts from all corners of Myanmar, gems, fabrics and more. (The market is closed on Mondays and public holidays).
In the afternoon, visit some of the more well-known pagodas, including Botataung Pagoda, named after the 1000 military leaders who escorted relics of the Buddha from India over 2000 years ago. Visit Chaukhtatgyi Pagoda, a reclining Buddha that is almost as large as the enormous figure of Shwethalyaung Buddha in Bago. It's housed in a large metal-roofed shed on Shwegondaing Lan, only a short distance north-east beyond the Shwedagon Paya. Finally, continue to the Shwedagon Pagoda, the highlight of any visit to Yangon. Towering over the city, this pagoda is the most sacred spot in the country, built to house eight hair relics of the Buddha. The Shwedagon and surrounding shrines are at their most beautiful during the sunset hour, as the golden stupa reflects the changing colours of twilight.
Full day at leisure . You may go shopping or explore the city on your own pace.
Check out hotel and transfer to airport.


Designed to complement the GIGA X3 and the rest Of the JURA Professional line of coffee machines.
The generously sized milk container can be filled with up to four litres of milk. A powerful compressor unit ensures the milk is kept cool to the optimum temperature of 4°C.
The fridge also has a cup warmer section on the top of the machine, a drawer at the base for condiments and stirrers and options for left and right entry for the milk pipe.


text:
Home Recent News To Compete, Video Conferencing Company LifeSize Gets on the SaaS Bandwagon
To Compete, Video Conferencing Company LifeSize Gets on the SaaS Bandwagon
By Ethan J. -
How many times in life do you get to genuinely start over? How many companies can you name that have moved from success to failure and back?
Apple famously rose again after its near-death experience in the 90s, and that probably represents the gold standard for the phoenix from the ashes trick. But there aren't many that belong on the list with the inventor of the iPhone.
But former video conferencing golden child LifeSize is trying to walk in Apple's shoes. Once valued at $400 million, the former hardware company had to watch in horror as the video calling world beneath it shifted to the cloud and left them at risk of becoming obsolete.
Now it's adopting an if-you-can't-beat-'em-join-'em philosophy and mounting a comeback as a Software as a Service cloud computing company.
But it's a very crowded market LifeSize is trying to win over. For a second time.
Video Conferencing Pioneers
Foreshadowing of LifeSize's near demise can be seen in the first press clippings that announced its acquisition by Logitech in 2009–as an aside, the two have subsequently split.
"The endpoints can be added as soon as I can get a tech on site." That's a quote from a testimonial lauding LifeSize's in-room video conferencing solutions. Seven years later, those words seem terribly old-fashioned.
LifeSize suffered because it got trapped in the corporate data center with its on-site techs, while the rest of the market cut the strings and moved to the cloud.
Sure, there's still plenty of quality VC hardware and conference room equipment out there that needs a little advanced IT knowledge. However, when Logitech themselves are producing easy to use business video conferencing systems like the Connect and the recently unveiled Skype for Business room systems, the suggestion of waiting for the tech to arrive is marketing madness.
Today, speed and ease of installation, and versatile, scalable potential is all the rage.
Cloud computing has made VC affordable and nimble, and opened up video calling to a greater range of business types and sizes.
Known as Software as a Service (SaaS), it is currently the fastest growing way to do business.
Software As a Video Calling Service
Leading industry researcher Gartner is glowing in its praise of SaaS, and predicts the continued move toward the cloud will affect $1 trillion in IT spending over the next five years.
To paraphrase Gartner's own definition, SaaS is software managed and delivered remotely by one company to many companies, on a pay-per-use or subscription basis.
Any video calling platform you use in your personal life is going to be arranged this way, without the need to install additional hardware, although the social calling world tends to go for quantity and a freemium model where you get basic access for free (Skype) but pay for extra features (Skype for Business).
At an enterprise level though, quality and scalability are far more important. You need to supply a service that can provide a professional level of stability and clarity, while being limber enough to cater for 1-on-1 calls, small huddle rooms, and large corporate events.
LifeSize originally built its value on the back of an innovative way of delivering HD-quality visuals that took up a tiny amount of internet bandwidth. The hopes for their comeback depend on harnessing that same quality, and pairing it with ease of use and versatility.
Video Calling from the Crowded Cloud
By LifeSize's own admission it is chasing down some big names who have quite a head start in the cloud calling game. Cisco, Citrix, and BlueJeans lead the pack now, and there's little LifeSize is currently boasting about that those guys don't already possess.
Mobile and browser compatible, able to link 50 video callers, call recording, click to link, and remote calling are all covered. And Cisco also makes cameras and audio to match LifeSize's initial expertise.
There's probably enough growth left in the VC market that simply being competitive is all LifeSize needs to thrive. But it doesn't seem like there's enough differentiation in the current product to see it overtake the industry leaders any time soon.
After reducing staff by more than half, and expenditure by almost two-thirds, the company is at least now built in the image of the sleek SaaS crowd. And it is starting to crow about the trajectory of its new platform.
It has a lot of ground to make up, but who doesn't like a top-dog-turned-underdog getting back into the fight?
Previous articleThe Golden State Warriors Are Leading the Charge to Use Video Conferencing to Engage Sports Fans
Next articleGoogle Hangouts' Active Speaker Tech for iPhone Works, But Barely Improves a Clunky Experience
Ethan J.
For Ethan, technology is never just an abstraction. It has an impact on people's lives, whether it is to help make prison reform possible or to connect loved ones split by war. And, just as often, it's about showing videos of dogs setting world records in surfing. If there is tech in the news, Ethan is there.
Tumblr's App Cabana Offers Video Chat and Shared Streaming As It Seeks Social Media Status
Recent News Ethan J. - May 16, 2017
Video Conferencing Equipment in the Classroom Helps Online Students Break Down Cultural Barriers
Accenture's Shiny New Digital Office Is Practical, But Lacks Vision
Video Conferencing Is Poised to Kill Email, Freeing Employees to Focus Better and Get...
Sophia D. - June 28, 2016
Virtual Classroom Management Can Maximize Learning
Is Amazon Launching Its Own Video Conferencing Platform, and What Could It Look Like?
The Future of Video Conferencing: VC Daily Interviews Venture Capitalist Josh Breinlinger
Why a Mitel Avaya Merger Would Improve the Unified Communications-as-a-Service Market
Will Zoom Go Public and Become a Real Tech Unicorn?
Logitech and Blue Microphones Merge to Boost their Live Streaming Microphone Market
Affordable Webcam Options Like the Logitech Brio May Help Facial Recognition Logins Go Mainstream
Tumblr's App Cabana Offers Video Chat and Shared Streaming As It...
Ethan J. - May 16, 2017


text:
Iowa Energy announce coaching update
April 11, 20162:57 PM CDT
The Iowa Energy announced that Head Coach Bob Donewald, Jr. will not be returning next season.
"We want to thank Bob for his contributions to the Iowa Energy and Memphis Grizzlies over the past two seasons. Bob was a major part of the development of our players during his tenure and wish him the best as he moves on to new opportunities in the professional basketball world," said Energy General Manager & Grizzlies Director of Basketball Operations Chris Makris.
Donewald compiled a 52-48 record with the Energy, including a 26-24 record during the 2015-16 season. During Donewald's tenure, six different Energy players earned nine Call-Ups to the NBA, along with the Grizzlies assigning five players to develop with the Energy.
A search for the next head coach of the Energy will begin immediately.
Fans who want to support the Memphis Grizzlies and guarantee their 2016 NBA Playoff tickets with 2016-17 Season Tickets can do so by calling (901) 888-HOOP or going online to grizzlies.com. For more information on the Grizzlies, visit grizzlies.com, 'like' Memphis Grizzlies on Facebook or follow on Twitter (@memgrizz).
Iowa Energy


text:
Constructing a Pseudo-Free Family of Finite Computational Groups under the General Integer Factoring Intractability Assumption
Revision #5 Authors: Mikhail Anokhin
Loosely speaking, a family of computational groups is a family of groups $(G_d)_{d\in D}$ (where $D\subseteq\{0,1\}^*$) whose elements are represented by bit strings in such a way that equality testing, multiplication, inversion, computing the identity element, and sampling random elements in $G_d$ can be performed efficiently when $d$ is given. A family of computational groups $(G_d)_{d\in D}$ is called pseudo-free if, given a random index $d$ (for an arbitrary value of the security parameter) and random elements $f_1,\dots,f_m\in G_d$, it is computationally hard to find a system of group equations $v_i(a_1,\dots,a_m;x_1,\dots,x_l)=w_i(a_1,\dots,a_m;x_1,\dots,x_l)$, $i=1,\dots,s$, and elements $g_1,\dots,g_l\in G_d$ such that this system of equations is unsatisfiable in the free group freely generated by $a_1,\dots,a_m$ (over variables $x_1,\dots,x_l$), but $v_i(f_1,\dots,f_m;g_1,\dots,g_l) =w_i(f_1,\dots,f_m;g_1,\dots,g_l)$ in $G_d$ for all $i\in\{1,\dots,s\}$.
In this paper, we construct a provably pseudo-free family of finite computational groups $(G_d)_{d\in D}$ under the general integer factoring intractability assumption. This family has exponential size, i.e., $|G_d|\le2^{\mathop{\mathrm{poly}}(|d|)}$ for all $d\in D$. But each element of $G_d$ (for any $d\in D$) is represented by infinitely many bit strings.
We provide a correct version of Remark 3.5 and fix a typo in Remark 4.4.
Revision #4 to TR12-114 | 21st March 2015 18:16
Accepted on: 21st March 2015 18:16
computational group, general integer factoring intractability assumption, pseudo-free family of finite computational groups, variety of groups
We replaced the term "pseudo-random" by "pseudo-free" in the introduction and extended the abstract in the HTML representation (but not in the paper).
Revision #3 to TR12-114 | 22nd May 2013 15:37
Accepted on: 22nd May 2013 15:37
We construct a provably pseudo-free family of finite computational groups under the general integer factoring intractability assumption. This family has exponential size. But each element of a group in our pseudo-free family is represented by infinitely many bit strings.
1. We added a reference to the journal version of the paper.
2. The numbering of theorem-like structures was done as in the journal version of the paper (for convenience of citation).
3. Some other minor changes were made.
Revision #2 to TR12-114 | 18th October 2012 12:32
Accepted on: 18th October 2012 12:32
A grammatical error in the abstract was corrected.
We construct a provably pseudo-free family of finite computational groups under the general integer factoring intractability assumption. This family has exponential size. But each element of a group in our pseudo-free family is represented by many bit strings.
We provide additional comments on some issues. Also, some minor changes were made.
TR12-114 | 15th July 2012 17:36
TR12-114 Authors: Mikhail Anokhin
Publication: 7th September 2012 14:01
We construct a provably pseudo-free family of finite computational groups under the general integer factoring intractability assumption. Moreover, this family has exponential size. But each element of a group in our pseudo-free family is represented by many bit strings.