Wednesday, February 26, 2014

Cloud Foundry Blog

Cloud Foundry Blog


Posted: 22 Feb 2014 02:29 PM PST
Cloud Foundry (CF) is a platform-as-a-service that, once deployed, makes it easy for developers to deploy, run and scale web applications. Powering this elegant PAAS is a complex distributed system comprised of several interoperating components: the Cloud Controller (CC) accepts user input and directs Droplet Execution Agents (DEAs) to stage and run web applications. Meanwhile, the Router maps inbound traffic to web-app instances, while the Loggregator streams log output back to developers. All these components communicate via NATS, a performant message bus.
It’s possible to boil CF down to a relatively simple mental model: users inform CC that they desire applications and Cloud Foundry ensures that those applications, and only those applications, are actually running on DEAs. In an ideal world, these two states – the desired state and the actual state – match up.
Of course, distributed systems are not ideal worlds and we can – at best – ensure that the desired and actual states come into eventual agreement. Ensuring this eventual consistency is the job of yet another CF component: the Health Manager (HM).
In terms of our simple mental model, HM’s job is easy to express:
  1. collect the desired state of the world (from the CC via HTTP)
  2. collect the actual state (from the DEAs via application heartbeats over NATS)
  3. perform a set diff to find discrepancies – e.g. missing apps or extra (rogue) apps
  4. send START and STOP messages to resolve these discrepancies
Despite the relative simplicity of its domain, the Health Manager has been a source of pain and uncertainty in our production environment. In particular, there is only one instance of HM running. Single points of failure are A Bad Thing in distributed systems!
The decision was made to rewrite HM. This was a strategic choice that went beyond HM – it was a learning opportunity. We wanted to learn how to rewrite CF components in place, we wanted to try out new technologies (in particular: Golang and etcd), and we wanted to explore different patterns in distributed computing.
HM9000 is the result of this effort and we’re happy to announce that it is ready for prime-time: For the past three months, HM9000 has been managing the health of Pivotal’s production AWS deployment at run.pivotal.io!
As part of HM9000′s launch we’d like to share some of the lessons we’ve learned along the way. These lessons have informed HM9000′s design and will continue to inform our efforts as we modernize other CF components.

Laying the Groundwork for a Successful Rewrite

Replacing a component within a complex distributed system must be done with care. Our goal was to make HM9000 a drop-in replacement by providing the same external interface as HM. We began the rewrite effort by steeping ourselves in the legacy HM codebase. This allowed us to clearly articulate the responsibilities of HM and generate tracker stories for the rewrite.
Our analysis of HM also guided our design decisions for HM9000. HM is written in Ruby and contains a healthy mix of intrinsic and incidental complexity. Picking apart the incidental complexity and identifying the true – intrinsic complexity – of HM’s problem domain helped us understand what problems were difficult and what pitfalls to avoid. An example might best elucidate how this played out:
While HM’s responsibilities are relatively easy to describe (see the list enumerated above) there are all sorts of insidious race conditions hiding in plain-sight. For example, it takes time for a desired app to actually start running. If HM updates its knowledge of the desired state before the app has started running it will see a missing app and attempt to START it. This is a mistake that can result in duplicates of the app running; so HM must – instead – wait for a period of time before sending the START message. If the app starts running in the intervening time, the pending START message must be invalidated.
These sorts of race conditions are particularly thorny: they are hard to test (as they involve timing and ordering) and they are hard to reason about. Looking at the HM codebase, we also saw that they had the habit – if not correctly abstracted – of leaking all over and complicating the codebase.

Many Small Things

To avoid this sort of cross-cutting complexification we decided to design HM9000 around a simple principle: build lots of simple components that each do One Thing Well.
HM9000 is comprised of 8 distinct components. Each of these components is a separate Go package that runs as a separate process on the HM9000 box. This separation of concerns forces us to have clean interfaces between the components and to think carefully about how information flows from one concern to the next.
For example, one component is responsible for periodically fetching the desired state from the CC. Another component listens for app heartbeats over NATS and maintains the actual state of the world. All the complexity around maintaining and trusting our knowledge of the world resides only in these components. Another component, called the analyzer, is responsible for analyzing the state of the world — this is the component that performs the set-diff and makes decisions. Yet another component, called the sender, is responsible for taking these decisions and sending START and STOP messages.
Each of these components has a clearly defined domain and is separately unit tested. HM9000 has an integration suite responsible for verifying that the components interoperate correctly.
This separation of components also forces us to think in terms of distributed-systems: each mini-component must be robust to the failure of any other mini-component, and the responsibilities of a given mini-component can be moved to a different CF component if need be. For example, the component that fetches desired state could, in principle, move into the CC itself.

Communicating Across Components

But how to communicate and coordinate between components? CF’s answer to this problem is to use a message bus, but there are problems with this approach: what if a message is dropped on the floor? How do you represent the state of the world at a given moment in time with messages?
With HM9000 we decided to explore a different approach: one that might lay the groundwork for a future direction for CF’s inter-component communication problem. We decided, after extensive benchmarking, to use etcd a high-availability hierarchical key-value store written in Go.
The idea is simple, rather than communicate via messages the HM9000 components coordinate on data in etcd. The component that fetches desired state simply updates the desired state in the store. The component that listens for app heartbeats simply updates the actual state in the store. The analyzer performs the set diff by querying the actual state and desired state and placing decisions in the store. The sender sends START and STOP messages by simply acting on these decisions.
To ensure that HM9000′s various components use the same schema, we built a separate ORM-like library on top of the store. This allows the components to speak in terms of semantic models and abstracts away the details of the persistence layer. In a sense, this library forms the API by which components communicate. Having this separation was crucial – it helped us DRY up our code, and gave us one point of entry to change and version the persisted schema.

Time for Data

The power behind this data-centered approach is that it takes a time-domain problem (listening for heartbeats, polling for desired state, reacting to changes) and turns it into a data problem: instead of thinking in terms of responding to an app’s historical timeline it becomes possible to think in terms of operating on data sets of different configurations. Since keeping track of an app’s historical timeline was the root of much of the complexity of the original HM, this data-centered approach proved to be a great simplification for HM9000.
Take our earlier example of a desired app that isn’t running yet: HM9000 has a simple mechanism for handling this problem. If the analyzer sees that an app is desired but not running it places a decision in the store to send a START command. Since the analyzer has no way of knowing if the app will eventually start or not, this decision is marked to be sent after a grace period. That is the extent of the analyzer’s responsibilities.
When the grace period elapses, the sender attempts to send a START command; but it first checks to ensure the command is still valid (that the missing app is still desired and still missing). The sender does not need to know why the START decision was made, only whether or not it is currently valid. That is the extent of the sender’s responsibilities.
This new mental model – of timestamped decisions that are verified by the sender – makes the problem domain easier to reason about, and the codebase cleaner. Moreover, it becomes much easier to unit and integration test the behavior of the system as the correct state can be set-up in the store and then evaluated.
There are several added benefits to a data-centered approach. First, it makes debugging the mini-distributed system that is HM9000 much easier: to understand what the state the world is all you need to do is dump the database and analyze its output. Second, requiring that coordination be done via a data store allows us to build components that have no in-memory knowledge of the world. If a given component fails, another copy of the component can come up and take over its job — everything it needs to do its work is already in the store.
This latter point makes it easy to ensure that HM9000 is not a single point of a failure. We simply spin up two HM9000s (what amounts to 16 mini-components, 8 for each HM9000) across two availability zones. Each component then vies for a lock in etcd and maintains the lock as it does its work. Should the component fail, the lock is released and its doppelgänger can pick up where it left off.

Why etcd?

We evaluated a number of persistent stores (etcd, ZooKeeper, Cassandra). We found etcd’s API to be a good fit for HM9000′s problem space and etcd’s Go driver had fewer issues than the Go drivers for the other databases.
In terms of performance, etcd’s performance characteristics were close to ZooKeeper’s. Early versions of HM9000 were naive about the amount of writes that etcd could handle and we found it necessary to be judicious about reducing the write load. Since all our components communicated with etcd via a single ORM-like library, adding these optimizations after the fact proved to be easy.
We’ve run benchmarks against HM9000 in its current optimized form and find that it can sustain a load of 15,000-30,000 apps. This is sufficient for all Cloud Foundry installations that we know of, and we are ready to shard across multiple etcd clusters if etcd proves to be a bottleneck.

Why Go?

In closing, some final thoughts on the decision to switch to Golang. There is nothing intrinsic to HM9000 that screams Go: there isn’t a lot of concurrency, operating/start-up speed isn’t a huge issue, and there isn’t a huge need for the sort of systems-level manipulation that the Go standard library is so good at.
Nonetheless, we really enjoyed writing HM9000 in Go over Ruby. Ruby lacks a compile-step – which gives the language an enviable flexibility but comes at the cost of limited static analysis. Go’s (blazingly fast) compile-step alone is well worth the switch (large scale refactors are a breeze!) and writing in Go is expressive, productive, and developer friendly. Some might complain about verbosity and the amount of boiler-plate but we believe that Go strikes this balance well. In particular, it’s hard to be as terse and obscure in Go as one can be in Ruby; and it’s much harder to metaprogram your way into trouble with Go ;)
We did, of course, experience a few problems with Go. The dependency-management issue is a well-known one — HM9000 solves this by vendoring dependencies with submodules. And some Go database drivers proved to be inadequate (we investigated using ZooKeeper and Cassandra in addition to etcd and had problems with Go driver support). Also, the lack of generics was challenging at first but we quickly found patterns around that.
Finally, testing in Go was a joy. HM9000 became something of a proving-ground for Ginkgo & Gomega and we’re happy to say that both projects have benefited mutually from the experience.
Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email
You are subscribed to email updates from Cloud Foundry Blog
To stop receiving these emails, you may unsubscribe now.
Email delivery powered by Google
Google Inc., 20 West Kinzie, Chicago IL USA 60610

Newsletter de Noticias Puro Marketing.

Puro Marketing
Diario Digital Líder de Marketing, Publicidad y Social media en Español
Lunes, 24 de Febrero de 2014
Patrocinados
Lunes, 24 de Febrero de 2014
Imagínate por un momento que compras algo y que cuando te dan la factura no entiendes por lo que pagas, que no sabes el valor en cada momento de lo...
La actividad de las redes sociales influye cada vez más en nuestras decisiones de compra. Un hecho especialmente relevante en el caso de las madres,...
Los internautas utilizan las redes sociales como una vía de escape, un lugar donde expresarse libremente. Ipsos publicaba en septiembre un estudio donde...
Comunicar es fidelizar. Cierto, pero siempre que la comunicación se realice de forma efectiva, es decir, que traslade el mensaje oportuno al cliente...
Twitter se ha convertido en un enjambre de mensajes y conversaciones cruzadas, cuya magnitud y frenético ritmo no deja de sorprendernos. Pero ¿en...
Cuando nos planteamos la consistencia de la realidad de nuestro entorno, percibida a través de los sentidos y validada mediante procesos cognitivos...
YouTube se consolida como la plataforma online que más atrae a los Millennials y adolescentes. Los últimos datos de Intelligence Group indican...
El marketing de contenidos ha renovado su presencia en 2014. Según recogía Demand Metric en junio, el 80% de los marketers considera que es el...
Todos los días tomamos cientos de decisiones, desde las más triviales hasta las que podrían calificarse como importantes para nuestra vida...
Los valores de la mítica insignia del caballo encabritado le han valido para destacar como la marca más poderosa del mundo, según Brand...
No se trata de ningún error. Es simplemente una forma de denominar a este nuevo "efecto" como nuevo fenómeno de la red, que nace a...
Las repercusiones ante la reciente adhesión de WhatsApp a la factoría Facebook ya han provocado las primeras consecuencias. Alemania ha dado...
Para los marketers, las estrategias móviles resultan ya esenciales para conseguir un mayor compromiso y engagement con los usuarios. Un aspecto que pone...
Tras la noticia de su imputación como club por delito fiscal en el fichaje de Neymar que hemos conocido hace unas horas, no cabe duda de que el FC...

Patrocinados
Aprende a desarrollar todo el proceso de venta online con éxito
Postgrado de Captación de Fondos Fundraising
Integra el Online en tu plan de Marketing. Marzo 2014. Modalidad Presencial
La importancia del Social Media Strategist
Si tienes experiencia en Mkt tradicional y quieres aprender cómo funciona el nuevo Mkt en Internet
Otros titulares
Reconocidos profesionales y referentes del comercio electrónico  y...
Citrix ha presentado hoy el informe Citrix Mobile Analytics del primer...
Las empresas españolas de moda como Zara, Mango y Bershka, y los equipos...
Siempre nos están inflando la cabeza con mensajes positivos e intentado...
La mentira en las redes sociales puede tener las patas muy largas. El efecto...
Los usuarios móviles pasan más de 6 horas al día...
 
Puro Marketing | Diario Digital Líder de Marketing, Publicidad y Social media en Español
 
Contacto | Publicidad | Baja
 
Este mensaje, y cualquier archivo adjunto al mismo, se dirige exclusivamente a su destinatario y puede contener información privilegiada o confidencial. Si no es vd. el destinatario indicado, queda notificado de que la utilización, divulgación y/o copia sin autorización está prohibida en virtud de la legislación vigente. Si ha recibido este mensaje por error, le rogamos que nos lo comunique inmediatamente por esta misma vía y proceda a su destrucción.
This message, and any other file attached to it, are intended exclusively for its address and may contain information that is CONFIDENTIAL and protected by professional privilege. If you are not the intended recipient you are hereby notified that any dissemination, copy or disclosure of this communication is strictly prohibited by law. If this message has been received in error, please inmediately notify us via e-mail and delete it.

The Aggressive Work Ethic of Highly Creative People.

Copyblogger.com

The Aggressive Work Ethic of Highly Creative People

image of door ready to be kicked in
Magicians. Curious bunch.
They pull furry mammals out of their hats. Levitate humans. Hide automobiles out of sight.
The great ones make a killing, jet set around the globe, and beat groupies off with a brass-tipped wand.
The not-so-great ones — the average ones — are still amazing.
Click here to read the rest on Copyblogger.com
add to circle on Google+Google+ follow on TwitterTwitter friend on FacebookFacebook
Copyblogger Media, LLC
1942 Broadway, Suite 407
Boulder, CO 80302

3 Strategies to Get Keyword Data from Google Analytics “Not Provided” Visitors

iSpionage Inc.
Feb 21, 2014 10:39 am | Chris
There’s been a lot of noise around Google encrypted search hiding keywords in Google Analytics. Instead of seeing where all of your traffic comes from, a large percentage of searches show up as “not provided” keywords. Not only is this annoying, but it also leaves you in the dark when it comes to knowing which […]
The post 3 Strategies to Get Keyword Data from Google Analytics “Not Provided” Visitors appeared first on Online Marketing Simplified.
Like 3 Strategies to Get Keyword Data from Google Analytics “Not Provided” Visitors on Facebook  Google Plus One Button  share on Twitter


iSpionage delivers online marketing tips and advice to both businesses and agencies. Choose "Update your Profile" below to ensure you receive information tailored for you.

All the best,

Chris Sparks
and the iSpionage Team
www.ispionage.com




Competitive Search Intelligence, Monitoring, and Alerts from iSpionage.
Click here to learn more

Search-Marketing-tutorials
 
Want help? Have suggestions? We want to hear from you

iSpionage Keyword Research and Online Marketing Competitor Analysis

Unsubscribe jrnunni2@gmail.com from this list | Forward to a friend | Update your profile
Our mailing address is:
iSpionage Inc.
2953 Bunker Hill Lane, Suite 400
Santa Clara, CA 95054

Add us to your address book

Copyright (C) 2014 iSpionage Inc. All rights reserved.

UPS: Save time, money, and yes, even headaches.



Save time, money, and yes, even headaches.

To help you grow your business, we‘ve created a program with handpicked benefits for small business owners—including free pickups, shipping discounts, a complimentary business consultation, and more.

This free program helps you:

Spot the weak links in your supply chain

Schedule a conversation with one of our logistics experts: you tell us a little bit about your business goals, and we‘ll help you find ways to streamline your operations.
Book My Consultation

Save on shipping so you can reinvest that “extra” cash

Open or link your UPS account and immediately get 20% off air and international shipments and 10% off ground.*

Get shipments out the door faster with free pickups

Send automatic alerts to UPS whenever you have a package that's ready to ship. A driver will swing by—at no cost to you.*

Discover what tools are right for you

A dedicated support team is available to discuss which timesaving products can help you work more efficiently.
Tell Me More

Find inspiration for your business

Check out the latest business insights including case studies, research, and trends to watch.
Let’s Explore

TechCrunch: Top Stories of the Day // February 24, 2014




Crunch Daily TechCrunch


Today's Top Stories // Feb 24, 2014

Darrell Etherington

The Samsung Galaxy S5 Leaks In A Big Batch Of New Photos Ahead Of Official Announcement

read more

Natasha Lomas

Nokia Forks Android In Mobile Services Push — $122 Nokia X Will Also Be Lumia “Feeder”

read more

Ingrid Lunden

Messaging Giant WhatsApp, Now With 465M Users, Will Add Voice Services In Q2 Of This Year

Today Jan Koum, the CEO of WhatsApp -- acquired by Facebook last week for $19 billion -- announced that the messaging giant is finally moving into voice -- a... read more

Darrell Etherington

Watch Samsung’s ‘Unpacked5′ Galaxy S5 Announcement Live

read more

John Biggs

The Samsung Galaxy S5 Is Coming… But Why Are They Announcing It In Barcelona?

So we know with certainty that we'll hear about the Samsung Galaxy S5 today - whether it's a launch or something else we're not quite certain, but assume most... read more

Natasha Lomas

Next-Gen YotaPhone Follow-Up Unveiled, With Full-Touch E-Ink Rear Screen

Russian mobile-making startup Yota Devices has just unveiled the next generation of its dual-screen smartphone, the YotaPhone. As with the current first-gen... read more

Steve O'Hear

Nokia’s Forking Of Android Could Benefit Google

Back in October last year, I first heard rumblings that Nokia was working on an Android handset. "Devs rumor but rather solid, not confirmed by eye," said my... read more

TOP VIDEOS


CrunchWeek: Facebook’s Epic, $19B Acquisition of WhatsApp

It’s that time of week for an episode of CrunchWeek, the show that brings a few TechCrunch writers together... read more

Gillmor Gang: WhatsApp, Doc

The Gillmor Gang — John Borthwick, Dan Farber, Robert Scoble, Kevin Marks, John Taschek, and Steve Gillmor — bask... read more

Ask A VC: Vegas Tech Fund’s Jen McCabe On The Next Big Hardware Opportunity

In this week’s episode of Ask A VC, VegasTechFund’s Jen McCabe joined us in the studio to talk hardware,... read more

 

 

 

 

 

TechCrunch

410 Townsend Street, San Francisco, CA 94107
© 2014 AOL Inc. All rights reserved. Privacy Policy Terms of Service

 

Get more at techcrunch.com

Can Twitter tweak its way to the top?


SmartBrief on Social Media


Can Twitter tweak its way to the top? | Analysts: WhatsApp gives Facebook a temporary lead | Analysis: Which messaging startup will be targeted now?
Created for jrnunni2@gmail.com |  Web Version

February 24, 2014
CONNECT WITH SMARTBRIEF LinkedInFacebookTwitterGoogle+SmartBlogs
SmartBrief on Social Media

SIGN UP|FORWARD|ARCHIVE|ADVERTISE

Today's BuzzSponsored By
Can Twitter tweak its way to the top?
Twitter is hoping to win new users and investors' confidence with a series of product tweaks. The company ran 23 product tests in the fourth quarter and has improved its capacity to run simultaneous large-scale tests, CEO Dick Costolo said this month. "There's no date or single product feature that I think we will launch that will be the one where you see the quantum step change, step function in growth. It will be a combination," Costolo said. Bloomberg (2/24)
Share: LinkedInTwitterFacebookGoogle+Email
Can Digital Shopping Improve Your In-Store Sales?
Because customers who shop online don't necessarily buy online, you need strategies to capture them in your stores. Get them--in RSR's "Digital Meets Physical: The Retail Store in the Digital Age." This recent, original research will help you identify and profit from the in-store opportunities being created by today's connected, multi-channel shoppers. Download this insightful report now at no cost!

Network UpdateSponsored By
Analysts: WhatsApp gives Facebook a temporary lead
Facebook's WhatsApp deal makes it a leader in smartphone communication, but keeping that position in the mobile market could be tricky, analysts say. "If Facebook is not first in line when ... people are firing up their devices, it stands a chance of never connecting with those folks, because there are so many alternatives," Gartner's Brian Blau says. Reuters (2/24)
Share: LinkedInTwitterFacebookGoogle+Email
 
Most Read by Marketing Decision MakersSponsored By
The State of Mobile Technology Adoptions: 2013 Report by Forrester
Mobile technology for both hardware and software is experiencing a frenetic pace of change. The definition of table stakes or "being in the game" is constantly moving. This report by Forrester Research will assist eBusiness professionals in benchmarking their mobile technology offering against the wider industry. Download now.

Ideas in ActionSponsored By
Twitter-NCM deal aims for in-cinema advertising
Cinema advertiser NCM Media Networks will produce a branded pre-show entertainment series steered by Twitter data on users' movie-related chatter. NCM is seeking a yearlong brand partnership to fund the series. "It's a big audience and it's big reach, and we'd like to find a partner who wants to literally own this and be associated with it day in and day out," NCM's Cliff Marks says. Advertising Age (free access for SmartBrief readers) (2/24)
Share: LinkedInTwitterFacebookGoogle+Email
Facebook traffic data is inaccurate, advertiser says
A disgruntled Facebook advertiser says he blew through more than $600,000 to advertise online fashion magazines, but received far fewer incoming hits than the social network claimed to have delivered. Fetopolis CEO Raaj Kapur Brar says third-party analytics show he received about a quarter of the traffic that Facebook claimed, making the campaign a money-loser for his company. Facebook disputes Brar's claims. Business Insider (2/22)
Share: LinkedInTwitterFacebookGoogle+Email
What You Need to Know About Ad Viewability
As advertisers embrace viewability, they can benefit from knowing that their display ads are seen, eliminating waste, and increasing campaign effectiveness. Read our findings to learn more about the current state of viewability standards and the steps you can take now to prepare.
Download the whitepaper.

Research and ReportsSponsored By
WhatsApp, by the numbers
Facebook's $19 billion WhatsApp purchase works out to about $345 million per employee, since the company was built lean and has an average of one engineer for every 14 million users, Kristin Burnham writes. The company's workers will likely make about $160 million each from the deal, based on equity shares of nearly 1%. InformationWeek (2/21)
Share: LinkedInTwitterFacebookGoogle+Email
Financing solutions to keep your business connected.
At GE Capital, we understand the needs of your business. Our dedicated team of media professionals brings GE's real-world expertise and in-depth industry knowledge to each transaction, building financing solutions to help grow your business. We're not just bankers, we're builders.

The Takeaway
How to make Instagram more brand friendly
Facebook is still trying to figure out how to make its acquisition of Instagram lucrative by drawing more brands and small businesses, Ezra Chasser writes. The Sore Thumb Marketing founder offers suggestions including improved analytics, better sharing tools and live hyperlinks. "Until hyperlinks are live and clickable, dead-end ad campaigns or engagement content will have little to no value to most business owners," Chasser writes. SmartBrief/SmartBlog on Social Media (2/24)
Share: LinkedInTwitterFacebookGoogle+Email
Jane Austen's lessons for social media users
Jane Austen's novels are studies in social etiquette, and social media users can learn from her characters' social niceties and occasional faux pas, Laura Hale Brockway writes. Austen's characters know, or soon learn, the value of communication, of forging social connections and of not over-sharing, Brockway writes. PRDaily.com (2/19)
Share: LinkedInTwitterFacebookGoogle+Email
Social Shareable
Phoenix has gone to the dogs
Feral chihuahuas are running wild in Phoenix, hassling children and littering the streets with feces. Packs of the dogs roam, chasing children as they walk to school, officials say. "Everyone is at risk for dog bites," Maricopa County Animal Control spokeswoman Melissa Gable says. Fox News Latino (2/17)
Share: LinkedInTwitterFacebookGoogle+Email
SmartQuote
Before you send that LinkedIn invitation or share a post on Facebook, think 'What would Jane Austen do?' "
-- Laura Hale Brockway, writing in PRDaily.com
Share: LinkedInTwitterFacebookGoogle+Email
Andy Sernovitz, Editor at Large
Andy Sernovitz is the New York Times best-selling author of "Word of Mouth Marketing: How Smart Companies Get People Talking" and the blog "Damn, I Wish I'd Thought of That!" He runs WordofMouth.org, where marketers and entrepreneurs learn to be great at word of mouth marketing, and SocialMedia.org, the community for social media leaders at the world's greatest brands.
Subscriber Tools
Please contact one of our specialists for advertising opportunities, editorial inquiries, job placements, or any other questions.
Lead Editor:  Stephen Yusko
Contributing Editor:  Ben Whitford
Publisher:  Dena Malouf
Jobs Contact:  Jackie Basso