text:
Archive for category: Alumni Spotlight
Spotlight on 2020 Bulldog 100 business: Agora Vintage
January 13, 2020 /in Alumni Spotlight, Signature Events /by Danielle Bezila
Airee Edwards (AB '99) wasn't sure what she wanted to do when she graduated from UGA with a bachelor's in fabric design, but she knew she wanted to stay in Athens.
So she looked for a business opening, asking herself what was missing, what did Athens not have?
The answer: an open market where anyone could sell their vintage furniture, handcrafted items, art, or whatever, really.
Open Marketplace
"I went to what seemed like every bank in Athens, and I heard a lot of no's," Edwards says. But with savings from waiting tables and taking money off the house she'd bought, "a risky move" as she describes it, Edwards convinced a local bank to lend her what she needed to open Agora in 2002. (Agora means "open marketplace" in Greek.)
The only problem? Edwards didn't have a business degree. But growing up, she'd followed her mother from one craft fair to the next, selling tissue box holders they fashioned from vintage fabrics. That early exposure to entrepreneurship stuck with her.
So she learned as she went, eventually outgrowing the little shop at the corner of Clayton and Pulaski. Sellers had also begun bringing in higher-end items, including women's clothing and accessories, and Edwards' husband, attorney and Athens-Clarke County Commissioner Russell Edwards (JD '10), suggested she move the fashion items to a new store a few blocks away on Broad Street, right across from North Campus.
For a while, the Edwards family headed both stores, an exhausting but incredibly rewarding job. But she eventually decided to focus on one of her first loves—fashion—and grow the now iconic vintage fashion store on Broad, selling the furniture store that would become Atomic Vintage.
When you walk into the recently renovated Agora Vintage, you see an Art Deco-inspired cabinet lined with bags from Chanel, Louis Vuitton, and Hermès, just to name a few. But there are also less expensive, gently used Coach, Tory Burch, and Marc by Marc Jacobs bags toward the back of the store. The counter display is full of beautiful, estate jewelry.
To the left, rows of vintage and modern clothes, all marked significantly below retail. Designer shoes are toward the back.
Honored Bulldog Business
But what makes Agora Vintage stand out is Edwards herself. She's almost always in the store, greeting customers, suggesting items she knows they have to have, and tracking down pieces they've inquired about. It's that attention to detail that has landed Agora several times on the Bulldog 100, which lists the fastest-growing businesses owned or operated by UGA alumni. Agora Vintage has made the list an outstanding six times in 2013, 2015, 2016, 2017, 2018 and 2020.
But she never forgets the place that made it all possible, regularly speaking in classes at UGA and supporting the Georgia Museum of Art.
"I tell them the whole story about how I couldn't get a loan and was eating potato chips for a year, thought I was going to get scurvy," Edwards says. "I now own a business that allows me to live securely and enjoy some success. UGA helped me build that."
This story was originally published in Georgia Magazine.
https://alumni.uga.edu\/wp-content/uploads/Bulldog100-Agora-ImagesFeatureImage.jpg 423 1220 Danielle Bezila https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Danielle Bezila2020-01-13 10:40:072020-01-13 10:40:07Spotlight on 2020 Bulldog 100 business: Agora Vintage
UGA alumnus awarded Schwarzman Scholarship
December 23, 2019 /in Alumni Spotlight, Featured, UGA Young Alumni /by Elizabeth Elmore
This story was written by Stephanie Schupska and originally ran on UGA Today on December 4, 2019.
University of Georgia alumnus Shaun Kleber (AB '16, AB '16, AB '16) was one of 148 candidates selected internationally as a Schwarzman Scholar, a graduate fellowship designed to prepare the next generation of leaders with an understanding of China's role in global trends.
Kleber is UGA's fifth Schwarzman Scholar. The incoming Class of 2021 was narrowed down from a pool of more than 4,700 candidates from China, the U.S. and around the world. It includes students from 41 countries and 108 universities.
Five classes of Schwarzman Scholars have been named since the highly competitive program opened to applicants in 2015. The fully funded, yearlong master's program in global affairs is offered at Tsinghua University in Beijing. Students live and learn on the Schwarzman College campus and focus their studies on public policy, economics and business, or international studies.
"I am delighted that Shaun has received this prestigious recognition," said UGA President Jere W. Morehead. "The University of Georgia's record of success in this international competition is evidence of the outstanding education we provide to our students and how well we prepare them for success beyond graduation."
Kleber graduated from UGA in 2016 with bachelor's degrees in international affairs, political science and economics. A Foundation Fellow and Honors Program alumnus, he spent two years with McKinsey & Company as a business analyst before transitioning to work with City Year, an AmeriCorps program, through which he served as a student success coach in Detroit. He is now a team leader with City Year in Boston and supervises student success coaches at UP Academy Boston, developing tailored strategies for student achievement.
After he completes his year as a Schwarzman Scholar, Kleber will attend Harvard Law School. He plans to pursue a career in education policy and public education administration.
"I met Shaun when he was in high school, and I enjoyed getting the chance to work closely with him while he was a student at UGA," said David S. Williams, associate provost and director of the Honors Program. "It has been clear all along that he is destined to make a very positive impact on society."
Kleber's focus is on education, leadership and policy, with the goal of becoming a national leader in public education. In his time with City Year and in his internship while in college with the superintendent of Atlanta Public Schools, he confronted issues such as intergenerational poverty, segregated neighborhoods and insufficient access to basic resources.
Currently, he is working to unlock the potential of individuals through education, he said, before ultimately working to unlock the potential of the American South through both public education and public policy.
"The Schwarzman Scholars program prepares and connects future global leaders, and that makes it the perfect fit for Shaun," said Jessica Hunt, UGA's major scholarships coordinator. "He made a profound impact on our campus as an undergraduate, and he has already demonstrated a remarkable commitment to building community in Detroit, Atlanta and Boston. He will no doubt do the same during his year in Beijing as a Schwarzman Scholar."
UGA's previous Schwarzman Scholars are UGA alumni Torre Lavelle (BS '16), Elizabeth Hardister (AB '18, MPH '18) and Gabrielle Pierre (BSENVE '17, MEPD '18) and Swapnil Agrawal (AB '19, AB '19).
For more information on Schwarzman Scholars, visit www.schwarzmanscholars.org.
https://alumni.uga.edu\/wp-content/uploads/ShaunKleber-CityYear-resized.jpg 423 1219 Elizabeth Elmore https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Elizabeth Elmore2019-12-23 06:00:002019-12-17 15:33:35UGA alumnus awarded Schwarzman Scholarship
An Interview with Sally Williamson (ABJ '83)
December 10, 2019 /in Alumni Spotlight, Featured /by Maggie Cavalenes
Sally Williamson, Founder and CEO of Sally Williamson & Associates
Sally Williamson (ABJ '83) has made a name for herself in the communication business.
With 30 years of experience to her name, Sally is the founder and president of the Atlanta-based Sally Williamson & Associates. Focusing on the spoken side of communication, the company is approaching 20 years of executive coaching, consulting, workshops and more to create effective workplace communicators.
The company has published three books that detail her practices' beliefs: The Hidden Factor: Executive Presence, Leading Executive Conversations, and Storylines and Storytelling: What They Remember and Repeat. The group has also started a podcast that features female leaders across the business world, with stories from executives at companies like Delta and TD Bank.
Alumni Association: How would you describe your business to someone who is unfamiliar with it?
Sally Williamson: We're a communication consulting group that helps people influence and impact others through effective communication practices.
AA: How did you get into consulting like this?
SW: I was a journalism school graduate. I was intrigued by messaging in business and thought that I would start out on a public relations track. Instead, I got closer to the communicators and learned the foundational skills of personal delivery and presence. That's oversimplifying it, but eventually I brought the two concepts together in executive coaching.
AA: What inspired you to create your own business?
SW: I worked in the training field and saw both the strengths and limitations of a set curriculum. I was always more intrigued by how people used skills once they left a training program versus how well they did in a workshop. And, I learned that most training formats were weak on the application of skills. I saw an opportunity to blend training with coaching and ensure that skills are applicable in any business setting.
And, that's what my firm is known for: the customization of training, the added coaching elements and the expertise to understand and solve for the expectations of listeners.
AA: What inspired the start of your podcast?
What's Your Story with Sally Williamson is a podcast that centers on leadership and storytelling.
SW: Two years ago, we released our third book which is called "Storylines and Storytelling: What They Remember and Repeat." For two years, I did research on how stories are used in business and the skills of a good storyteller. I coined the phrase "the master storyteller" and developed the tools to help anyone become one.
The podcast was a natural outgrowth of that. It's called "What's Your Story," and people who come on the podcast talk about stories in business and how they use stories to make points memorable and repeatable.
AA: Any favorite episodes?
SW: All of them! Don't want to play favorites. What I love about it is that when we send people an outline for the podcast, they think they're going to talk about their stories in their business and how they've leveraged storytelling to motivate a team, promote a product or position a brand. Ultimately, they reveal themselves as storytellers. And, that's fun to explore. We're asking leaders to talk about stories, but they actually illustrate their skills as storyteller.
AA: How do you think your time at UGA impacted your career?
SW: I'm sure my early days relied on technical skills to learn writing disciplines and headlines. But the more long-term impact has been the connection back to the school as a professional. I've enjoyed being a part of the Bulldog 100 program for small businesses, and love the opportunities to go back on campus to support programs around professional development.
AA: What advice would you give to a student looking for their first job in the communications field?
SW: Make sure that what you tackle first is experience more than stature. Don't worry so much about the prestige of the brand you go to work for, or the starting title or role they give you. Put yourself in a position where you can get as much experience as you can and a frontline view of what is really happening around you. It's the experience you get in the first job that gets you to the second or the third one. I think that's especially true in public relations and communications – if you can show that you've done the work, rather than just been around the work, it makes a huge difference in what you have an opportunity to do next. People in public relations and communications get hired based on experience. What have you done? What do you know how to do?
AA: What are you most proud of, or what has your greatest success been?
SW: There have been many just as there have been many challenges. Success to me is based on how the business has evolved. We've been able to take what started as my thoughts and beliefs and grow it into a shared set of tools and skills that a team leverages. I'm proud of that, and that SW&A has become a place where others have developed an expertise and deliver great work. In the last three years, my son has joined the business and that suggests that our product and our work will outlive me.
https://alumni.uga.edu\/wp-content/uploads/sallyheadshot-1220x423-feature.jpg 423 1220 Maggie Cavalenes https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Maggie Cavalenes2019-12-10 10:00:002019-12-10 10:19:18An Interview with Sally Williamson (ABJ '83)
Employee engagement a key to success, says nonprofit leader
December 5, 2019 /in Alumni Spotlight /by UGA Alumni
This story was originally posted to the UGA School of Social Work website on Oct. 24, 2019, and was written by Adelia Henderson.
When it comes to running a successful organization, concepts like determination and loyalty often come to mind. But sometimes, a key to success can be something as small as switching out flooring.
Pamela Landwirth (AB '73), found this out during the bi-annual 'Cookies and Conversation' meetings she holds with her staff at Give Kids the World Village, a nonprofit retreat in central Florida for children with critical illnesses and their families.
Landwirth, president and CEO of the organization, spoke about nonprofit leadership and management on Oct. 11 at Studio 225, the new University of Georgia Student Center for Entrepreneurship. The event was sponsored by the UGA School of Social Work. She said when she first started at Give Kids the World Village in 1992, there were only 32 villas and less than 40 employees, so interaction with all the employees was easy.
However, as the Village began to grow, Landwirth said she started "Cookies and Conversation" to stay engaged with employees on that micro level.
"Money is not a motivator," she said. "But when you ask a housekeeper how you can make their job easier, and they say 'take out the carpet', and you put in tile, that's when you get them more engaged."
"They feel like you value them; you're listening to them, and you're doing something about it."
Currently, Give Kids the World Village has 166 villas and more than 7,000 families that visit each year from 76 different countries. In Landwirth's new book, "On Purpose: How Engagement Drives Success," she outlines how practicing engagement is a key component to maintaining a successful organization.
"The beauty of engagement is that it doesn't cost any money. It's not the big parties, it's not going out and giving raises," Landwirth said. "Engagement boils down to leadership. There are very few things that have the impact that leadership does."
Prior to working at Give Kids the World Village, Landwirth spent 16 years with the Walt Disney Company, working in various areas such as casting, attractions sales and park operations. She was then a consultant to the president and CEO of Hard Rock Café.
Give Kids the World Village provides children with life-threatening illnesses and their families a cost-free, week-long vacation to enjoy Orlando's theme parks. Of each dollar they spend, about 93.1 cents goes directly to programs for the families such as accommodations, meals, tickets and transportation.
Landwirth said she employs a certain formula at the Village in order to maximize success.
"Quality staff experience, plus quality guest experience, plus quality stakeholder experience, plus quality business practices is what we have to focus on for success," she said. "If any of those legs on the stool are not in sync, the whole thing will fall apart."
Landwirth advised students interested in the nonprofit sector to take as many business classes as possible, to gain experience that will help them succeed when partnering with corporations, as when Landwirth spearheaded a partnership with the company Hasbro that brought the world's largest game of Candyland to Give Kids the World Village.
She believes that, in a time where differences tend to pull people apart, it is vital for businesses to appreciate their employees for who they are and give them the resources needed to develop their individual gifts.
"Imagine if you worked for a company that not only helped you define your gifts, but then gave you outlets internally and externally to give those gifts away, how much more engagement we would have in the world," Landwirth said.
"Our staff and volunteers come together for a common purpose because they want to be a part of something bigger," she said.
"That's what I'm hoping the book and discussions like this will do, to help us focus on those things that pull us together, and less on the things that pull us apart."
Support the Center for Nonprofit Organizations
https://alumni.uga.edu\/wp-content/uploads/pamela-landwirth.jpg 460 662 UGA Alumni https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png UGA Alumni2019-12-05 13:49:102019-12-05 13:49:10Employee engagement a key to success, says nonprofit leader
Finding a home as a first-generation student
November 7, 2019 /in Alumni Spotlight, Featured, Made by the Bulldog Nation, UGA Young Alumni /by Katy Clements
Written by Jasmin Severino Hernandez (AB '13, AB '13), UGA Young Alumni Leadership Council Outreach Chair
I transferred to the University of Georgia in 2010, with no idea how the transition would work. I came from a small liberal arts college, where I felt like I was a big fish in a little pond. At UGA, I felt quite the opposite. I felt like the world was my oyster, but I also felt lost in the sea of people. As a first-generation student, it felt lonely because I was immersed in a new experience with no idea how to navigate it all. I graduated from UGA in 2013, with a degree in political science from SPIA & another in Spanish from Franklin.
I have amazing memories from UGA.
The first was when my roommate convinced me that pageants could teach me how to be confident in myself. With her help, I competed in various pageants throughout undergrad. My greatest memories are from competing in Miss UGA in 2012 and 2013. I was a runner-up in the 2013 competition and it is a moment I will never forget. My mic went out during my talent routine and the audience only heard the last 30 seconds of my song … ironically where I had to sing the highest note. I received a standing ovation before the judges made me do it all over again!
"Some of our greatest memories involve our similar journeys as first-generation students trying to find a home, a voice, and ourselves in a new and unfamiliar place."
In 2013, I also found my home away from home. I became a sister of Lambda Theta Alpha Latin Sorority, Incorporated, which is an academic sorority. The Delta Alpha Chapter of LTA helped me grow into the professional I am today. The sisters embraced me at a time when I needed support. They taught me the value of hard work and inspired me to always believe in myself and to embrace life's unexpected twists and turns. I am still very involved with my sorority and I enjoy seeing how our sorority changes the lives of other first-generation Latinas at universities across the country.
Lastly, UGA introduced me to the love of my life. While at UGA, I met a boy who I am lucky enough to now call my husband. For an entire semester, we would casually run into each other on North Campus. One day, we finally spoke, and the rest is history. We took our engagement photos on North Campus, as a sweet nod to the place that sealed our fate. We were married on homecoming day this year, October 19, 2019, and we still enjoy calling the Dawgs on Saturdays. Some of our greatest memories involve UGA and our similar journeys as first-generation students trying to find a home, a voice, and ourselves in a new and unfamiliar place.
Today, I serve as the Outreach Committee Chair for the UGA Young Alumni Leadership Council because I truly believe that although my time at UGA was challenging in many ways, it also helped me grow immensely. I am very thankful for it all.
Somewhere along the way, UGA gave me everything I needed. Somewhere along the way, I found a home.
Featured image above by Claire Diana Photography
https://alumni.uga.edu\/wp-content/uploads/Jasmin-Severino-Hernandez-Featured-Blog.png 423 1220 Katy Clements https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Katy Clements2019-11-07 16:53:002019-11-22 09:10:16Finding a home as a first-generation student
Bob Sleppy (BS '05, MBA '10) makes a difference at Nuçi's Space
October 10, 2019 /in Alumni Spotlight, Featured /by UGA Alumni
Bob Sleppy (BS '05, MBA '10) is the executive director of Nuçi's Space, an Athens, Georgia, nonprofit that allows musicians to meet with doctors about physical and/or mental health issues.
For World Mental Health Day today (October 10), we asked Bob to share a little about Nuçi's Space, his UGA experience, and how attitudes toward mental health issues have evolved over the two decades since Nuçi's Space first opened its doors.
How does Nuçi's Space serve the Athens community?
Nuçi's Space was created in memory of 22-year-old UGA student and talented musician, Nuçi Phillips, who was diagnosed with clinical depression in high school. Although he fought courageously, Nuçi sadly lost his battle, and on Thanksgiving Day 1996, he ended his life.
Nuçi Phillips
Nuçi's Space is a 501(c)(3) nonprofit organization whose mission is to prevent suicide by actively supporting the emotional, physical, and professional well-being of musicians. Nuçi's Space advocates for and helps to alleviate the suffering of those living with a brain illness while also fighting to end the stigma attached to such illnesses. To accomplish this mission, Nuçi's Space provides a healthy, safe environment in which musicians are supported and guided to affordable, obstacle-free appropriate professional care. While appropriate treatment of brain illnesses is crucial, Nuçi's Space also recognizes and strives to heighten awareness in order to help to identify preventive tools, including how individuals can maintain healthy lifestyles.
Since its inception, Nuçis' Space has financially assisted 2,000+ musicians, subsidized 23,000+ appointments with mental health professionals, at a cost of over $1.2 million.
Nuçi's Space
Describe your biggest challenge as executive director of Nuçi's Space.
I don't know if there is just one challenge that stands out from the others. The challenge is finding balance among all the roles and responsibilities that come with the job. I've found that the best way to overcome this challenge is to hire great people and lean on them to help navigate the daily ups-and-downs of managing a nonprofit organization.
How does Nuçi's Space collaborate with UGA?
Our collaboration with UGA and its students is almost too extensive to share in its entirety. In addition to the students who volunteer with us, we regularly work with the Music Business Program, AU/UGA Medical Partnership, Institute for Nonprofit Management and Leadership, School of Social Work, Student Health Center and the UGA Police Department. The University of Georgia has been a terrific partner in our growth and we continue to look for new and exciting ways to collaborate.
Bob with his family at the 2016 Teacher of the Year Banquet where he received that year's honor.
How has your UGA education prepared you for this role?
In addition to the high caliber of professors, fellow students and endless learning opportunities, the attribute that really makes the University of Georgia stand out is its commitment to service learning and community engagement. The opportunity to apply the lessons learned in the classroom to real-world situations is unparalleled.
How has the community perception of mental health evolved since you started at Nuçi's Space?
I was hired as the executive director in 1999. Fortunately, I have seen some improvement in how depression and suicide are perceived by the public. Most of the stigma related to mental illness can be attributed to a lack of understanding and misinformation. The more we talk about mental illness, share our personal stories and feel empathy for each other, opportunities to lessen the stigma will occur. This weekend, during the third quarter of the UGA vs. South Carolina football game, the crowd will be asked to hold up three fingers in remembrance of Tyler Hilinski, the brother of South Carolina's quarterback Ryan Hilinski. Tyler lost his battle with mental illness when he took his own life in 2018. Twenty years ago, I couldn't have imagined that 92,746 football fans would pause for a moment to honor those we've lost or who continue to suffer with a mental illness.
Did you have a favorite professor?
I had great professors and lecturers throughout my undergraduate and graduate programs. My experience as a student in the Terry Part-time MBA Program was beyond what I could have hoped for. Some of the professors who come to mind are Dr. Ann Buchholtz, Dr. Dwight Lee, Charles Lankau III, and Dr. Bob Boehmer. However, I attribute a good portion of my professional success to Dr. David Harvey. His financial accounting class was very challenging, but it solidified the work ethic my parents instilled in me when I was younger. I have such a profound respect for Dr. Harvey and was delighted when he accepted a position on the Nuçi's Space Board of Directors earlier this year, nearly 12 years after I attended my first class with him.
Bob and his daughter, Finley, take in a Georgia game at Sanford Stadium.
I have been fortunate to teach Theory and Management of Nonprofit Organizations, Social Entrepreneurship and Nonprofit Leadership through the Institute for Nonprofit Management and Leadership at the UGA School of Social Work for the past 8 years. My favorite part of teaching are the ongoing relationships I have with students. I try to incorporate a Socratic style of teaching so that we discover, analyze, discuss and solve problems in the classroom together. Often my interaction with students extends beyond graduation. I receive occasional emails from former students who stay in contact with me. I love watching them transition from students into colleagues.
Has teaching enhanced your ability to perform your role at Nuçi's Space?
Absolutely. The blessing and curse of teaching very smart students is that they keep me on my toes. My responsibility as an instructor to stay current on trends and best practices in the nonprofit sector directly impacts my role as an executive director.
Most meaningful experience at Nuçi's Space?
I have so many great experiences at Nuçi's Space that it's impossible to choose just one. One of my proudest moments was when my work at Nuçi's Space and my involvement with UGA coincided. Nuçi's Space has been recognized four times (2012,2013, 2015, 2016) as a Bulldog 100 business, recognizing the 100 fastest growing businesses owned or run by an alumnus.
https://alumni.uga.edu\/wp-content/uploads/2018colornprofitsleppy.jpg 750 1800 UGA Alumni https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png UGA Alumni2019-10-10 16:35:042019-10-10 16:35:04Bob Sleppy (BS '05, MBA '10) makes a difference at Nuçi's Space
Mallory O'Brien (ABJ '12) and the secret to a soapy success
October 2, 2019 /in Alumni News, Alumni Spotlight, Featured, Women of UGA /by Maggie Cavalenes
Mallory O'Brien is a UGA alumna and the brain behind Irish Spring's Twitter account. Photo: Peter Frey
While the Bulldogs earned a "W" versus Notre Dame last month, one surprising brand also took home a marketing 'win.' Irish Spring, a popular soap line, enjoyed 15 minutes of internet fame thanks to an idea from Mallory O'Brien (ABJ '12), the co-vice president for the NYC Dawgs and a social media community manager at Colgate-Palmolive, Irish Spring's corporate parent.
After Georgia-based grocery chain Dill's Food City announced in a now-viral post that it wouldn't sell Irish Spring prior to the game against the Fighting Irish, Mallory had some great ideas that led to the brand reacting accordingly.
A photo from the Dill City Food Facebook post that went viral.
Though there had never been a reason for Irish Spring to need a Twitter presence, this turned into the perfect opportunity to start a social media storm. Now verified with over 3,000 followers, the account has been an immediate success.
In Irish Spring's second tweet ever, the brand poked fun at the grocery store and claimed they were about to send a whole lot of soap to Athens. This gained almost 3,000 retweets and over 16,000 likes.
Irish Springs sent quite a few packages to Athens. Photo via Irish Springs Twitter.
Irish Spring jumped head-first into the social media space, but followed only four accounts–the University of Georgia being one of them. But this wasn't the brand's only impact on the internet. Mallory suggested sending brand ambassadors to campus for that glorious–and crowded–football Saturday in Athens.
Campus ambassadors for Irish Spring visited Athens with gifts. Photo via Irish Spring's Twitter.
Who would have anticipated that a Bulldog was behind this campaign from 'up north?' Surprising as it may be, we know that all great things start at the University of Georgia.
Here's to good, clean fun and a Georgia win!
https://alumni.uga.edu\/wp-content/uploads/irishspring.jpeg 2389 3919 Maggie Cavalenes https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Maggie Cavalenes2019-10-02 06:00:202019-10-01 17:09:45Mallory O'Brien (ABJ '12) and the secret to a soapy success
Show off your red and black in style thanks to artist Melissa Mahoney (BFA '87)
October 1, 2019 /in Alumni Spotlight, Featured /by Clarke Schwabe
This article was written by Leigh Raynor Arndt.
All Bulldogs know that Saturdays in Athens are not for sweatpants. For those seeking a more refined gameday look, alumna Melissa Mahoney (BFA '87) has designed a particularly stylish way to don your red and black. Her beautiful silk scarves have landed in the UGA Bookstore and embody Melissa's love for her alma mater. The scarves' combined artistry and practicality reflect the story of Melissa's career–a path she began as a UGA student.
Portrait of Melissa Mahoney (BFA '87)
With several artists in her family, Melissa comes by her creative streak honestly. An Atlanta native, she now lives in Palo Alto, California. She's led her own graphic design firm, Indigo Creative, since 1993. The success of her business now allows her to spend more time on another passion: painting.
Melissa's scarf design uses high-energy swirls that run throughout her latest "Vortices" series, which is a collection of paintings and textiles. In addition to designing for UGA, she's created scarves for Stanford and tech-juggernaut Google. And she's been her own boss for more than 25 years. She attributes much of this success to the knowledge and skills she gained at UGA.
The Google scarf Melissa designed.
Melissa's graphic design major and fine arts minor gave her practical know-how while allowing her to explore her artistic side. "Not all graphic designers can draw and paint, but these are great skills to have," said Melissa. "They have helped me stand out in my field."
After graduation, Melissa pursued graduate studies through UGA Cortona, a program that just celebrated its 50th anniversary. In Italy, Melissa was inspired by seeing in person the art that she'd studied for years. The trip also emboldened her. "Going to Italy gave me the courage to try new things and venture out," said Melissa. Ultimately, her experience abroad led her to follow her dream of living in California.
After a few years working in Atlanta, Melissa packed up her belongings and drove across the country to the West Coast. With no job offer in tow, the move was risky. But the reward for her bravery has been a long career in California, the state that now "feels like home."
Melissa continues to exhibit the courage she developed at UGA. A cold call and months of determination led to her Google scarf. A scarf for another tech giant will soon be on the way, too.
"There are so many ways to make a living as an artist," Melissa said. "I'm lucky to do what I love. And I love sharing my passion. Seeing others enjoy my art brings me so much joy."
Melissa's UGA scarf and more will be available at her pop-up shop at the UGA Bookstore in November.
Visit Melissa in Athens on November 22 and 23 for a "Scarf Pop-up" at the UGA Bookstore! Learn more.
And on Sunday, October 20, San Francisco Bulldogs can let their creative side loose during a workshop Melissa will lead at the Triton Museum of Art in Santa Clara.
https://alumni.uga.edu\/wp-content/uploads/FeaturedImage-MelissaMahoney.jpg 423 1220 Clarke Schwabe https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Clarke Schwabe2019-10-01 16:07:552019-11-13 11:41:46Show off your red and black in style thanks to artist Melissa Mahoney (BFA '87)
Q&A with Trey Jarrard (AB '93)
Trey Jarrard (AB '93) is the CEO of Renewvia Energy. He founded Renewvia Energy in 2008 to develop solar power systems in financeable favorable regions across the United States. Under his leadership, the company expanded internationally in 2013 to develop utility-scale solar in Uruguay and then, hybrid and standalone solar photovoltaic and battery-powered microgrids in the Marianas Islands in 2016, Kenya in 2018 and Nigeria in 2019. Today, Renewvia operates under an expanded mission not only to add value to its U.S. clients, but also to improve the quality of life for people who live in power challenged areas while providing above market returns for investors.
Trey came to Athens recently to speak to several classes and tour campus. We asked him a few questions to find out more about what he does, his company and how his time at UGA shaped his professional path.
What made you want to start your own business? And why this particular business?
Opportunistic timing with target market. Specifically the activation of substantial commercial tax benefit for renewables in the US led me into the solar sector.
How did your time at the University of Georgia impact your professional and personal path?
Peer connections made at UGA directly introduced a unique track that would otherwise not have manifested in any form. One specific UGA connection changed my professional path completely from one sector over a short period of time that resulted in me identifying the current opportunity I am pursuing.
What is your favorite part of campus to revisit? What brings you back or keeps you connected to UGA?
The campus has grown so substantially over the last 25 years, some areas are difficult to recognize but old campus remains my favorite.
What are you most proud of professionally?
Being part of the initial funding of a large publicly traded company and starting an international company.
Many governments, non-profits, and individuals are working to create a more sustainable society and a more sustainable economy. Where do you see Renewvia fitting in to these efforts? What role can your work play in building a better future?
Renewvia is directly contributing to multiple governments in sub-Saharan to help solve poverty through provision of affordable and reliable sustainable power. Every solar microgrid Renewvia builds in Africa directly replaces a form of fossil fuel, disposable batteries or solid fuel, thus avoiding and reducing carbon emissions. Providing power in these communities directly impacts health, productivity, safety and gender equality. Improvements in each of these areas provides the people of these communities a critical element for improving quality of life in multiple forms.
If you could give one piece of advice to students, what would it be?
Meet as many people as you can, get to know them, learn from them and stay in touch.
https://alumni.uga.edu\/wp-content/uploads/FeatureImg-TreyJarrardQA-V1.jpeg 423 1220 Clarke Schwabe https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Clarke Schwabe2019-10-01 13:56:052019-10-16 14:48:14Q&A with Trey Jarrard (AB '93)
Q&A With Aaron Luque (MBA '16)
September 16, 2019 /in Alumni Spotlight, Featured /by Clarke Schwabe
Aaron Luque (MBA '16) is the CEO of EnviroSpark Energy Solutions, a company that specializes in the design and installation of electric vehicle charging station solutions. EnviroSpark was honored as a 2019 Bulldog 100 company, and Aaron is visiting campus this week to speak to entrepreneurship and sustainability classes, field questions from students and share his experience in both areas. We spoke with Aaron to learn a little bit more about him, his work, his UGA experience and how those three things intersect.
My work experience had previously always been in what would be considered a "big corporate" environment, complete with inefficiencies and red tape that would make it very difficult for me to best serve my clients. At the end of the day, I just wanted the freedom to be flexible and creative, and "best-fit" solutions for my clients. I wanted to recognize the uniqueness of each and every client and prospect, let them know they were special, and provide services with their needs in mind.
As cheesy as it sounds, I really did choose the sustainability sector out of an innate desire to leave the world a better place for future generations of humans and for life in general. Selling something you believe in is extremely fulfilling and comes easily and naturally, whereas selling something in which you don't believe is difficult and unsatisfying.
You earned your MBA from UGA in 2016. Why did you choose to pursue that degree, and what impact has it had on your professional path?
Both of my companies had grown to a point where I needed to be thinking about business strategy and finance on deeper levels, and as a result I chose to enroll in the Executive MBA program. As an entrepreneur for the last 12 years, with no aspirations of working for anyone else anytime soon, the program has probably benefited me in different ways than it would for, say, someone who was simply looking to move up the corporate ladder. On a personal level, I'd have to say I personally got the most value from the finance and economic-related portions of the program, and the knowledge gained in those areas has significantly enhanced my ability to run my businesses.
The knowledge that my efforts and those of the teams I have built are having a major impact on the adoption rate and transition towards electric vehicles. EnviroSpark, a company self-funded and organically-grown, is directly responsible for the design and installation of over 10,000 electric vehicle charging stations across the United States and Canada. I cannot count the number of times one of my clients has called me up and told me they couldn't believe how many people went out and purchased electric cars after we completed an installation at their office, hotel, apartment, condo, convenience store, etc. Knowing that we reached out to these locations, educated them about electric vehicles, designed a charging solution for them, implemented that solution, and then seeing the end result of increased electric vehicle ownership is extremely rewarding.
You've said that you're passionate about sustainability. What do you see as your role—personally, professionally, or both—in creating a more sustainable society?
When I was first considering getting into the electric vehicle space I was thinking to myself "electric vehicles are amazing, why do more people not drive them?" After some research, it became very apparent there were two main reasons for this:
Awareness – People simply didn't know all the benefits of owning an electric car (I could go on for days on this topic).
Range Anxiety – People were scared they would get stuck somewhere due to a lack of infrastructure (and rightfully so).
With that in mind l founded EnviroSpark with two primary goals:
Learn as much as possible about all of the benefits of electric vehicle ownership and share this with as many people as possible
Design and construct as many charging sites as possible. My hope was that every time someone saw one of our charging stations, they would be a little more comfortable with the idea of switching to an electric car.
Whatever you do for a living, make sure it's something you're passionate about. Work is too much time of your life to be spent doing something you don't love, and I'd venture to say it's impossible for your overall quality of life not to be directly influenced by the level of satisfaction you have for your career.
https://alumni.uga.edu\/wp-content/uploads/aaron-luque.jpg 423 1220 Clarke Schwabe https://alumni.uga.edu/wp-content/uploads/uga-alumni-nba-1.png Clarke Schwabe2019-09-16 17:26:102019-09-17 11:31:19Q&A With Aaron Luque (MBA '16)


What do you want to read about Mercedes C-Class Cabriolet?
The Mercedes C-Class Cabriolet is an elegant four-seat convertible with a high-tech cabin and a range of fairly economical engines. If you fancy something a little easier to live with every day, it's also available as a swoopy coupe, a five-seat saloon and a practical estate.
To keep it looking and feeling fresh, the Mercedes C-Class Cabriolet was updated in 2018 with two new engines, restyled bumpers and an overhauled infotainment system. The latter now comes with a 10.3-inch display as standard instead of the old car's 8.4-inch unit, and you can even get a 12.3-inch digital screen in place of conventional analogue dials – just like in the Audi A5 Cabriolet.
Unfortunately, the Mercedes doesn't feel quite as well built as the rock-solid Audi inside, but it comes with plenty of metal switches and glossy trims to make it look just as upmarket. Less fancy, however, are the man-made leather seats you get as standard, but at least they come with loads of adjustment to help you get comfy.
Things are much cosier in the back, but there's still just enough space for two tall adults – on short journeys at least – and the front seats slide forward electrically to help them climb in easily.
The Mercedes C-Class Cabriolet boot is the same size as in the BMW 4 Series Convertible, but it's slightly smaller than the loadbay you get in an A5 Cabriolet. Unlike in most convertibles, you can fold the Mercedes' back seats down if you ever need to carry very long luggage.
You probably won't be brimming the C-Class Cabriolet's boot all that often, so more important than boot space is what it's like to drive. Avoid sporty AMG-Line models – or spend extra for the optional air suspension – and the C-Class Cabriolet irons out bumps and potholes impressively well.
Even entry-level petrol models make decent long-distance cruisers, but for regular long drives you'll want to pick a C220d diesel model, which'll prove more fuel efficient. If it's a sporty soft-top you're after, one of the faster AMG-tuned C43 petrol models will be worth considering.
Whichever model you go for, you get a silky-smooth nine-speed automatic gearbox as standard, alongside plenty of active safety kit including cruise control and automatic emergency braking.
Add to this a reassuring five-star safety rating awarded to the C-Class Cabriolet by Euro NCAP in 2017, and you've got one of the safest soft-tops on sale and a tempting alternative to the likes of the BMW 4 Series Convertible and Audi A5 Cabriolet.
The Mercedes C-Class Cabriolet is just as spacious inside as the C-Class Coupe, so you'll have no trouble getting comfortable in the front if you're over six-feet tall. Both front seats come with electric height adjustment and adjustable lumbar support so you'll have no trouble finding your ideal seating position and you shouldn't be bothered by backache on long drives.
Unfortunately, climbing in the back seats isn't a particularly graceful manoeuvre – especially with the roof up. The front seats slide forward electrically to give your passengers a bigger gap to squeeze through, but tall adults will have to stoop down uncomfortably to avoid hitting their head on the Mercedes' sloping fabric roof.
Once your passengers have squeezed their way in, however, space in the C-Class Cabriolet's back seats is actually pretty good – for a convertible, anyway. There's enough legroom for six-footers to get comfy and only very tall passengers will find their heads brushing against the fabric roof.
Just like the C-Class Coupe, there are only two seats in the back so there's plenty of shoulder and elbow room to go round and it's even relatively easy to fit a child seat. The standard Isofix anchor points are clearly marked and – with the roof down – it's a doddle to lift in and secure the seat.
The dark roof fabric lining you get in AMG-Line cars makes them feel a little more cramped in the back than other versions, but you can quickly solve this by putting the roof down. The fabric folds extend forwards over the rear headrests as it goes, however, so your taller passengers will have to lean forwards slightly to avoid it brushing against their heads.
The C-Class Cabriolet's front doors have large enough pockets to hold a 1.5-litre water bottle and there's space under the folding central armrest for a third bottle. You get two cupholders tucked neatly under a folding cover in the centre console alongside a 12V socket, a USB port and a tray to put your phone it.
Unfortunately, the glovebox isn't particularly roomy and most of the available space is taken up by the bulky owner's manual. The two rear-seat cupholders aren't particularly deep, either, and there aren't any extra storage bins for passengers in the back.
The Mercedes C-Class Cabriolet has the smallest boot of any model of C-Class on sale, but there's still just enough space for you to carry a couple of small suitcases or a large baby buggy – with the roof up at least. Its 370-litre capacity is the same size as a BMW 4 Series Convertible's boot and only very slightly smaller than what you get in an Audi A5 Cabriolet.
Thankfully, the boot opening is pretty wide so there's enough room for you to hoist in a wide suitcase, and you even get a handy divider to make sure you leave enough space to fold the roof down. If you're certain you'll leave the roof up, you can fold this away to maximise the Mercedes' carrying capacity.
If you need to carry very long luggage, you can flip the back seats down in a two-way (50:50) split – something you can't do in many other convertibles. You also get a smattering of tether points, a netted cubby and enough space under the floor to tuck a small soft bag. There's also a folding plastic crate that'll prove useful if you've got plenty of small items to carry.
The most affordable C-Class Cabriolet comes with a 1.5-litre petrol engine that's boosted by a mild-hybrid system to deliver decent performance and reduced fuel economy. Mercedes claims it'll return 44.1mpg, but you can expect to see a figure in the high thirties in normal driving conditions. This engine's your best bet if you do lots of city driving, but it's even impressively quiet at motorway speeds.
Speaking of motorways, if you lots of very long drives you'll be better off with a C220d diesel model. This 194hp engine gives the C-Class Cabriolet enough poke to breeze past slow-moving traffic and it produces little more than a faint hum at 70mph. Mercedes claims it'll return more than 56mpg, but 50mpg is a more achievable everyday figure.
Unlike the C-Class saloon, you can't get the C-Class Cabriolet in C300 petrol car, so if you're after a sporty soft-top, your only option is to go for the twin-turbo V6 AMG C43 model with 390hp. This'll accelerate from 0-62mph in just 4.8 seconds – thanks to its grippy 4Matic four-wheel-drive system – but will struggle to return more than 25mpg.
Whichever engine you pick, you get a nine-speed automatic gearbox as standard that changes gears smoothly when you accelerate and doesn't jerk at low speeds. It doesn't respond to the paddles on the steering wheel quite as quickly as the automatic gearboxes you get in the A5 Cabriolet and 4 Series Convertible, but it's still a significant improvement over the old C-Class Cabriolet's seven-speed unit.
With the roof up, the Mercedes C-Class Cabriolet feels just as relaxing to drive as the Coupe. The standard suspension irons out bumps impressively well and the optional air suspension softens the thud of even the most cavernous potholes.
AMG-Line versions feel a little firmer, but whichever trim you choose, you won't hear much tyre noise at motorway speeds. In fact, the fabric roof does such a good job muting wind noise on the motorway that it's barely any louder than the C-Class Coupe at 70mph.
Go for a Sport model, and the comfort-oriented suspension means the C-Class Cabriolet isn't quite as much fun to drive on a tight twisty road as the BMW 4 Series Convertible, but it feels right at home at a relaxing cruise.
If you fancy taking advantage of an unexpected sunny spell, you can lower the roof in just 15 seconds at up to 31mph. Of course, you'll hear more wind noise with it tucked away, but the combination of a wind barrier behind the front seats and Mercedes' special Wind Cap spoiler on the windscreen means you're well protected from unpleasant gusts – even on the motorway.
With the roof down, you get fantastic visibility to help you spot approaching traffic, but the rather small rear window and thick roof sections behind the passenger seats produce some significant blind spots with the roof up. Thankfully, the C-Class Cabriolet comes with a reversing camera as standard to help make it reasonably easy to park. You even get a self-parking system that'll steer you into bay and parallel spaces automatically.
Also standard are cruise control and automatic emergency braking, but you have to pay extra for the Driver Assistance Pack if you fancy all the high-tech bells and whistles. This upgrade brings with it blind-spot detection, lane-keeping assist and adaptive cruise control that'll accelerate, brake and steer for you on motorways – so long as you keep your hands on the steering wheel.
All this high-tech kit helped the C-Class Cabriolet earn an impressive five-star safety rating from Euro NCAP in the strict 2017 crash tests. As a result, it's one of the safest soft-tops on sale.


text:
"""Tests for :module:'heat.engine.clients.os.nova'."""

import collections
import uuid

import mock
from novaclient import client as nc
from novaclient import exceptions as nova_exceptions
from oslo_config import cfg
from oslo_serialization import jsonutils as json
import requests
import six

from heat.common import exception
from heat.engine.clients.os import nova
from heat.tests import common
from heat.tests.openstack.nova import fakes as fakes_nova
from heat.tests import utils

class NovaClientPluginTestCase(common.HeatTestCase):
    def setUp(self):
        super(NovaClientPluginTestCase, self).setUp()
        self.nova_client = mock.MagicMock()
        con = utils.dummy_context()
        c = con.clients
        self.nova_plugin = c.client_plugin('nova')
        self.nova_plugin.client = lambda: self.nova_client

class NovaClientPluginTest(NovaClientPluginTestCase):
    """Basic tests for :module:'heat.engine.clients.os.nova'."""

    def test_create(self):
        context = utils.dummy_context()
        ext_mock = self.patchobject(nc, 'discover_extensions')
        plugin = context.clients.client_plugin('nova')
        plugin.max_microversion = '2.53'
        client = plugin.client()
        ext_mock.assert_called_once_with('2.53')
        self.assertIsNotNone(client.servers)

    def test_v2_26_create(self):
        ctxt = utils.dummy_context()
        ext_mock = self.patchobject(nc, 'discover_extensions')
        self.patchobject(nc, 'Client', return_value=mock.Mock())

        plugin = ctxt.clients.client_plugin('nova')
        plugin.max_microversion = '2.53'
        plugin.client(version='2.26')

        ext_mock.assert_called_once_with('2.26')

    def test_v2_26_create_failed(self):
        ctxt = utils.dummy_context()
        self.patchobject(nc, 'discover_extensions')
        plugin = ctxt.clients.client_plugin('nova')
        plugin.max_microversion = '2.23'
        client_stub = mock.Mock()
        self.patchobject(nc, 'Client', return_value=client_stub)

        self.assertRaises(exception.InvalidServiceVersion,
                          plugin.client, '2.26')

    def test_get_ip(self):
        my_image = mock.MagicMock()
        my_image.addresses = {
            'public': [{'version': 4,
                        'addr': '4.5.6.7'},
                       {'version': 6,
                        'addr': '2401:1801:7800:0101:c058:dd33:ff18:04e6'}],
            'private': [{'version': 4,
                         'addr': '10.13.12.13'}]}

        expected = '4.5.6.7'
        observed = self.nova_plugin.get_ip(my_image, 'public', 4)
        self.assertEqual(expected, observed)

        expected = '10.13.12.13'
        observed = self.nova_plugin.get_ip(my_image, 'private', 4)
        self.assertEqual(expected, observed)

        expected = '2401:1801:7800:0101:c058:dd33:ff18:04e6'
        observed = self.nova_plugin.get_ip(my_image, 'public', 6)
        self.assertEqual(expected, observed)

    def test_find_flavor_by_name_or_id(self):
        """Tests the find_flavor_by_name_or_id function."""
        flav_id = str(uuid.uuid4())
        flav_name = 'X-Large'
        my_flavor = mock.MagicMock()
        my_flavor.name = flav_name
        my_flavor.id = flav_id

        self.nova_client.flavors.get.side_effect = [
            my_flavor,
            nova_exceptions.NotFound(''),
            nova_exceptions.NotFound(''),
        ]
        self.nova_client.flavors.find.side_effect = [
            my_flavor,
            nova_exceptions.NotFound(''),
        ]
        self.assertEqual(flav_id,
                         self.nova_plugin.find_flavor_by_name_or_id(flav_id))
        self.assertEqual(flav_id,
                         self.nova_plugin.find_flavor_by_name_or_id(flav_name))
        self.assertRaises(nova_exceptions.ClientException,
                          self.nova_plugin.find_flavor_by_name_or_id,
                          'noflavor')
        self.assertEqual(3, self.nova_client.flavors.get.call_count)
        self.assertEqual(2, self.nova_client.flavors.find.call_count)

    def test_get_host(self):
        """Tests the get_host function."""
        my_host_name = 'myhost'
        my_host = mock.MagicMock()
        my_host.host_name = my_host_name
        my_host.service = 'compute'

        wrong_host = mock.MagicMock()
        wrong_host.host_name = 'wrong_host'
        wrong_host.service = 'compute'
        self.nova_client.hosts.list.side_effect = [
            [my_host],
            [wrong_host],
            exception.EntityNotFound(entity='Host', name='nohost')
        ]
        self.assertEqual(my_host, self.nova_plugin.get_host(my_host_name))
        self.assertRaises(exception.EntityNotFound,
                          self.nova_plugin.get_host, my_host_name)
        self.assertRaises(exception.EntityNotFound,
                          self.nova_plugin.get_host, 'nohost')
        self.assertEqual(3, self.nova_client.hosts.list.call_count)
        calls = [mock.call(), mock.call(), mock.call()]
        self.assertEqual(calls,
                         self.nova_client.hosts.list.call_args_list)

    def test_get_keypair(self):
        """Tests the get_keypair function."""
        my_pub_key = 'a cool public key string'
        my_key_name = 'mykey'
        my_key = mock.MagicMock()
        my_key.public_key = my_pub_key
        my_key.name = my_key_name
        self.nova_client.keypairs.get.side_effect = [
            my_key, nova_exceptions.NotFound(404)]
        self.assertEqual(my_key, self.nova_plugin.get_keypair(my_key_name))
        self.assertRaises(exception.EntityNotFound,
                          self.nova_plugin.get_keypair, 'notakey')
        calls = [mock.call(my_key_name),
                 mock.call('notakey')]
        self.nova_client.keypairs.get.assert_has_calls(calls)

    def test_get_server(self):
        """Tests the get_server function."""
        my_server = mock.MagicMock()
        self.nova_client.servers.get.side_effect = [
            my_server, nova_exceptions.NotFound(404)]
        self.assertEqual(my_server, self.nova_plugin.get_server('my_server'))
        self.assertRaises(exception.EntityNotFound,
                          self.nova_plugin.get_server, 'idontexist')
        calls = [mock.call('my_server'),
                 mock.call('idontexist')]
        self.nova_client.servers.get.assert_has_calls(calls)

    def test_get_status(self):
        server = mock.Mock()
        server.status = 'ACTIVE'

        observed = self.nova_plugin.get_status(server)
        self.assertEqual('ACTIVE', observed)

        server.status = 'ACTIVE(STATUS)'
        observed = self.nova_plugin.get_status(server)
        self.assertEqual('ACTIVE', observed)

    def _absolute_limits(self):
        max_personality = mock.Mock()
        max_personality.name = 'maxPersonality'
        max_personality.value = 5
        max_personality_size = mock.Mock()
        max_personality_size.name = 'maxPersonalitySize'
        max_personality_size.value = 10240
        max_server_meta = mock.Mock()
        max_server_meta.name = 'maxServerMeta'
        max_server_meta.value = 3
        yield max_personality
        yield max_personality_size
        yield max_server_meta

    def test_absolute_limits_success(self):
        limits = mock.Mock()
        limits.absolute = self._absolute_limits()
        self.nova_client.limits.get.return_value = limits
        self.nova_plugin.absolute_limits()

    def test_absolute_limits_retry(self):
        limits = mock.Mock()
        limits.absolute = self._absolute_limits()
        self.nova_client.limits.get.side_effect = [
            requests.ConnectionError, requests.ConnectionError,
            limits]
        self.nova_plugin.absolute_limits()
        self.assertEqual(3, self.nova_client.limits.get.call_count)

    def test_absolute_limits_failure(self):
        limits = mock.Mock()
        limits.absolute = self._absolute_limits()
        self.nova_client.limits.get.side_effect = [
            requests.ConnectionError, requests.ConnectionError,
            requests.ConnectionError]
        self.assertRaises(requests.ConnectionError,
                          self.nova_plugin.absolute_limits)

class NovaClientPluginRefreshServerTest(NovaClientPluginTestCase):
    msg = ("ClientException: The server has either erred or is "
           "incapable of performing the requested operation.")

    scenarios = [
        ('successful_refresh', dict(
            value=None,
            e_raise=False)),
        ('overlimit_error', dict(
            value=nova_exceptions.OverLimit(413, "limit reached"),
            e_raise=False)),
        ('500_error', dict(
            value=nova_exceptions.ClientException(500, msg),
            e_raise=False)),
        ('503_error', dict(
            value=nova_exceptions.ClientException(503, msg),
            e_raise=False)),
        ('unhandled_exception', dict(
            value=nova_exceptions.ClientException(501, msg),
            e_raise=True)),
    ]

    def test_refresh(self):
        server = mock.MagicMock()
        server.get.side_effect = [self.value]
        if self.e_raise:
            self.assertRaises(nova_exceptions.ClientException,
                              self.nova_plugin.refresh_server, server)
        else:
            self.assertIsNone(self.nova_plugin.refresh_server(server))
        server.get.assert_called_once_with()

class NovaClientPluginFetchServerTest(NovaClientPluginTestCase):

    server = mock.Mock()
    # set explicitly as id and name has internal meaning in mock.Mock
    server.id = '1234'
    server.name = 'test_fetch_server'
    msg = ("ClientException: The server has either erred or is "
           "incapable of performing the requested operation.")
    scenarios = [
        ('successful_refresh', dict(
            value=server,
            e_raise=False)),
        ('overlimit_error', dict(
            value=nova_exceptions.OverLimit(413, "limit reached"),
            e_raise=False)),
        ('500_error', dict(
            value=nova_exceptions.ClientException(500, msg),
            e_raise=False)),
        ('503_error', dict(
            value=nova_exceptions.ClientException(503, msg),
            e_raise=False)),
        ('unhandled_exception', dict(
            value=nova_exceptions.ClientException(501, msg),
            e_raise=True)),
    ]

    def test_fetch_server(self):
        self.nova_client.servers.get.side_effect = [self.value]
        if self.e_raise:
            self.assertRaises(nova_exceptions.ClientException,
                              self.nova_plugin.fetch_server, self.server.id)
        elif isinstance(self.value, mock.Mock):
            self.assertEqual(self.value,
                             self.nova_plugin.fetch_server(self.server.id))
        else:
            self.assertIsNone(self.nova_plugin.fetch_server(self.server.id))

        self.nova_client.servers.get.assert_called_once_with(self.server.id)

class NovaClientPluginCheckActiveTest(NovaClientPluginTestCase):

    scenarios = [
        ('active', dict(
            status='ACTIVE',
            e_raise=False)),
        ('deferred', dict(
            status='BUILD',
            e_raise=False)),
        ('error', dict(
            status='ERROR',
            e_raise=exception.ResourceInError)),
        ('unknown', dict(
            status='VIKINGS!',
            e_raise=exception.ResourceUnknownStatus))
    ]

    def setUp(self):
        super(NovaClientPluginCheckActiveTest, self).setUp()
        self.server = mock.Mock()
        self.server.id = '1234'
        self.server.status = self.status
        self.r_mock = self.patchobject(self.nova_plugin, 'refresh_server',
                                       return_value=None)
        self.f_mock = self.patchobject(self.nova_plugin, 'fetch_server',
                                       return_value=self.server)

    def test_check_active_with_object(self):
        if self.e_raise:
            self.assertRaises(self.e_raise,
                              self.nova_plugin._check_active, self.server)
            self.r_mock.assert_called_once_with(self.server)
        elif self.status in self.nova_plugin.deferred_server_statuses:
            self.assertFalse(self.nova_plugin._check_active(self.server))
            self.r_mock.assert_called_once_with(self.server)
        else:
            self.assertTrue(self.nova_plugin._check_active(self.server))
            self.assertEqual(0, self.r_mock.call_count)
        self.assertEqual(0, self.f_mock.call_count)

    def test_check_active_with_string(self):
        if self.e_raise:
            self.assertRaises(self.e_raise,
                              self.nova_plugin._check_active, self.server.id)
        elif self.status in self.nova_plugin.deferred_server_statuses:
            self.assertFalse(self.nova_plugin._check_active(self.server.id))
        else:
            self.assertTrue(self.nova_plugin._check_active(self.server.id))

        self.f_mock.assert_called_once_with(self.server.id)
        self.assertEqual(0, self.r_mock.call_count)

    def test_check_active_with_string_unavailable(self):
        self.f_mock.return_value = None
        self.assertFalse(self.nova_plugin._check_active(self.server.id))
        self.f_mock.assert_called_once_with(self.server.id)
        self.assertEqual(0, self.r_mock.call_count)

class NovaClientPluginUserdataTest(NovaClientPluginTestCase):

    def test_build_userdata(self):
        """Tests the build_userdata function."""
        cfg.CONF.set_override('heat_metadata_server_url',
                              'http://server.test:123')
        cfg.CONF.set_override('instance_connection_is_secure', False)
        cfg.CONF.set_override(
            'instance_connection_https_validate_certificates', False)
        data = self.nova_plugin.build_userdata({})
        self.assertIn("Content-Type: text/cloud-config;", data)
        self.assertIn("Content-Type: text/cloud-boothook;", data)
        self.assertIn("Content-Type: text/part-handler;", data)
        self.assertIn("Content-Type: text/x-cfninitdata;", data)
        self.assertIn("Content-Type: text/x-shellscript;", data)
        self.assertIn("http://server.test:123", data)
        self.assertIn("[Boto]", data)

    def test_build_userdata_without_instance_user(self):
        """Don't add a custom instance user when not requested."""
        cfg.CONF.set_override('heat_metadata_server_url',
                              'http://server.test:123')
        data = self.nova_plugin.build_userdata({}, instance_user=None)
        self.assertNotIn('user: ', data)
        self.assertNotIn('useradd', data)
        self.assertNotIn('ec2-user', data)

    def test_build_userdata_with_instance_user(self):
        """Add a custom instance user."""
        cfg.CONF.set_override('heat_metadata_server_url',
                              'http://server.test:123')
        data = self.nova_plugin.build_userdata({}, instance_user='ec2-user')
        self.assertIn('user: ', data)
        self.assertIn('useradd', data)
        self.assertIn('ec2-user', data)

class NovaClientPluginMetadataTest(NovaClientPluginTestCase):

    def test_serialize_string(self):
        original = {'test_key': 'simple string value'}
        self.assertEqual(original, self.nova_plugin.meta_serialize(original))

    def test_serialize_int(self):
        original = {'test_key': 123}
        expected = {'test_key': '123'}
        self.assertEqual(expected, self.nova_plugin.meta_serialize(original))

    def test_serialize_list(self):
        original = {'test_key': [1, 2, 3]}
        expected = {'test_key': '[1, 2, 3]'}
        self.assertEqual(expected, self.nova_plugin.meta_serialize(original))

    def test_serialize_dict(self):
        original = collections.OrderedDict([
            ('test_key', collections.OrderedDict([
                ('a', 'b'),
                ('c', 'd'),
            ]))
        ])
        expected = {'test_key': '{"a": "b", "c": "d"}'}
        actual = self.nova_plugin.meta_serialize(original)
        self.assertEqual(json.loads(expected['test_key']),
                         json.loads(actual['test_key']))

    def test_serialize_none(self):
        original = {'test_key': None}
        expected = {'test_key': 'null'}
        self.assertEqual(expected, self.nova_plugin.meta_serialize(original))

    def test_serialize_no_value(self):
        """Prove that the user can only pass in a dict to nova metadata."""
        excp = self.assertRaises(exception.StackValidationFailed,
                                 self.nova_plugin.meta_serialize, "foo")
        self.assertIn('metadata needs to be a Map', six.text_type(excp))

    def test_serialize_combined(self):
        original = {
            'test_key_1': 123,
            'test_key_2': 'a string',
            'test_key_3': {'a': 'b'},
            'test_key_4': None,
        }
        expected = {
            'test_key_1': '123',
            'test_key_2': 'a string',
            'test_key_3': '{"a": "b"}',
            'test_key_4': 'null',
        }

        self.assertEqual(expected, self.nova_plugin.meta_serialize(original))

class ServerConstraintTest(common.HeatTestCase):

    def setUp(self):
        super(ServerConstraintTest, self).setUp()
        self.ctx = utils.dummy_context()
        self.mock_get_server = mock.Mock()
        self.ctx.clients.client_plugin(
            'nova').get_server = self.mock_get_server
        self.constraint = nova.ServerConstraint()

    def test_validation(self):
        self.mock_get_server.return_value = mock.MagicMock()
        self.assertTrue(self.constraint.validate("foo", self.ctx))

    def test_validation_error(self):
        self.mock_get_server.side_effect = exception.EntityNotFound(
            entity='Server', name='bar')
        self.assertFalse(self.constraint.validate("bar", self.ctx))

class FlavorConstraintTest(common.HeatTestCase):

    def test_validate(self):
        client = fakes_nova.FakeClient()
        self.stub_keystoneclient()
        self.patchobject(nova.NovaClientPlugin, 'get_max_microversion',
                         return_value='2.27')
        self.patchobject(nova.NovaClientPlugin, '_create', return_value=client)
        client.flavors = mock.MagicMock()

        flavor = collections.namedtuple("Flavor", ["id", "name"])
        flavor.id = "1234"
        flavor.name = "foo"

        client.flavors.get.side_effect = [flavor,
                                          nova_exceptions.NotFound(''),
                                          nova_exceptions.NotFound('')]
        client.flavors.find.side_effect = [flavor,
                                           nova_exceptions.NotFound('')]
        constraint = nova.FlavorConstraint()
        ctx = utils.dummy_context()
        self.assertTrue(constraint.validate("1234", ctx))
        self.assertTrue(constraint.validate("foo", ctx))
        self.assertFalse(constraint.validate("bar", ctx))
        self.assertEqual(1, nova.NovaClientPlugin._create.call_count)
        self.assertEqual(3, client.flavors.get.call_count)
        self.assertEqual(2, client.flavors.find.call_count)

class HostConstraintTest(common.HeatTestCase):

    def setUp(self):
        super(HostConstraintTest, self).setUp()
        self.ctx = utils.dummy_context()
        self.mock_get_host = mock.Mock()
        self.ctx.clients.client_plugin(
            'nova').get_host = self.mock_get_host
        self.constraint = nova.HostConstraint()

    def test_validation(self):
        self.mock_get_host.return_value = mock.MagicMock()
        self.assertTrue(self.constraint.validate("foo", self.ctx))

    def test_validation_error(self):
        self.mock_get_host.side_effect = exception.EntityNotFound(
            entity='Host', name='bar')
        self.assertFalse(self.constraint.validate("bar", self.ctx))

class KeypairConstraintTest(common.HeatTestCase):

    def test_validation(self):
        client = fakes_nova.FakeClient()
        self.patchobject(nova.NovaClientPlugin, 'get_max_microversion',
                         return_value='2.27')
        self.patchobject(nova.NovaClientPlugin, '_create', return_value=client)
        client.keypairs = mock.MagicMock()

        key = collections.namedtuple("Key", ["name"])
        key.name = "foo"
        client.keypairs.get.side_effect = [
            fakes_nova.fake_exception(), key]

        constraint = nova.KeypairConstraint()
        ctx = utils.dummy_context()
        self.assertFalse(constraint.validate("bar", ctx))
        self.assertTrue(constraint.validate("foo", ctx))
        self.assertTrue(constraint.validate("", ctx))
        nova.NovaClientPlugin._create.assert_called_once_with(version='2.27')
        calls = [mock.call('bar'),
                 mock.call(key.name)]
        client.keypairs.get.assert_has_calls(calls)

class ConsoleUrlsTest(common.HeatTestCase):

    scenarios = [
        ('novnc', dict(console_type='novnc', res_obj=True)),
        ('xvpvnc', dict(console_type='xvpvnc', res_obj=True)),
        ('spice', dict(console_type='spice-html5', res_obj=True)),
        ('rdp', dict(console_type='rdp-html5', res_obj=True)),
        ('serial', dict(console_type='serial', res_obj=True)),
        ('mks', dict(console_type='webmks', res_obj=False)),
    ]

    def setUp(self):
        super(ConsoleUrlsTest, self).setUp()
        self.nova_client = mock.Mock()
        con = utils.dummy_context()
        c = con.clients
        self.nova_plugin = c.client_plugin('nova')
        self.patchobject(self.nova_plugin, 'client',
                         return_value=self.nova_client)
        self.server = mock.Mock()
        if self.res_obj:
            self.console_method = getattr(self.server, 'get_console_url')
        else:
            self.console_method = getattr(self.nova_client.servers,
                                          'get_console_url')

    def test_get_console_url(self):
        console = {
            'console': {
                'type': self.console_type,
                'url': '%s_console_url' % self.console_type
            }
        }
        self.console_method.return_value = console

        console_url = self.nova_plugin.get_console_urls(self.server)[
            self.console_type]

        self.assertEqual(console['console']['url'], console_url)
        self._assert_console_method_called()

    def _assert_console_method_called(self):
        if self.console_type == 'webmks':
            self.console_method.assert_called_once_with(self.server,
                                                        self.console_type)
        else:
            self.console_method.assert_called_once_with(self.console_type)

    def _test_get_console_url_tolerate_exception(self, msg):
        console_url = self.nova_plugin.get_console_urls(self.server)[
            self.console_type]

        self._assert_console_method_called()
        self.assertIn(msg, console_url)

    def test_get_console_url_tolerate_unavailable(self):
        msg = 'Unavailable console type %s.' % self.console_type
        self.console_method.side_effect = nova_exceptions.BadRequest(
            400, message=msg)

        self._test_get_console_url_tolerate_exception(msg)

    def test_get_console_url_tolerate_unsupport(self):
        msg = 'Unsupported console_type "%s"' % self.console_type
        self.console_method.side_effect = (
            nova_exceptions.UnsupportedConsoleType(
                console_type=self.console_type))

        self._test_get_console_url_tolerate_exception(msg)

    def test_get_console_urls_tolerate_other_400(self):
        exc = nova_exceptions.BadRequest
        self.console_method.side_effect = exc(400, message="spam")

        self._test_get_console_url_tolerate_exception('spam')

    def test_get_console_urls_reraises_other(self):
        exc = Exception
        self.console_method.side_effect = exc("spam")

        self._test_get_console_url_tolerate_exception('spam')

class NovaClientPluginExtensionsTest(NovaClientPluginTestCase):
    """Tests for extensions in novaclient."""

    def test_has_no_extensions(self):
        self.nova_client.list_extensions.show_all.return_value = []
        self.assertFalse(self.nova_plugin.has_extension(
            "os-virtual-interfaces"))

    def test_has_no_interface_extensions(self):
        mock_extension = mock.Mock()
        p = mock.PropertyMock(return_value='os-xxxx')
        type(mock_extension).alias = p
        self.nova_client.list_extensions.show_all.return_value = [
            mock_extension]
        self.assertFalse(self.nova_plugin.has_extension(
            "os-virtual-interfaces"))

    def test_has_os_interface_extension(self):
        mock_extension = mock.Mock()
        p = mock.PropertyMock(return_value='os-virtual-interfaces')
        type(mock_extension).alias = p
        self.nova_client.list_extensions.show_all.return_value = [
            mock_extension]
        self.assertTrue(self.nova_plugin.has_extension(
            "os-virtual-interfaces"))

redpajama_set_name: RedPajamaGithub


text:
Q: How can i make the following change to this infinite series? $$ e^z  - 1  = \sum_{n=1}^\infty \frac {z^n}{n!} $$
Given the above function and its corresponding series expansion, is there anything i could do to the left side of the equation so that the infinite series looks like this instead???
$$ \sum_{n=1}^\infty (\frac {z^n}{n!})^{a} $$
that is to the power of $\mathbf A$ which would be any constant.
$$ (e^z-1)^a=  \sum_{n=1}^\infty (\frac {z^n}{n!})^{a} $$
Would it be just like this? ^
Thank you very much for your time and help.

A: For $a=2$,  $$\sum_{n=0}^\infty \left(\frac{z^n}{n!}\right)^2 = I_0(2z)$$ where $I_0$ is a modified Bessel function. In general for positive integer $a$ you can write the series as a generalized hypergeometric function
$$ {\mbox{$_0$F$_{a-1}$}(\ ;\,1,\ldots,1;\,{z}^{a})}$$

A: If you put a series to a certain power, it doesn't mean it's equal to the series of each term to that power.
I don't think there is a general expression for this series except when $a$ is 0 or 1.

redpajama_set_name: RedPajamaStackExchange


Yeah, updates from people you follow. You'll be able to "follow" resources and get updates on those too. There's a lot more that's on our mind, and we've only touched the tip of the iceberg.
Huh, so like you'll get notifications of uploads by people you follow or something?
The social stuff we've folded in is a taste of things to come when we roll out Forge 2, which will bring these elements to the game creation and resource discovery process itself.
Pepsi/Coke Freezer 5-7 hours = Awesome.
With this whole following thing it kinda makes this website look like Twitter.


Liquidity is considered to be an important risk factor for corporate bond investors, especially in an economically stressful environment. We begin this issue of The Journal of Fixed Income with an article by Scott Richardson and Diogo Palhares that exhibits some counterintuitive evidence for investors anticipating higher future excess returns for a portfolio of less-liquid bonds—no liquidity risk premium, but higher volatility for tilting a bond portfolio. However, during the stressful period associated with the 2008 financial crisis, Jeffrey Black, Seth Hoelscher, and Duane Stock use a government guarantee program to test the causal relationship of rollover risk and the liquidity-credit risk loop resulting in improved liquidity and reduced debt cost.
In the next article, Chris Dialynas makes the case that central bank intrusions have served to lower public and private debt costs, but make typical credit default inputs from rating agencies less reliable. Next, Demir Bektic' employs a momentum statistic from residual equity returns to enhance the returns of corporate bond investors in the euro-denominated global investment-grade bond market.
Hedging mortgage-backed securities is essential to isolating and profiting from proprietary prepayment modeling. In the next article, Emory Ruscus, Frank Fabozzi, and Glenn Schultz provide evidence that their empirical three-factor (level, slope, and curvature) methodology is superior at reducing interest rate risk when compared to only level and slope hedging. Finally, Ren-Raw Chen, Pei-Lin Hsieh, Jeffrey Huang, and Joe Huang derive a model to calibrate swaptions and caps/floors. Furthermore, they demonstrate that the model supports multiple curves, which is a key element to overnight index swap discounting.


What is an Nonprofit Corporation Company?
It is a state created corporate entity. Nonprofit vs. not-for-profit (vs. non-profit) There is no real difference in meaning between nonprofit and not-for-profit. Both can be used to describe organizations that do not redistribute surplus funds to owners or shareholders.A nonprofit corporation is a corporation formed to carry out a charitable, educational, religious, literary, or scientific purpose. A nonprofit corporation doesn't pay federal or state income taxes on profits it makes from activities in which it engages to carry out its objectives. A 501(c)(3) organization or 501c3 organization, also colloquially known as a 501c3, is a United States nonprofit organization that has been approved by the Internal Revenue Service to be tax-exempt under the terms of section 501(c)(3) of the Internal Revenue Code. It has its own birth certificate ( an Nonprofit Corporation certificate ) and its own Social Security Number ( a Federal Tax ID EIN ). Thus, it is a separate person. A legal person as opposed to a natural person because it has papers but no physical body.


text:
News Treehugger Voices
Powerful EcoReco Electric Scooter Has 20 Mile Range, Folds for Carrying and Storage (Review)
©. EcoReco
Traveling those first miles or last miles of your journey, such as from home to the bus or train station and then from the transit hub to a destination, can be easily done with good old manually pedaled bicycle, or with significantly less effort, an electric bicycle, but unless you can take your bike with you on the bus, it doesn't do you a whole lot of good on the other leg of your commute.
One solution that could help commuters solve their last mile challenges is an electric vehicle that can easily go with them on any sort of public transport, can be folded up and stored under a desk or in a locker or closet, and that has enough of a range to cover their daily transportation needs. I previously covered a small folding electric vehicle, the URB-E, which has a seat and resembles a tiny bicycle, and which went on to have a very successful crowdfunding campaign, but there's another option for covering the last mile, and a relatively new contender in the tiny electric vehicle market, the EcoReco scooter.
The EcoReco looks just like your favorite kick scooter from your childhood, but other than sharing the same basic design, they're as different as night and day. The EcorReco can go as fast as 20 mph, can cover about 20 miles on a single charge, and can then be recharged to 85% of capacity in just 2.5 hours. It can also fold up to be carried on a bus or train, or in the trunk of a car, weighs just 34 pounds, and can be easily stored in a small space.
The EcoReco team ran a very successful Kickstarter campaign back in December, which then ended up being suspended by the crowdfunding site, for reasons that aren't very clear. It appears that there may have been some violations of the site's policies, or some miscommunication about the product or campaign, but the campaign did manage to raise $85,000 in pledges (on a $15,000 goal).
The product, called the M3, is now being shipped to customers, and I got to spend some time scooting around town on one, thanks to a review unit from EcoReco.
"EcoReco M3 e-Scooter is eco-friendly, energy-efficient, compact and intelligent, designed for your everyday urban use. It is foldable, lightweight, safe, and easy to use. It provides a fun and convenient ride for you, and cleaner air for all.
Whether you're going the distance or just that extra mile, you can just hop on and zoom off. It's perfect for coffee runs, quick visits to crowded downtown, stops or patrol among buildings at a large campus /warehouse/factory, or just exploring new places."
The M3 weighs in at 34 pounds, which is plenty light enough to carry with you on a bus, train, or up stairs, yet the scooter is solidly built and seems to be very well designed. The hand grips fold down along the upright post, which then also folds down and locks into place above the deck of the M3, creating a compact and portable unit that would fit under a desk, in a closet, or in a locker for storage. Setting up the M3 out of the box was drop-dead simple, as all that's necessary is to remove the packaging and unfold it, at which point it's ready to roll.
© EcoReco
Riding the M3 is a blast. It's as small as a standard two-wheeled scooter that you may have ridden as a child, but when you pull the accelerator lever, it takes off with a lot of torque, and will quickly hit its top speed (about 20 mph) on a flat surface. The scooter has a "jerk-free" feature on it (no, it doesn't keep jerks from riding it) that requires users to start it rolling before the motor can be engaged, at which point the rider can accelerate at will.
Keeping in mind that this scooter is almost as small as child's scooter, when you start cruising along the road or sidewalk at 15 or more mph, it seems ridiculously fast, so much so that you might consider wearing a helmet while riding it. The top speed is configurable to limit it to 12.5 or 7.5 mph, thru hardware connectors under the foot deck, which might be a good option for younger (or perhaps older) riders. A single brake lever stops the scooter easily, although not fast enough to go into a skid or to stop on a dime, and steering the M3 is less about turning the handlebars, and more a matter of carving or leaning it in the direction you want to go it.
The M3, which has solid rubber wheels and a small suspension system on the front wheel, is designed for smooth hard surfaces, and while you can ride it on rougher roads, because of the solid wheels and minimal travel of the suspension springs, it will be a rough ride. The first time I rode it, I went up and down an older road, which was full of cracks and small potholes, and quickly found that while it was definitely ridable, I certainly wouldn't want to spend much time getting my teeth rattled on a rough road with it. I asked Jay Sung, CEO and co-founder of EcoReco, about it, and he said they have some different tire options and a bigger wheeled version in the works, which may be of interest to some riders.
The backlit LED dashboard displays the speed, battery charge status, an odometer, the trip distance and the total charge cycles, and is located on top of the handlebar. I didn't find that I needed or wanted to look at the dashboard while riding it, as taking your eyes off the road on a scooter at 18 mph didn't seem like a wise choice to me, but for everyday riders, this information could be useful, especially the charge indicator. A small kickstand on the deck holds the scooter upright, both when folded and unfolded, but seemed to be more of a convenience than a practical feature, as most riders are probably not going to lock this up on the street (but could use a cable lock through the front fork to do so).
The M3 comes with a charging unit that plugs into any standard wall outlet, and delivers a full charge in 4.5 hours, or a partial (85%) charge in 2.5 hours. The charger isn't tiny (about the size of several laptop chargers combined), but unless you need to ride long distances every day, it probably isn't necessary to carry with you. According to EcoReco, just $1 of electricity will power the scooter for about 500 miles, which is probably the cheapest method of transport ever, aside from a bicycle (although I imagine that when you consider the cost for all of the calories it would take to ride 500 miles, the M3 still comes out ahead). The company's website states that the scooter gets about 2,000 MPGe, with zero emissions (well, no local emissions, but obviously there are emissions associated with any fossil-fuel electricity generation).
What I really liked about the M3, other than that it's quick and nimble, is that it's simple and easy to ride (if you are comfortable balancing on a small platform, it's pretty intuitive to ride, and shouldn't take much time to get used to). The scooter can easily fit into the trunk of a car or under a chair or desk, and has plenty of range for most daily 'last mile' commutes (up to 23 miles). I could see this scooter being incredibly useful for getting around campus, or for most walking or biking errands in the city, especially if you live within a couple of miles of most of your daily destinations. The M3 costs $999, comes in two color options (black or red), and customers can also choose to buy a carrying case ($139) or an extra charger ($79, for if you want one for home and one for work) and right now, EcoReco is offering free shipping, which sweetens the deal just a little bit more.
EcoReco M3 Specifications:
Top speed: configurable at 20, 12, 7 mph
Range: 20 miles
Battery: 36V 8ah LiFePO4 (2000+ charge cycles)
Charging time: 2.5 hrs to 85%
Dimensions: Folding 3' x 1'x 1/2'
Brushless 250W DC hub motor
LED back-lit dashboard
Safe start feature and 2 stage braking
And One E-Bike to Rule Them All: Trek Super Commuter+ 8S Review
Foldable 3-Wheeled Scooter Shows a New Direction in Personal Electric Vehicles
Single-Wheeled Self-Balancing Electric Scooter Offers 20-Mile Range & One Hour Charge Time
The Phatty Electric Scooter Could Make Short Trips a Lot More Fun
BMW's X2City Electric Kick Scooter Will Go on Sale Later This Year
The Vika+ Foldable Electric Bike Delivers Both Performance & Style (Review)
Just What We Needed Dept.: An Electric Scooter 'Powered' by a Treadmill
The Superpedestrian Copenhagen Wheel Lives Up to the Hype (Review)
Will Electric Skates Solve the Last-Mile Problem?
Should You Buy an Electric Bike? Your Questions Answered!
21 Small Wheel Bicycles - The Zippy Revolution
Should I Buy an Electric Bicycle? Here's Everything You Need to Know to Get Started!
The Strida Folding Bike Turns 30
Let's Talk Electric Bikes: Q&A With an E-Bike Retailer
This Tiny Folding E-Bike Has a 45-Mile Range, and Doesn't Need to Be Pedaled
This Funky Foldable E-Bike Fits Into a Backpack

redpajama_set_name: RedPajamaCommonCrawl


Gran Casino Costa Meloneras is located on the island of Las Palmas de Gran Canaria. It is situated along Calle Mar Mediterraneo in the southern part of the island. Las Palmas is a popular summer holiday paradise with nature excursions and plenty of beaches.
You can either arrive via boat from mainland Spain or fly directly to the island's only airport; Gran Canaria Airport. Getting to the casino is just about a 30-minute drive along the coast and can be completed via public transportation or car.
The island is not very large which means you are fairly limited to nearby tourist destinations. Some of the most popular locations on the island are Las Canteras Beach, Bandama Caldera, Casa de Colon, and Las Palmas Cathedral – to name a few.
Gran Casino Costa Meloneras is home to a casino hall, conference center, restaurant, and two bars. It is a spacious casino that has a decent selection of both electronic and live table games. The casino is elegantly designed, featuring a lot of wood, chandeliers, and art.
Gran Casino Costa Melonetas is over 13,000 square feet, featuing 71 electronic games and 12 table games. These are split between the main gaming floor and the poker room. The convention center is open for rental and is 6,300 square feet. Two bars service guests in the casino or in the lounge area.
The casino is open between 10 AM and 5 AM every day. They open table games later in the afternoon, however, and poker events start in the evening at 7 PM. It is worth noting that there is an entrance fee of €3 to get into the casino.
Most of the table games are located out on the main casino floor, while the 3 poker tables are available in the poker room. Other than poker you will find blackjack, baccarat, and roulette tables.
The gaming area has 3 blackjack tables, 2 Punto Banco Baccarat tables, and 2 Caribbean Stud Poker tables. The only games that change betting limits are the blackjack tables which vary between €5, €10, and €20 minimum bets.
There are live cash games and tournament poker events regularly played at the casino. Tournament games vary between low stakes buy-ins and medium stakes, but there are on occasion some high stake buy in tournaments put in. The same applies to cash poker games. Players that want to play cash will need check the blinds being played as well as the min/max value of chips required to sit at the cash tables. Be aware, the casino will take a rake for every pot during the cash games.
71 slot games can be found at Gran Casino Costa Meloneras and they are all video reel machines. There are plenty of different games to be found and most games have a host of different betting options such as giving players the ability to switch the number of lines wagered or number of coins bet per line in order to increase or decrease the amount bet per spin. A few of the machines are also linked up to progressive jackpots.
Gran Casino Costa Meloneras does not have accommodation facilities available at their casino. As the island is an immensely popular tourist destination, there are numerous nearby options.
Next door you will find the Hotel Riu Palace Meloneras which offers free WiFi, air-conditioned rooms, a fitness center, outdoor swimming pool, spa, restaurant and bar. A room here will cost you about €250 a night.
Across the street, you will find the 5-star Seaside Grand Hotel Residencia. A room here will be in the range of €400 but includes amenities such as a gym, a pool, a spa, an airport shuttle, and spacious and luxurious rooms.
A more economical option is the nearby Fortuny Resort. It is not located on the seaside but is still within walking distance from both the casino and the beach. A room will cost you €75 a night and allows you access to their outdoor pool, WiFi, and gym.
There are two bars and one restaurant available to guests looking for something to eat or drink at Gran Casino Costa Meloneras. The two bars are located on opposite sides of the gaming area and include various light meals and beverages.
Restaurante La Cupula is the in-house restaurant and offers a locally-inspired menu that also features various international items. The restaurant opens just after the casino at around 12 PM allowing guests to enjoy both lunch and dinner services.