I received an ArbotiX microcontroller from Trossen for X-mas.
I purchased an 11.1v Lipoly battery and a snazzy charger as was recommended somewhere, however Lipoly makes me nervous and I would like to get a low-voltage protection unit for it (the battery). Unfortunately, all I find are units that are intended for R/C airplanes that need to be connected to throttles and ESC's and whatnot (I don't even know what ESC is..).
Does anyone know of some sort of small, more generic, module that cuts the power to protect the Lipo battery from under voltage conditions?
How do other's with ArbotiX controllers do it?
// battery depleted, turn off servo torque.
It's not entirely ideal, I typically run a high threshold at startup (like 10V), and then stop at something like 9.6V during run time. I haven't had a problem with the batteries, but YMMV, as always, pay attention when using LiPOs, it's not fun to burn your house down. EDIT: You can download a text version of this sketch from our robocontroller google group (http://robocontroller.googlegroups.com/web/VoltTempMonitoring.pde?gsc=JT16YBYAAABKX0rokxtGhqz kpiGr8T7yGoGK_5p_OafYrMU8tWhKsg).
Occasionally, Issy will slump over prematurely, when his load rises too much, so further filtering may help. This example uses NUKE, and also shows how to collect servo temperatures as well.
I'd be interested to know of any hardware cut-offs that people like for such a job.
Thanks for the sketch and info, Fergs. That will help a lot.
It just occurred to me - Doesn't the Bioloid Premium Kit come with a Lipoly battery pack? I wonder if that has some sort of built-in hardware protection? If it does, that might make it the ideal pack for the Arbotix too. It might be useful just to look at how they do it, at any rate.
I was looking for the same bit of hardware and found (see link) a promising tutorial on Society of Robots but do not feel confident enough to put it all together (safely). It does sound promising as it is a total cut-off.
I ended up purchasing the following item. Maximum discharge of only 5A.
I would still feel a lot better if there was solution that has been tested and give confidence in being a good fit for robotics.
A cheap (4$) and small solution is to use a 3S battery monitor (http://www.unitedhobbies.com/UNITEDHOBBIES/store/uh_viewItem.asp?idProduct=7223&Product_Name=Hobby_King_Battery_Monitor_3S). It start beeping when the voltage drops below 9v. Not perfect or 100% safe but you'll get a warning though.
Maybe replacing the buzzer (or in addition to the buzzer) with a little electronic circuit and a relay for complete cut-off? Just a thought..
A cheap (4$) and small solution is to use a 3S battery monitor (http://www.unitedhobbies.com/UNITEDHOBBIES/store/uh_viewItem.asp?idProduct=7223&Product_Name=Hobby_King_Battery_Monitor_3S). It start beeping when the voltage drops below 9v. Not perfect or 100% safe but you'll get a warning though.
9v would be too low IMHO. Many lipo chargers won't even charge a battery that is under 3v per cell, including the Triton2.
I would hope that is correct, as 9.5v is a much better time to get an alarm. For $4, it's worth picking up couple and test.
If I made it a little bigger, I could incorporate a full warning/cutoff into my upcoming Bioloid power board... It uses a pair of MOSFETs to connect/disconnect the batteries, and it wouldn't be hard to add a really small microcontroller that sensed battery voltage (using a resistor divider) and cut them off at an adjustable voltage level.
Might be just one of my phobia's, but i'm not too keen on software handling power cut-off for lipo's.
Unless there's some sort of auto shut-off in case of problems (i.e. power is only turned on by the controller, it's off by default if the microcontroller pin is low, in combination with a WDT).
Besides that, it seems easy enough (and cheaper!) to just do cut-off in hardware. If you need a simple hard on/off, a small comparator with a voltage reference and a FET should do. You could still adjust reference voltage, albeit not in software..
It might be simpler for someone who has a good deep practical understanding of electronics, but I'm not that person. I personally feel much more comfortable with a software solution, because software is something I understand at the deepest level.
I haven't been able to get the LTC4412 work the way it is supposed to - when you pull wall power, there's enough of a power blip to reset my gumstix. At this point, I'm seriously considering replacing it with a small micro-controller, and since I want one onboard anyways to handle the Lipo cutoff, I'm just going to use one.
I agree, the software solution isn't optimal -- and really needs to be replaced. However, it works for the moment because walking bots like this are very experimental (they get hung up on things so frequently, that you aren't just gonna let it free roam), and the shut-down code is in the same loop that runs the walking engine. If the main loop craps out, so does the walking, and the bot will just stand there -- which should prompt the owner to ask "What the...?"
I didn't mean to offend either you or Inxfergy, Jon, I just wanted to state my concern. Apologies if it came across that way, to both of you!
Jon, if you want a sofware solution, maybe you could use a FET that's turned on by the controller to allow power into the system. A simple pushbutton could be put 'in parallel' with the FET, only supplying power to the micro that controls the lipo protection. First thing it does on power-up is check battery voltage, and if high enough, turns a pin high, which rolls on the FET, thus supplying power to the rest of the system.
A simple WDT routine should provide plenty of security for anything that goes wrong, you never know if user error puts a big enough glitch in the power line to make the controller act erratically for a while.
The microcontroller will have full control of switching on and off the batteries, and of course it will have different color LEDs to show status. Certainly if you try and power it up with the battery voltage too low (and no wall power), it will not enable power to the rest of the system.
Once I get the logistics worked out, I'll do another post here describing how it will all work.
I have a small Propeller/LCD module that I would like to incorporate into my bot, along with the Arbotix controller. I am using a 11.1v Lipo battery for the Arbotix at the moment.
I would like to power the Propeller board with the same power supply, if possible, to save space. The Prop board needs 5 volts.
Does the Arbotix board provide a 5v line that I can use to power the Prop? I don't really see one. If not, then does anyone have any advice on providing a SMALL power source for the Prop?
It really depends on how much power the Propeller/LCD draws. I typically just throw on a Dimension Engineering switching regulator if its anything under half an amp.
You probably don't want to run anything major off the Arbotix regulator - its already pretty hot just powering what it does.
I have a couple of these little boards and they work quite well. 5v at 1A switcher for around $7 assembled.
7805 with a couple decoupling caps would do the trick. Downside is it's just burning excess power, upside is that it doesn't introduce any switching transients on the power lines.
Doesn't get much smaller than that, if you take the SMT part.
You guys are great. Thanks for the info. I think I am going to try out the Futurlec product. It just seems simple and plug-n-play like. If it doesn't work out on this bot, it will be useful for other projects.


text:
A cooler century? Wait and see
By Sandi Keane | 26 May 2013, 3:28pm | comments |
New research suggesting the Earth may be warming a little more slowly than expected does not mean climate change is a false alarm, reports Alex Kirby from Climate News Network.
Melting ice on ice-cap.
SEVERAL LEADING authorities on climate change have given a guarded welcome to research suggesting the Earth may warm more slowly than scientists had expected.
An international research team led by Dr Alexander Otto of the Environmental Change Institute (ECI) at the University of Oxford, UK, has reported its conclusions in the journal Nature Geoscience.
The Earth is now warming faster than at any time in the last 11,000 years, but scientists do not understand clearly why the atmosphere has warmed less than they expected over the last decade or so, and more slowly than in the 1990s.
The researchers looked at how the last decade would affect the long-term sensitivity of the climate to a doubling of atmospheric concentrations of carbon dioxide, and suggest the Earth will warm more slowly than expected this century.
But even though the heating may be slower, giving politicians more time to act, the scientists still believe temperatures will eventually climb to 4°C above pre-industrial levels, well above danger levels.
Clive Hamilton is professor of public ethics at Charles Sturt University, Australia and author of: 'Requiem for a Species - Why We resist the Truth about Climate Change'. Published in 2010, it says climate change will bring about large-scale, harmful consequences for life on Earth which it is too late to prevent.
Professor Hamilton told Climate News Network:
"The study should certainly be taken very seriously, although we will need to see over the next year or two how well it stands up to scrutiny. Let's hope they are right; it's the first bit of good news we have had a for a long time."
Too soon to say
Dr Geoff Jenkins is the former head of climate change prediction at the UK Met Office's Hadley Centre for Climate Prediction and Research. He told the Network:
"Until we actually understand why the global temperature rise has paused over the last decade – and we don't yet – it's still guesswork what the implications are for climate sensitivity and hence the future projections.
If the pause is a 'correction' to a naturally-boosted rise over previous decades, then maybe the climate sensitivity is indeed lower than the Intergovernmental Panel on Climate Change's central estimate and future rises will be towards the lower end of the range.
But if the pause is a temporary natural offset to the man-made rise, then this offset would disappear at some stage and put us back on the central estimate track. I don't see how we can say which it is until we understand the reason for it."
Many governments have promised to try to limit atmospheric warming to no more than 2°C above pre-industrial levels, believing that threshold will prevent dangerous climate change.
Previous estimates showed that would require global greenhouse gas emissions to peak by 2020 and then fall, a prospect that seemed out of reach while emissions continue to rise fast.
Another member of the research team is Professor Myles Allen, also of ECI Oxford, who said:
"Prior to this, a lot of us were feeling quite gloomy that whatever we did, we'll go over 2°C. It's not a foregone conclusion any more."
That means the protracted UN climate negotiations could still produce a workable agreement.
If a deal enters force in 2020 and leads to rapid emissions cuts, "there remains a good chance we could hit the 2°C target", Professor Allen says.
Models 'pretty accurate'
Explanations for the current pause are the masking effects on greenhouse gases of pollution, the seasonal weather-disrupting El Niño phenomenon, and slight variations in the Sun's output. It also appears that much of the heat has been going, not into the atmosphere, but into the oceans.
What Dr Otto and his colleagues have done is to estimate how much warming, with rising emissions, the world is likely to experience by the time carbon dioxide levels have doubled since pre-industrial times. Their most likely estimate is 1.3°C, not the rise of up to 1.6 °C suggested by previous studies.
"In the short term, there is maybe a bit less warming than expected," said Dr Otto. But he told the U.K. Guardian that the findings of his team's research did not constitute evidence that climate change had stopped.
Dr Otto said:
"Given the noise in the climate and temperature system, you would need to see a much longer period of any pause in order to draw the conclusion that global warming was not occurring."
Such a period could be as long as 40 years. The team's study had found that most of the climate change models used by scientists were "pretty accurate".
On such a contentious subject some scientists would argue for caution in evaluating the research. A rise of 4°C in global average temperatures could mean far higher regional rises. The oceans are likely one day to give up much of the heat they are now absorbing, which will return to the atmosphere.
So warming could accelerate fast and unpredictably. And on present trends, fossil fuel use is likely to go on increasing for several decades at least.
There are qualifications and conditions in the research, "ifs" and "buts" which suggest there may be unknown unknowns ahead. Its conclusion is that the world is still warming — much too fast for comfort.
ENVIRONMENT SCIENCE
2 degrees target Alex Kirby atmospheric concentrations of carbon dioxide Charles Sturt University climate change Climate News Network Clive Hamilton Dr Alexander Otto Dr Geoff Jenkins El Niño
Recent articles by Sandi Keane
Australia's Family Court system failing to protect children
4 July 2021, 1:00pm Six years of fighting Family Court battles to try and protect her son from abuse ...
CQ University staff denied vote on pay-cut option ahead of massive job losses
25 May 2020, 4:30pm Central Queensland University (CQU) Vice-Chancellor Professor Nick Klomp is ...
To the CQ University Vice-Chancellor: Save our jobs and not just yours
30 April 2020, 4:30pm An anonymous group of academics from Central Queensland University has voiced ...
view all 1,005 articles by Sandi Keane

redpajama_set_name: RedPajamaCommonCrawl


A logging boom has hit Tanzania's tourist-drawing Kilimanjaro region, reducing the region's native forests, hitting rainfall and leading to unusually high temperatures.
The increasingly extreme weather has come as a surprise to people who live a stone's throw from one of the world's heritage sites, and who had been used to a cold, misty climate.
Forests play an in important role in maintaining natural water cycles around Mt. Kilimanjaro, but the region's forests are disappearing as a result of growing demand for timber across the country and unmanaged logging of trees for timber and charcoal making, residents in the region say.
Particularly hard hit are the region's "Erica" trees, which thrive (8,850 feet) above sea level and that local people believe are crucial to helping collect cloud moisture. The trees, now on the verge of extinction, according to people in the village of Machame, also provide traditional medicine used to treat fever and diarrhea.
special measures of protection of children in this type of police action.
Jubilations are continuing throughout Ogoniland after the Ogoni people in southern Nigeria, today, Thursday, 2nd of August declared political autonomy.
In a live broadcast on a newly established radio station: Voice of Ogoni, MOSOP President/Spokesman, Dr. Goodluck Diigbo vowed that:"By this declaration of political autonomy, we, the Ogoni people are determined to enforce the United Nations Declaration on Rights of Indigenous Peoples, without fear or retreat," Diigbo said.


text:
View The Team
View All Team Members
Scott Goudeseune Chief Executive Officer
Cedric X. Bryant, Ph.D., FACSM President and Chief Science Officer
Alex Mirnezam Chief Financial Officer
Graham Melstrand Executive Vice President, Community Health and Wellness
Amanda Cass, S.P.H.R. Chief Operating Officer
David Fischer Senior Vice President, Online Business and Technology
Sarah Beavins, M.S. Vice President of Sales and Marketing
Lauren Shroyer, M.S. Vice President of Product and Innovation
Chris Goudeseune, P.M.P. Vice President of Operations
David Nixon Chair
Laurie Whitsel, Ph.D., FAHA Vice Chair
John Lally Secretary
Jim Forson Treasurer
Scott Alarcón
Kimberly Wells Director Emeritus
Scott Goudeseune
Gregory Degnan, M.D.
Fred Hoffman
Tuoyo Louis
Antonio S. Williams, Ph.D.
Jay Blahnik
Becky Roseberry
Len Kravitz, Ph.D. EXERCISE PHYSIOLOGY
James J. Annesi, Ph.D. BEHAVIORAL SCIENCE
Cedric X. Bryant, Ph.D. President and Chief Science Officer
Dominique Adair, M.S., R.D. Nutrition
Lance C. Dalleck, Ph.D. Exercise Physiology/Exercise Programming
Nicholas A. Dinubile, M.D. Sports Medicine/Orthopedics
Avery Faigenbaum, Ed.D. Youth Fitness
Jinger S. Gottschall, Ph.D. Biomechanics and Neurophysiology
Sabrena Jo, M.S. ACE Liaison to the Scientific Advisory Panel, ACE Senior Director of Science and Research
Larry Kenney, Ph.D. Exercise Physiology/Environmental Physiology
John P. Porcari, Ph.D. Exercise Physiology/Research
James S. Skinner, Ph.D. Exercise Physiology/Special Populations
Alison Steiber, Ph.D. Nutrition
Antonio S. Williams, Ph.D. Branding/Consumer Behavior
Ted Vickey, Ph.D. FITNESS TECHNOLOGY
Chris Freytag Senior Advisor, Health & Fitness
Chris McGrath Senior Advisor, Personal Training
Jonathan Ross Senior Advisor, Personal Training
James S. Skinner, Ph.D. Senior Advisor, Exercise Science
Ted Vickey Senior Advisor, Fitness Technology
Cedric X. Bryant, Ph.D.
President and Chief Science Officer
As President and Chief Science Officer, Cedric X. Bryant, Ph.D., FACSM, stewards ACE's development of strategies to deliver exercise-science and behavior-change education in ways that are engaging and compelling, recruiting more people to become exercise professionals and health coaches and equipping them for growth in their respective fields. He's responsible for driving innovation in the area of behavior-change programming, overseeing the development of programs that ACE-Certified Professionals® can utilize to help people adopt and sustain healthier lifestyles. Furthermore, he leads ACE's exploration of how science-based programs and interventions appropriately integrate into healthcare and public health. Dr. Bryant is also responsible for ensuring the scientific accuracy of ACE-commissioned studies, publications and all other materials that ACE creates. He represents ACE as a national and international presenter, writer and subject-matter expert, and highly sought-after media spokesperson. Finally, Dr. Bryant shares his expertise as a member of the Institute of Medicine's Obesity Solutions Roundtable, the National Association of Physical Literacy's Advisory Board, the Prescription for Activity Task Force's Leadership Council and Executive Committee, Exercise Is Medicine's Credentialing Committee and the International Consortium for Health & Wellness Coaching's Council of Advisors. He earned both his doctorate in physiology and master's degree in exercise science from Pennsylvania State University, where he received the Penn State Alumni Fellow Award, the school's highest alumni honor that is given to select alumni who are considered leaders in their professional fields. Dr. Bryant and his wife, Ginger, are avid golfers and the proud parents of four physically active young men.
Meet the other Scientific Advisory Panel members
Len Kravitz, Ph.D.
James J. Annesi, Ph.D.
Dominique Adair, M.S., R.D.
Lance C. Dalleck, Ph.D.
Exercise Physiology/Exercise Programming
Nicholas A. Dinubile, M.D.
Sports Medicine/Orthopedics
Avery Faigenbaum, Ed.D.
Youth Fitness
Jinger S. Gottschall, Ph.D.
Biomechanics and Neurophysiology
Sabrena Jo, M.S.
ACE Liaison to the Scientific Advisory Panel, ACE Senior Director of Science and Research
Larry Kenney, Ph.D.
Exercise Physiology/Environmental Physiology
John P. Porcari, Ph.D.
Exercise Physiology/Research
James S. Skinner, Ph.D.
Exercise Physiology/Special Populations
Alison Steiber, Ph.D.
Branding/Consumer Behavior
Ted Vickey, Ph.D.
Science-based research and expert reviews
Experts from the Scientific Advisory Panel investigate the industry's latest products, trends and research


text:
Home > Europe > Southern Europe > Portugal > Tavira
Alphabetical Hottest Most Popular
Majorca 17
Fuerteventura 20
Gran Canaria 20
Lanzarote 19
Crete 8
Mauritius 24
Maldives 28
Cancun 26
Sunny Beach 4
Corsica 11
Punta cana 25
Zante 13
Marrakesh 23
Flights to Tavira
Tavira: Forecasts
Tavira, Portugal: Live Weather
Live weather in Tavira
The latest and today's weather in Tavira, Portugal updated regularly
UK Time: 16:43 GMT
Local Time: 16:43 WET
17°C (63°F)
7mph (11kmh)
Temp feels like: 18°C (64°F)
Length of Day: 9h 56m
Pressure: 30" (1031 hpa)
Visiblity: 10 miles (16 km)
Tavira Forecast Tavira Averages
Averages January
Alphabetical Hottest
Tavira IMAGES
Latest Tavira Holiday Reviews
my many visits to Tavira
Mainly very nice - even in February
More Tavira Reviews
Historic Temperatures for 17th January in Tavira
Average High
20°C (68°F) (2018)
Average Low
6°C (43°F)
3°C (37°F) (2003)
What's the weather like in Tavira?
Situated on the south coast of Portugal, Tavira boasts a Mediterranean climate with long, hot summers and mild, rainy winters. Part of the Algarve region of the country, the resort area sees moderate temperatures all year long, making it a popular resort spot for travelers from all over the world. While many in the UK and other parts of Europe are trudging through cold autumn and winter days, the resort offers a welcome break from the bleak weather.
Summer is the most popular time to visit, but spring and autumn see plenty of holiday visitors to. Its location means it misses the northern rains and cold air thanks to the Estrela Mountains in the middle of the country that keep those weather patterns from moving south. The resort does however get the weather patterns coming up from northern Africa and across the Mediterranean. This includes rain and humidity.
Sea Temperature
In Tavira, the Gilao River meets up with the Atlantic Ocean. The ocean water temperature remains consistently warm throughout the year, ideal for swimming, sunbathing, and water sports. Dating back to the 8th century, the resort has been invaded, destroyed, and rebuilt numerous times. A picturesque bridge crosses the River Gilao, connecting the two sides of the city. The city is home to over 37 churches that you can visit and enjoy the beauty and architecture.
Thanks to the year-round warm temperatures, you can enjoy the beach any time of the year. The beach is separated from the town by salt pans and only accessible via a ferry or over a footbridge in nearby Santa Luzia and Acoteias. Because of the boom in tourists in recent years, the town has added numerous golf courses and a large shopping centre.
Spring weather in Tavira
The average daily temperatures for the spring months range between 14°C and 17°C (about 57°F to 63°F). During the months of March, April, and May, the lows drop down to 9°C to 12°C (around 48°F to 54°F), making for some cool nights, especially near the water. The highs get up to 18°C to 22°C (about 64°F to 72°F), similar to temperatures during a UK summer.
During the spring months, you can expect 9 to 12 hours of sunshine each day, plenty of time to get out and about to explore the area.
The rainfall starts to decrease rapidly this time of the year, ranging between 21 mm to 39 mm. Typically, the rain falls over 9 to 12 days in the month, giving you a good chance of more sunny days than rainy ones while you're there. The ocean water starts to warm up during this time, with an average temperature of 16°C to 18°C (around 61°F to 64°F).
Summer weather in Tavira
As summer rolls around, the temperatures continue to rise and the rainfall chances decrease, making this prime tourist season. You'll see an average daily temperature for June, July, and August between 21°C and 24°C (about 70°F to 75°F). During the evening hours and nighttime, the lows get down to 16°C to 18°C (around 61°F to 64°F), still very pleasant temps. The highs jump up to 25°C to 29°C (about 77°F to 84°F), plenty warm to get outside and enjoy the days. July boasts the hottest temperatures, highest ocean temperatures, and longest days.
The rainfall drops significantly during the summer with an average of 1 mm to 8 mm. July sees a scant 1 mm of rain. The rain falls over 2 to 5 days, so any rain that does fall is light and short-lived.
You'll get plenty of sunshine during this time, with 13 to 14 hours of daylight on average each day. The Atlantic's water temperatures sit between 20°C and 22°C (around 68°F to 72°F).
Autumn weather in Tavira
The months of September, October, and November see average daily temperatures between 15°C and 22°C (around 59°F to 72°F). If you visit now, you'll have less crowds to deal with and still get warm temperatures and low rain chances, especially early in the season. During the evening and early morning hours, the lows drop down to 11°C to 17°C (about 52°F to 63°F).
The highs still reach up to 19°C to 27°C (about 66°F to 81°F), still plenty warm for outdoor activities.
In September, the average rainfall is only 14 mm but by November, the average amount jumps to 86 mm. The rain falls over an average of 5 to 12 days.
You can expect around 8 to 10 hours of sunshine each day, still more than enough time to try outdoor and active pursuits.
With the still-warm ocean temperatures, you can swim and enjoy watersports well into the autumn. The average water temperature sits between 19°C to 22°C (about 66°F to 72°F).
Winter weather in Tavira
Unfortunately, winter in Tavira means the coldest temperatures and the most rainfall in all the year. However, when you visit, you'll still get better weather than the UK and many other European countries during this same season. The average daily temperature is consistent, between 12°C and 13°C (about 54°F to 55°F). You'll still see highs reach up to 16°C to 17°C (around 61°F to 63°F), with lows dropping down to 8°C to 9°C (around 46°F to 48°F). January sees the coldest temperatures.
The rainfall chances increase significantly this time of the year, with December seeing the most rain at 94 mm. The other months have 72 mm to 78 mm of rain falling on average. The number of rainy days is 13 to 14 on average per month.
This area only gets about 6 to 7 hours of daylight each day during the winter. The ocean water has started to cool down too, with an average temperature of 16°C to 18°C (about 61°F to 64°F).
Weather Hazards in Tavira
Fortunately, Tavira doesn't experience many weather hazards or extreme weather. During the summer months, if the Sirocco winds blow in from the Sahara and North Africa, the high temperatures can reach up to the high 30s. As the winds travel across the water, they pick up moisture and bring it onshore in the form of high humidity and stifling temperatures. These extreme high temperatures can cause problems for visitors outside including sunburn, heat exhaustion, and heat stroke.
Though extremely rare, earthquakes are possible in the area as well. The last one was back in 1755, when a magnitude 9 earthquake struck, decimating the town of Tavira, and much of the area of Algarve. The earthquake, as well as subsequent tsunamis and aftershocks, caused tons of damage to buildings and infrastructures.
Thankfully, these weather hazards are unusual and for the most part, you'll get amazing weather during your stay. If you're concerned about weather hazards during your holiday, consult the local forecast to get a good idea of what to expect.
© 2020 Holiday Weather
Holiday Weather limited | 5 Chapel mews | Hove | BN3 1AR
Your Holiday Weather Settings
Show temperature in: °F °C
Show distance in: miles km


text:
Q: Find the Laplace transform? Find the Laplace transform of $f(t) = 1 + (1 - t)u_1(t) + (t-2)u_3(t)$.
Obviously each term of the function must be of $f(t - c)u_c(t)$ or be clearly transformable. Thus we have for our first term simply $\frac{1}{s}$. Our second term has been shifted by $f(t) = -t \to f(t - 1) = 1 - t$. Our third term has been shifted by $f(t) = t + 1$ and so $f(t - 3) = t - 2$.
Now I have to transform it. I get $$G(t) = \frac{1}{s} + e^{-s}(t - \frac{t^2}{2}) + e^{-3s}(\frac{t^2}{2} - 2t)$$
I don't know if this is correct. I used transform #28 from the following table : http://tutorial.math.lamar.edu/pdf/Laplace_Table.pdf

A: $f(t) = 1+u_1(t) - t u_1(t) + t u_3(t) - 2 u_3(t)$.
You need to take care with multiplication by $t$. The rule is ${\cal L} (t \mapsto t f(t))(s) = - \frac{d \hat{f}(s)}{ds} $.
Then (abusing notation slightly)
\begin{eqnarray}
\hat{f}(s) &=& \frac{1}{s} + \frac{1}{s} e^{-s} - (- \frac{d}{ds} (\frac{1}{s} e^{-s})) + (- \frac{d}{ds} (\frac{1}{s} e^{-3s}))-2\frac{1}{s} e^{-3s} \\
&=&  \frac{1}{s} + \frac{1}{s} e^{-s} - \frac{(s+1)}{s^2} e^{-s} + \frac{3s+1}{s^2} e^{-3s} -2\frac{1}{s} e^{-3s} \\
&=& \frac{1}{s} -\frac{1}{s^2}e^{-s} + \frac{(s+1)}{s^2} e^{-3s}
\end{eqnarray}
When you apply the transform, all '$t$'s should disappear.

redpajama_set_name: RedPajamaStackExchange


Let us take the case of project manager AS plays the job portals, his last two, home and car EMIs have lapsed and he's considering asking his dad for a loan. Anil initially worked in a high-end technology firm and moved into management two years ago. Each new employer hired him for his impressive technical and personal skills. But his delivery track record finally caught up with him and the he was fired five months ago. With six years experience spanning eight companies and a salary of Rs 11 lakh per annum, AS choices are limited.
Opportunities for employment and growth today are tremendous, as companies in every industry retail, software, advertising, airlines, telecom, manufacturing, BPO, films, media, architecture, you name it expand with unprecedented abandon.
The overall growth of the industry has led to a manpower crunch has resulted in undeserved and unsustainably high salaries. It's like the time when unions pushed salaries up and every sweeper in the Thane Belapur industrial area earned Rs 20,000 per month! But then companies got hit, the entire belt collapsed, and people were left jobless.
It is possible that, at some point, the knowledge workers salary boom will come to the same disastrous end.
It's not just performance one should also learn how to learn. Professionals need to keep up with technology, grow people skills, and build a network. They should learn how to manage — not just subordinates but also peers and boss. They must be careful not to burn out.
Build savings and Keep needs under control so that one is not got caught in the consumer trap, fell prey to brands and hype, became slaves of their iPods, laptops, expensive phones, home and car loans and live on credit card debt till shake-out time, when they found themselves in big trouble.
In the fashion industry you take several seasons to learn and observe trends, buy merchandise and eventually review whether your decisions held good. So, it takes 2-3 years for a person to be gauged by the organization and himself / herself assessing own potential. Leaving a company in one year is good to no one.
One of the highest-paid professionals in the country is a case study worth following. Initially a hands-on salesperson, he worked with tires, then PCs, then music. At every step, he picked up new products and turned them to gold. When he took over RPG's Spencer's, he broke new ground, established the Food World and Music World brands and chains of stores, set standards for modern retail in India, and created a team of people who, 10 years down the line, are pleasantly surprised to find themselves leaders in a burgeoning industry.


Any non-profit organization's business members have needs for exceptional and reliable voice and data. Partner with VoxNet and provide your members with valuable offerings and services.
Your Association can be a partner in providing member value by announcing a special partnership with VoxNet specifically for your membership.
Your members will receive a special membership discount and incentives for VoxNet services, making their voice and data services incredibly affordable. We'll aid your efforts with promotions, joint marketing programs, and a consultative, direct sales force.
Contact us for more information today and one of our consultants will contact you within 24 business hours.


Thank you for your participation at iBelieve 2016!
Meet top IBM i experts in two locations for a day of education and networking.
Now in its fourth edition, iBelieve 2016 will happen on November 3 and will have events in Dallas, USA, and in Paris, France. This is your chance to learn from industry leaders on key topics related to IBM i management and modernization, and to get the latest updates straight from IBM.
Join us for a day of learning and meeting new people who are also passionate about IBM i!
and community events in this forum.
Like the iBelieve Facebook Page today!


text:
package tz.gzu.oip.sp.core.dto;

public class PropertyPairDto {
    private String name;
    private String value;

    public PropertyPairDto(String name, String value) {
        this.name = name;
        this.value = value;
    }

    public PropertyPairDto() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}

redpajama_set_name: RedPajamaGithub


text:
Александър Иванов Грубчев (понякога Групчев) е български военен деец, подполковник, участник в Балканската (1912 – 1913) и Междусъюзническата война (1913).

Биография
Александър Грубчев е роден на 15 август 1862 г. в Охрид, Османска империя. Принадлежи към големия род Групчеви. Постъпва във Военното на Негово Княжеско Височество училище и е произведен в чин подпоручик. Служи в 24-ти пехотен черноморски полк, в който като капитан към 1895 г. командва 2-ра рота и в 23-ти пехотен шипченски полк. По време на Балканската (1912 – 1913) и Междусъюзническата войни (1913) служи в 38-и пехотен полк. Убит е на 24 юни 1913 година при връх Букова глава, Трънско, където е и погребан.

Военни звания
 Подпоручик (1 ноември 1885)
 Поручик (17 април 1887)
 Капитан (2 август 1891)
 Майор (2 май 1902)
 Подполковник

Бележки

Източници

Български подполковници
Български военни дейци от Балканските войни
Загинали през Междусъюзническата война
Родени в Охрид
Български офицери от Македония
Александър
Седми випуск на Националния военен университет "Васил Левски"

redpajama_set_name: RedPajamaWikipedia


text:
Rauisuchus eram Pseudosuchia basais que habitaram o Período Triássico, no Andar Carniano (237-227 milhões anos atrás) e pertenceram a uma linhagem próxima a dos crocodilos atuais. Seus fósseis foram encontrados na Região Sul do Brasil, no município de Santa Maria, RS.  Estes répteis foram os predadores de topo da cadeia alimentar, alimentavam-se de outros répteis e talvez caçavam os primeiros dinossauros.

Coleta e nomeação
 O espécime-tipo foi coletado entre 1928 e 1929 na Sanga do dente , durante a expedição do paleontólogo alemão Friedrich von Huene no Rio Grande do Sul. Seu nome foi dado em homenagem ao Dr. Guilherme Rau, que auxiliou von Huene na coleta do material.
 O lectótipo foi designado em 1976 por Krebs- BSPG AS XXV 60–68, 71–100, 105–119, 121. O material de Rauisuchus é composto por elementos desarticulados de: pré maxilar direito, posorbital direito, esuqamosal esquerdo, jugal esquerdo,pré angular e angular, pterigóide direito, nasal direito, ambos spleniais, surangular esquerdo, costelas, arcos hemais, escápula direita, púbis esquerdo, tíbia direita, fíbula, astrágalo e osteodermas.
 Até o momento, o único material referido a Rauisuchus é o próprio lectótipo.

Classificação
  As relações de parentesco (filogenéticas) do grupo ao qual o espécime pertence, Rauisuchia, ainda não são bem definidas, sendo necessários maiores estudos envolvendo o grupo.

 Lautenschlager, S. & Rauhut, O.W.M. (2015, 01 10). Osteology of Rauisuchus tiradentes from the Late Triassic (Carnian) Santa Maria Formation of Brazil, and its implications for rauisuchid anatomy and phylogeny. Zoological Journal of the Linnean Society (173), pp. 55-91.. https://doi.org/10.1111/zoj.12196

Archosauria
Répteis do Triássico
Espécies fósseis descritas em 1936


text:
Directory of Artists
Leonia Arts Weekend – OCT 5 & 6, 2019
Leonia Arts Speakeasy – JAN 20, 2019
Add Me to Directory of Artists
Featured Artist Interviews
Leonia's Artistic Legacy
Suzanne Pancrazi Memorial Scholarship
Directory Category: Musician
Alan R Kay
Clarinetist Alan R. Kay is Principal Clarinetist and an Artistic Director of Orpheus Chamber Orchestra and serves as Principal Clarinet with New York's Riverside Symphony and Little Orchestra Society. Mr. Kay's honors include the Classical Recording Foundation Samuel Sanders Award, the C.D. Jackson Award at Tanglewood, a Presidential Scholars Teacher...
Barbara Mallow
Barbara Stein Mallow, cellist, is recognized as a distinguished chamber musician, recitalist and soloist. From her early years she has been an accomplished pianist and was twice winner of the New York Philharmonic Young Composers Award. A graduate of Yale School of Music with Bachelor and Master degrees, she was...
Carol Crittenden
Originally from Teaneck NJ, Carol never expected she'd return to the area to make her home right next door in lovely Leonia, this gem of a town! After many years of being a professional Actress, Carol's focus in recent years has been on her original music and singing projects. Her...
Cenovia Cummins
I have lived in Leonia for almost 20 years. I'm a professional violinist / musician / composer working mainly in the musical freelance scene in NYC. I do anything from Broadway shows, classical Orchestra concerts to backing up famous artists in the industry along with recording TV themes, movie soundtracks,...
I am a violist whose career includes work as an orchestral musician, chamber music artist, and teacher. I currently hold the position of Principal Viola of the New York Philharmonic, a post I have held for the past 25 years. I am a member of the New York Philharmonic String...
Daryl Goldberg
Daryl Goldberg, cello, has been praised by the New York Times for her 'musicality, skill and commitment'. She performs frequently at Carnegie Hall and Lincoln Center with such orchestras as American Ballet Theater, Little Orchestra Society, The New York Pops, and Broadway shows. She is a member of the New...
I am a life-long resident of Leonia. My style of painting is in the abstract expressionist watercolors. I studied with Pamela Lovell who lived in Leonia. davidbaronartgalleryllc.com
Eric Weidman
Multi-woodwind artist Eric Weidman has maintained a busy freelance career in NYC for over 30 years. Performances with ABT, New York Philharmonic, NJ Symphony, Bard Music Festival; with Elaine Stritch, Patti Lupone, Bernadette Peters, Barry Manilow, Stephen Colbert, Brian Stokes Mitchell, Marin Mazzie. Countless Broadway and Off-Broadway shows including Nunsense,...
Francis Gallinagh
I am a visual artist and musician (electric bass) and have been living in Leonia since 1999. The majority of my visual artwork consists mostly of mixed media: graphite, ink, watercolor, and some acrylic paint.
Gregg Edelman
Originally from Chicago, I moved to the NYC area in the 1980's to pursue an acting career. Since then I've been part of the NYC acting community, performing in television, movies, and on stage. I've been in the casts of many stage productions including City of Angels, Cabaret, Into The...
Add me to the Artist Directory
Search Directory by Artist Category:
Actor (2) Artisan (5) Arts Organization (8) Ceramics (1) Composer (2) Conductor (2) Crafter (1) Designer (5) Drawing (4) Fiber Art (1) Fiction (3) Furniture (2) Graphic Design (3) Improvisation (1) Jewelry (1) Mixed Media (7) Musical Theater (2) Musician (20) Non-Fiction (2) Painting (14) Performing Artist (23) Photography (8) Playwright (1) Poetry (3) Product Design (1) Puppeteer (1) Sculpture (3) Silversmith (1) Songwriter (1) Visual Artist (25) Vocalist (4) Writer (7)
Leonia Arts c/o Leonia Public Library
227 Fort Lee Road
Leonia, NJ 07605
send an email to Leonia Arts
© 2020 Leonia Arts. All Rights Reserved. Theme customization by glassfoundry.


text:
Memorial opening hours: 8AM to 5PM. Open all days(except private evening events)
About Our Memorial
Commitment to Donors
Visiting Exhibits
RFI/RFP
"Her" story for the Generations
"Her" story for the Generations
The Women's Memorial's Education Outreach Program has a mission to "let the generations know that women in uniform also guaranteed their freedom." Our approach to that mission is multifaceted.
Tours of the Memorial are available to teach men, women and especially school-aged children more about the role women have played through their rich heritage of service and patriotism throughout American history.
The Women's Memorial also offers a variety of other resources about America's servicewomen via this site. In addition to a bibliography compiled by the Memorial's curatorial staff, the Web site has historical articles, which include a timeline and theme articles for Black History and Asian-Pacific Heritage Months, current statistics on America's servicewomen and our Gift Shop offers the world's largest collection of books by and about America's military women.
Of course, we are always looking for new ways to tell "her"story to the generations, so visit often to stay up-to-date on what's new in Education Outreach. For more information on the Women's Memorial's Education Outreach Programs, please contact the Public Relations Department at 703-533-1155, 800-222-2294 or via e-mail at hq@womensmemorial.org.
Additional educational resources:
Education Kit
America's Military Women—Experienced, Educated and Empowered
Foundation Office
Women's Memorial Foundation
200 North Glebe Rd. Suite 400
The Women's Memorial
Our offices serve as a repository for the memorabilia of women who have served in or with the US Armed Forces from the American Revolution to the present time. Our historians and curators conduct seminal research on the history of servicewomen, placing their experience within its historical context.
©2017 Women's Memorial. All rights reserved.
You are donating to:
Your support is critical to the Foundation's mission of honoring the service of America's military women—past and present—and making their contributions to the nation's defense known to the public.
If you wish to register a Servicewoman please click here
If you wish to make a simple donation, or donate in honor or in memory of a Servicewoman, please choose one of the following:
Simple Donation Donate in Honor of Donate In Memory of
To send a notification of your donation, please enter the name and address (if known) of individual being honored:
Please Enter the name and address (if known) of the deceased:
Please Enter the name and address to whom a notification of your donation in memory of their loved one should be sent:


Interesting to revisit this 2010 report on cycling in Sooke written by a visiting blogger named Average Joe Cyclist. His conclusion after an eventful ride through town: "Sooke seems to be unaware of the existence of cycling tourists. After our near-death experiences, I think perhaps it's a good thing that Sooke is not actively encouraging cycling tourists – after all, cyclists' lives are in danger from the moment they come near Sooke."
Has much changed? Well, it's still daunting out there for cyclists on the fast track, but yes, as a matter of fact, it has and there's better reason nowadays to imagine a bright future for cyclists here in Motor City. True, the Galloping Goose connector trail and bridge has lost traction as the first of the Parks & Trail Masterplan's Class A priorities (championed back then by Mayor Evans and the District's Laura Byrne, who had the good grace to respond to Average Joe's points). Yet on other fronts, initiatives have been taken, more are coming and the seeds of a bike culture locally are sprouting fast.
* A decent and growing selection of bike racks can now be found around town thanks to business initiatives, Maywell Wickheim's handiwork and donations from the Sooke Slow Food Cycle.
* As per the directions of Sooke's remarkably bike-friendly Transportation Master Plan, multi-use trails now line Church and Wadams Way and they'll keep appearing as the District expands its connector road network.
* Commuter bike storage lockers are at the park-and-rides near EMCS courtesy Stephen Hindrichs and the Juan De Fuca Cycling Coalition (which has now merged with Transition Town Sooke).
* Cycling's huge tourism upside was showcased at last year's MBT Symposium at the Prestige Hotel - an event the town hosted thanks to the groundwork of Steve Grundy (a keen biker, chair of the Mayor's Advisory Panel on Economic Development and a VP at Royal Roads University) along with Councillor Maja Tait and Sooke Mountain Cycle's Lorien Arnold.
* The Sooke Slow Food Cycle, which I helped organize in 2011 and 2012 along with Lee and Stephen Hindrichs, Erik Bjornsen, Sinclair Philip, Bev England, Samm Port and a team of other volunteers, was a community building and tourism event initiated by Transition Sooke. It also had the founding-partner support of Sooke Food CHI, the JDF Cycling Coalition, the T'Sou-ke Nation, the Sooke Region Tourism Association and the District of Sooke. The turnout was modest both years, however we did generate significant media exposure for Sooke, promoted existing off-road routes, had a blast with liked-minded cyclists, and sent surplus cash to fund blueprints for the bike skills park along with other worthy initiatives: the EMCS Slow Food Garden, Sooke Food CHI, the Sooke Garden Club (to help fund a garden at the Sooke Hospice), and the Sooke Longboat Society.
* The District is now seeking matching funds of up to $360k from the BC government to create new cycling lanes around town - either in the town centre or perhaps along Sooke River Rd. to Meota Dr. as link to the Galloping Goose. Projects have to be completed within a year of application, so council opted not to pursue a larger grant that might have funded the aforementioned cycling/pedestrian bridge linking the Goose to the town's east-end trail network. Sooke's contribution will come from our share of the federal government's Gas Tax (ironically but happily enough).


March 10th - 6:30 PM - Book discussion of "You Know When the Men Are Gone"
Annual Conference - "Veterans and Families: Healing From War"
Presentation by MWP - "Mindfulness for Veterans, Their Families, and Their Service Providers"
Event honoring "April: Month of the Military Child"
"A decorated U.S. Army medic returns from Afghanistan and struggles to rebuild a relationship with her young son"
Mindful Warrior Project hosting small workshops and providing information on where to find us or how to bring us into your organization, post, agency, etc.
& providing the Wellness Area - acupuncture, massage, Reiki, etc.
1st 100 to RSVP (& attend) receive extra treats!


This little giraffe has been commissioned and waiting to be completed for over two months. Thank you, dear client, for your patience. The orange underpainting in the assorted canvases in the last post was the beginning. The canvas was completely covered with orange. Then a brilliant liquid acrylic turquoise blue was poured on. From there....this little guy was born. He's ready to go to his new home and get some well deserved lovin'.
I have about 14 painting requests lined up and not enough time to do it! It's a good problem to have and thank GOD I love to paint. Yesterday was a beautiful sunny Emerald Isle day and I knew ice was coming in by evening. SO, what better thing to do than lay all these canvases out, look at my notes for each one, label them on the back, and start some transparent underpainting/toning of the canvases. No doubt the neighbors were talking about the crazy lady in the cul-de-sac. Not so crazy....just having fun and doing my job.
It's a sunny day and I'm bebopping to country music and pouring liquid inks across a canvas to see what happens. This will be the underpainting of some sort of water landscape. Stay tuned.
Having so much fun pouring liquid acrylic ink across a 36x36 canvas. Notice the shoes!


Chardonnay, the "king of Burgundy" is a variety considered to produce some of the world's finest wines.
Fermentation in clay amphora for 12 month. Maturing the wine in amphora ensures slow oxygenation, which optimizes the expressiveness of its varietal character.
Tasting notes: Exuberant nose of blood-peach, apricot and golden apple. From initial freshness, its taste develops into silkiness with an elegant full-bodied texture and buttery notes of yellow flowers. The long finale brings up a mineral touch.
Gastronomy: This Chardonnay will happily accompany a dish of sauted forest mushrooms, salmon carpaccio, smoked salmon or any lake fish. It also makes an ideal aperitif wine.


text:
"""
file: topotools.py

   Provides several useful functions
   for manipulating topography data.

Contains:
   get_topo:     downloads topo file from GeoClaw repository on web.
   topo1writer:  create files of topotype1 from synthetic topo function.
   topo2writer:  create files of topotype2 from synthetic topo function.
   gcdist:       computes great circle distance between points on sphere.
   dx_from_gcdist:  inverts gcdist function at a give latitude.

   scatter2gridded
   topoheaderread
   topoheaderwrite
   topofile2griddata
   griddata2topofile
   griddatasubset
   topofilesubset
   topofilesubsample
   topofilefindz
   converttopotype
   removenodata_value
   changenodata_value
   swapheader

Authors: Dave George and Randy LeVeque

"""

import numpy as np
import os
import string
from datatools import *

# These don't seem to be needed now...  but maybe missed something.
# Best to not import * to avoid cluttering up namespace.
#  - rjl 7/6/10
#import numpy
#from numpy import *
#from scipy import *
#from matplotlib import *

Rearth = 6367.5e3  # average of polar and equatorial radii

#==========================================================================

def get_topo(topo_fname, remote_directory, force=None):
    """
    Download a topo file from the web, provided the file does not
    already exist locally.

    remote_directory should be a URL.  For GeoClaw data it may be a
    subdirectory of  http://kingkong.amath.washington.edu/topo/
    See that website for a list of archived topo datasets.

    If force==False then prompt the user to make sure it's ok to download,
    with option to first get small file of metadata.

    If force==None then check for environment variable CLAW_TOPO_DOWNLOAD
    and if this exists use its value.  This is useful for the script
    python/run_examples.py that runs all examples so it won't stop to prompt.
    """
    import urllib

    if force is None:
        CTD = os.environ.get('CLAW_TOPO_DOWNLOAD', None)
        force = (CTD in [True, 'True'])
    print 'force = ',force

    if os.path.exists(topo_fname):
        print "*** Not downloading topo file (already exists): %s " % topo_fname
    else:
        remote_fname = topo_fname
        local_fname = topo_fname
        remote_fname_txt = remote_fname + '.txt'
        local_fname_txt = local_fname + '.txt'

        print "Require remote file ", remote_fname
        print "      from ", remote_directory
        if not force:
            ans=raw_input("  Ok to download topo file?  \n"  +\
                          "     Type y[es], n[o] or ? to first retrieve and print metadata  ")
            if ans.lower() not in ['y','yes','?']:
                print "*** Aborting!   Missing: ", local_fname
                return
            if ans=="?":
                try:
                    print "Retrieving remote file ", remote_fname_txt
                    print "      from ", remote_directory
                    url = os.path.join(remote_directory, remote_fname_txt)
                    urllib.urlretrieve(url, local_fname_txt)
                    os.system("cat %s" % local_fname_txt)
                except:
                    print "*** Error retrieving metadata file!"
                ans=raw_input("  Ok to download topo file?  ")
                if ans.lower() not in ['y','yes','?']:
                    print "*** Aborting!   Missing: ", local_fname
                    return

        if not os.path.exists(local_fname_txt):
            try:
                print "Retrieving metadata file ", remote_fname_txt
                print "      from ", remote_directory
                url = os.path.join(remote_directory, remote_fname_txt)
                urllib.urlretrieve(url, local_fname_txt)
            except:
                print "*** Error retrieving metadata file!"

        try:
            print "Retrieving topo file ", remote_fname
            print "      from ", remote_directory
            url = os.path.join(remote_directory, remote_fname)
            urllib.urlretrieve(url, local_fname)
        except:
            print "*** Error retrieving file!  Missing: ", local_fname
            raise Exception("Error from urllib.urlretrieve")
        try:
            firstline = open(local_fname,'r').readline()
            if firstline.find('DOC') > -1:
                print "*** Possible error -- check the file ", local_fname
            else:
                print "Saved to ", local_fname
        except:
            raise Exception("Error opening file %s" % local_fname)

#==========================================================================
def topo1writer (outfile,topo,xlower,xupper,ylower,yupper,nxpoints,nypoints):
    """
    Function topo1writer will write out the topofiles by evaluating the
    function topo on the grid specified by the other parameters.

    Assumes topo can be called on arrays X,Y produced by np.meshgrid.

    Output file is of "topotype1," which we use to refer to a file with
    (x,y,z) values on each line, progressing from upper left corner across
    rows, then down.
    """

    fout=open(outfile, 'w')
    dx = float(xupper-xlower)/(nxpoints-1)
    dy = float(yupper-ylower)/(nypoints-1)

    x = np.linspace(xlower,xupper,nxpoints)
    y = np.linspace(ylower,yupper,nypoints)
    X,Y = np.meshgrid(x,y)
    Z = topo(X,Y).T

    for jj in xrange(0,nypoints):
        y = yupper - jj*dy
        for i in xrange(0,nxpoints):
            x =  xlower + i*dx
            j = nypoints - 1 - jj
            z = Z[i,j]
            fout.write("%22.15e  %22.15e  %22.15e\n" % (x,y,z))

    fout.close
    print "Created file ",outfile

#==========================================================================
def topo2writer (outfile,topo,xlower,xupper,ylower,yupper,nxpoints,nypoints, \
                 nodata_value=-99999):
    """
    Function topo2writer will write out the topofiles by evaluating the
    function topo on the grid specified by the other parameters.

    Assumes topo can be called on arrays X,Y produced by np.meshgrid.

    Output file is of "topotype2," which we use to refer to a file with a
    header and one z value of topography per row in the file

    Header is of the form:
    # ---------------------------
    # integer   ncols   (= nxpoints)
    # integer   nrows   (= nypoints)
    # double    xlower
    # double    ylower
    # double    cellsize
    #integer   nodata_value
    # -----------------------------
    """

    # note: for topotype2, dx=dy=cellsize
    dx = float(xupper-xlower)/(nxpoints-1)
    dy = float(yupper-ylower)/(nypoints-1)
    if abs(dx-dy) > 1.e-8:
        print "*** Error in topo2writer, need dx=dy"
        print "    dx = %s, dy = %s" % (dx,dy)
        return
    cellsize = dx

    nrows = nypoints
    ncols = nxpoints
    dx=cellsize
    dy=cellsize

    fout=open(outfile, 'w')
    fout.write("%6i                              %s\n" % (ncols,"ncols"))
    fout.write("%6i                              %s\n" % (nrows,"nrows"))
    fout.write("%22.15e              %s\n" % (xlower,"xlower"))
    fout.write("%22.15e              %s\n" % (ylower,"ylower"))
    fout.write("%22.15e              %s\n" % (cellsize,"cellsize"))
    fout.write("%10i                 %s\n" % (nodata_value,"nodata_value"))

    x = np.linspace(xlower,xupper,nxpoints)
    y = np.linspace(ylower,yupper,nypoints)
    X,Y = np.meshgrid(x,y)
    Z = topo(X,Y).T

    for jj in xrange(0,nrows):
        for i in xrange(0,ncols):
            j = nypoints - 1 - jj
            fout.write("%22.15e\n" % Z[i,j])

    fout.close
    print "Created file ",outfile

#==========================================================
def gcdist(x1,y1,x2,y2,Rsphere=Rearth,units='degrees'):
    """
    Compute the great circle distance on the earth between points
    (x1,y1) and (x2,y2), where:
    x = longitude, y = latitude
    """
    from numpy import pi,sin,cos,arccos,arcsin,sqrt
    if units=='degrees':
        # convert to radians:
        x1 = x1 * pi/180.
        y1 = y1 * pi/180.
        x2 = x2 * pi/180.
        y2 = y2 * pi/180.
    elif units != 'radians':
        raise Exception("unrecognized units")

    dx = x1 - x2
    dy = y1 - y2

    # angle subtended by two points, using Haversine formula:
    dsigma = 2. * arcsin(sqrt(sin(0.5*dy)**2 + cos(y1)*cos(y2)*sin(0.5*dx)**2))

    # alternative formula that may have more rounding error:
    #dsigma2 = arccos(sin(y1)*sin(y2)+ cos(y1)*cos(y2)*cos(dx))
    #print "max diff in dsigma: ", abs(dsigma-dsigma2).max()

    d = Rsphere * dsigma
    return d

#==========================================================
def dx_from_gcdist(d,x1,y1,y2,Rsphere=Rearth,units='degrees'):
    """
    Invert the gcdist function to find dx given distance d and (x1,y1) and y2.
    The corresponding x2 can be x1+dx or x1-dx.
    May return NaN if no solution.
    """
    from numpy import pi,sin,cos,arccos
    if units=='degrees':
        # convert to radians:
        x1 = x1 * pi/180.
        y1 = y1 * pi/180.
        y2 = y2 * pi/180.
    elif units != 'radians':
        raise Exception("unrecognized units")
    dsigma = d / Rsphere
    cos_dsigma = (cos(dsigma) - sin(y1)*sin(y2)) / (cos(y1)*cos(y2))
    dx = arccos(cos_dsigma)
    if units=='degrees':
        dx = dx*180./pi
    return dx

#==============================================================================================
def scatter2gridded (scatterdatafile=" ",boundarydatafile=" ", headerfile=" ", outputfile=" "):

    """
    scatter2gridded (scatterdatafile=" ",boundarydatafile=" ", headerfile=" ", outputfile=" "):

    function converts scattered data points (x,y,z) into
    gridded data, with z values given at uniformly spaced points.

    'scatterdatafile' and optional 'boundarydatafile' should each have three columns
     containing x,y,z coordinates respectively of each point.

    'headerfile' specifies the format of the grid parameters for the output data.
     The header should have the following form:

         int ncols
         int nrows
         float xll
         float yll
         float cellsize
         float nodata_value

    see topotools.headerwriter and topotools.headerreader.

    'outputfile' will have the same header followed by the data advancing from northwest
    across eastward then down, one z value per row.
    """
    import pylab

    # Input data==========================:
    # read scattered data
    fin=open(scatterdatafile,'r')
    a=fromfile(fin,sep=" ",count=-1,dtype=float)
    fin.close
    #read boundary data ie: points specifying a quadrilateral bounding the scattered data if it is needed
    if boundarydatafile !=" " :
        fin=open(boundarydatafile,'r')
        b=fromfile(fin,sep=" ",count=-1,dtype=float)
        fin.close
        a=np.hstack((a,b))
    #reshape data into (#pts , 3) array
    pts=len(a)/3

    a=np.reshape(a,(pts,3))

    #determine what the output grid will look like from headerfile
    topoheader=topoheaderread(inputfile=headerfile)

    # manipulate data============================:
    #Create the gridded data using pylab "griddata function."
    xgrid = np.arange(topoheader['xll'], \
                   topoheader['xll']+topoheader['ncols']*topoheader['cellsize'], \
                   step=topoheader['cellsize'],dtype=float)
    ygrid = np.arange(topoheader['yll'], \
                   topoheader['yll']+topoheader['nrows']*topoheader['cellsize'], \
                   step=topoheader['cellsize'],dtype=float)

    X,Y=np.meshgrid(xgrid,ygrid)

    Z = pylab.griddata(a[:,0],a[:,1],a[:,2],X,Y)
    Y=np.flipud(Y)
    Z=np.flipud(Z)
#    pyplot.contour(X,Y,Z)
    #write the output file =====================:
    if outputfile != " ":
        fout=topoheaderwrite(topoheader,outputfile,closefile=False)
        for i in xrange(topoheader['nrows']) :
            for j in xrange(topoheader['ncols']) :
                fout.write("%s\n" % Z[i,j])
        fout.close()
    return (X,Y,Z)
    # end scatter2gridded===================================================

#============================================================================
def topoheaderwrite (topoheader,outputfile,closefile=True):

    """
    topoheaderwrite(topoheader,outputfile) opens an ascii topography data file and writes the header
    using the dictionary "topoheader"

    The header is of the following form with columns containing the topoheader value and key respectively.

         int ncols
         int nrows
         float xll
         float yll
         float cellsize
         float nodata_value

    if closefile==True: the file is closed. Otherwise return the open file object.
    """

    fout=open(outputfile,'w')

    fout.write("%s %s\n" % (topoheader['ncols'],"ncols"))
    fout.write("%s %s\n" % (topoheader['nrows'],"nrows"))
    fout.write("%s %s\n" % (float(topoheader['xll']),"xll"))
    fout.write("%s %s\n" % (float(topoheader['yll']),"yll"))
    fout.write("%s %s\n" % (float(topoheader['cellsize']),"cellsize"))
    fout.write("%s %s\n" % (topoheader['nodata_value'],"nodata_value"))
    if closefile:
        fout.close()
    else:
       return fout
    #end headerwriter=========================================================================

#=========================================================================================
def topoheaderread (inputfile, closefile=True):

    """
    topoheaderread (inputfile):
    read the header in inputfile and place in dictionary topoheader to be returned.

    The header is of the following form with columns containing the topoheader value and keyword respectively.

         int ncols
         int nrows
         float xll
         float yll
         float cellsize
         float nodata_value
    """
    topoheader={'ncols':0,'nrows':0,'xll':0.0,'yll':0.0,'cellsize':0.0,'nodata_value':0}
    keylist=topoheader.keys()

    keymap = {'ncols':'ncols','nrows':'nrows','xll':'xll','yll':'yll','cellsize':'cellsize','nodata_value':'nodata_value', \
    'xllcenter':'xll','yllcenter':'yll','xllcorner':'xll','yllcorner':'yll',
    'xlower':'xll','ylower':'yll'}

    fid=open(inputfile,'r')
    keyleft=len(keylist)
    while keyleft> 0 :
        line=string.split(fid.readline())
        if line:
            if line[0].lower() in keymap.keys():
                topoheader[keymap[line[0].lower()]]= iotools.convertd2e(line[1])
                keyleft=keyleft-1
            if line[1].lower() in keymap.keys():
                topoheader[keymap[line[1].lower()]]= iotools.convertd2e(line[0])
                keyleft=keyleft-1

    #check if passes convert strings values to numeric
    for key in keylist :
        if not key in topoheader:
            print('ERROR: topoheader not fully specified in %s' % (inputfile))
            exit
        else:
            if '.' in topoheader[key] or 'nan' in topoheader[key].lower() or 'e' in topoheader[key].lower():
                topoheader[key]=float(topoheader[key])
            else:
                topoheader[key]=int(topoheader[key])

    if closefile:
        fid.close()
        return topoheader
    else:
        return (fid,topoheader)

    #end topoheader================================================================================

#==================================================================================================
def topofile2griddata (inputfile,topotype=2):
    """
    topofile2griddata (inputfile):
    read topofile into a numpy array.

    read data in topo files of type 1, 2 or 3 into numpy arrays
    X,Y, Z, each with shape=(nrows,ncols) holding x,y and z coords.

    """
    import pylab

    if topotype>1:
        (fin,topoheader)=topoheaderread(inputfile,closefile=False)
        zdata=fin.readlines()
        fin.close()
        for row in xrange(len(zdata)):
            zdata[row]=iotools.convertd2e(zdata[row])
            zdata[row]=string.split(zdata[row])
            for col in xrange(len(zdata[row])) :
                zdata[row][col]=float(zdata[row][col])

        Z=np.array(zdata)
        Z=np.reshape(Z,(topoheader['nrows'],topoheader['ncols']))

        xlower=topoheader['xll']
        xupper=xlower+ topoheader['cellsize']*(topoheader['ncols']-1)

        ylower = topoheader['yll']
        yupper = ylower+ topoheader['cellsize']*(topoheader['nrows']-1)

        x=np.linspace(xlower,xupper,topoheader['ncols'])
        y=np.linspace(ylower,yupper,topoheader['nrows'])
        [X,Y]=np.meshgrid(x,y)
        Y=np.flipud(Y)
    else:
        a=iotools.datafile2array(inputfile)
        xdiff=np.diff(a[:,0])
        inddiff=pylab.find(xdiff<0)
        xlength=inddiff[0]+1
        ylength=len(a[:,0])/xlength
        x=a[:,0]
        y=a[:,1]
        z=a[:,2]

        X=np.reshape(x,(ylength,xlength))
        Y=np.reshape(y,(ylength,xlength))
        Z=np.reshape(z,(ylength,xlength))

    return X,Y,Z
    #end topofile2griddata ======================================================================

#==================================================================================================
def griddata2topofile (X,Y,Z,outputfile,topotype=2,nodata_value_in=9999.,nodata_value_out=9999.):
    """
    griddata2topofile takes gridded data and produces a topofile with a header

    """

    nrows=len(Z[:,0])
    ncols=len(Z[0,:])
    xll=X[0,0]
    yll=Y[-1,0]
    nodata_value=nodata_value_out
    xupper=X[0,-1]
    yupper=Y[0,0]

    if (yupper<yll):
        print ("geotools.topotools.griddata2topofile:")
        print ("ERROR: griddata is not in the proper format: Y[0,0]<Y[-1,0] ")
        print ("The matrix Y, should advance from north to south rowwise")

    cellsizeX= (xupper-xll)/(ncols-1)
    cellsizeY= (yupper-yll)/(nrows-1)

    topoheader={}
    topoheader["nrows"]=nrows
    topoheader["ncols"]=ncols
    topoheader["xll"]=xll
    topoheader["yll"]=yll
    topoheader["cellsize"]=cellsizeX
    topoheader["nodata_value"]=nodata_value_out

    if ((abs(cellsizeX-cellsizeY)<-1.e-9)&(topotype>1)):
        print ("geotools.topotools.griddata2topofile:")
        print ("WARNING: cellsize is not uniform in x and y")
        print ("cellsize in the x-direction %s" % cellsizeX)
        print ("cellsize in the y-direction %s" % cellsizeY)
        print ("Consider changing to topotype=1")

    if topotype==2:
        fout=topoheaderwrite(topoheader,outputfile,closefile=False)
        for i in xrange(nrows) :
            for j in xrange(ncols) :
                fout.write("%s\n" % (Z[i,j]))
        fout.close()

    elif topotype==3:
        fout=topoheaderwrite(topoheader,outputfile,closefile=False)
        for i in xrange(nrows) :
            for j in xrange(ncols) :
                fout.write("%s   " % (Z[i,j]))
            fout.write("\n")
        fout.close()

    else:
        fout=open(outputfile,'w')
        for i in xrange(nrows) :
            for j in xrange(ncols) :
                fout.write("%s %s %s\n" % (X[i,j],Y[i,j],Z[i,j]))
        fout.close()

    # end griddata2topofile ======================================================================

#================================================================================================
def converttopotype (inputfile,outputfile,topotypein=1,topotypeout=2,nodata_value=None):
    """
    convert topofiles of one type to another.
    """

    (X,Y,Z)=topofile2griddata(inputfile,topotypein)

    if topotypein>1 and not nodata_value:
        topoheader=topoheaderread(inputfile)
        nodata_value=topoheader["nodata_value"]
    if topotypein==1 and topotypeout>1 and not nodata_value:
        print('You must provide a value for nodata_value')

    griddata2topofile(X,Y,Z,outputfile,topotypeout,nodata_value,nodata_value)

    #end converttopotype ==========================================================================

#==================================================================================================
def griddatasubset (X,Y,Z,xlow=-1.e6,xhi=1.e6,ylow=-1.e6,yhi=1.0e6):
    """
    griddatasubset takes grided data (X,Y,Z) and creates a subset of new gridded data

    X,Y,Z are assumed to be numpy arrays where data advances from northwest---northeast then
    southward, corresponding to advancing across columns then down rows.

    the new gridded data will correspond to the largest subset of the region [xlow,xhi] X [ylow,yhi]
    """

    xind=np.where((X[0,:]>=xlow)&(X[0,:]<=xhi))[0]
    yind=np.where((Y[:,0]<=yhi)&(Y[:,0]>=ylow))[0]

    Xsub= X[np.ix_(yind,xind)]
    Ysub= Y[np.ix_(yind,xind)]
    Zsub= Z[np.ix_(yind,xind)]

    return Xsub,Ysub,Zsub
    #end griddatasubset ==========================================================================

#==================================================================================================
def topofilefindz (pts,inputfile,topotypein=2):
    """
    topofilefindz takes an inputfile, and the coordinates of multiple points, as a list of pairs,
    pts=[(x1,y1),...,(xn,yn)] or a numpy array of shape (n,2) [[x1,x2],...[xn,yn]], etc.
    and returns the topo z values as a numpy list z = [z1,...,zn].
    at those coordinates. It interpolates a bilinear function between the 4 nodes surrounding (x,y).

    """

    (X,Y,Z)=topofile2griddata(inputfile,topotypein)
    z=[]

    for i in range(len(pts)):
        x=pts[i][0]
        y=pts[i][1]

        if ((x<X[0,0])|(x>X[0,-1])|(y<Y[-1,0])|(y>Y[0,0])):
            print('WARNING: point %i is outside data file: (x,y)= (%g,%g)' % (i+1,x,y))
            print('**file corners are (X0,Y0)= (%g,%g), and (X1,Y1) = (%g,%g)' % (X[0,0],Y[0,0],X[-1,-1],Y[-1,-1]))
            z.append(nan)
        else:

            #find indices of four corners
            #some corners might be the same, if x or y happen to intersect X or Y
            i0 = np.where(X[0,:]<=x)[0][-1]
            i1 = np.where(X[0,:]>=x)[0][0]

            j0 = np.where(Y[:,0]<=y)[0][0]
            j1 = np.where(Y[:,0]>=y)[0][-1]

            #find height of four corners
            Z00=Z[j0,i0]
            Z01=Z[j0,i1]
            Z10=Z[j1,i0]
            Z11=Z[j1,i1]

            X00=X[j0,i0]
            X01=X[j0,i1]
            X10=X[j1,i0]
            X11=X[j1,i1]

            Y00=Y[j0,i0]
            Y01=Y[j0,i1]
            Y10=Y[j1,i0]
            Y11=Y[j1,i1]

            #find slopes of opposing lines.
            if i0==i1:
                dzdx0=0.0
                dzdx1=0.0
            else:
                dzdx0 = (Z01-Z00)/(X11-X00)
                dzdx1 = (Z11-Z10)/(X11-X00)

            #find height of points on lines
            zy0 = Z00 + (x-X00)*dzdx0
            zy1 = Z10 + (x-X10)*dzdx1

            if j0==j1:
                dzdy=0.0
            else:
                dzdy = (zy1-zy0)/(Y11-Y00)

            z.append( zy0 + (y-Y00)*dzdy)

    z=np.array(z)
    return z

#==================================================================================================
def topofilesubset (inputfile,outputfile,topotypein=2,topotypeout=2,xlow=-1.e6,xhi=1.e6,ylow=-1.e6,yhi=1.e6,\
                    nodata_value_in=None, cheap=False ):
    """
    topofilesubset takes a topofile, takes a subset of the data and produces a new topofile.

    If cheap = True then the data is directly read from one file and written to the smaller file
    This is useful for very large topofiles that are being split into more manageable files.

    """

    if (cheap==False):
        # this requires too much memory for some large files
        # use cheap option if topotype>1
        (X,Y,Z)=topofile2griddata(inputfile,topotypein)
        if topotypein>1 and not nodata_value_in:
            topoheader=topoheaderread(inputfile)
            nodata_value_in=topoheader["nodata_value"]

        if topotypein==1 and topotypeout>1 and not nodata_value_in:
            print('You must provide a value for nodata_value_in')

        nodata_value_out=nodata_value_in
        (Xsub,Ysub,Zsub)=griddatasubset(X,Y,Z,xlow,xhi,ylow,yhi)
        griddata2topofile(Xsub,Ysub,Zsub,outputfile,topotypeout,nodata_value_in,nodata_value_out)

    else:
        if topotypein==1:
            print("geotools.topotools.topofilesubset")
            print("ERROR: topotype=1 not supported in cheap mode")
            print("convert the input file to topotype 2 or 3")
            print("with converttopotype")
            return

        (fidin,topoheaderin)=topoheaderread(inputfile,False)
        nodata_value_in=topoheaderin["nodata_value"]
        ncols=topoheaderin["ncols"]
        nrows=topoheaderin["nrows"]
        yll=topoheaderin["yll"]
        xll=topoheaderin["xll"]
        cellsize=topoheaderin["cellsize"]
        yupper=yll + cellsize*(nrows-1)
        xupper=xll + cellsize*(ncols-1)

        xupperout=min(xupper,xhi)
        xlowout=max(xlow,xll)
        yupperout=min(yupper,yhi)
        ylowout=max(yll,ylow)

        theadout={}
        ncolsout= int((xupperout-xlowout)/cellsize + 1)
        nrowsout= int((yupperout-ylowout)/cellsize + 1)
        j=np.ceil((xlowout-xll)/cellsize + 1)
        xllout=xll + (j-1)*cellsize
        i=np.ceil((ylowout-yll)/cellsize + 1)
        yllout = yll + (i-1)*cellsize

        theadout["xll"]=xllout
        theadout["yll"]=yllout
        theadout["ncols"]=ncolsout
        theadout["nrows"]=nrowsout
        theadout["cellsize"]=cellsize
        theadout["nodata_value"]= nodata_value_in

        fidout=topoheaderwrite(theadout,outputfile,closefile=False)
        outpts=ncolsout*nrowsout
        writtenpts=0

        if topotypein>1:
            while outpts>0:
                for row in xrange(nrows) :
                    y=yupper-row*cellsize
                    for col in xrange(ncols) :
                        x=xll + col*cellsize
                        zdata=fidin.readline()
                        zdata=string.split(zdata)
                        w=writtenpts
                        for jj in xrange(len(zdata)):
                            if ((xlow<=x<=xhi)&(ylow<=y<yhi)):
                                fidout.write("%s  " % zdata[jj])
                                outpts=outpts-1
                                writtenpts=writtenpts+1
                        if writtenpts>w:
                            fidout.write("\n")

            if writtenpts!=ncolsout*nrowsout:
                print("geotools.topotools.topofilesubset")
                print("ERROR: points written != ncols*nrows in header")

        fidout.close()
        fidin.close()
    #end topofilesubset==========================================================================

#==================================================================================================
def topofilesubsample (inputfile,outputfile,sampleinteger,topotypein=2,topotypeout=2,\
                    nodata_value_in=None ):
    """
    topofilesubsample takes a topofile, and resamples the data at an integer (sampleinteger)
     number of grid points to produces a new topofile.

    For example, if a topofile contains 1m data, if the integer is 10, the resulting
     file will be 10m data.

    This is useful for shrinking huge DEMs where high accuracy is not needed.

    """

    (X,Y,Z)=topofile2griddata(inputfile,topotypein)
    if topotypein>1 and not nodata_value_in:
        topoheader=topoheaderread(inputfile)
        nodata_value_in=topoheader["nodata_value"]

    if topotypein==1 and topotypeout>1 and not nodata_value_in:
        print('You must provide a value for nodata_value_in')

    nodata_value_out=nodata_value_in
    Xsub = X[0::sampleinteger,0::sampleinteger]
    Ysub = Y[0::sampleinteger,0::sampleinteger]
    Zsub = Z[0::sampleinteger,0::sampleinteger]
    griddata2topofile(Xsub,Ysub,Zsub,outputfile,topotypeout,nodata_value_in,nodata_value_out)

#================================================================================================
def removenodata_value (inputfile,outputfile,topotypein=2,topotypeout=2,nodata_value=None,method='fill'):
    """
    remove the nodata_values in a topo file by interpolating from meaningful values.
    """
    import pylab

    (X,Y,Z)=topofile2griddata(inputfile,topotypein)

    if topotypein>1 and not nodata_value:
        topoheader=topoheaderread(inputfile)
        nodata_value=topoheader['nodata_value']
    elif not nodata_value:
        print 'provide a value for nodata_value when using topotype1'

    if method=='fill':
        ind=fixdata.findbadindices(Z,nodata_value)
        if size(ind)>0:
            print("Changing %s nodata_value points" % size(ind))
        Z=fixdata.fillbaddata(Z,ind)
        griddata2topofile(X,Y,Z,outputfile,topotypeout,nodata_value,nodata_value)
        return
    nrows= shape(Z)[0]
    ncols= shape(Z)[1]
    npts = nrows*ncols

    xi=X[0,:]
    yi=Y[:,0]

    X.np.reshape(npts)
    Y.np.reshape(npts)
    Z.np.reshape(npts)

    ind=np.where(Z!=nodata_value)
    X=X[ind]
    Y=Y[ind]
    Z=Z[ind]

    ptsremove=npts-len(Z)
    if ptsremove>0:
        print("Removing %s nodata_value points" % ptsremove)

    Z = pylab.griddata(X,Y,Z,xi,yi)
    (X,Y)=np.meshgrid(xi,yi)

    griddata2topofile(X,Y,Z,outputfile,topotypeout,nodata_value,nodata_value)

    return

    #end removenodata_value ======================================================================

#=================================================================================================
def changenodata_value (inputfile,outputfile,topotypein,topotypeout=None,\
        nodata_valuein=None, nodata_valueout=np.nan):
    """
    change the nodata_values in a topo file by interpolating from meaningful values.
    """

    (X,Y,Z)=topofile2griddata(inputfile,topotypein)

    if topotypein>1 and not nodata_valuein:
        topoheader=topoheaderread(inputfile)
        nodata_valuein=topoheader['nodata_value']
    elif not nodata_valuein:
        print 'provide a value for nodata_valuein when using topotype1'

    if not topotypeout:
        topotypeout=topotypein

    nrows= shape(Z)[0]
    ncols= shape(Z)[1]
    npts = nrows*ncols

    ind=np.where(Z==nodata_valuein)
    Z[ind]=nodata_valueout

    if size(ind)>0:
        print("Changing %s nodata_value points" % size(ind))

    griddata2topofile(X,Y,Z,outputfile,topotypeout,nodata_valuein,nodata_valueout)

    return

    #end removenodata_value =================================================================

#============================================================================================
def swapheader (inputfile,outputfile):
    """
    take a topo file and swap the order of key and value in header so that value is in the
    first column and key in the second.
    """

    (fidin,header) = topoheaderread(inputfile,closefile=False)
    fidout=topoheaderwrite(header,outputfile,closefile=False)
    while True:
        line=fidin.readline()
        if not line:
            break
        fidout.write(line)

    fidin.close()
    fidout.close()

    return
    #=========================================================================================


text:
World clubbing super-brand Cream kicks off the summer season!
Mahmoud Abdullah
12:55 PM June 10, 2012
World clubbing super-brand Cream kicks off the summer season with a double CD and digital release, Cream Ibiza mixed by award-winning trio Above & Beyond.
As the longest running UK club night on the island, taking over Thursday nights, Cream Ibiza brings together the world's top DJs and thousands of clubbers to the award winning 'World's Best Club' Amnesia. With mammoth weekly parties that will see Above & Beyond joined by the likes of Paul van Dyk, Eddie Halliwell, Calvin Harris, Sander van Doorn, Laidback Luke, Benny Benassi, Gareth Emery, Chris Lake and Example at the club this summer, Cream Ibiza has become an essential part of island life for dance music enthusiasts.
Described by DJ Mag as "the biggest electronic DJing and production collective the UK has ever produced," Jono Grant, Tony McGuinness and Paavo Siljamaki AKA Above & Beyond made an obvious choice for this year's instalment of the Cream compilation series, following a year of sell out gigs on both sides of the Atlantic.
Producers, songwriters, DJ's and owners of the renowned Anjunabeats label, Above & Beyond have remained down-to-earth and as determined as ever despite the numerous accolades, remixing greats like Madonna and Radiohead and selling out shows from Bombay to Brixton Academy. 2011 saw the release of their second studio album Group Therapy. Described by Mixmag as "the artist album of the year", it topped the dance charts in both the UK and USA.
Above & Beyond also completed their second Essential Mix for BBC Radio 1 last year and made history by winning Essential Mix Of The Year for the second time running – the only dance act to have done so. With an increasingly epic and immersive live DJ show, Above & Beyond are currently on their Group Therapy world tour, which has included sold out dates at LA's Shrine, Miami's 5,000-capacity Bayfront Amphitheatre and San Francisco Warfield, as well as two dates at the O2 Brixton Academy.
Now they are set to perform at Cream Ibiza this summer, headlining six dates through June to September. Whether you're heading over to the White Isle or not, Above & Beyond's Cream Ibiza mix is essential listening for the summer.
This year's Cream Ibiza tracklisting perfectly reflects the ethos of Above & Beyond, taking in their biggest tried and tested tunes, fan favourites and exclusive new tracks – all guaranteed main room Ibiza material. Alongside hot tracks from the likes of Cosmic Gate, Dirty South, Kyau & Albert and Depeche Mode (Eric Prydz Remix) Cream Ibiza also features exclusive new mixes of Above & Beyond's Stealing Time (from the critically acclaimed debut album Tri-State) and On My Way To Heaven, plus brand new remixes of Tranquillity Base (aka Above & Beyond) Razorfish by Jerome Isma-Ae and of the Above & Beyond and Andy Moor classic "Air For Life" by Norin & Rad.
CREAM IBIZA MIXED BY ABOVE & BEYOND TRACKLIST
01 Cosmic Gate & Andrew Bayer – Nothing Ever Lasts
02 Above & Beyond pres. Tranquility Base – Razorfish (Jerome Isma-Ae Remix)
03 Arty – Kate
04 Jaytech – Overdrive (2012 Remix)
05 Super8 – Alba (Maor Levi Remix)
06 Mat Zo – Loop
07 Dirty South & Those Usual Suspects ft. Erik Hecht – Walking Alone (Arty Remix)
08 Mat Zo ft. Linnea Schossow – The Sky (Club Mix)
> 09 Marc Marberg with Kyau & Albert – Megashira (Ronski Speed Remix)
10 Ferry Corsten – Punk (Arty Rock-n-Rolla Mix)
11 Andrew Bayer ft. Molly Bancroft – Keep Your Secrets (Myon & Shane 54 Summer Of Love Remix)
12 Norin & Rad – Zion
13 Bluestone – Namaste
14 Genix – Aura
15 Parker & Hanson – Afterthought (Heatbeat Remix)
16 Above & Beyond ft. Richard Bedford – Thing Called Love (Above & Beyond 2011 Club Mix)
16 Above & Beyond ft. Richard Bedford – Thing Called Love (Above & Beyond 2011 Club Mix) 16 Above & Beyond ft. Richard Bedford – Sun & Moon (Club Mix)
01 Above & Beyond ft. Richard Bedford – Stealing Time (Above & Beyond 2012 Intro Mix)
02 Andrew Bayer & Matt Lange ft. Kerry Leva – In And Out Of Phase (Norin & Rad Remix)
03 M83 – Midnight City (Eric Prydz Private Remix)
04 Mat Zo & Arty – Mozart
05 Jerome Isma-Ae – Speed (Original Mix)
06 Audien – Eventide
07 Norin & Rad – Pistol Whip
08 Above & Beyond ft. Richard Bedford – On My Way To Heaven (Above & Beyond Club Mix)
09 Genix – Nytra
10 Markus Schulz pres. Dakota – Gypsy Room (Duderstadt Remix)
11 Arty – Open Space
12 Depeche Mode – Personal Jesus (Eric Prydz Remix)
13 Above & Beyond ft. Zoë Johnston – Love Is Not Enough (Above & Beyond Club Mix)
14 Above & Beyond vs. Andy Moor – Air For Life (Norin & Rad Remix)
15 Above & Beyond pres. OceanLab vs. Norin & Rad – Secret Bloom
16 Above & Beyond ft. Richard Bedford – Sun & Moon (Club Mix)
Sun City Tribute in Lebanon
So Depressed it Hurts
Top 5 Most Paid Models in the World
Fady Ferraye Gliding Into Light At B018
Newer Post 6.2 Million Dollars…Who Knew Whiskey Could Be This Expensive?!
Older PostSpeed Boost: BMW 6 Series Gran Coupé and the All New 3 Series


It is a beautiful day in Denver October the 9th , 2001. I am waiting here for my Son, Mark (a businessman and private pilot), who is flying in from California, to join me on a ferry flight from Jefferson Co. Airport, Colorado to Lantana, W. Palm Beach, Florida. We will be flying a 1944 custom modified Blue and Yellow, 450 P&W Stearman. It has wheel pants, turtle back headrest and a beautiful full engine cowl.
As I wait for him I am reminiscing over the last 3 years that I have flown Larry Winnermans' 450 Stearman from Florida to Aspen Colorado. The last trip being all the way across Texas to El Paso & up the back side to Aspen. Quite an adventure, with ground speeds up to 140 mph and altitudes to 13,000'. What a beautiful flight.
Well. Mark has arrived and we're off to Jef. Co to get started. We arrive at 12:30, local time, blue sky and 74 f. and get right on the packing and pre-flight. Mark goes for the fuel truck and I start the walk around. Wouldn't you know it, the tail wheel is flat! Well, Executive Air Maintenance, jumped right on it for us but just couldn't get a new tube in until the next am so we wrapped it up about 4:30 and went to the hotel , dinner and a fun visit.
Bright and early on 10th, I looked out the window to see low clouds, a temp of 33f. and a chill factor of 22 f.! Great! Nothing like a brisk start. By the time we got to the airport, checked weather, canceled the flight and then re-planned it. It was 11:30.
Let me regress here a bit. I checked the weather and there was a fast moving front coming in from the NW with snow and wind and a very messy frontal system moving in from the gulf over Texas, Oklahoma and points N.E. I called Larry and said it might be better to call it off and I would come back when the weather was better. Then I checked the weather again and saw that we could get out ahead of the front coming in but may have to follow the one in Tex. So if he was willing to put up with the extra hotel time, we would press on. He agreed and we took off at noon of the 10th. First stop was Lamar, Col. for a quick refuel and on our way. If you are ever up that way, the folks are really nice. We then took off for Pratt, KS. and about an hour out we passed abeam Garden City, where last year I spent a long day and night with the winds out of the south at 25 G 38mph and temp in the low 30's. We arrived at Pratt Kansas with about 1 hr. of daylight left so we put her in the hangar and went into town for the best steak we've had lately.
By the way, Pratt is famous for it's "Hot & Cold" water towers and the service at the airport was friendly and helpful. Mr. Hewitt loaned us a courtesy car for the night.
Oct 11th, the weather was ok in Pratt but it looked like we could just get to Bartlesville, OK before we ran into the next line of weather. We arrived at Bartlesville in the late am and it was barely VFR. We were right on the edge of the low ceilings and drizzle. So, we fuel her up and David loaned us a car to get some lunch and to pick up some parts for that pesky tail wheel that was still giving us a bit of a problem. Bartlesville is the home of the great Bi-plane fly-in and quite a nice place too as we found out because after lunch and talking with FSS we put the Stearman in the hangar and found us a nice hotel, movie and dinner.
I wanted us to work our way south and east and if we were to have to weather it out I was trying for Hot Springs, AR. where I stopped last year for a great HOT bath in the springs. But, no such luck, we couldn't go that way because of the really low ceilings, wind, rain and tornados. Sort of lousy open cockpit flying weather!
really bad one (actually two) was on the way from the so.west. So, with a few rain showers between us and Meridian, Ms., we took off and before you knew it, it was dark with 10 miles visibility below a very dark overcast sky. I hadn't flown this Stearman at night before but it has all the necessary lights except (wouldn't you know it) the light in the compass was out! Luckily I had my Garmin 195 and not only could I find the airport but read the compass on it too! My Son commented at this time how pretty the bright blue flame was, coming out of the stack. We were cleared for a straight-in to Rwy 19 but I requested an overhead to the left down wind followed by an uneventful night landing at Meridian. With progressive taxi instructions we found the Meridian Aviation hangar where they were waiting for us and put her away for awhile.
We got a ride to the Holiday Inn in their van and spent that night, the next day & night there before we were able to be on our way. It rained so hard that we had to put the bath towels up against the threshold to keep the water out of the room. There were several tornados reported during that time and we were glad to be safe on the ground with the Stearman in a strong hangar. During the storm the second night we decided to eat at the hotel restaurant as it had a very nice write-up on the lobby wall about how great it was. Well, the menu was very small and the waitress quite large so we didn't complain, but take my advice and get a cab or walk in the rain before you eat there.
Oct. 14th. It was 10:00 am and we were on our way once again. The front had just passed Montgomery, AL. & the weather was VFR. After fueling at MGM we continued on to Tallahassee, FL. I normally stop at Cross City for lunch or Breakfast and fuel so I didn't check the notams before we took off. When we got on the ground there she said she could fix lunch but there was no fuel. Darn and Double darn because we could go for something to eat but since we only have 46 gal and a thirsty 985 we never really had fuel to spare. So, no lunch, and off to Ocala. We were 20 miles N.W. of Ocala and we were looking at a wall of water! A quick punch on the 195 to NRST airport and we landed at Williston, FL. Real nice folks there and inexpensive fuel.
I checked the weather and FSS said there were many showers between us and Spruce Creek (home) but they said we should be able to pick our way thru. As we approached Daytona Beach the weather was really lousy. Approach was having their hands full and didn't want to talk to us so we just dropped down to 1200' to stay out of their class C and picked our way VFR into home at Spruce Creek. As we were taxing in I called a friend of mine, David Joyner, on the cell phone and asked if he knew of a vacant hangar. He said, bring it over as his new neighbor, Ray Adams, had just moved in and his plane wasn't here yet. We parked the Stearman in Rays' hangar, had a nice cool beer and then Mark and I walked home.
Mark still had a day left before he had to return home so the next day I gave him a choice of flying the SNJ-6, the 225 Lyc. Stearman or the T-34. He opted to take the T-34 out for some landings and lunch. He did a great job, considering we hadn't flown in sooo long! Ha!
Mark left the next day to go back home to his Family and Business in the foothills of the Sierra Nevada and I finished the delivery to Larry at Lantana, FL.
It was really a great trip, especially being able to share this one with my Son. He was great company and a lot of help. He got a pretty good understanding of the Garmin 195 and said he enjoyed the cross country experience. This trip will be a pretty unique entry into his log book..
There are so many people in this world that will never have the chance to enjoy the chills and thrills of a open cockpit Bi-plane because they are not a part of our Great United States. My Son and I are saddened by the loss of our fellow pilots, crews, and citizens on September 11. We thank our country for our freedom and our freedom of flight in General Aviation and we will do our utmost to maintain this way of life.


This week saw the release of an issue it appears a lot of people may have missed. In the "All-New, All-Different (Marvel) Point One" (the "Marvel" bit isn't actually a part of the title, but with the logo so strategically placed, it's hard to read it any other way), we get a sneak peek at various coming upcoming new titles framed within a single story. One of these stories features Daredevil, and is by the new Daredevil creative team of Charles Soule and Ron Garney.
I read the entire super-sized issue and found it to be an entertaining enough read. The Daredevil story is really mostly devoted to his new sidekick Blindspot, which is quite alright by me since I'd been a little wary of the new addition. After reading this story, I feel a lot better about it. I like the premise of the character and how his power (more on that below) plays to Daredevil's strengths.
What this story doesn't do, however, is give us much of an idea about how Soule intends to write Matt Murdock or what the larger world Daredevil finds himself in will look like. I think we may have to wait until December rolls around for that one.
The idea of partnering Daredevil with a guy who uses some kind of optical technology to disguise himself is pretty clever, and the advantages of such a partnership are pretty obvious. Blindspot being a younger character with a flair for technology also reminds me of a young Peter Parker in some ways, and considering that Daredevil and Spider-Man have always had a pretty interesting relationship, this could be interesting. I also don't expect this new character to be an ongoing, appears-in-every-issue-for-the-entire-run kind of presence, as that would make this new title a bit far off course for Daredevil. But time will tell!
A few final comments about the art. Overall, I think it looks really good, and the brighter days of the last few years appear to be over. A big part of me will miss the old look, but at the same time, a moodier style is certainly not something any seasoned Daredevil fan will be unfamiliar with.
I will admit to being a little disappointed with the radar perspective, as seen above. My opinion on this is that the artist should either forego drawing the radar altogether (a perfectly respectable choice, Gene Colan barely drew any "radar panels" at all), or make the effort to get as close to the imagined radar experience as possible.
The way this is done tells us nothing about how Daredevil "sees" the world (since none of the background lights, shadows, or differences in color could possibly be something he would detect), and instead reinforces the notion that he somehow "sees" in a way that is similar to ordinary light vision. Garney is obviously not the first to make this kind of artistic choice. During the Bendis/Maleev run, radar shots were often accomplished by simply layering panels with a red filter, but after these last few years, I've come to expect something different. I'd love to see a new and different take on the radar, but not one that I feel misrepresents the character's powers.
So, did you guys read the issue? If so, what did you think? I will admit to being slightly nervous about this being as close to a real reboot as this title has ever seen, but am certainly curious to see what these guys come up with, and though Soule's She-Hulk was great.
Not sure about DD having a sidekick, although I enjoyed these few pages. Blindspot and his sister appear to be well developed as I was able to "see" each of their personalities shine through. I prefer DD stories that focus on Matt and his character and I worry the new additions will take the focus from that. I've enjoyed Soule's writing before so I'm looking forward to see what he will bring to DD. Garney's art is always excellent, and it appears to me he is trying a different style or slightly different with DD title. Maybe more of a frank miller look to it? Still solid look and the coloring definitely gives away what the tone will be in this book moving forward. A darker turn will be welcomed by me. It would be nice to see an artists contrast between matts world, almost cleaner and brighter, and DD's world, darker, edgier, and more brutal , in the rendering.
DD's new threads have not grown on me yet. The bright red is almost too much and breaks up the costume in a bad way. When looking at the character I find my eye gets " caught" on the red….sash? I think a black costume with red highlights would have been a better approach. Go dark or go home, right? I'm hoping there is an origin behind the new DD chest logo, which I'm also not to keen on yet.
I really hope Soule really does a proper courtroom arc to highlight Murdock as a lawyer considering Soule himself is a practicing lawyer in NY (immigration law). The last good one we had was Bendis' trial of the century… i could be wrong about this.
Eight pages are few to understand. I like Sam Chung! Blindspot and his sister appear to be well developed. Garney's art is fantastic. We have to let work Soule and Garney.


Perfect for any little boy, our personalised Transport Name Sampler is bright and cheerful. It features a range of trains, aeroplanes, balloons, kites, boats and trucks with the name as the focal point of the design.
Stitched on 16 count fabric, a name of five letters would be approximately 5"/13cm tall by 16"/41cm wide.
For a design featuring cars and vans, check out new Automobiles Name Sampler.


Through the Basic Skills Student Outcomes and Transformation program, the California legislature has allocated $60 million of new state funds to support community colleges to launch and scale up innovative approaches to remediation and placement. This spring, colleges will be able to apply for up to $1.5 million in competitive, three-year grants from the state Chancellor's Office.
This workshop will highlight innovations with a strong evidence base for increasing student completion of transfer-level English and math, the primary metric specified in the legislation. Hands-on workshop activities will also help participants draft an ambitious funding proposal they can bring back to campus.
The event will be led by Katie Hern and Myra Snell, Co-Founders of the California Acceleration Project. Colleges offering redesigned pathways with CAP are seeing dramatic gains in student completion of transferable English and math, with all students benefitting and achievement gaps narrowing for students of color. CAP's results were cited by name in AB770, the original legislation behind the $60M Transformation program.
Light breakfast and lunch included for this free event.