Options for plots are specified as JavaScript dictionaries. Common default options are
color | rgb(0,127,255) - rich azure blue |
opacity | 1 |
Colors are specified using standard HTML color code strings. Predefined colormaps are also available.
Objects composed of lines have an additional option of thickness
that defaults to 1.5 in two dimensions. Due to limitations of WebGL, in three dimensions it renders as 1 on most platforms regardless of the setting.
plot( f, range, options ) — plot of a function over a range given as an array [begin,end]
or [begin,end,points]
polarPlot( f, range, options ) — polar plot of a function over an angular range given as an array [begin,end]
or [begin,end,points]
listPlot( points, options ) — plot of an array of points
listPlot( points1, points2, …, options ) — plot of an arbitrary number of equally sized arrays of points combined additively in the last coordinate
parametric( vector, xRange, options ) — line plot of a vector function of one variable over a range given as an array [begin,end]
or [begin,end,points]
parametric( f, xRange, options ) — line plot of a function of one variable. Less flexible than an explicit vector function but available as a convenience.
parametric( vector, xRange, yRange, options ) — surface plot of a vector function of two variables over ranges given as arrays [begin,end]
or [begin,end,points]
. An option of colormap
allows a function that specifies RGB colors in the range 0 to 1.
For visualizing complex surfaces, an option ofcomplexFunction
can be set to 're', 'im' or 'abs' to display the real part, imaginary part or absoluate value of a function returned as the object{ re: re, im: im }
. Setting thecolormap
to the string 'complexArgument' rather than a function will then color the surface accordingly without significant computational overhead.
Setting maxFaceSlope
to a positive number will omit faces with greater slope, thereby removing artifacts resulting from branch cuts.
parametric( f, xRange, yRange, options ) — surface plot of a function of two variables. Less flexible than an explicit vector function but available as a convenience.
wireframe( vector, xRange, yRange, options ) — wireframe plot of a vector function of two variables over ranges given as arrays [begin,end]
or [begin,end,points]
wireframe( f, xRange, yRange, options ) — wireframe plot of a function of two variables. Less flexible than an explicit vector function but available as a convenience.
surfaceFromLines( lines, options ) — surface plot of an array of arrays of data points on individual lines, as for example from numerical integration of a differential equation for consecutive initial conditions
diskFromLines( lines, options ) — surface plot of an array of arrays of data points on individual lines, all starting from the same initial point
slopeField( f, xRange, yRange, options ) — slope field of a function of two variables over ranges given as arrays [begin,end]
or [begin,end,points]
slopeField( [ f, g ], xRange, yRange, zRange, options ) — slope field of a two-dimensional vector function of three variables over ranges given as arrays [begin,end]
or [begin,end,points]
isoline( f, xRange, yRange, options ) — implicit line plot of a function of two variables over ranges given as arrays [begin,end]
or [begin,end,points]
isoband( f, xRange, yRange, options ) — implicit filled contour plot of a function of two variables over ranges given as arrays [begin,end]
or [begin,end,points]
isosurface( f, xRange, yRange, zRange, options ) — implicit surface plot of a function of three variables over ranges given as arrays [begin,end]
or [begin,end,points]


As a redheaded, left-handed Scorpio, I was destined to do things differently. I started my career in print publishing, but once I learned HTML, the immediate gratification of making a correction and seeing it online in seconds was much better than waiting for books to come back from the printer.
I wish I would've done something like boot camp 10 years ago, because I'm really enjoying it. I'm eager to learn the skills that will enable me to shift from the marketing side of digital to the IT side. I think it'll still come in handy to understand SEO, cross-channel campaigns, etc. Even if you aren't actively using a language or skill, it's still helpful to understand the lexicon and the synergies between technologies.
When I'm not learning code I'm usually at a concert, because I love live music. The next show I have tickets for is a first-time festival called Homecoming in Cincinnati that's being put on by my favorite band, The National. With a lineup that includes:
It's going to be an amazing show! And if that's not enough, another band I love, The Decemberists, have a new album and tour coming in March. I've already got tickets to see them in May at The Uptown, which should be great too.


climate change Ntalale adaptation reported community food study institutions livestock people drought social {border-style participants rainfall dry government px;} #ffffff;} households Zimbabwe communities coping research impacts rural season political rains strategies Food NGOs floods cattle group handouts poor said years (Adger Change crops local national stakeholders water wetlands Adaptation FGD Figure Gwanda However, area development farmers like times vulnerability Climate Environmental data departments different experienced household important labour number past strategies. ward work Focus capacity change-related crop fields germination level livelihoods order periods px; rainy used {font-family FGDs agricultural droughts font-size good institutional key natural perceived ranked seed spells village Africa Ministry People Table Thus, Training adapt affected assisted children community. developing discussions double; global irrigation members networks training using (Mbereko African Department Development EMA Global Health Rural Social actors adaptive afford areas border-color border-width changing demonstrates district droughts, field health heatwaves high impact indicated interests interviews intra-seasonal knowledge need negatively organisations plant qualitative selected solid; stakeholder studies systems tolerant vulnerable {font-style {font-weight (Vervoort Adger Agricultural December District FIGURE Furthermore, Government Hand Heatwaves Irrigation M.J. Management Mbereko Mtambanengwe Research Scott Services South Zimbabwe. a). adopted assessment assistance benefit bold case climatic conditions conducted context countries courier; current deal demonstrated discussion economic em; environmental event experiences feed flooding followed frequent handouts. health. help helpful https://doi.org/./j.gloenvcha... human increased known land livelihoods. long money multiple phenomena phenomenon planting poorer problem projects provided pt;} recent rely replant resilience risk schemes schools scientific selling services stakeholder-driven strategy support understanding variability variation watering wealthier weeding years,


Home
About
About Ethics Bowl
About the Team
Ethical Inquiries
Ethical Inquiries
Featured Writers
Contact
Resources
Comments? Questions? Concerns?
We'd love to hear from you!


Kate Garraway's husband desperate to jet to I'm A Celeb after noticing heartbreaking sign
Derek Draper appeared on Good Morning Britain today with their two children Bill and Darcey as they spoke about Kate Garraway on I'm A Celeb
by Irishmirror.ieKate Garraway's husband Derek Draper has admitted that he was desperate to jet to I'm A Celebrity after noticing a heartbreaking moment that many may have missed.
Appearing on Good Morning Britain today with their two children Bill and Darcey, Derek said that he was incredibly proud of Kate.
After suggesting that she could win the show, he joked about Kate saying that she missed her children but hadn't said anything about him.
But Derek also said that Kate is struggling more than she had let on.
"The bit that I thought really upset for her was something people might not have noticed," he said. "There was some good news delivered about the food or wagon wheels.
"Everyone was jumping and hugging and she turned to hug someone but everyone was hugging someone. And I wanted to dive into the television and give her a big hug.
"So it is hard seeing her struggle with things but at the same time I know she likes a challenge."
Questioned about the rumours she has smuggled make-up in, Derek said: "I think it’s probably harder to smuggle gold out of Fort Knox than make-up into I’m A Celeb. For sure she’s not. But I said, she never looks better than first thing in the morning.”
He added: "We want her back but it is a bit tidier without her."
Asked whether she would wear a bikini in the jungle shower, he said: "She’s got some bikinis that cover her up a little bit. At the bottom of the case, she’s got a few skimpier ones.
"She said ‘I don’t think I’ll wear these’. I of course think she looks amazing and said, ‘Wear them if you want to’. We’ll see, we’ll see which bikini comes out."
*I'm A Celebrity airs tonight at 9pm on ITV


| About Dailyrotten |
|
Feedback
If you like this page, hate it, or would like to suggest changes,
<EMAIL_ADDRESS>is listening. This page
is experimental and somewhat different from what we usually offer, so please
do send your feedback.
Adding Stories
If you are a rotten newshound and you would like to suggest a story,
visit our submit page to
send us the URL. Stories that are accepted will have your name credited.
Viewership
On the first full day this page went live, 100,000 people visited this Rotten
News page. Of course that was the day after the WTC attacks, so that number is
somewhat distorted. Right now this page gets between 50,000 and 75,000 people
every day.
Linking
We encourage everyone to link to this page; if you like it, others probably
will as well.
Other Rotten
Rotten
Gaping Maw
Celebrity Morgue
Mugshots
Rotten Store
Shockumentary
Rate My Poo
Rate My Kitten
Rate My Finger
Penny Postcards
Phallic
Dr. Sputnik
Boners
Dead Pool
NNDB
Home
Make Dailyrotten your start page
|
|
|
September 06, 2003
Neat freak also world's worst corpse dumper
Cleveland Plain Dealer | Submitted by: The Knife
"Maintenance workers at Carver Park Estates watched in disbelief yesterday morning as a tenant dragged a naked and bloodied body from an apartment and laid it in the grass. The workers, standing just feet away, said the tenant looked at them, walked back into his apartment and returned seconds later with a mop. He cleaned up some blood left just outside his door, they said, then went inside again. 'He didn't care,' worker Willie Chaney said. 'He dragged the man outside in broad daylight.' ... [The suspect] had a reputation as a finicky tenant. He made regular requests for renovations, several said, and kept his apartment in pristine condition."
|
|
Read article...
|
|
Cows rescued from shit-filled barn
WKMG-TV 6 Orlando | Submitted by: Tim Howard
"About 30 cows had to be removed from a barn that authorities said was filled nearly floor to ceiling with manure. Marathon County sheriff's deputies and veterinarians spent Wednesday and Thursday at the site in the town of Holton. The sheriff's department began removing cattle from the barn Wednesday, digging through the manure looking for animals that were dead or alive, Capt. Randy Hillman said. One veterinarian found a steer on one end of the barn buried up to its head in cow manure, and it had to be euthanized, according to the sheriff department's report."
|
|
Read article...
|
|
Biosolids plant explodes in the Bronx
New York Post | Submitted by: SpecialK
"A huge silo filled with treated human feces for use as fertilizer exploded early yesterday, sending an unpleasant wave of burnt fecal odor into the Hunts Point section of The Bronx. Officials at the New York Organic Fertilizer Company said the silo, which held about 650 tons of dried fertilizer pellets, exploded at around 6:30 a.m. after a computer indicated one of the tanks was overheating. Workers rushed to empty the silo, but pellet dust ignited inside the tank, causing what witnesses described as a huge explosion."
|
|
Read article...
|
|
Soccer dad forcibly strips 11-year-old during practice
Anchorage Daily News | Submitted by: Buzz Beer
"A former state official and soccer dad has been charged with harassment and misdemeanor assault after he allegedly tackled, then pulled the shorts and underwear off an 11-year-boy at a soccer practice in Palmer in June. ... At first, Bailey said, he assumed it was a joke. But then he saw Weaver tackle the boy, strip off his clothes and throw them onto the grass a short distance away. The boy crawled over to retrieve his shorts and ran off into the woods using his clothes to cover himself, Bailey said. ... Weaver said in a telephone interview Thursday there was 'lots more' to tell about what happened but that he did not want to discuss it before his trial, scheduled for December. He said his actions were 'unusual in an unusual situation.'" [More on this story in three months.]
|
|
Read article...
|
|
Vet charged in mallet death of neighbor's dog
networks.org | Submitted by: Tim Howard
"A veterinarian accused of using a mallet to kill a miniature dachshund that had entered his yard has been charged with felony animal cruelty. Dr. Mircea Volosen, who was indicted Thursday, could receive up to two years in prison if convicted of killing his neighbor's pet. Police say the dog was killed July 4 after it entered Volosen's Fort Worth-area yard, where he keeps chickens and rabbits."
|
|
Read article...
|
|
Court allows prison lawsuit over porn
WRTV-TV 6 Indianapolis | Submitted by: Reid Fleming
"An inmate can pursue his legal challenge to a Department of Correction policy preventing him from ordering or receiving pornographic materials depicting sexual penetration, the Indiana Court of Appeals ruled Thursday. ... The lawsuit was filed by Jerry Montgomery, an inmate at the State Prison in Michigan City. He was convicted of murder in Lake County in 1986 and sentenced to 40 years. He said he was entitled to pornographic material based on a state law that says the DOC can inspect all printed matter and exclude any material that is contraband or prohibited property. 'However, in the case of a confined adult, the department may not exclude printed matter on the grounds that it is obscene or pornographic unless it is obscene under Indiana law,' the law says. Montgomery claims that under the statute, he is entitled to receive 'penetration pornographic material' that does not run afoul of Indiana obscenity laws."
|
|
Read article...
|
|
Why Amsterdam has world's coolest cops
Guardian | Submitted by: Aggers
"Being drunk on duty is one thing, but the Dutch government is concerned that too many of its police officers are getting stoned on and off duty... The government is under pressure to act after a television documentary revealed that senior officers in Amsterdam regularly used hard drugs and even dealt ecstasy and cocaine to colleagues. The investigation was launched after a detective saw a police brigadier popping ecstasy while on a stakeout. Witnesses described occasions when officers were so high on ecstasy that they could not even find Amsterdam's main shopping street, just two minutes away from the station."
|
|
Read article...
|
|
Father and son murder-suicide
Court TV | Submitted by: Tim Howard
"William Hoffine, 58, had been in deep debt and was enmeshed in a bitter custody battle with the boy's mother, who had obtained a court order to keep him away. 'For whatever reason, he decided he was going to kill himself and decided his son would be better off dead rather than live without him,' police Lt. Mike Hurley said. Hoffine stepped out from behind a parked van Thursday afternoon and fired several shots at the boy, then reloaded his pistol and fired into the fallen boy's head as his teammates scrambled for cover, witnesses and police said. Hoffine then drove to a friend's home and spent nearly 10 hours in on-and-off negotiations with police before shooting himself in the head early Friday."
|
|
Read article...
|
|
Cadet re-raped for reporting rape
AZ Central | Submitted by: Tim Howard
"The academy graduate, whose name was not released, said she was ostracized by cadets and raped at the Air Force Preparatory School by two male cadets because she reported she had been raped. Col. David Cannon, Air Force Academy spokesman, said a search of files Friday found no cases fitting the description in the letter. 'That's a very severe allegation,' Cannon said. 'We take it very seriously. We have no reason to doubt what is in that lady's letter. We just haven't found it yet.'"
|
|
Read article...
|
|
Lamo on the lam
Security Focus | Submitted by: Soylent
"FBI agents armed with a federal arrest warrant out of New York were searching for Adrian Lamo Thursday, SecurityFocus has confirmed. ... In a telephone interview Thursday, Lamo said he was in California, but did not plan to turn himself in until after conferring with the attorney. ... The 22-year-old Lamo has become famous for publicly exposing gaping security holes at large corporations, then voluntarily helping the companies fix the vulnerabilities he exploited -- sometimes visiting their offices or signing non-disclosure agreements in the process. ... In February, 2002, Lamo told the Times of their vulnerability through a SecurityFocus reporter. But this time, no one was grateful, and by May federal prosecutors in New York had begun an investigation. 'I think this is unsporting of the New York Times,' Lamo said Thursday." [Also note that a friend of Lamo's registered FreeAdrian.com over a year ago.]
|
|
Read article...
|
|
Why Fox News loves to talk about MEChA
Orange County Weekly | Submitted by: juanholmes
"As the recall nears, Republicans are whittling down their anti-Bustamante talking points: he's a Democrat, he's fat and mustachioed, and he was once a member of MEChA. ... Bustamante joined MEChA -- a Chicano college student organization notable for ethnic pride and activism -- while a student at Fresno State in the 1970s. Until now, such an association was an obsession only of fringe conservative groups. During the 1990s, they warned anyone who would listen that former MEChA members -- some of them, like Bustamante, now elected officials -- were 'rabid reconquistas' working to return California to Mexican rule by any means necessary. ... 'Politics is all about the code talk. Anti-MEChA statements are simple code for anti-Mexican sentiments by resentful whites.'"
|
|
Read article...
|
|
Man arrested for nude newspaper deliveries
KOCO-TV 5 Oklahoma City | Submitted by: dnooman
"The man, 59, was pulled over in his car for a broken tag light outside Norman resident Ruby Jo Leverich's home. 'I heard this policeman say, "Get out of the car," and apparently the man didn't obey him,' Leverich said. 'The officer then said, "I said: Will you please get out of the car?"' The man again refused, she said. When the officer approached the car, he noticed that the man didn't have any clothes on. ... 'He claimed to have engaged in this sort of behavior for the last three weeks, including taking newspapers up to people's doors in that condition.'"
|
|
Read article...
|
|
Man beaten with hammer, power drill
canada.com | Submitted by: Meghan
"An 18-year-old was hospitalized early Thursday after being repeatedly punched and struck with a hammer. His assailant also tried to bore into the youth's leg with a power drill, but was stymied when the tool wouldn't work. ... The assault began around midnight and continued for about 40 minutes in a home in the 3400-block of Maplewood Road, Horsley said. ... The youth managed to escape after the beating and sought help at a home across the street. ... Police said assailant and victim likely knew each other, and that the attack may have resulted from a dispute over money."
|
|
Read article...
|
|
Mother abandons 4 kids, again
KPRC-TV 2 Houston | Submitted by: Reid Fleming
"Police discovered a home in deplorable conditions and four children hungry, hot and scared after their mother left them in their southeast Houston home alone. ... The oldest child -- a 5-year-old girl -- was left to care for the three younger children, according to officials. ... 'The officers reported that the house was in complete filth. There were insects crawling all over the floor ... just a general mess,' Davis said. ... Davis said two of the children suffered numerous insect bites. A pack of uncooked hot dogs were on the bed, and a loaf of bread and a bottle of Coke were underneath the bed. Officials said there were bite marks on the plastic wrapper of the hot dogs."
|
|
Read article...
|
|
Cops tell victim twice to 'Come back later'
Sun | Submitted by: Tim Howard
"Cops ordered to book as many motorists as they can twice told a schoolgirl who had been attacked: 'Can you come back later?' The shocked 15-year-old fought off a man who tried to force her into his rusty white car. She fled home and her parents took her to a police station in Caernarfon, North Wales. As she told of her nightmare ordeal an officer said: 'We're very busy. Can you come back later?' She and her stunned parents returned after an hour but were sent away again."
|
|
Read article...
|
|
Trial begins for gay Marine
networks.org | Submitted by: Tim Howard
"The jury of one officer and three enlisted personnel will decide whether Funk is guilty of 'shirking important duty,' a charge that could lead to a year in prison.  In opening arguments Friday, defense attorney Stephen Collier said Funk's research and his attorney at the time led him to believe he would be removed from his unit when he declared himself a conscientious objector. But Marine prosecutor Maj. Mike Sayegh said that when Funk was contacted four days before a Feb. 13 deployment, he gave no indication that he was not going to show up. When he did arrive, it was with reporters and supporters in tow, Sayegh said."
 Magele and Shapiro agreed with prosecutor Natasha Veldsmann that it was 'disgusting' for a man to use such language towards a 'decent' woman. Roelofse was found guilty of crimen injuria [criminal insult]. Matschke told the court the incident left her feeling disgusted and humiliated, as though she had been undressed and raped. 'I was horribly shocked and flabbergasted, as I didn't know him from a bar of soap.'"
|
|
Read article...
|
|
Sisters share razor, AIDS virus
BBC | Submitted by: Mean Gene
"HIV may have been passed between two sisters who shared a razor to shave their legs, scientists said today. The report, in the journal Aids, is described as a 'sobering' reminder that the disease can be spread in unusual ways. In this case, an 18-year-old girl from Australia caught the disease on the first occasion she had sex. Her 16-year-old sister later tested positive for the virus when she donated blood."
|
|
Read article...
|
|
Ex-cop brandishes rifle at garbagemen
Houston Chronicle | Submitted by: Buzz Beer
"A former Precinct 3 deputy constable was convicted Thursday of trying to intimidate three garbage collectors by brandishing his semiautomatic rifle in front of them after their truck had blocked his way home. ... Prosecutor Ed Porter told the six jurors that Pascual became enraged at Harris County garbage collectors whose truck blocked the path to his Channelview home in the 1100 block of Heathfield. Porter said Pascual got out of his car and yelled at the men, flashing his badge and saying, 'I am the law.' When they arrived at Pascual's home moments later to pick up trash, Pascual came out to his driveway and loaded his semiautomatic AR-15 in the workers' view, Porter said."
|
|
Read article...
|
|
Man in bank strips naked, falls asleep
St. Petersburg Times | Submitted by: Reid Fleming
"According to Largo police, Whitney entered the bank about 3:15 p.m. and went to the men's restroom. While inside, he removed his pants, underwear and socks. He then walked out of the restroom and into the lobby, where he stood in front of a wall and exposed himself to everyone in the bank, arrest reports state. Whitney then went into a private kitchen area and lay on a couch, where he passed out naked, police said. When police tried to awake him, Whitney said: 'This is the bar.
|
|
Read article...
|
|
City burns condemned mobile home
Caper Star-Tribune | Submitted by: Reid Fleming
"The trailer home formerly at 69 Copper Avenue was primed with 30 gallons of a gasoline/diesel mixture, so when firefighters cracked open two flares and tossed them in the windows the explosion of flames was instantaneous. The smoke detectors in the home went crazy but were silent within seconds, overwhelmed by the heat. ... The burning was the culmination of a month-and-a-half-long effort by Evansville, Natrona County and Health Department authorities to destroy the trailer. Funeral home workers first discovered the garbage, rodents and fecal waste in the home when they went to fetch the body of Judith Kasola, 38, who died July 14. ... Town Public Works Coordinator Ron Reed said burning the trailer did not pose a significant health hazard, aside from the flaming can of Spaghetti-O's that was ejected 75 feet from the trailer."
|
|
Read article...
|
|
|
|
|


Best Fire Tablet
Best Kindle Fire Tablet in 2019
by Jeramy JohnsonBest Kindle Fire Tablet Android Central 2019
When the original Kindle Fire was released way back in 2011, many thought Amazon was onto something with a low-cost, easy-to-use tablet experience. You know what? They were right! Today there are no fewer than six Fire tablet devices on offer from Amazon, if you count the Kids Editions. Out of them all, we think the Fire HD 8 hits that sweet spot of price, performance, and portability.
- Best Overall: Fire HD 8 Tablet
- Best Value: Fire 7 Tablet
- Best for Entertainment: Fire HD 10 Tablet
- Best for Kids: Fire HD 8 Kids Edition Tablet
Best Overall: Fire HD 8 Tablet
The Fire HD 8 sits in-between the Fire 7 and Fire HD 10 in more ways than one. It's roughly in the middle of the two sizes, of course, but it's also priced in the middle. Those two data points alone justify the Fire HD 8 as our pick for the Fire tablet to get, but let's explore a little bit more about what makes this device special.
For starters, it's the lowest-priced Fire device you can get with an HD screen at 1280x800. The base model comes with only 16GB of storage, but you can easily and cheaply add to that with a microSD card and expand up to 400GB to take all of your content with you. With up to 10 hours of battery life, you'll have plenty of juice to watch several movies or play games on the go. The device features Dolby Atmos in its dual stereo speakers, and also comes with a headphone jack so that you can enjoy your music or videos. You won't get access to Google apps, but the Amazon app store has better offerings than it used to.
Our favorite feature here is its hands-free Alexa. You can simply call out to Alexa to ask questions or give commands. On that note, not only is this device great as an entertainment portal, but it can also serve as a smart home hub. You can use the touchscreen or Alexa to control your lights and thermostat, show you who's at the front door through your Ring camera, or video chat with friends and family through its 720p HD video camera. You also get two 2-megapixel cameras — one on the front and one on the back.
Even though the Fire HD 10 has a bigger screen with a higher ppi (pixels per inch) resolution, we think the Fire HD 8 has all you need for a fantastic entertainment experience. Plus, it's priced at nearly half the price of the larger Fire, so you could almost get two of these for the price of one Fire HD 10!
Pros:
- HD display
- Expandable storage
- Dual stereo speakers
- Hands-free Alexa
- 10 hours of battery
Cons:
- Limited initial storage options
- Google apps not included
Best Overall
Fire HD 8 Tablet
The Goldilocks tablet
The Fire HD 8 makes the right tradeoffs in screen, storage, and price to earn our recommendation as the Amazon Fire tablet to get.
Best Value: Fire 7 Tablet
Every excellent product line has its entry point, and for the Fire tablets, that's the Fire 7. Newly updated in late 2019, this latest version is the perfect portable companion for anyone who just wants a low-cost tablet to watch their favorite shows on, play games, read their favorite new Kindle book, or maybe occasionally surf the web or check Facebook. As with the other Fire tablets, this device comes with 2-megapixel front and rear cameras and a 720p HD video camera, so you can still snap some decent shots and video chat to your heart's content.
If you wanted to get an affordable family tablet to share with your kids, this is a great option. With the savings you'll get on this device, you can easily afford to pick up a protective case (maybe one that isn't neon pink or yellow!). You can also add FreeTime Unlimited to this or any other Fire tablet whenever you want.
You can still access all of your favorite content from Amazon and other services through this device, and even though it's not HD resolution, the screen looks good enough for most use cases. The battery life is decent, and you can add to its internal storage with a microSD card. The Fire 7 is already cheap, but you can often find it on special for even less, making this practically an impulse buy.
Pros:
- Lowest point of entry into Fire ecosystem
- Expandable microSD storage
- Easy hands-free Alexa
Cons:
- Not HD resolution
- Lower-quality mono speaker
- No protective case included
Best Value
Fire 7 Tablet
The most affordable Fire tablet
With hands-free Alexa, multiple fun colors, and access to tons of great content, the Fire 7 Tablet is a fun gadget to have around for all ages.
Best for Entertainment: Fire HD 10 Tablet
If you want the most immersive video and gaming experience on a Fire tablet, then you want a Fire HD 10. We know it's the most expensive Fire, but you know what? It's still pretty darn affordable! Just try finding another Android tablet or iPad of this size at anywhere close to this price.
The newly-updated Fire HD 10 is the only Amazon tablet with a full HD 1080p display, coming in at 1920x1200 resolution. It offers up to 12 hours of battery life, including video watching, web browsing, and music listening, and it comes with Dolby Atmos, dual stereo speakers, and a headphone jack. It features a VGA front-facing camera with 720p HD video recording and has the same 2-megapixel cameras as on the HD 8.
As its size would suggest, the Fire HD 10 comes with more storage (up to 64GB) that is expandable up to 512GB, and it has the best processor of the Fire tablet line. You can use that storage and processing speed to watch hours of Prime Video, Netflix, or Showtime, and playing mobile games on that full HD screen is a delight.
Even though it may seem a bit heavy for some at just over a pound (17.8 oz), we find it to be a fantastic device for reading books, newspapers, magazines, or even websites — particularly if you need or want to enable a larger font. There is just so much more screen space to view your content on!
Pros:
- Full HD display
- Biggest screen for best viewing experience
- Dolby Atmos and dual stereo speakers
- More storage than competitors
- 12 hours of battery
Cons:
- Cameras are still pretty low resolution for a "high-end" device
- Highest priced Fire tablet, non-Kids Edition
Best for Entertainment
Fire HD 10 Tablet
Full on fire
The Fire HD 10 is the perfect entertainment device. With its full HD screen and Dolby Atmos stereo speakers, it's like a little TV in your hands!
Best for Kids: Fire HD 8 Kids Edition Tablet
Some may take objection to this pick based on the price alone. You see, the Fire HD 8 Kids Edition is significantly more expensive than the Fire HD 8 tablet even though they are essentially the same device. So why is this so? It's really about all of the extras, which adds up to a good value.
Amazon's Kids Edition Fire tablets all come with a kid-proof case to protect the devices from inevitable accidents, and in the case (pun intended) of the Fire HD 8 Kids Edition, you can get them in blue, pink, or yellow. In addition to the case, Amazon throws in a two-year worry-free guarantee, so you can send the device back at any time if it gets damaged, and Amazon will send you a new one.
Just as important as physical device security is digital peace of mind. The Fire HD 8 Kids Edition comes with parental controls that allow you as the parent to decide what your child can and cannot do on-device. For example, it is easy to set screen time limits, curfews, or limit content. Alexa and in-app purchasing are disabled by default. The device also comes with one year of FreeTime Unlimited, which gives you access to 20,000 apps, books, videos, games, audiobooks, as well as educational content from PBS Kids, Nickelodeon, Disney, and more.
Back to the specs, this tablet features 32GB of storage, with the option to expand up to 512GB via the microSD card slot. Of course, you also get unlimited cloud storage for any content purchased through Amazon. The device can get up to 10 hours of battery life depending on usage, and it features dual stereo speakers and, blissfully, a headphone jack. There is also 2-megapixel front and rear-facing cameras and a 720p video camera for those times when you want to have the kids chat with the grandparents.
Pros:
- HD Display
- Expandable storage
- One year of Amazon FreeTime Unlimited included
- Two-year warranty included
- Kid-proof case included
Cons:
- No built-in stand with case
- Limited internal storage
- Significantly more expensive than "regular" Fire HD 8 Tablet
Best for Kids
Fire HD 8 Kids Edition Tablet
Great display with tons of kid-friendly features
Get this one if you have young kids and want to monitor their screen time and usage easily. Also, the included case and warranty will protect the device!
Bottom line
The lineup of Amazon Fire tablets has never been so complete, and we can understand why these devices are so popular. They offer a great entertainment experience with industry-leading parental controls and child content options, as well as and access to Alexa and Amazon's connected home ecosystem, at a fantastic value. Aside from the iPad, no other tablet series can compete!
When looking at the Fire tablets, we feel that the Fire HD 8 is the best choice for most people. It's not too big, not too small, and features an HD screen, expandable storage, and hands-free Alexa. At that price, you can feel comfortable picking one or two up without much thought, and you can easily share it with your family members if you choose.
Credits — The team that worked on this guide
Jeramy Johnson is proud to help to Keep Austin Weird and loves hiking in the hill country of central Texas with a breakfast taco in each hand. When he's not writing about Amazon products and services, he's defending his relationship with his side-chick Alexa to his family. You can follow him on Twitter at @jeramyutgw
We may earn a commission for purchases using our links. Learn more.


About
This website is part of the course websoft DA377B @ HKR
Provide some insights on the course this far or exaplin a bit more about this website?
This course has so far gone through basic git commands, publishing a website to github pages and forking the original repo and adding a stream to update original content as well as working with a local working directory. Further more we've gone over some basic css and resources for aquiring further skills in web developement.
This site will be used throughout the course to publish aquried knowledge as well as submitting assignments and other stuff.


lib\BrowserID\web_token.php
- author
- Benjamin Krämer<EMAIL_ADDRESS>- copyright
- Alien-Scripts.de Benjamin Krämer
- license
- http://www.opensource.org/licenses/mit-license.html MIT License
- package
- BrowserID
- subpackage
- WebToken
- Classes
- WebToken
- MalformedWebTokenException
Description
JSON Web Token implementation
Implementation of the JWT protocol based on: http://self-issued.info/docs/draft-jones-json-web-token-01.html
This code is also based on the scripts found at jwcryptos's github repository: https://github.com/mozilla/jwcrypto/blob/master/lib/jwcrypto.js
LICENSE: Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\MalformedWebTokenException
- Extends from
- \Exception
- author
- Benjamin Krämer<EMAIL_ADDRESS>- package
- BrowserID
- subpackage
- WebToken
- version
- 1.0.0
- Methods
- __construct
Description
Malformed webtoken
The webtoken is not well-formed
Methods
\WebToken
- author
- Benjamin Krämer<EMAIL_ADDRESS>- package
- BrowserID
- subpackage
- WebToken
- version
- 1.0.0
- Properties
- $cryptoSegment
- $headerSegment
- $payloadSegment
- Methods
- __construct
- getCryptoSegment
- getHeader
- getHeaderSegment
- getPayload
- getPayloadSegment
- getSignature
- parse
- serialize
- verify
Description
JSON Web Token implementation
Implementation of the JWT protocol based on: http://self-issued.info/docs/draft-jones-json-web-token-01.html
Properties
$cryptoSegment
string $cryptoSegment = ''
The signature generated from the payload using the algorithm given in the header
Details
- string
The signature - visibility
- private
- default
- final
- false
- static
- false
- access
- private
$headerSegment
array $headerSegment = ''
The header segment of the web token on parsing
Details
- array
A list of header entries (like the algorithm) - visibility
- private
- default
- final
- false
- static
- false
- access
- private
$payloadSegment
string $payloadSegment = ''
The payload that was signed
Details
- string
The data - visibility
- private
- default
- final
- false
- static
- false
- access
- private
Methods
__construct
__construct(
string $object
)
:
Constructor
Arguments
- $object
- string
The data to be signed
Details
- visibility
- public
- final
- false
- static
- false
- access
- public
getCryptoSegment
getCryptoSegment(
)
:
string
Crypto segment
Returns the serialized crypto segment of the token.
Output
- string
Details
- visibility
- public
- final
- false
- static
- false
- access
- public
getHeader
getHeader(
)
:
object
Header data
Returns the data of the token header, normally containing the algorithm used.
Output
- object
- An object of header data
Details
- visibility
- public
- final
- false
- static
- false
- access
- public
getHeaderSegment
getHeaderSegment(
)
:
string
Header segment
Returns the serialized header segment of the token.
Output
- string
Details
- visibility
- public
- final
- false
- static
- false
- access
- public
getPayload
getPayload(
)
:
object
Payload data
Returns the payload of the token that was to be serialized and signed.
Output
- object
- An object of payload data
Details
- visibility
- public
- final
- false
- static
- false
getPayloadSegment
getPayloadSegment(
)
:
string
Payload segment
Returns the serialized payload segment of the token.
Output
- string
Details
- visibility
- public
- final
- false
- static
- false
- access
- public
getSignature
getSignature(
)
:
string
Signature
Returns the signature of the token as binary data.
Output
- string
- The signature as binary data
Details
- visibility
- public
- final
- false
- static
- false
parse
parse(
string $input
)
:
\WebToken
Parse serialized JWT data
Generate a Webtoken object for parsing JWT data.
Arguments
- $input
- string
The JSON Web Token
Output
- \WebToken
- A Webtoken instance for verification
Details
- visibility
- public
- final
- false
- static
- true
- access
- public
- static
serialize
serialize(
string $key
)
:
string
Serialize web token
Serializes data as JWT using the defined algorithm and data and signed with the key.
Arguments
- $key
- string
The key used for hashing
Output
- string
- Serialized web token
Details
- visibility
- public
- final
- false
- static
- false
- access
- public
verify
verify(
\AbstractPublicKey $key
)
:
bool
Verify web token
Verifies a Webtoken against an public key.
Arguments
- $key
- \AbstractPublicKey
The key used to verify the webtoken
Output
- bool
- true, if the webtoken is valid
Details
- visibility
- public
- final
- false
- static
- false


rubigen
Ruby Generator Framework
What
A framework to allow Ruby applications to generate file/folder stubs (like the rails
command does for Ruby on Rails, and the ‘script/generate’ command within a Rails application during development).
The RubyConf 2007 presentation is now online together with the theme from the A-Team.
Background
RubiGen is originally extracted from Ruby on Rails (specifically the rails_generator from its railties gem).
The rails_generator was hardcoded with Rails-specific dependencies (RAILS_ROOT
), Rails generators (‘app’ = Rails application; ‘model’ = Rails model+tests+migration), and generally assumed it was the only generator framework within the Ruby world (it was). So, any RubyGem whose name ended with ‘_generator’ was assumed to be a generator for a Rails application.
But if you are developing a Merb application, then you may want a different set of generators.
If you are developing a RubyGem, then you will want a different set of generators.
RubiGen exists to give different development environments their own generator framework.
Installing
RubiGen is only required at development time, and normally isn’t required at deployment time (unless your application uses it to generate files etc for its users).
On your development machine:
sudo gem install rubigen
Usage
RubiGen will be normally integrated into another RubyGem, such as newgem
or merb
or camping
, rather than be used on its own.
These frameworks might use RubiGen for two reasons:
- To generate an initial stub for developers, e.g.
rails
generated a stub to write a Rails application.newgem
generates a stub to write a RubyGem.
BTW – RubiGen has a builtin applicationruby_app
which generates a bare-bones Ruby application stub (lib, test, and script folders, plus a Rakefile, and a script/generate script) - To generate components within their development areas, e.g. Rails had its
script/generate
script within each Rails application, which hooked back into the rails_generator to lookup and execute generators.
So, there are two steps to integrating RubiGen into your framework:
- Use it to generate an initial stub for the developers of your framework. This would create the folders
(lib/app
,test
,script
,doc
,log
, etc) and starting files (Rakefile
,
README.txt
,test/test_helper.rb
etc). Importantly, it would generate ascript/generate
file.
Thescript/generate
file (example below) will allow developers of your framework to
generate components/extensions within the framework.
RubiGen allows you to restrict which generators are available. For example, within
RubyGem development environment (as generated bynewgem
), thescript/generator
only showsrubygem
-related generators. Merb could restrictscript/generator
to only show Merb related generators (or perhaps Merb and/or Rails generators) - Your framework RubyGem (e.g.
newgem
ormerb
RubyGems) needs to addrubigen
as a
dependency, so that users of your RubyGem can access the generator framework.
Creating generators
There are two types of generators:
- Application Generators – used by developers of your framework to get started.
Generally, you will create one Application Generator for your framework.
It generates a base stub (such as therails
stub for new Rails applications)
for your framework users. - Component Generators – used by developers to extend their application.
You may include 1+ built-in generators with your framework.
Developers can also write generators for your framework, and like Rails’ generator
install them in various places and have access to their via RubiGen.
Creating an Application Generator for your Framework
Easy way
newgem (v0.13.0+) can generate an Application Generator
for a RubyGem.
- Create new RubyGem:
newgem foobar
- Create generator:
script/generator application_generator foobar
- Update tests + generator
- Install
- Run with: foobar
For more documentation, run script/generator application_generator
DIY
Without RubiGen, to give your users a head start and create a stub for them, you will
copiously use mkdir_p
and File.open
. Your script will either be primitive (only
create the bare folders and very few files) or it will be very long and unreadable
(ok, perhaps I’m just talking about the newgem
script, which I am dubiously responsible
for… :P).
With RubiGen, you can create stubs using powerful, yet simple, syntax. Templates are
extracted into a templates
folder, and activating the generator from a script requires
only a few lines of code.
These are the newgem
files related to its Application Generator.
The bin/newgem
script is very simple, and looks like:
require 'rubygems' require 'rubigen' if %w(-v --version).include? ARGV.first require 'newgem/version' puts "#{File.basename($0)} #{Newgem::VERSION}" exit(0) end require 'rubigen/scripts/generate' RubiGen::Base.use_application_sources! RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'newgem')
You can copy and paste this for your own generator script, and place it in your RubyGem’s bin
folder.
Change newgem
to your RubyGem’s name in the script above (and in all the folders listed above too)
NOTE: If you leave newgem
there, then it will execute the newgem_generator.rb
generator;
as the generators are loaded from all RubyGem’s having /app_generators
folders.
So, for your RubyGem, you need to keep the /app_generators
folder (as you are creating an
Application Generator, not a Component Generator), but change newgem
to your gem name
in
all the subfolders and files. ESPECIALLY newgem_generator.rb
→ yourgem_generator.rb
,
as this is how the generator is discovered (via RubiGen::Base.use_application_sources!
).
All the generator work is performed within yourgem_generator.rb
. A stub for it will be:
require 'rbconfig' class YourgemGenerator < RubiGen::Base DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) default_options :shebang => DEFAULT_SHEBANG, :an_option => 'some_default' attr_reader :app_name, :module_name def initialize(runtime_args, runtime_options = {}) super usage if args.empty? @destination_root = args.shift @app_name = File.basename(File.expand_path(@destination_root)) @module_name = app_name.camelize extract_options end def manifest # Use /usr/bin/env if no special shebang was specified script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] } windows = (RUBY_PLATFORM =~ /dos|win32|cygwin/i) || (RUBY_PLATFORM =~ /(:?mswin|mingw)/) record do |m| # Root directory and all subdirectories. m.directory '' BASEDIRS.each { |path| m.directory path } # Root m.template_copy_each %w( Rakefile ) m.file_copy_each %w( README.txt ) # Test helper m.template "test_helper.rb", "test/test_helper.rb" # Scripts %w( generate ).each do |file| m.template "script/#{file}", "script/#{file}", script_options m.template "script/win_script.cmd", "script/#{file}.cmd", :assigns => { :filename => file } if windows end end end protected def banner <<-EOS Create a stub for #{File.basename $0} to get started. Usage: #{File.basename $0} /path/to/your/app [options]" EOS end def add_options!(opts) opts.separator '' opts.separator "#{File.basename $0} options:" opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.") end # Installation skeleton. Intermediate directories are automatically # created so don't sweat their absence here. BASEDIRS = %w( doc lib log script test tmp ) end
Easy peasy.
Creating a Component Generator for your Framework
You can include Component Generators in RubyGems, and they will be automatially picked up
by your framework’s script/generate
script.
Easy way
Use newgem, (v0.13.0+), and run:
script/generate component_generator
and follow the instructions.
Live at RubyConf 2007
RubiGen had the 9am, Sunday timeslot at RubyConf 2007 and was recorded for your viewing pleasure.
Forum
http://groups.google.com/group/rubigen
How to submit patches
Read the 8 steps for fixing other people’s code and for section 8b: Submit patch to Google Groups, use the Google Group above.
The source for this project is available via git. You can browse and/or fork the source, or to clone the project locally:
git clone git://github.com/drnic/rubigen.git
The original Subversion repository is svn://rubyforge.org/var/svn/rubigen/trunk
for anonymous access.
Thanks go to…
Jeremy Kemper (bitsweat) who wrote the original Rails Generator.
License
This code is free to use under the terms of the MIT license.
Contact
Comments are welcome. Send an email to Dr Nic Williams via the forum
Dr Nic Williams, 26th October 2008
Theme extended from Paul Battley


errorgeopy package¶
Submodules¶
errorgeopy.address module¶
Contains the Address
class, representing a collection of reverse
geocoding results. Primarily, this functions as a container for a set of
errorgeopy.Location
objects after a successful reverse geocode, and
exposes methods that operate on this set of results, including:
- de-duplication
- extracting the results that best match a pre-expected outcome
- finding the longest common substring of candidate addresses
-
class
errorgeopy.address.
Address
(*args, **kwargs)[source]¶ Bases:
object
Represents a collection of parsed reverse geocoder responses (parsed with geopy). Each member of the
address
property (which is iterable) is ageopy.address
object. The raw respones can therefore be obtained with:>>> [a.raw for a in Address.addresses]
errorgeopy
adds methods that operate on the collection of addresses that consider the set of addresses as a related set.- Attributes:
addresses
(list
): Collection of reverse geocoding responses from as many services that were capable of returning a response to a query. Each member of the array is ageopy.location.Location
object.
-
addresses
¶ A list of reverse geocoding results from all configured providers. The single central property of the Address object.
- Notes:
- Depending on configuration, a provider may return more than one result for a given query. All results from all providers are available in this property, in a flat (not nested) structure. The list may be empty if no provider could match an address.
-
dedupe
(threshold=95)[source]¶ Produces a fuzzily de-duplicated version of the candidate addresses, using
fuzzywuzzy.proccess.dedupe
.- Note:
- See https://github.com/seatgeek/fuzzywuzzy/blob/master/fuzzywuzzy/process.py
for detail on the deduplication algorithm implementation. This
method does not modify the
Address.addresses
. property. - Kwargs:
- threshold (int): the numerical value (0,100) point at which you expect to find duplicates. Defaults to 95 out of 100, which is higher than the fuzzywuzzy default (70); this higher threshold is used by defauly since addresses are more sensitive to small changes (e.g. “250 Main Street” and “150 Main Street” have a small edit distance when considered as strings, but may have a reasonably large physical distance when considered as physical addresses).
- Returns:
- A list of
geopy.location.Location
objects (essentially a filtered list of the original set).
-
extract
(extraction, limit=4)[source]¶ Returns the address or addresses within the set of the reverse geocoded addresses that best match an expected result. Uses fuzzywuzzy under the hood for matching.
- Args:
- expectation (str): The string indicating your expected result for a reverse geocoding operation. It should probably look like an address. Results are returned in the order that best meets this expected address.
- Kwargs:
- limit (int): The maximum number of match candidates to retrieve from fuzzywuzzy. The length of the returned array may be longer, if the set of addresses has identical addresses that are good matches for the expected address (i.e. if two geocoders resolve to the same string address).
- Returns:
- list. Return value is a list of tuples, where each tuple contains a geopy Location, and a matching score based on an extension of the Levenshtien distance between the expectation and the Location’s address (a higher score is a better match). The algorithm is implemented by SeatGeek’s fuzzywuzzy, and you can read more here: http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/
-
longest_common_sequence
(separator='')[source]¶ Returns the longest common sequence of the reverse geocoded addresses... or it would, if I had written this code. Raises:
NotImplementedError
-
longest_common_substring
(dedupe=False)[source]¶ Returns the longest common substring of the reverse geocoded addresses. Note that if there is no common substring, a string of length zero is returned. If the longest common substring is whitespace, that is stripped, and a string of length zero is returned.
- Kwargs:
- dedupe (bool): whether to first perform a deduplication operation on the set of addresses. Defaults to False.
- Returns:
- str
errorgeopy.geocoders module¶
Contains the Geocoder and GeocoderPool classes, representing one, and a pool of pre-configured geocoders, respectively.
Geocoder is a very thin piece of wrapping over geopy.geocoders.base.Geocoder that primarily just initialises a geopy.Geocoder instance by referring to it by name and passing configuration.
GeocoderPool coordinates reading of configuration (file or dictionary) of a suite of geocoders that you should configure, although a small number are available with no configuration. The GeoCoder pool then coordinates requests via individual Geocoder objects, handling failures and geocoding in parallel for the sake of efficiency. Both forward and backward (“reverse”) geocoding is supported, but note that not all geocoding services exposed via errorgeopy support both methods.
-
class
errorgeopy.geocoders.
Geocoder
(name, config)[source]¶ Bases:
object
A single geocoder exposing access to a geocoding web service with geopy. Thin wrapping over the geopy.Geocoder set of geocoding services. Used by errorgeopy.GeocoderPool to access the configuration of each component service. The base geopy.Geocoder object can be obtained via the geocoder attribute.
-
config
¶ The configuration of the geocoder (less the kwargs for the geocode and reverse methods), as a dictionary.
-
geocoder
¶ The geopy.Geocoder instance.
-
name
¶ The string name of the geocoder.
-
-
class
errorgeopy.geocoders.
GeocoderPool
(config=None, geocoders=None)[source]¶ Bases:
object
A “pool” of objects that inherit from
geopy.geocoders.base.Geocoder
, with configuration specific to each service. Represents the inputs for geocoding operations that span across multiple providers. Queries are run in parallel across all configured geocoding providers, and results are intended to be a composition of multiple responses from different providers with coherent configuration (e.g. a universalcountry_bias
), although this is not enforced.-
config
¶ The (parsed) configuration that will be referred to when geocoding, as a dictionary.
-
classmethod
fromfile
(config, caller=None)[source]¶ Instantiates a GeocoderPool from a configuration file. For example, a config.yml file may look like:
ArcGIS: geocode: exactly_one: true reverse: distance: 1000 Nominatim: country_bias: "New Zealand" geocode: addressdetails: true language: en exactly_one: false reverse: exactly_one: true language: en
Then you could use this classmethod as follows:
>>> import yaml >>> from errorgeopy.geocoders import GeocoderPool >>> gpool = GeocoderPool.fromfile('./config.yml', yaml.load)
- Args:
- config (str): path to a configuration file on your system.
- Kwargs:
- caller (function): optional method that will parse the config file into a Python dictionary with keys matching GeoPy geocoder names, and those keys holding values that are also dictionaries: function signatures for geocode and reverse, and any other geocoder-specific configuration (e.g. country_bias above).
-
geocode
(query)[source]¶ Forward geocoding: given a string address, return a point location. ErrorGeoPy does this, and also provides you with ways to interrogate the spatial error in the result.
- Args:
- query (str): Address you want to find the location of (with spatial
- error).
- Returns:
- A list of errorgeopy.address.Address instances.
-
geocoders
¶ The list of unique geocoders that will be used when geocoding. Each member of the array inherits from geopy.geocoder.base.
-
reverse
(query)[source]¶ Reverse geocoding: given a point location, returns a string address. ErrorGeoPy does this, and also provides you with ways to interrogate the uncertainty in the result.
- Args:
- query (geopy.point.Point, iterable of (lat, lon), or string as “%(latitude)s, %(longitude)s”): The coordinates for which you wish to obtain the closest human-readable addresses.
- Returns:
- A list of errorgeopy.location.Location instances.
-
errorgeopy.location module¶
A “Location” is a collecion of responses from geocoding services, each one a distinct attempt to either find a string address given a point (reverse geocode) or an attempt to find a point that best matches a string address (forward geocode). A Location is a collection, because fundamentally ErrorGeoPy is oriented to working across providers, and considering all of their results as a related set of responses.
A “LocationClusters” object, also defined here, is also a collection of addresses. but is slightly less abstract in that the members of the collection are organised into clusters, based on some clustering algorithm.
Heavy use is made of shapely in return values of methods for these classes.
-
class
errorgeopy.location.
Location
(*args, **kwargs)[source]¶ Bases:
object
Represents a collection of parsed geocoder responses, each of which are geopy.Location objects, representing the results of different geocoding services for the same query.
-
addresses
¶ geopy.Location.address properties for all candidate locations as a sequence of strings.
-
centroid
¶ A shapely.geometry.Point of the centre of all candidate address locations (centre of the multipoint).
-
clusters
¶ Clusters that have been identified in the Location’s candidate addresses, as an errorgeopy.location.LocationClusters object.
-
concave_hull
¶ A concave hull of the Location, as a shapely.geometry.Polygon object. Needs at least four candidates, or else this property is None.
- Kwargs:
- alpha (float): The parameter for the alpha shape
-
convex_hull
¶ A convex hull of the Location, as a shapely.geometry.Polygon object. Needs at least three candidates, or else this property is None.
-
locations
¶ A sequence of geopy.Location objects.
-
mbc
¶ A shapely.geometry.Polygon representing the minimum bounding circle of the candidate locations.
-
most_central_location
¶ A shapely.geometry.Point representing the geometry of the candidate location that is nearest to the geometric centre of all of the candidate locations.
-
multipoint
¶ A shapely.geometry.MultiPoint of the Location members.
-
points
¶ An array of geopy.Point objects representing the candidate locations physical positions. These are geodetic points, with latitude, longitude, and altitude (in kilometres, when supported by providers; defaults to 0.
-
-
class
errorgeopy.location.
LocationClusters
(location)[source]¶ Bases:
object
Represents clusters of addresses identified from an errorgeopy.Location object, which itself is one coherent collection of respones from multiple geocoding services for the same query.
-
cluster_centres
¶ Multipoint of cluster geometric centroids.
-
clusters
¶ A sequence of clusters identified from the input. May have length 0 if no clusters can be determined.
-
geometry_collection
¶ GeometryCollection of clusters as multipoint geometries.
-


{% extends "base.html" %} {% block title %} Form Demo {% endblock %} {% block page_content %}
This is the form demo page
{% if first_name %}
Hello {{first_name}}
{% else %}
Hey you
{% endif %}
This is a GET form
What's your name?
This is a POST form
What's your name?
{% endblock %}


13 January 2000
Disease Outbreak Reported
The Ministry of Health of Bavaria has informed WHO that the diagnosis of Lassa fever in a 23-year-old female student has been confirmed by PCR and virus culture performed at the Bernard Nocht Institute in Hamburg.
The student reportedly had spent November and December in Côte d'Ivoire and Ghana. She returned to Germany on 7 January via Lisbon, Portugal and was immediately admitted to a general hospital with fever and flu-like symptoms. Her condition deteriorated rapidly and after 4 days she was transferred to the Tropical Medicine Department of Würzburg Hospital where she is being treated in an isolation ward.
Although the risk of transmission to others is considered to be minimal (requires contact with blood or body fluids), possible contacts are being investigated. German authorities have issued notices to passengers who traveled on the same flight from Portugal to Germany asking them to contact health officials if they become ill. WHO is working with Portuguese health authorities to trace possible contacts during the student's travel to and in Portugal.


ri1.9.1(April 2005) ri1.9.1(April 2005) NAME ri1.9.1 - Ruby Information at your fingertips SYNOPSIS ri1.9.1 [options] [names...] DESCRIPTION ri1.9.1 displaies information on Ruby classes, modules, and methods. You can give the names of classes or methods to see their documentation. Partial names may be given: if the names match more than one entity, a list will be shown, otherwise details on that entity will be displayed. Nested classes and modules can be specified using the normal Name::Name notation, and instance methods can be distinguished from class methods using "." (or "#") instead of "::". For example: ri1.9.1 File ri1.9.1 File.new ri1.9.1 F.n ri1.9.1 zip Note that shell quoting may be required for method names containing punc‐ tuation: ri1.9.1 'Array.[]' ri1.9.1 compact\! OPTIONS --classes, -c Display the names of classes and modules we know about. --doc-dir, -d dirname A directory to search for documentation. If not specified, we search the standard rdoc/ri directories. --format, -f name Format to use when displaying output: ansi, bs, html, plain, sim‐ ple. Use ´bs' (backspace) with most pager programs. To use ANSI, either also use the -T option, or tell your pager to allow control characters. (for example using the -R option to less.) --list-names, -l List all the names known to RDoc, one per line. --no-pager, -T Send output directly to stdout. --width, -w width Set the width of the output. --version, -v Display the version of ri1.9.1. --help, -h Display help. Options may also be passed in the 'RI' environment variable ri1.9.1(April 2005)


|
Fractal Trees With Springs
0.1
|
Builds a moving tree and provides methods of applying forces to generated trees. More...
Public Member Functions | |
| override void | Build () |
| Build this instance. More... | |
| override void | Remove () |
| Deletes all child branches and clears branch list. More... | |
| void | ApplyDirectedForce (Vector2 force, Vector2 position, float radius) |
| Applies a directed force to all branches within range. More... | |
| void | ApplyPushForce (float force, Vector2 position, float radius) |
| Applies a push force to all branches within range. More... | |
| void | ApplyPullForce (float force, Vector2 position, float radius) |
| Applies a pull force to all branches in range. More... | |
Public Attributes | |
| float | forceDistanceMulti = 4f |
| All forces applies to this tree are multiplied by this value. Use this to create trees that are more sensitive to forces than others. More... | |
| Public Attributes inherited from FractalTree.TreeBuilder | |
| bool | buildOnStart = true |
| If true, builds tree on start. More... | |
| TreeType | treeType = TreeType.Branching |
| The tree type to generate. More... | |
| GameObject | branchPrefab |
| The branch prefab. If tree to generate is moving then prefab should have MovingBranch script attached. More... | |
| Color | defaultBranchColour = Color.white |
| The branch colour for the default tree. More... | |
| int | defaultGrowthCount = 8 |
| The number of tree generations. More... | |
| float | defaultInitialLength = 5f |
| The default length of the initial branches for the default tree generation. More... | |
| float | defaultLengthReductionOnNewGeneration = 0.67f |
| The length degradation for the default tree. Branches are reduced in size by this factor. More... | |
| float | defaultAngle = 45f |
| The angle for default tree branching. More... | |
| float | defaultWidth = 0.04f |
| The width of the branches for the default tree generator. More... | |
| bool | lTreeAutoWidth = true |
| When true, the width of the branches will be set automatically based on the colours. More... | |
| bool | lTreeMassBasedOnWidth = true |
| When true, the mass of the branches will be set automatically based on colours. Used only when generating a moving tree. More... | |
| float | lTreeWidth = 0.03f |
| The max branch width for L trees. More... | |
| int | lTreeGrowthCount = 5 |
| The number of L tree generations. More... | |
| string | lTreeAxiom = "FX" |
| The l tree axiom. The initial seed used to generate a L tree. More... | |
| LRule [] | lTreeRules |
| The rules applied to the axoim. More... | |
| float | lTreeBranchLength = 0.17f |
| The length of the l tree branch. More... | |
| float | lTreeAngle = 25f |
| The angles used to branch an L tree. More... | |
| Color [] | lTreeColours |
| The L tree colours. More... | |
| Transform | colonizationLeafParent |
| The parent of the game object that holds the colonization leaves. More... | |
| Color | colonizationBranchColor = Color.white |
| float | colonizationInitialLength = 1f |
| The initial length for a colonization tree trunk. More... | |
| float | colonizationWidth = 0.04f |
| The width of the colonization tree branches. More... | |
| float | colonizationMinDistance = 1f |
| The minimum distance between the branch and a colonization leaf for it to be registered. More... | |
| float | colonizationMaxDistance = 10f |
| The maximum distance between the branch and a colonization leaf for it to be registered. More... | |
Properties | |
| List< MovingBranch > | branches [get] |
| A list of all branches associated with the tree. More... | |
Additional Inherited Members | |
| Public Types inherited from FractalTree.TreeBuilder | |
| enum | TreeType { Branching, LTree, Colonization } |
| Tree type. More... | |
| Protected Member Functions inherited from FractalTree.TreeBuilder | |
| List< T > | DoBuild< T > () |
| Build this instance of the tree. More... | |
| Tree | CreateTree () |
| Creates a tree based on treeType. More... | |
Builds a moving tree and provides methods of applying forces to generated trees.
| void FractalTree.MovingTreeBuilder.ApplyDirectedForce | ( | Vector2 | force, |
| Vector2 | position, | ||
| float | radius | ||
| ) |
Applies a directed force to all branches within range.
| force | Force. |
| position | Position. |
| radius | Radius. |
| void FractalTree.MovingTreeBuilder.ApplyPullForce | ( | float | force, |
| Vector2 | position, | ||
| float | radius | ||
| ) |
Applies a pull force to all branches in range.
| force | Force. |
| position | Position. |
| radius | Radius. |
| void FractalTree.MovingTreeBuilder.ApplyPushForce | ( | float | force, |
| Vector2 | position, | ||
| float | radius | ||
| ) |
Applies a push force to all branches within range.
| force | Force. |
| position | Position. |
| radius | Radius. |
|
virtual |
Build this instance.
Implements FractalTree.TreeBuilder.
|
virtual |
Deletes all child branches and clears branch list.
Implements FractalTree.TreeBuilder.
| float FractalTree.MovingTreeBuilder.forceDistanceMulti = 4f |
All forces applies to this tree are multiplied by this value. Use this to create trees that are more sensitive to forces than others.
|
get |
A list of all branches associated with the tree.
The branches.


This page is for manual testing of apiCheck.js. Just to give a little human aspect to developing the library :-)


A TALK ON ENTREPRENEURSHIP BY SPECIAL LECTURE BY EDII FACULTY BY- CS.DR.R.V.TYAGARAJAN
On 30th and 31th of January 2019,the students from the department of Management Studies had a guest lecture by CS. Dr. R. V. Tyagarajan, who is practicing as a company secretary and also a visiting professor, has persuaded his M.Com, MBA, ML, M. Phil,FCS,FIII, Ph. D. He is one of the life members of AIMS, along with this he also helps research scholars in completing their Ph.D thesis.
The topic of the session was about how to become an Entrepreneur. The talk was held in seminar hall. He firstly, spoke about what is called self and why should one be aware about themselves and briefed about personality traits and competencies. He kept the class intacted by sharing a lot of interesting and motivational stories about the entrepreneurs which helped us understand the main topic of the session more easily
Some of the topics taught by CS. Dr. R. V. Tyagarajan were Under personality traits and competencies, Entrepreneurial traits and competencies. He spoke about the qualifications and required personality to become an entrepreneur and how one can achieve it.
Then, talking about entrepreneurial traits he covered topics related to Calculated risk taking, Ambiguity tolerance, Locus of control and Types of Locus of control. Lastly, he spoke about the entrepreneurial competencies and how how the young students should start working on it. He spoke about relating topic like how to take initiative, Seeing and acting on opportunities, Persistence, Information seeking, Concern for high quality of work, Commitment to work contract, Efficiency orientation, Systematic planning, Problem solving, Self-confident, being assertive, persuasion and use of influencing strategies.


WELCOME
When you work with us you are part of a team of committed collaborators.All aspects of our software development process are intergrated,interactive
and agile.
Our apptroach unifies design,development and product management to create exceptional products.
We start each project by understanding your business goals,the user's needs and the product requirements.
Then we help them translate them into effective and elegant solutions.
Before we sign a contract or write a line of code our team will spend the necessary time needed to understand your product vision.
The outcome of this scoping session is proposal or high level statement of work.
based on your requirements,we can provide a complete offering or just the pieces you need.


Rates does not include taxes. Accommodation price includes continental breakfast.
Season from 01 October to 31 March


Home
Resourses
Bunk Zone
Humans of LPC
LPC App
HUMANS OF LPC
AKARSH TIWARI
By in no ecstatic wondered disposal my speaking. Direct wholly valley or uneasy it at really. Sir wish like said dull and need make. Sportsman one bed departure.....
AKARSH TIWARI
By in no ecstatic wondered disposal my speaking. Direct wholly valley or uneasy it at really. Sir wish like said dull and need make. Sportsman one bed departure.....
AKARSH TIWARI
By in no ecstatic wondered disposal my speaking. Direct wholly valley or uneasy it at really. Sir wish like said dull and need make. Sportsman one bed departure.....
AKARSH TIWARI
By in no ecstatic wondered disposal my speaking. Direct wholly valley or uneasy it at really. Sir wish like said dull and need make. Sportsman one bed departure.....


A Reason To Smile.
 Because of you, someone is smiling too. Because of you, someone knows they are someone too. Because your smile makes someone smile too.
Your smile is also for you. To remember how you matter. How you are someone.  To remember how your smile is a reason to smile for simply being who you are. Who you have always been too.
My name is Isabel Mar and I am your gentle guide back to you. Who you are.
Sign up here for your Daily Purejoojoo.
Daily reminders of everything Life already is and everything you already are too.
— Published on November 16, 2019


Waldorf Blofeld
Multi Patch Editor
This editor will work with the Waldorf Blofeld, the Waldorf Blofeld with SL Option, and the Waldorf Blofeld Keyboard (which automatically comes with the SL option).
Communicating with Edisyn Set your Blofeld to send Sysex only, not Ctl nor Ctl+Sysex. Also make sure that Ctrl Receive is on.
Play Each Part has a button called Play. This sets the status to "play" (versus "mute").
Show Each Part has a button called Show. This shows the given sound (bank and number) as a separate Blofeld Single editor panel.
Gotchas Multimode on the Blofeld is a mess.
-
The Blofeld's Multimode sysex is entirely undocumented, and this patch editor is the result of reverse engineering. There may be errors: please report them.
- Edisyn cannot tell the Blofeld to switch to a given multi patch number. As a result, *Send Patch* and *Send Patch To...* are disabled, and the editor is *never* in sync (because we don't know what patch number is on the machine). To get a patch, manually switch to the desired patch number, then call *Request Current Patch* (or dump the patch manually to Edisyn). To send a patch, set the patch location manually on your synthesizer, then use *Send Current Patch*.
- The Blofeld doesn't send or receive sysex for updating a single Multimode parameter, so you won't see changes on the Blofeld (or Edisyn) when tweaking a parameter on the other.
-
If you save a multimode patch on the Blofeld, it corrupts the first letter of the name of every patch! This is not permanent (just reboot your Blofeld), but it's reported to Edisyn when Edisyn tries to load the patch from temporary memory again, so you'll see a corrupted patch name on receiving a patch.
- (On purpose) you can't mutate or merge the Play, Local, MIDI, or USB options as they turn on or off the ability to test playing a note at all.
| By
| Sean Luke
|
| Date
| June 2017
|


Use your acquired skills from the Wiki and try to earn some new cards! Or refresh your memory with the quizes from the old ones. Whatever you do, this area helps
you learn and understand the game better.
Can you get 'em all?
B a t t l e
Head into a match and try to get as many points as you can! Use your superhero abilities and progress through the questions. Take good care of your five lives!


Icon Sources
Icons made by
Freepik
from
www.flaticon.com
is licensed by
CC 3.0 BY
Icon from
www.iconmonstr.com
Icons made by
SimpleIcon
from
www.flaticon.com
is licensed by
CC 3.0 BY
Icon from
www.iconmonstr.com
Icon from
www.iconmonstr.com


This example uses the Kendo UI Demos Service as a back-end.
The full source code is available on GitHub.


This mouse may be fuggly, but his mother loves him! I think you should get him. His name is Head-Whiskers.
Do you have someone special in your life? Well... PUT A RING ON IT!!!


Karndeep Dhami
About me.
I am a Computer Scientist who Researches, Designs, Develops, and Codes
Projects I have worked on.
Startup
SpotGrab
DBMS
Master Ticket
HCI
School Carpool
Intro
Battleship
Pi
Maze


Free for All
Hack Starts in :
DAYS
HOURS
MINUTES
SECONDS
Free for All
30Apr-02May
Mark the Dates
For Everyone
Doesn't Matter if you're a08 36
Tracks Hours1000$
in PrizesIndustry Leading
Speakers
Brought to you By:
Download the Hackgrid App to get further updates and Information about the Speakers and Events Happening....
Download the Hackgrid App to get further updates and Information about the Speakers and Events Happening....
Download the Hackgrid App to get further updates and Information about the Speakers and Events Happening....


| Name | Deadline | Predecessor | Workload | Affect Factors | Resource Attributes Require | Resource Using | Status |
|---|---|---|---|---|---|---|---|
| Nam1 | 10/12/2014 | Predecessor1 | Workload1 |
|
|
|
Open |
| Nam1 | 10/12/2014 | Predecessor1 | Workload1 |
|
|
|
Open |
| Nam1 | 10/12/2014 | Predecessor1 | Workload1 |
|
|
|
Open |


{% include "head.html" %}
Click here to reload Bumblebee or use your browser's back button to go to a previous page.


Supported Data Types
Drill reads from and writes to data sources having a wide variety of types.
| SQL Data Type | Description | Example |
|---|---|---|
| BIGINT | 8-byte signed integer in the range -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |<PHONE_NUMBER>854775807 |
| BINARY | Variable-length byte string | B@e6d9eb7 |
| BOOLEAN | True or false | true |
| DATE | Years, months, and days in YYYY-MM-DD format since 4713 BC | 2015-12-30 |
| DECIMAL(p,s), or DEC(p,s), NUMERIC(p,s)* | 38-digit precision number, precision is p, and scale is s | DECIMAL(6,2) is 1234.56, 4 digits before and 2 digits after the decimal point |
| FLOAT | 4-byte floating point number | 0.456 |
| DOUBLE, DOUBLE PRECISION | 8-byte floating point number, precision-scalable | 0.456 |
| INTEGER or INT | 4-byte signed integer in the range -2,147,483,648 to 2,147,483,647 |<PHONE_NUMBER> |
| INTERVAL** | A day-time or year-month interval | ‘1 10:20:30.123’ (day-time) or ‘1-2’ year to month (year-month) |
| SMALLINT*** | 2-byte signed integer in the range -32,768 to 32,767 | 32000 |
| TIME | 24-hour based time before or after January 1, 2001 in hours, minutes, seconds format: HH:mm:ss | 22:55:55.23 |
| TIMESTAMP | JDBC timestamp in year, month, date hour, minute, second, and optional milliseconds format: yyyy-MM-dd HH:mm:ss.SSS | 2015-12-30 22:55:55.23 |
| CHARACTER VARYING, CHARACTER, CHAR,** or VARCHAR | UTF8-encoded variable-length string. The default limit is 1 character. The maximum character limit is 2,147,483,647. | CHAR(30) casts data to a 30-character string maximum. |
* Starting in Drill 1.14, the DECIMAL data type is enabled by default.
** Internally, INTERVAL is represented as INTERVALDAY or INTERVALYEAR.
*** SMALLINT is not currently supported.
**** The CHAR data type is internally represented as VARCHAR by Drill.
DECIMAL Data Type
Starting in Drill 1.14, DECIMAL data type support is enabled by default. Drill uses the vardecimal data type to store decimal and numeric data types in a compressed format that optimizes storage space. The vardecimal data type stores decimal and numeric values as variable length columns that can represent any decimal precision.
In Drill, the SQL DECIMAL and NUMERIC data types map to the java.math.BigDecimal Java data type.
Syntax
The DECIMAL data type accepts numeric values, for which you can define a precision and a scale, as shown:
column_name DECIMAL[(precision[,scale])]
Precision is an integer that indicates how many digits the number will contain. Scale is an integer that indicates the number of digits to the right of the decimal point. For example, the number 2325.67 has a precision of 6 and scale of 2. In a query, DECIMAL (6,2).
Scale cannot be greater than the precision. If you do not indicate a precision or scale, the default precision is 38 and scale is 0.
Decimal Data Type Storage Format Support
Drill can read decimal data types from and write decimal data types to the following storage format:
- parquet
Drill can read decimal data types from the following storage formats, but cannot write decimal data types to them:
- hive
- jdbc
- avro
Decimal Type Options
You can use the SET command with the planner.enable_decimal_data_type
option to turn DECIMAL data type support off and on. If you disable the planner.enable_decimal_data_type
option (by setting it to false), Drill treats decimal literals as DOUBLE.
Drill 1.14 introduces the following additional decimal-related options for the Parquet storage format that you can modify using the SET command:
-
store.parquet.writer.use_primitive_types_for_decimals (boolean)
Allows Drill to use INT32 and INT64 logical types when storing decimal values in Parquet if the precision of the value allows it. Default is true. Set to false to prevent Drill from using INT32 and INT64 logical types, as shown:SET `store.parquet.writer.use_primitive_types_for_decimals` = false;
-
store.parquet.writer.logical_type_for_decimals
Indicates the logical type that Drill should use to store decimals. The default is fixed_len_byte_array. Alternatively, you can set this option to binary, as shown:SET `store.parquet.writer.logical_type_for_decimals` = 'binary';
Composite Types
Drill supports the following composite types:
- Map
- Array
A map is a set of name/value pairs. A value in a map can be a scalar type, such as string or int, or a complex type, such as an array or another map. An array is a repeated list of values. A value in an array can be a scalar type, such as string or int, or an array can be a complex type, such as a map or another array.
Drill uses map and array data types internally for reading complex and nested data structures from data sources. In this release of Drill, you cannot reference a composite type by name in a query, but Drill supports array values coming from data sources. For example, you can use the index syntax to query data and get the value of an array element:
a[1]
You can refer to the value for a key in a map using dot notation:
t.m.k
The section “Query Complex Data” shows how to use composite types to access nested arrays. “Handling Different Data Types” includes examples of JSON maps and arrays. Drill provides functions for handling array and map types:
ANY Type
The ANY type is a key technological advance in Drill that enables it to address late typing problems. Drill uses the ANY type internally and you might see references to ANY in the output of the DESCRIBE or other commands. You cannot cast a value to the ANY type in this release.
Using the ANY type, the parser postpones the problem of resolving the type of some value until the query is actually running. At that point, Drill has an empirical schema available for each record batch to use for final code generation and optimization. If the empirical schema changes due to changes in the data processing, Drill regenerates the code as necessary.
Casting and Converting Data Types
In Drill, you cast or convert data to the required type for moving data from one data source to another. You do not assign a data type to every column name in a CREATE TABLE statement to define the table as you do in database software. Instead, you use the CREATE TABLE AS (CTAS) statement with one or more of the following functions to define the table:
In some cases, Drill converts schema-less data to correctly-typed data implicitly. In this case, you do not need to cast the data. The file format of the data and the nature of your query determines the requirement for casting or converting. Differences in casting depend on the data source. The following list describes how Drill treats data types from various data sources:
- HBase
Does not implicitly cast input to SQL types. Convert data to appropriate types as as described in the section “Querying HBase”. Use CONVERT_TO or CONVERT_FROM data types. - Hive
Implicitly casts Hive types to SQL types as shown in the Hive type mapping example - JSON
Implicitly casts JSON data to its corresponding SQL types or to VARCHAR if Drill is in all text mode. - MapR-DB
Implicitly casts MapR-DB data to SQL types when you use the maprdb format for reading MapR-DB data. The dfs storage plugin defines the format when you install Drill from the mapr-drill package on a MapR node. - Parquet
Implicitly casts Parquet data to the SQL types shown in SQL Data Types to Parquet. - Text: CSV, TSV, and other text
Implicitly casts all textual data to VARCHAR.
Implicit Casting Precedence of Data Types
The following list includes data types Drill uses in descending order of precedence. Casting precedence shown in the following table applies to the implicit casting that Drill performs. For example, Drill might implicitly cast data when a query includes a function or filter on mismatched data types:
SELECT myBigInt FROM mytable WHERE myBigInt = 2.5;
As shown in the table, Drill can cast a NULL value, which has the lowest precedence, to any other type; you can cast a SMALLINT (not supported in this release) value to INT. Drill might deviate from these precedence rules for performance reasons. Under certain circumstances, such as queries involving SUBSTR and CONCAT functions, Drill reverses the order of precedence and allows a cast to VARCHAR from a type of higher precedence than VARCHAR, such as BIGINT. The INTERVALDAY and INTERVALYEAR types are internal types.
Casting Precedence
| Precedence | Data Type | Precedence | Data Type |
|---|---|---|---|
| 1 | INTERVALYEAR (highest) | 12 | UINT2 |
| 2 | INTERVALDAY | 13 | SMALLINT* |
| 3 | TIMESTAMP | 14 | UINT1 |
| 4 | DATE | 15 | VAR16CHAR |
| 5 | TIME | 16 | FIXED16CHAR |
| 6 | DOUBLE | 17 | VARCHAR |
| 7 | DECIMAL | 18 | CHAR |
| 8 | UINT8 | 19 | VARBINARY |
| 9 | BIGINT | 20 | FIXEDBINARY |
| 10 | UINT4 | 21 | NULL (lowest) |
| 11 | INT |
* Not supported in this release.
Explicit Casting
In a textual file, such as CSV, Drill interprets every field as a VARCHAR, as previously mentioned. To handle textual data, you can use the following functions to cast and convert compatible data types:
- CAST
Casts data from one data type to another. - CONVERT_TO and CONVERT_FROM/docs/data-type-conversion/#convert_to-and-convert_from) Convert data, including binary data, from one data type to another using “CONVERT_TO and CONVERT_FROM data types”
- TO_CHAR
Converts a TIMESTAMP, INTERVALDAY/INTERVALYEAR, INTEGER, DOUBLE, or DECIMAL to a string. - TO_DATE
Converts a string to DATE. - TO_NUMBER
Converts a string to a DECIMAL. - TO_TIMESTAMP
Converts a string to TIMESTAMP.
If the SELECT statement includes a WHERE clause that compares a column of an unknown data type, cast both the value of the column and the comparison value in the WHERE clause.
Explicit Type Casting Maps
The following tables show data types that Drill can cast to/from other data types. Not all types are available for explicit casting in the current release.
Numerical and Character Data Types
| To | SMALLINT | INT | BIGINT | DECIMAL | FLOAT | CHAR | FIXEDBINARY | VARCHAR | VARBINARY |
|---|---|---|---|---|---|---|---|---|---|
| From: | |||||||||
| SMALLINT* | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| INT | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| BIGINT | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| DECIMAL | yes | yes | yes | yes | yes | yes | yes | yes | yes |
| DOUBLE | yes | yes | yes | yes | yes | yes | no | yes | no |
| FLOAT | yes | yes | yes | yes | yes | yes | no | yes | no |
| CHAR | yes | yes | yes | yes | yes | no | yes | yes | yes |
| FIXEDBINARY** | yes | yes | yes | yes | yes | no | no | yes | yes |
| VARCHAR*** | yes | yes | yes | yes | yes | yes | yes | no | yes |
| VARBINARY** | yes | yes | yes | yes | yes | no | yes | yes | no |
* Not supported in this release.
** Used to cast binary UTF-8 data coming to/from sources such as HBase.
*** You cannot convert a character string having a decimal point to an INT or BIGINT.
Note
The CAST function does not support all representations of FIXEDBINARY and VARBINARY. Only the UTF-8 format is supported.
If your FIXEDBINARY or VARBINARY data is in a format other than UTF-8, or big-endian encoded, use the CONVERT_TO/FROM functions instead of CAST.
Date and Time Data Types
| To: | DATE | TIME | TIMESTAMP | INTERVALYEAR | INTERVALDAY |
|---|---|---|---|---|---|
| From: | |||||
| CHAR | Yes | Yes | Yes | Yes | Yes |
| FIXEDBINARY* | No | No | No | No | No |
| VARCHAR | Yes | Yes | Yes | Yes | Yes |
| VARBINARY* | No | No | Yes | No | No |
| DATE | No | No | Yes | No | No |
| TIME | No | Yes | Yes | No | No |
| TIMESTAMP | Yes | Yes | Yes | No | No |
| INTERVALYEAR | Yes | No | Yes | No | Yes |
| INTERVALDAY | Yes | No | Yes | Yes | No |
* Used to cast binary UTF-8 data coming to/from sources such as HBase. The CAST function does not support all representations of FIXEDBINARY and VARBINARY. Only the UTF-8 format is supported.
Data Types for CONVERT_TO and CONVERT_FROM Functions
The CONVERT_TO function converts data to bytes from the input type. The CONVERT_FROM function converts data from bytes to the input type. For example, the following CONVERT_TO function converts an integer to bytes using big endian encoding:
CONVERT_TO(mycolumn, 'INT_BE')
The following table lists the data types you can use with the CONVERT_TO and CONVERT_FROM functions:
| Type | Input Type | Output Type |
|---|---|---|
| JSON | bytes | varchar |
| BOOLEAN_BYTE | bytes(1) | BOOLEAN |
| TINYINT_BE | bytes(1) | TINYINT |
| TINYINT | bytes(1) | TINYINT |
| SMALLINT_BE | bytes(2) | SMALLINT |
| SMALLINT | bytes(2) | SMALLINT |
| INT_BE | bytes(4) | INT |
| INT | bytes(4) | INT |
| BIGINT_BE | bytes(8) | BIGINT |
| BIGINT | bytes(8) | BIGINT |
| FLOAT | bytes(4) | FLOAT (float4) |
| DOUBLE | bytes(8) | DOUBLE (float8) |
| INT_HADOOPV | bytes(1-9) | INT |
| BIGINT_HADOOPV | BYTES(1-9) | BIGINT |
| DATE_EPOCH_BE | bytes(8) | DATE |
| DATE_EPOCH | bytes(8) | DATE |
| TIME_EPOCH_BE | bytes(8) | TIME |
| TIME_EPOCH | bytes(8) | TIME |
| TIMESTAMP_EPOCH | bytes(8) | TIMESTAMP |
| TIMESTAMP_IMPALA* | bytes(12) | TIMESTAMP |
| UTF8 | bytes | VARCHAR |
| UTF16 | bytes | VAR16CHAR |
| UINT8 | bytes(8) | UINT8 |
| UINT8_BE | bytes(8) | UINT8 |
* In Drill 1.2 and later, use the TIMESTAMP_IMPALA type with the CONVERT_FROM function to decode a timestamp from Hive or Impala, as shown in the section, “About INT96 Support”.
This table includes types such as INT, for converting little endian-encoded data and types such as INT_BE for converting big endian-encoded data to Drill internal types. You need to convert binary representations, such as data in HBase, to a Drill internal format as you query the data. If you are unsure that the size of the source and destination INT or BIGINT you are converting is the same, use CAST to convert these data types to/from binary.
*_HADOOPV in the data type name denotes the variable length integer as defined by Hadoop libraries. Use a *_HADOOPV type if user data is encoded in this format by a Hadoop tool outside MapR.


Introduction
How do you begin a career in analytics and data science? What’s the best way of learning R? Should I still bother with Excel?
Arguably, these are some questions that you can gain more insights on by speaking to people than running models. This week, I have the pleasure of speaking with Abhishek Modi, to find out about his journey from a Physics student to a Data Science Consultant at Deloitte.
About Abhishek
Abhishek is a Data Science consultant for Deloitte and has experience in this domain of 4 years. He decided to go into Data Science after graduating from National Institute of Technology, Surat with a master’s degree in Physics. Abhishek has worked with Fortune 100 companies to help their IT, Sales, and Marketing teams with data-driven decision using advanced analytics. Please feel free to get in touch with Abhishek via LinkedIn.
Interview with Abhishek Modi 🎤
To start, could you tell me a bit about what you currently do, and what is your background?
I did my Bachelor’s and Master’s in Physics, where my interest was in the design of particle accelerators, and even my master’s thesis was on the same topic. During the dissertation period, I explored a lot of fields within and outside Physics. During this time, I came across FiveThreeEight, and was surprised at how accurate predictions were made in 2008 US elections. This led to my desire to interview for data analytics companies at an entry level, and soon I got an offer from one.
Now, after 4 years, I am working as a Consultant for Deloitte in their Analytics and Cognitive team based in Bangalore, India. My toolbox containts R, SQL, and Excel for 99% of the tasks.
That’s interesting, especially that you were motivated by an application of analytics in politics, as opposed to physics! Tell me about when you were first introduced to R - did you come across this during your degree? Did you have any prior background in programming?
I started learning with the traditional approach first, and then started with with the tidyverse. This made me realize the difference between the two and how one can achieve same outcome using multiple methods. In the traditional approach, I always think in terms of what data type this function is going to provide me - e.g. whether it’ll be a logical array, or an index. This helps to decide how to nest the functions. Whilst with the tidyverse approach, I imagine what each verb does to the dataset, and then how to process the chain of sequence using the pipe operator. Learning R has been fun for me since I can obtain the same outcome using multiple ways!
That’s super interesting, and chimes with my own experience with learning R, i.e. starting with base, then discovering tidyverse, and then learning data.table for tasks that are more performance-demanding.
So true. data.table is so performance savvy.
Day to day use of R
I always find it very interesting how people use R in very different ways. I personally started using R for its text mining capabilities, and certainly some people use R for other things like web-scraping or even making memes (!). What do you use R for on the day to day? What packages do you use, apart from the obvious ones (tidyverse)?
In my day to day life, I use R for everything starting from data cleaning, visualization, data wrangling, and to create models! I use ggplot2, caret, timeSeries (for timeseries) apart from the usual ones.
R vs Excel
One thing that people talk a lot about is whether languages like R and Python would displace or replace “traditional” tools like Excel. What’s your take on this subject?
That’s a great question. I previously worked on a project where we were using Excel for data cleaning processes like removing spaces between words, replacing empty cells with 0, and so on. This wasn’t just for 1 file, but we were doing this for around 20 such files. And the time it would take for such a task would be immense for each file to just replace the blank values with 0s. It would mainly depend on the number of rows and columns, but we had to spare 2-3 days for this task alone every month. At that time, I was learning R and decided to use it to do these simple tasks. Though it took me some time for me to code and then to debug the code, I am glad I did it. It is still being used by the team, and have saved us many hours.
However, I don’t believe that R and Python can displace Excel in general field. In data science, it may. In general, Business stakeholders who have minimal understanding of programming love spreadsheets, and it will be very difficult for R to displace that.
I’m inclined to agree with you. People talk a lot about Excel being “dead”, but actually if you think about it, there are many uses for Excel which isn’t straightforward data analysis. For instance, data entry, ad-hoc cost estimations where you need to “play around” with combinations, creating dashboards which are fully portable and which you can run anywhere and send via email, etc. This portability thing is quite important, because in the real world things like IT restrictions or internet access can be a real barrier to socialising an interactive dashboard output like Shiny. Moreover, I think Excel will still be popular because it’s neither realistic nor efficient to expect stakeholders to be able to read code or to run code on their own.
The evolving capabilities of R
I also love your example about using R for its automation value. My own personal motivation for learning to code was actually to automate tedious and repetitive tasks, which was why I started off learning Excel VBA. That was before I discovered R of course! I now even use R for PowerPoint automation, using packages such as David Gohel’s mschart and officer, just to save myself the pain from and the potential errors that arise from creating loads and loads and loads of PowerPoint slides. I’ve heard that nowadays you can use RMarkdown to generate PowerPoint slides, but I haven’t quite looked into this yet.
I love how R is evolving year over year, and things are getting simplified. Recently I was watching a presentation from Joe Cheng (CTO at RStudio) where he talks about his work about Plot Caching in RShiny App. It is good to know that there is an entire community who is working to make things better than they are today.
Staying on top of R developments
I guess the other thing that I’m quite interested in finding out about is the R community in which you’re based. In London, we have these regular R user meet-ups and conferences, and in general the community is very diverse and welcoming. What is it like in Bangalore? Do you have many meet ups locally, or do you usually get information about these things online?
There are many meet-ups happening in Bangalore. I believe they are great places to learn from each other, but unfortunately I haven’t been able to participate in such meetups. And hence my knowledge I get is from r-bloggers which I have subscribed to get daily dose of knowledge.
Ah, that I can empathise - I’ve learnt so much from reading user contributions on r-bloggers myself. Thank you for the really interesting and informative chat, Abhishek. Finally, to wrap things up - have you got any personal tips or advice on learning R or data science for new-comers hoping to enter the industry?
My advice to the people starting out is to start using R in practical application and not just limited to courses. Once you start using R, the entire R community will be there to help you out!
Awesome, I totally agree. Thanks again Abhishek for sharing your experience and insights, I really enjoyed this chat!
End Notes
If you enjoyed this post, you might also like this other post in my “Data Chats” series, where I spoke with Avision Ho, a Senior Data Scientist in the UK Government.
There will be more of these “Data Chats” coming in the future. If you’d like to share your experience or an interesting project that you’re working on, I would definitely love to hear from you - in which case please leave me a message below!