SCC to host how-to event on photographing the solar eclipse on July 13

first_imgWith a little over two months to go before the solar eclipse, Southwestern Community College is gearing up for the once-in-a-lifetime event by hosting a presentation by photographer Johnny Horne at 7 p.m. on Thursday, July 13, in Myers Auditorium on SCC’s Jackson Campus.This presentation will be a how-to on photographing the solar eclipse, which will occur on Aug. 21.“We are very excited to have Johnny Horne give this presentation,” said Lynda Parlett, SCC’s executive director of institutional development. “This a great opportunity to learn about capturing a photograph of the solar eclipse to share with future generations.”The session will also include information for budding and amateur photographers who wish to take pictures of planets, stars and astronomical events.Horne served as a staff photographer for the Fayetteville Observer for 44 years and is a contributing editor for “Sky and Telescope” magazine.He has also served on the technical support staff for “Sky and Telescope” total solar eclipse expeditions to Mexico, Africa and the Caribbean.In 1986 Horne photographed Halley’s Comet from the Australian Outback, and his astronomical photographs have appeared in magazines and newspapers worldwide.last_img read more

Six Reasons Not to Hate Epcot’s “Guardians of the Galaxy — Awesome Mix Tape Live!”

first_imgShare This!According to legend, as Walt Disney was lying on his deathbed, he stared at the ceiling tiles and mapped out his vision for Walt Disney World’s EPCOT, a forward-thinking community where people from all nations could gather together, share their culture and technological innovations, and enjoy classic pop songs performed by comic book characters. Okay, we’re pretty sure that last part wasn’t part of Walt’s original “Florida Project” plans, but that hasn’t stopped the modern-day Disney company from dropping Guardians of the Galaxy – Awesome Mix Tape Live! into Epcot’s American Gardens Theater to entertain the summer crowds.This is far from the first time that World Showcase’s premier amphitheater has tried to beat the heat with vintage tunes; the Sounds Like Summer cover band concert series ran there for several years before being canceled in 2017. But this time around, Epcot’s entertainment team has cut out the middlemen by building their own classic rock group, and fronting it with two fan-favorite Marvel heroes: Peter “Star-Lord” Quill, and Gamora. The show’s paper-thin premise is that a Xandarian Chamber Orchestra has been sent to Epcot as cultural outreach ambassadors. Star-Lord soon arrives with a sword-swinging Gamora in tow to teach them how to play retro hits from his home planet Earth, instead of their usual atonal alien intonations.Epcot’s new ‘Guardians of the Galaxy — Awesome Mix Tape Live!’ show may be the surprise sleeper hit of the summer.Despite their box office popularity, the Guardians of the Galaxy seem to be developing a history of making Disney diehards hyperventilate. The conversion of Disney California Adventure’s Twilight Zone Tower of Terror into Guardians of the Galaxy – Mission: Breakout! was bemoaned by many… at least until the reimagined ride reopened, and quickly rose to the top of Disneyland Resort’s guest satisfaction surveys. Similarly, when Guardians of the Galaxy: Awesome Mix Tape Live was first announced, you could practically hear the eye-rolling from old-school EPCOT admirers, who predicted the show would be the worst shoehorning of an intellectual property into World Showcase since 1994’s Magical World of Barbie.Well, get ready for a twist more shocking than the end of Infinity War, because it turns out that the Guardians of the Galaxy know how to throw a pretty great party. The thematic justification for the venue is vaporous at best, but taken on its own terms, Awesome Mix Tape Live turned out to be far more entertaining than anyone could have predicted. We’re not saying anyone should skip their Soarin’ FastPass just to see it, but if you aren’t on a tight touring plan, it’s worth stopping in for a performance while in the back half of World Showcase.Rocket Raccoon doesn’t appear on stage during Awesome Mix Tape Live!, but you might spot him in the sound booth.Here are six reasons why Guardians of the Galaxy Awesome Mix Tape Live is unexpectedly non-awful:1. The SetlistWisely, this show is all about the songs, and the selections include the cream of the crop from both Guardians of the Galaxy movie soundtracks. It kicks off with Blue Suede’s Hooked on a Feeling, whose iconic “Ooga-Chaka” intro is indelibly linked to the first film’s trailer; we were disappointed when the tune wasn’t picked as one of the random options in the Mission: Breakout ride, so it’s great to hear it here. That’s followed by Redbone’s “Come and Get Your Love,” Pat Benatar’s “Hit Me With Your Best Shot,” and Queen’s “Don’t Stop Me Now,” with “I Want You Back” by the Jackson 5 capping off the twenty-minute set. Every song is a certified crowd-pleaser, and there are no down-tempo numbers to sap the show’s momentum.2. The MusiciansDisney probably could have gotten away with a glorified meet-and-greet using pre-recorded music (like the Guardians of the Galaxy dance party in DCA), but instead they went all out with a six-piece live band, consisting of a keyboard player, drummer, bass and lead guitarists, and a pair of horn players. That’s more instrumentalists than some Broadway touring companies employ these days. Better yet, this band really rocks, and their energy elevates what could easily have otherwise been cosplay karaoke. Kudos also go to the sound crew, who give the mix just enough bass to make you want to bang your head, without blowing out the vocals.3. The SingersThose vocals are delivered by a lead male vocalist with silvery cybernetic makeup; he’s backed up by a pair of purple females who do the heavy lifting by harmonizing, and occasionally take the spotlight. There are two rotating casts, and their vocal talents range for “pretty good for a theme park” to “why aren’t you famous yet?” In fact, actress Michelle Knight was in the Broadway cast of Jersey Boys, and starred off Broadway in Disenchanted. Legends like Michael Jackson and Freddie Mercury are hard acts to follow, but this cast has the professional pipes to do their songs justice.4. The Production ValuesFor a short-term production, Disney apparently invested a surprising amount of money, starting with the wall of supersized LED screens behind the stage, which display adorable new animations of Baby Groot. Then there’s the pyrotechnics, which range from blasts of fog and fire to spinning sparklers and roman candles. And don’t overlook the movie-quality costumes and makeup for the cast and crew. Awesome Mix Tape Live has been dismissed by some as nothing but a quick cash grab, but the superior stagecraft suggests otherwise.5. The ActorsStar-Lord and Gamora don’t sing during the show, and they don’t do stunts, though Gamora gets in some martial arts acrobatics during a girl-power moment. But they do bind the production together with their between-song banter, and these performers do a fine job embodying their character’s cinematic personas. The actors playing Peter Quill have to work particularly hard, since their hairpieces are fairly hilarious – though vastly improved over the wigs used at previous meet and greets – but these guys manage to pull off Chris Pratt’s charming schmuck shtick to a T. And if you were a fan of Universal Orlando’s Halloween Horror Nights, you may recognize P.J. Gajda from his years playing Bill S. Preston in Bill & Ted’s Excellent Halloween Adventure.6. The WritingSpeaking of Bill & Ted, you might detect an echo of their banter in the back-and-forth between Star-Lord and cohorts. That’s because new Guardians show was written and directed by J. Michael Roddy, who was a writer for Universal’s parody show during the late 1990s. This show’s style will also seem familiar if you’ve had the good fortune to sail on a Disney Cruise with a Marvel or Star Wars day at sea, since Roddy has helmed the theatrical productions for those as well. Sure, the storyline isn’t exactly Shakespeare, but the dialogue does a credible job of capturing the characters’ voices without becoming inaccessible to viewers unfamiliar with the franchise. And Star-Lord manages to land a couple pop-culture punchlines that made us laugh out loud.Guardians of the Galaxy – Awesome Mix Tape Live is currently being performed five times each day, and is scheduled to run through August 19. The first show of the day at 1:30 p.m. is the least crowded, followed by the last at 8 p.m. Seats in the front are shaded from the elements, but benches further back give a better view of the screens and stage effects.If you can’t see the show in person, we recorded a livestream of a recent performance that you can replay of below:Finally, if you’re still not convinced that the Guardians of the Galaxy belong in Epcot, our advice is to start getting used to it. Because as you can tell from this photo of their roller coaster’s massive new show building (as seen from the parking lot), you’re going to be seeing a lot more of them in the future.Epcot’s Guardians of the Galaxy roller coaster (some assembly required).last_img read more

How Not to Use Apache Hadoop

first_imgRelated Posts Sometimes best practices and practical tips can obscure mistakes that you should avoid. Sometimes what you really need is a list of worst practices.Iwona Bialynicka-Birula has written a post organizing things not to do in Apache Hadoop into three categories: efficiency, scalability and reliability.Bialynicka-Birula writes:The problem with Hadoop is that it is relatively easy to get started using it without an in-depth knowledge of what gives it its powers and without this, you are more likely than not to design your solution in a way which takes all of those powers away. So let’s take a look at the few key features of Hadoop and what not to do to keep them. Why You Love Online Quizzes Tags:#Big Data#hack See also:HBase Dos and Don’tsMongoDB Gotchas for the Unaware User. klint finley 7 Types of Video that will Make a Massive Impac… How to Write a Welcome Email to New Employees? Growing Phone Scams: 5 Tips To Avoidlast_img read more

Getting To Know The MutationObserver API

first_imgSee live demo →After you start the observer, try using CTRL-B and CTRL-I to format the editable text. You’ll notice this works much more effectively than the previous characterData example. In this case, the broken up child nodes don’t affect the observer because we’re observing all nodes inside the targeted node, instead of a single text node.Recording Old ValuesOften when observing for changes to the DOM, you’ll want to take note of the old values and possibly store them or use them elsewhere. This can be done using a few different properties in the options object.attributeOldValueFirst, let’s try logging out the old attribute value after it’s changed. Here’s how my options will look along with my callback:options = { attributes: true, attributeOldValue: true}function mCallback (mutations) { for (let mutation of mutations) { if (mutation.type === ‘attributes’) { // Do something here… } }} function mCallback(mutations) { for (let mutation of mutations) { if (mutation.type === ‘characterData’) { // Do something here… } }}Notice again the type being looked for in the callback function is characterData.See live demo →In this example, I’m looking for changes to a specific text node, which I target via element.childNodes[0]. This is a little hacky but it will do for this example. The text is user-editable via the contenteditable attribute on a paragraph element.Challenges When Observing For Character Data ChangesIf you’ve fiddled around with contenteditable, then you might be aware that there are keyboard shortcuts that allow for rich text editing. For example, CTRL-B makes text bold, CTRL-I makes text italic, and so forth. This will break up the text node into multiple text nodes, so you’ll notice the MutationObserver will stop responding unless you edit the text that’s still considered part of the original node.I should also point out that if you delete all the text, the MutationObserver will no longer trigger the callback. I’m assuming this happens because once the text node disappears, the target element is no longer in existence. To combat this, my demo stops observing when the text is removed, although things do get a little sticky when you use rich text shortcuts.But don’t worry, later in this article, I’ll discuss a better way to use the characterData option without having to deal with as many of these quirks.Observing For Changes To Specified AttributesEarlier I showed you how to observe for changes to attributes on a specified element. In that case, although the demo triggers a class name change, I could have changed any attribute on the specified element. But what if I want to observe changes to one or more specific attributes while ignoring the others?I can do that using the optional attributeFilter property in the option object. Here’s an example:let options = { attributes: true, attributeFilter: [‘hidden’, ‘contenteditable’, ‘data-par’] }, observer = new MutationObserver(mCallback);function mCallback (mutations) { for (let mutation of mutations) { if (mutation.type === ‘attributes’) { // Do something here… } }}As shown above, the attributeFilter property accepts an array of specific attributes that I want to monitor. In this example, the MutationObserver will trigger the callback each time one or more of the hidden, contenteditable, or data-par attributes is modified.See live demo →Again I’m targeting a specific paragraph element. Notice the select drop down that chooses which attribute will be changed. The draggable attribute is the only one that won’t qualify since I didn’t specify that one in my options.Notice in the code that I’m again using the attributeName property of the MutationRecord object to log which attribute was changed. And of course, as with the other demos, the MutationObserver won’t start monitoring for changes until the “start” button is clicked.One other thing I should point out here is that I don’t need to set the attributes value to true in this case; it’s implied due to attributesFilter being set to true. That’s why my options object could look as follows, and it would work the same:let options = { attributeFilter: [‘hidden’, ‘contenteditable’, ‘data-par’]}On the other hand, if I explicitly set attributes to false along with an attributeFilter array, it wouldn’t work because the false value would take precedence and the filter option would be ignored.Observing For Changes To Nodes And Their Sub-TreeSo far when setting up each MutationObserver, I’ve only been dealing with the targeted element itself and, in the case of childList, the element’s immediate children. But there certainly could be a case where I might want to observe for changes to one of the following:An element and all its child elements;One or more attributes on an element and on its child elements;All text nodes inside an element.All of the above can be achieved using the subtree property of the options object.childList With subtreeFirst, let’s look for changes to an element’s child nodes, even if they’re not immediate children. I can alter my options object to look like this:options = { childList: true, subtree: true}Everything else in the code is more or less the same as the previous childList example, along with some extra markup and buttons.See live demo →Here there are two lists, one nested inside the other. When the MutationObserver is started, the callback will trigger for changes to either list. But if I were to change the subtree property back to false (the default when it’s not present), the callback would not execute when the nested list is modified.Attributes With subtreeHere’s another example, this time using subtree with attributes and attributeFilter. This allows me to observe for changes to attributes not only on the target element but also on the attributes of any child elements of the target element:options = { attributes: true, attributeFilter: [‘hidden’, ‘contenteditable’, ‘data-par’], subtree: true} See live demo →Start the observer, then try the add/remove buttons for both lists. The only catch here is that if you hit one of the “stop” buttons, the observer will stop observing for both lists, not just the one it’s targeting.Moving A Node Tree That’s Being ObservedOne last thing I’ll point out is that a MutationObserver will continue to observe for changes to a specified node even after that node has been removed from its parent element.For example, try out the following demo:See live demo →This is another example that uses childList to monitor for changes to the child elements of a target element. Notice the button that disconnects the sub-list, which is the one being observed. Click the “Start…” button, then click the “Move…” button to move the nested list. Even after the list is removed from its parent, the MutationObserver continues to observe for the specified changes. Not a major surprise that this happens, but it’s something to keep in mind.ConclusionThat covers just about all the primary features of the MutationObserver API. I hope this deep dive has been useful for you to get familiar with this standard. As mentioned, browser support is strong and you can read more about this API on MDN’s pages.I’ve put all the demos for this article intoa CodePen collection, should you want to have an easy place to mess around with the demos. (dm, il)From our sponsors: Getting To Know The MutationObserver API Try out the demo →Again, I’ve abbreviated the code for clarity, but the important parts are:The options object is using the attributes property, set to true to tell the MutationObserver that I want to look for changes to the targeted element’s attributes.The mutation type I’m testing for in my loop is attributes, the only one that qualifies in this case.I’m also using the attributeName property of the mutation object, which allows me to find out which attribute was changed.When I trigger the observer, I’m passing in the paragraph element by reference, along with the options.In this example, a button is used to toggle a class name on the targeted HTML element. The callback function in the mutation observer is triggered every time the class is added or removed.Observing For Character Data ChangesAnother change you might want to look for in your app is mutations to character data; that is, changes to a specific text node. This is done by setting the characterData property to true in the options object. Here’s the code:let options = { characterData: true }, observer = new MutationObserver(mCallback); Getting To Know The MutationObserver API Getting To Know The MutationObserver API Louis Lazaris 2019-04-26T13:30:16+02:00 2019-04-26T12:34:22+00:00In complex web apps, DOM changes can be frequent. As a result, there are instances where your app might need to respond to a specific change to the DOM.For some time, the accepted way to look for changes to the DOM was by means of a feature called Mutation Events, which is now deprecated. The W3C-approved replacement for Mutation Events is the MutationObserver API, which is what I’ll be discussing in detail in this article.A number of older articles and references discuss why the old feature was replaced, so I won’t go into detail on that here (besides the fact that I wouldn’t be able to do it justice). The MutationObserver API has near complete browser support, so we can use it safely in most — if not all — projects, should the need arise.Basic Syntax For A MutationObserverA MutationObserver can be used in a number of different ways, which I’ll cover in detail in the rest of this article, but the basic syntax for a MutationObserver looks like this:let observer = new MutationObserver(callback); See live demo →Notice the use of the attributeName and oldValue properties of the MutationRecord object. Try the demo by entering different values in the text field. Notice how the log updates to reflect the previous value that was stored.characterDataOldValueSimilarly, here’s how my options would look if I want to log old character data:options = { characterData: true, subtree: true, characterDataOldValue: true} function callback (mutations) { // do something here}observer.observe(targetNode, observerOptions);The first line creates a new MutationObserver using the MutationObserver() constructor. The argument passed into the constructor is a callback function that will be called on each DOM change that qualifies.The way to determine what qualifies for a particular observer is by means of the final line in the above code. On that line, I’m using the observe() method of the MutationObserver to begin observing. You can compare this to something like addEventListener(). As soon as you attach a listener, the page will ‘listen’ for the specified event. Similarly, when you start observing, the page will begin ‘observing’ for the specified MutationObserver.The observe() method takes two arguments: The target, which should be the node or node tree on which to observe for changes; and an options object, which is a MutationObserverInit object that allows you to define the configuration for the observer.The final key basic feature of a MutationObserver is the disconnect() method. This allows you to stop observing for the specified changes, and it looks like this:observer.disconnect();Options To Configure A MutationObserverAs mentioned, the observe() method of a MutationObserver requires a second argument that specifies the options to describe the MutationObserver. Here’s how the options object would look with all possible property/value pairs included:let options = { childList: true, attributes: true, characterData: false, subtree: false, attributeFilter: [‘one’, ‘two’], attributeOldValue: false, characterDataOldValue: false};When setting up the MutationObserver options, it’s not necessary to include all these lines. I’m including these simply for reference purposes, so you can see what options are available and what types of values they can take. As you can see, all except one are Boolean.In order for a MutationObserver to work, at least one of childList, attributes, or characterData needs to be set to true, otherwise an error will be thrown. The other four properties work in conjunction with one of those three (more on this later).So far I’ve merely glossed over the syntax to give you an overview. The best way to consider how each of these features works is by providing code examples and live demos that incorporate the different options. So that’s what I’ll do for the rest of this article.Observing Changes To Child Elements Using childListThe first and simplest MutationObserver you can initiate is one that looks for child nodes of a specified node (usually an element) to be added or removed. For my example, I’m going to create an unordered list in my HTML, and I want to know whenever a child node is added or removed from this list element.The HTML for the list looks like this: read more

My Customers Don’t Use Twitter, Why Should I? @Pistachio Explains.

first_img Inbound Marketing University Download the free webinar Want to learn more about using Twitter for Marketing and PR? 1) Twitter Page SEO: Twitter for Business consultancy Don’t forget to share this post! AddThis Sharing ButtonsShare to TwitterTwitterShare to FacebookFacebookShare to Email AppEmail AppShare to LinkedInLinkedInShare to MessengerMessengerShare to SlackSlack 5) PR Gravity: Lots of journalists use Twitter as a tool to search for people to interview for news stories. Stop pitching; instead, create interesting and informative content. Journalists who need your expertise will find you on their own. Laura has concisely determined five “off-platform benefits” of Twitter, even if you aren’t using it to communicate with leads and customers directly. Webinar: Twitter for Marketing and PR @Pistachio Here are her five points summarized from the above video: about the , co-author of watch her IMU webinar here One of the major questions that she addressed in her presentation was,  ” 3) Content Generation Engine: ” Twitter for Dummies , and creator of a new 4) Word-of-Mouth “Passalong”: In her words, “Just search for Pistachio You don’t need your own Twitter account to collect the content that people are generating. Set up a widget on your website that aggregates tweets about your company, industry, or anything your non-Twitter customers might find interesting. Madonna collects the content her fans create about her and uses it to add fresh content to her website. business benefits of Twitter Use Twitter as a platform to gather consumer research on your product or industry. What are people saying about your company? Recruit research groups or host a live survey using a hashtag! Utilize the viral nature of Twitter and start a campaign that people will talk about on and offline. When Dell gave out coupons on Twitter, Twitter-users passed along the coupons to folks outside of their online networks too.  Laura’s final takeway: .)  You can Twitter applications startup . (Laura is a famous Twitter Queen, founder of the first .” It’s a common word, but Laura dominates the search rankings. By being active on Twitter and having a Twitter handle that is a word people will search for, most likely it will rank well.  . Make sure you’re using Twitter and social media in a way that is unselfish. Serve your community by being helpful. Learn, listen, care, and serve! 2) Research: Originally published Aug 19, 2009 8:46:00 AM, updated October 20 2016 Laura ” Twitter Marketing ” Fitton presented a fantastic webinar for Can you think of any other off-platform benefits of Twitter?  Topics: If my best leads and potential customers aren’t on Twitter, why on earth should I be on Twitter? for tips and tricks to drive inbound marketing using Twitter.last_img read more