Technology Posts

May 25, 2012

Tear Down the (Immigration) Wall … Or at Least Install a Door

By in Business, Executive Blog, SoftLayer, Technology

A few years ago, I went through a nightmare trying to get to permanent resident status in the United States. My file sat in a box for over a year, was lost, re-submitted and FINALLY rushed through by Ted Kennedy’s office. And I was on a “fast track” due to a long record of published research and employment history. I had the means to pay lawyers and the time to repeat the filing and wait for a decision. If I didn’t have the means or the time to wait for the process to complete, I don’t know where I’d be, but in all likelihood, it wouldn’t be here. It’s no surprise that immigration reform is high on my list of priorities, and given SoftLayer’s involvement in the USCIS Entrepreneurs in Residence program along with Lance’s appointment to a Bloomberg committee focused on immigration reform, it’s clear I’m not alone.

The bi-partisan Partnership for a New American Economy recently published a very interesting report — Not Coming to America: Why the US is Falling Behind in the Global Race for Talent — that speaks to a lot of the challenges plaguing the current US immigration policy. Because of those challenges, “the future of America’s position as the global magnet for the world’s most talented and hardest-working is in jeopardy.” Here are a few of the projected economic realities of not reforming immigration laws to keep up with other countries:

SHORTAGE OF WORKERS IN INNOVATION INDUSTRIES: Jobs in science, technology, engineering, and math (“STEM” fields) are increasing three times faster than jobs in the rest of the economy, but American students are not entering these innovative fields in sufficient numbers. As a result, by 2018, we face a projected shortfall of 230,000 qualified advanced-degree STEM workers.

SHORTAGE OF YOUNG WORKERS: The US population is aging, baby boomers are retiring en masse, and the growth in the US labor force has slowed to historic lows of less than 1 percent. We cannot continue to produce the GDP growth the nation has come to expect without dramatic increases in productivity or welcoming more working age immigrants.

A STALLED ECONOMY: The US has faced years of stunted economic growth. History shows that new businesses are the biggest drivers of job creation, yet the most recent US Census data show that the number of business startups has hit a record low.

This concern isn’t unique to the United States. With a global focus on innovation and technology, countries around the world are actively competing for the best and the brightest. In Canada, a report a few weeks ago spoke to Canada’s need to double in size in the next few decades or risk losing relevance and becoming just another resource-rich colony. The nation’s response? It’s ready to open its doors to more immigrants.

The same applies to the United States … It just may take longer.

Go back to how this country was built, and apply that to today. The biggest difference: The “skilled trades” we talk about in the most general sense are no longer carpenters like my grandfather but highly educated programmers, engineers and researchers. The idea isn’t to replace the programmers, engineers and researchers in the US, rather it’s to meet the existing unmet needs for programmers, engineers and researchers.

In all of SoftLayer’s efforts to affect change in the US immigration policy, we have to make clear that our goal is not to drop the walls simply to add more permanent residents. It’s about lowering many of the current artificial barriers that might prevent the next Fortune 500 founder from starting his or her business in the United States. If you don’t think that’s a serious concern, I’d point to a pretty surprising stat in the “Not Coming to America” report: “Today, more than 40 percent of America’s Fortune 500 companies were founded by an immigrant or a child of an immigrant.”

Immigration drives the economy. It’s not a drain on the economy. Every country needs more smart people because smart people create new ideas, new ideas become new businesses, and new businesses create new jobs.

Because this is a politically charged issue, it’s one I know many people don’t necessarily agree with. Along with immigration, we have to look at how the education system can empower young people like my son to become the programmers, engineers and researchers that the US will need, and we have to be intentional about not simply adding permanent residents for the sake of adding permanent residents. If you have any thoughts one way or the other, I’d encourage you to share them with us here in a blog comment or link us to any of the resources you’ve found interesting in researching and discussing the topic.

-@gkdog

May 23, 2012

Web Development – JavaScript – Creating a Sticky Menu

By in Development, SoftLayer, Technology, Tips and Tricks

When designing websites, I like to focus on ease of use and accessibility for the end user. While creating your site to be friendly to screen readers and text-based browsers is a must, the accessibility I’m referring to is making it easy for your audience to navigate your site and perform certain common actions. By providing an easy interface for your users, you are immediately increasing your chances that they’ll return for more of your site’s goodness.

Thus far in our “Web Development” blog series, we’ve looked at JavaScript Optimization, HTML5 Custom Data Attributes, HTML5 Web Fonts and using CSS to style the Highlight Selection. In this post, we’re going to create a “sticky” menu at the top of a page. As a user scrolls down, the menu will “stick” to the top and always be visible (think of Facebook’s Timeline view), allowing the user quicker access to clicking common links. With some simple HTML, CSS and JavaScript, you can have a sticky menu in no time.

Let’s start with our HTML. We’re going to have a simple header, menu and content section that we’ll throw in our <body> tag.

<header>
    <h1>My Header</h1>
</header>
<nav id="menu">
    <ul id="menu-list">
        <li>Items</li>
    </ul>
</nav>
<div id="content">
    Some content
</div>

For brevity, I’ve shortened the content I show here, but the working example will have all the information. Now we can throw in some CSS to style our elements. The important part here is how the <nav> is styled.

nav#menu {
    background: #FFF;
    clear: both;
    margin: 40px 0 80px 0;
    width: 99.8%;
    z-index: 2;
}
ul#menu-list li {
    border: solid 1px blue;
    list-style-type: none;
    display: inline-block;
    margin: 0 -3px;
    padding: 4px 10px;
    width: auto;
}

We have set the menu’s background to white (#FFF) and given it a z-index of 2 so that when the user scrolls, the menu will stay on top and not be see-through. We’ve also set the list items to be styled inline-block, but you can style your items however you desire.

Now we get to the fun part – the JavaScript. I’ve created a class using Mootools, but similar functionality could be achieved using your favorite JavaScript framework. Let’s examine our initialize method (our constructor) in our Stickit class.

var Stickit = this.Stickit = new Class({
    initialize: function(item, options) {
        // 'item' is our nav#menu in this case
        this.item = document.id(item);
 
        // The element we're scrolling will be the window
        this.scrollTarget = document.id(options.scrollTarget || document.window);
 
        // The 'anchor' is an empty element that will always keep the same location
        // when the user scrolls. This is needed because this.item will change and
        // we cannot rely on it for accurate calculations.
        this.anchor = new Element('div').inject(this.item, 'top');
 
        // The 'filler' is an empty element that we'll use as a space filler for when
        // the 'item' is being manipulated - this will prevent the content below from
        // jumping around when we scroll.
        this.filler = new Element('div').inject(this.item, 'after');
 
        // Set the styles of our 'filler' to match the styles of the 'item'
        this.setFillerStyles();
 
        // Initialize our scroll events – see the next code section for details
        this.initEvents();
    }
});

What we’re doing here is grabbing our element to stick to the top – in this case, nav#menu – and initializing our other important elements. I’ll review these in the next code section.

var Stickit = this.Stickit = new Class({
    ...
    initEvents: function() {
        var that = this,
            // Grab the position of the anchor to be used for comparison during vertical scroll
            anchorOffsetY = this.anchor.getPosition().y,
            // Grab our original styles of our 'item' so that we can reset them later
            originalStyles = this.item.getStyles('margin-top', 'position', 'top');
 
        // This is the function we'll provide as our scroll event handler
        var stickit = function(e) {
            // Determine if we have scrolled beyond our threshold - in this case, our
            // anchor which is located as the first element of our 'item'
            var targetScrollY = that.scrollTarget.getScroll().y,
                fixit = targetScrollY > anchorOffsetY;
 
            if (fixit && that.cache != 'fixed') {
                // If we have scrolled beyond the threshold, fix the 'item' to the top
                // of the window with the following styles: margin-top, position and top
                that.item.setStyles({
                    'margin-top': 0,
                    position: 'fixed',
                    top: 0
                });
                // Show our (empty) filler so that the content below the 'item' does not
                // jump - this would otherwise be distracting to the user
                that.filler.setStyle('display', 'block');
                // Cache our value so that we only set the styles when we need to
                that.cache = 'fixed';
            }
            else if (!fixit && that.cache != 'default') {
                // We have not scrolled beyond the threshold.
                // Hide our filler
                that.filler.setStyle('display', 'none');
                // Reset the styles to our 'item'
                that.item.setStyles(originalStyles);
                // Cache our values so we don't keep resetting the styles
                that.cache = 'default';
            }
        };
 
        // Add our scroll event to the target - the 'window' in this case
        this.scrollTarget.addEvent('scroll', stickit);
        // Fire our scroll event so that all the elements and styles are initialized
        this.scrollTarget.fireEvent('scroll');
    }
});

This method contains the meat of our functionality. The logic includes that we test how far the user has scrolled down on the page. If s/he scrolls past the threshold – in this case, the anchor which is located at the very top of the “stuck” item – then we set the menu to be fixed to the top of the page by setting the CSS values for margin-top, position and top. We also display a filler so that the content below the menu doesn’t jump when we set the menu’s position to fixed. When the user scrolls back to the top, the styles are reset to their original values and the filler is hidden.

To see a full working example, check out this fiddle. The Stickit class I created is flexible enough so that you can “stick” any element to the top of the page, and you can specify a different scrollTarget, which will allow you to scroll another element (besides the window) and allow the item to stick to the top of that element instead of the window. If you want to give that a try, you can specify different options in Stickit and modify your CSS as needed to get it working as you’d like.

Happy coding,

-Philip

May 16, 2012

Distil: Tech Partner Spotlight

By in Partner Marketplace, Technology

This guest blog comes to us from Distil.it, a featured member of the SoftLayer Technology Partners Marketplace. Distil is the first content protection network that helps companies identify and block malicious content scraping and data theft. In this video we talk to Distil CEO Rami Essaid about how the company developed, their participation in the TechStars program and most importantly, how they can help you!

When Google’s “Panda” Algorithm Collides with Duplicate Content

If you’re a Webmaster, it’s likely you’ve heard about the Google latest search algorithm — “Panda” — and all the benefits and implications of this update. Today, we wanted highlight what happens when Google Panda collides online with duplicate content. There have been plenty of opinions written about Google Panda and duplicate content, but we want to provide some background and examples to help you better understand how Panda and duplicate content might affect you.

What is Duplicate Content?

Duplicate content is a term used in the field of search engine optimization to describe content that appears on more than one web page, within the same web site. When multiple pages within a web site contain essentially the same content, search engines such as Google can penalize/not display that site in any relevant search results.

Should you be Concerned?

When Google released Panda, there was a significant outcry from legitimate business and publishers who were either downgraded overnight in their search engine page rank or dropped all together. For many of the businesses, the Panda algorithm reduced SEO rank and decreased visitors, site revenue and online market awareness. Some websites even experienced damage to their brand, as their customers and prospects questioned whether they were still in business.

We’ve spoken with Cult of Mac, Digital Trends and several Fortune 1000 businesses, and they’ve all said the same thing: They were penalized and downgraded as a result of the Panda release as a result of unauthorized duplication of their content. They had done everything to comply with Google in optimizing their SEO configurations, but the third-party websites scraping and duplicating their content (outside of their control) caused their page ranks to fall.

Read the rest of Distil’s blog about content scrapers and Google’s Panda update »

May 14, 2012

Synergy and Cloud – Going Beyond the Buzzwords

By in Cloud, Executive Blog, SoftLayer, Technology

Citrix Synergy 2012 took over San Francisco this week. Because Citrix is one of SoftLayer’s technology partners, you know we were in the house, and I thought I’d share a few SoftLayer-specific highlights from the conference.

Before I get too far, I should probably back up give you a little context for what the show is all about if you aren’t familiar with it. In his opening keynote, Citrix CEO Mark Templeton explained:

“We call it ‘Citrix Synergy,’ but really it’s ‘Synergy’ because this is an event that’s coordinated by us across a hundred sponsors, our ecosystem partners, companies in the industry that we work together with to bring you an amazing set of solutions around cloud, virtualization, networking and mobility.”

Given how broad of a spectrum those areas of technology represent, the short four-day agenda was jam-packed with informational sessions, workshops, demos and conversations. It goes without saying that SoftLayer had to be in the mix in a BIG WAY. We had a booth on the expo hall floor, I was lined up to lead a breakout session about how business can “learn how to build private clouds in the cloud,” and we were the proud presenting sponsor of the huge Synergy Party on Thursday night.

Our partnership with Citrix is unique. We incorporate Citrix NetScaler and Citrix XenServer as part of our service offerings. Plus, Citrix is also a SoftLayer customer, using SoftLayer infrastructure to offer a hosted desktop solution. Designed and architected from the ground up to run in the cloud, the Citrix Virtual Demo Center provides a dashboard interface for managing Citrix XenDesktop demo environments that are provisioned on-demand using SoftLayer’s infrastructure.

My biggest thrill at the conference came when I was asked to speak and share a little of our expertise in a keynote address on simplifying cloud networking. I like to tell people I have a great face for radio, but that didn’t keep me off the stage. The hall was packed to capacity and after defeating a few “demo gremlins,” I got to show off how easy SoftLayer makes it for our customers to take advantage of amazing products like Citrix Netscaler VPX:

In my “Learn How to Build Private Clouds in the Cloud” breakout session, I had a little more time to speak to the larger question of how SoftLayer is approaching the shift to cloud-specific architectures and share some best practices in moving to a private cloud. Private clouds are a great way to provide real-time service delivery of IT resources with a single-tenant, customized, secure environment. However, the challenge of scaling and managing physical resources still exists, so I tried to explain how businesses can leverage an Infrastructure-as-a-Service provider to add scalability to a private cloud environment.

Thanks to SynergyTV, that presentation has been made available for all to see:

As I joked at the beginning of the breakout session, an attendee at Citrix Synergy was probably bombarded by “the cloud” in presentations and conversations at the show. While it’s important to demystify the key terms we use on a daily basis, a few straight days of keynotes and breakout sessions about the cloud can get you thinking, “All work and no play makes Jack a dull boy.” Beyond our capabilities as a cloud infrastructure provider, SoftLayer knows how to have a good time, so after we took care of the “work” stuff in the sessions above, we did our best to help provide a little “play” as well. This year, we were the proud sponsor of the Synergy Party, featuring Lifehouse!

Citrix Synergy 2012 was a blast. As a former rocket scientist, I can say that authoritatively.

-@nday91

May 10, 2012

The SoftLayer API and its ‘Star Wars’ Sibling

By in Development, Funny, SoftLayer, Technology

When I present about the SoftLayer API at conferences and meetups, I often use an image that shows how many of the different services in the API are interrelated and connected. As I started building the visual piece of my presentation, I noticed a curious “coincidence” about the layout of the visualization:

SoftLayer API Visualization

What does that look like to you?

You might need to squint your eyes and tilt your head or “look beyond the image” like it’s one of those “Magic Eye” pictures, but if you’re a geek like me, you can’t help but notice a striking resemblance to one of the most iconic images from Star Wars:

SoftLayer API == Death Star?

The SoftLayer API looks like the Death Star.

The similarity is undeniable … The question is whether that resemblance is coincidental or whether it tells us we can extrapolate some kind of fuller meaning as in light of the visible similarities. I can hear KHazzy now … “Phil, While that’s worth a chuckle and all, there is no way you can actually draw a relevant parallel between the SoftLayer API and The Death Star.” While Alderaan may be far too remote for an effective demonstration, this task is no match for the power of the Phil-side.

Challenge Accepted.

The Death Star: A large space station constructed by the Galactic Empire equipped with a super-laser capable of destroying an entire planet.

The SoftLayer API: A robust set of services and methods which provide programmatic access to all portions of the SoftLayer Platform capable of automating any task: administrative, configuration or otherwise.

Each is the incredible result of innovation and design. The construction of the Death Star and creation of the SoftLayer API took years of hard work and a significant investment. Both are massive in scale, and they’re both effective and ruthless when completing their objectives.

The most important distinction: The Death Star was made to destroy while the SoftLayer API was made to create … The Death Star was designed to subjugate a resistance force and destroy anything in the empire’s way. The SoftLayer API was designed to help customers create a unified, automated way of managing infrastructure; though in the process, admittedly that “creation” often involves subjugating redundant, compulsory tasks.

The Death Star and the SoftLayer API can both seem pretty daunting. It can be hard to find exactly what you need to solve all of your problems … Whether that be an exhaust port or your first API call. Fear not, for I will be with you during your journey, and unlike Obi-Wan Kenobi, I’m not your only hope. There is no need for rebel spies to acquire the schematics for the API … We publish them openly at sldn.softlayer.com, and we encourage our customers to break the API down into the pieces of functionality they need.

-Phil (@SoftLayerDevs)

April 24, 2012

RightScale + SoftLayer: The Power of Cloud Automation

By in Cloud, Executive Blog, SoftLayer, Technology

SoftLayer’s goal is to provide unparalleled value to the customers who entrust their business-critical computing to us — whether via dedicated hosting, managed hosting, cloud computing or a hybrid environment of all three. We provide the best platform on the market, delivering convenience, ease of use, compelling return on investment (ROI), significant competitive advantage, and consistency in a world where the only real constant seems to be change.

That value proposition is one of the biggest driving forces behind our partnership with RightScale. We’re cloud computing soul mates.

RightScale

RightScale understands the power of automation, and as a result, they’ve created a cloud management platform that they like to say delivers “abstraction with complete customization.” RightScale customers can easily deploy and manage applications across public, private and hybrid cloud environments, unencumbered by the underlying details. They are free to run efficient, scalable, highly available applications with visibility into and control over their computing resources available in one place.

As you know, SoftLayer is fueled by automation as well, and it’s one of our primary differentiators. We’re able to deliver a phenomenal customer experience because every aspect of our platform is fully and seamlessly automated to accelerate provisioning, mitigate human error and provide customers with access and features that our competitors can only dream of. Our customers get simple and total control over an ever-expanding number of back-end services and functions through our easy-to-use Customer Portal and via an open, robust API.

The compatibility between SoftLayer and RightScale is probably pretty clear already, but if you needed another point to ponder, you can ruminate on the fact that we both share expertise and focus across a number of vertical markets. The official announcement of the SoftLayer and RightScale partnership will be particularly noteworthy and interesting in the Internet-based business and online gaming market segments.

It didn’t take long to find an amazing customer success story that demonstrated the value of the new SoftLayer-RightScale partnership. Broken Bulb Game Studios — the developer of social games such as My Town, Braaains, Ninja Warz and Miscrits — is already harnessing the combined feature sets made possible by our partnership with RightScale to simplify its deployment process and scale to meet its customers’ expectations as its games find audiences and growing favor on Facebook. Don’t take our word for it, though … Check out the Broken Bulb quote in today’s press release announcing the partnership.

Broken Bulb Game Studios

Broken Bulb and other developers of social games recognize the importance of getting concepts to market at breakneck speed. They also understand the critical importance of intelligently managing IT resources throughout a game’s life cycle. What they want is fully automated control over computing resources so that they can be allocated dynamically and profitably in immediate response to market signals, and they’re not alone.

Game developers of all sorts — and companies in a growing number of vertical markets — will need and want the same fundamental computing-infrastructure agility.

Our partnership with RightScale is only beginning. You’re going to see some crazy innovation happening now that our cloud computing mad scientists are all working together.

-Marc

April 20, 2012

Choosing a Cloud: Cost v. Technology v. Hosting Provider

By in Business, Cloud, SoftLayer, Technology

If you had to order a new cloud server right now, how would choose it?

I’ve worked in the hosting industry for the better part of a decade, and I can safely say that I’ve either observed or been a part of the buying decision for a few thousand hosting customers — from small business owners getting a website online for the first time to established platforms that are now getting tens of millions of visits every day. While each of those purchasers had different requirements and priorities, I’ve noticed a few key deciding factors that are consistent in a all of those decisions:

The Hosting Decision

How much will the dedicated server or cloud computing instance cost? What configuration/technology do I need (or want)? Which hosting provider should I trust with my business?

Every website administrator of every site on the Internet has had to answer those three questions, and while they seem pretty straightforward, they end up overlapping, and the buying decision starts to get a little more complicated:

The Hosting Decision

The natural assumption is that everyone will choose a dedicated server or cloud computing instance that falls in the “sweet spot” where the three circles overlap, right? While that makes sense on paper, hosting decisions are not made in a vacuum, so you’ll actually see completely valid hosting decisions targeting every spot on that graph.

Why would anyone choose an option that wouldn’t fit in the sweet spot?

That’s a great question, and it’s a tough one to answer in broad strokes. Let’s break the chart down into a few distinct zones to look at why a user would choose a server in each area:

The Hosting Decision

Zone 1

Buyers choosing a server in Zone 1 are easiest to understand: Their budget takes priority over everything else. They might want to host with a specific provider or have a certain kind of hardware, but their budget doesn’t allow for either. Maybe they don’t need their site to use the latest and greatest hardware or have it hosted anywhere in particular. Either way, they choose a cloud solely based on whether it fits their budget. After the initial buying decision, if another server needs to be ordered, they might become a Zone 4 buyer.

Zone 2

Just like Zone 1 buyers, Zone 2 buyers are a pretty simple bunch as well. If you’re an IT administrator at a huge enterprise that does all of your hosting in-house, your buying decision is more or less made for you. It doesn’t matter how much the solution costs, you have to choose an option in your data center, and while you might like a certain technology, you’re going to get what’s available. Enterprise users aren’t the only people deciding to order a server in Zone 2, though … It’s where you see a lot of loyal customers who have the ability to move to another provider but prefer not to — whether it’s because they want their next server to be in the same place as their current servers, they value the capabilities of a specific hosting provider (or they just like the witty, interesting blogs that hosting provider writes).

Zone 3

As with Zone 1 and Zone 2, when a zone doesn’t have any overlapping areas, the explanation is pretty easy. In Zone 3, the buying decision is being made with a priority on technology. Buyers in this area don’t care what it costs or where it’s hosted … They need the fastest, most powerful, most scalable infrastructure on the market. Similar to Zone 1 buyers, once Zone 3 buyers make their initial buying decision, they might shift to Zone 5 for their next server or cloud instance, but we’ll get to that in a minute.

Zone 4

Now we’re starting to overlap. In Zone 4, a customer will be loyal to a hosting provider as long as that loyalty doesn’t take them out of their budget. This is a relatively common customer … They’ll try to compare options apples-to-apples, and they’ll make their decision based on which hosting provider they like/trust most. As we mentioned above, if a Zone 1 buyer is adding another server to their initial server order, they’ll likely look to add to their environment in one place to make it easier to manage and to get the best performance between the two servers.

Zone 5

Just like the transitional Zone 1 buyers, when Zone 3 buyers look to build on their environment, they’ll probably become Zone 5 buyers. When your initial buying decision is based entirely on technology, it’s unusual to reinvent the wheel when it comes to your next buying decision. While there are customers that will reevaluate their environment and choose a Zone 3 option irrespective of where their current infrastructure is hosted, it’s less common. Zone 5 users love having he latest and greatest technology, and they value being able to manage it through one provider.

Zone 6

A Zone 6 buyer is usually a Zone 1 buyer that has specific technology needs. With all the options on the table, a Zone 6 buyer will choose the cloud environment that provides the latest technology or best performance for their budget, regardless of the hosting provider. As with Zone 1 and Zone 3 buyers, a Zone 6 buyer will probably become a Zone 7 buyer if they need to order another server.

Zone 7

Zone 7 buyers are in the sweet spot. They know the technology they want, they know the price they want to pay, and they know the host they want to use. They’re able to value all three of their priorities equally, and they can choose an environment that meets all of their needs. After Zone 6 buyers order their first server(s), they’re going to probably become Zone 7 buyers when it comes time for them to place their next order.

As you probably noticed, a lot of transitioning happens between an initial buying decision and a follow-up buying decision, so let’s look at that quickly:

The Hosting Decision

Regardless of how you make your initial buying decision, when it’s time for your next server or cloud computing instance, you have a new factor to take into account: You already have a cloud infrastructure at a hosting provider, so when it comes time to grow, you’ll probably want to grow in the same place. Why? Moving between providers can be a pain, managing environments between several providers is more difficult, and if your servers have to work together, they’re generally doing so across the public Internet, so you’re not getting the best performance.

Where does SoftLayer fit in all of this? Well beyond being a hosting provider that buyers are choosing, we have to understand buyers are making their buying decisions, and we have to position our business to appeal to the right people with the right priorities. It’s impossible to be all things for all people, so we have to choose where to invest our attention … I’ll leave that post for another day, though.

If you had to choose a zone that best describes how you made (or are currently making) your buying decision, which one would it be?

-@khazard

April 17, 2012

High Performance Computing for Everyone

By in Cloud, Infrastructure, Partner Marketplace, SoftLayer, Technology

This guest blog was submitted by Sumit Gupta, senior director of NVIDIA’s Tesla High Performance Computing business.

The demand for greater levels of computational performance remains insatiable in the high performance computing (HPC) and technical computing industries, as researchers, geophysicists, biochemists, and financial quants continue to seek out and solve the world’s most challenging computational problems.

However, access to high-powered HPC systems has been a constant problem. Researchers must compete for supercomputing time at popular open labs like Oak Ridge National Labs in Tennessee. And, small and medium-size businesses, even large companies, cannot afford to constantly build out larger computing infrastructures for their engineers.

Imagine the new discoveries that could happen if every researcher had access to an HPC system. Imagine how dramatically the quality and durability of products would improve if every engineer could simulate product designs 20, 50 or 100 more times.

This is where NVIDIA and SoftLayer come in. Together, we are bringing accessible and affordable HPC computing to a much broader universe of researchers, engineers and software developers from around the world.

GPUs: Accelerating Research

High-performance NVIDIA Tesla GPUs (graphics processing units) are quickly becoming the go-to solution for HPC users because of their ability to accelerate all types of commercial and scientific applications.

From the Beijing to Silicon Valley — and just about everywhere in between — GPUs are enabling breakthroughs and discoveries in biology, chemistry, genomics, geophysics, data analytics, finance, and many other fields. They are also driving computationally intensive applications, like data mining and numerical analysis, to much higher levels of performance — as much as 100x faster.

The GPU’s “secret sauce” is its unique ability to provide power-efficient HPC performance while working in conjunction with a system’s CPU. With this “hybrid architecture” approach, each processor is free to do what it does best: GPUs accelerate the parallel research application work, while CPUs process the sequential work.

The result is an often dramatic increase in application performance.

SoftLayer: Affordable, On-demand HPC for the Masses

Now, we’re coupling GPUs with easy, real-time access to computing resources that don’t break the bank. SoftLayer has created exactly that with a new GPU-accelerated hosted HPC solution. The service uses the same technology that powers some of the world’s fastest HPC systems, including dual-processor Intel E5-2600 (Sandy Bridge) based servers with one or two NVIDIA Tesla M2090 GPUs:

NVIDIA Tesla

SoftLayer also offers an on-demand, consumption-based billing model that allows users to access HPC resources when and how they need to. And, because SoftLayer is managing the systems, users can keep their own IT costs in check.

You can get more system details and pricing information here: SoftLayer HPC Servers

I’m thrilled that we are able to bring the value of hybrid HPC computing to larger numbers of users. And, I can’t wait to see the amazing engineering and scientific advances they’ll achieve.

-Sumit Gupta, NVIDIA – Tesla

April 12, 2012

HTML5 – Compatibility for All?

By in Development, Technology

Many of us remember when Flash was the “only” way to enhance user experience and create rich media interactivity. It was a bittersweet integration, though … Many users didn’t have the browser compatibility to use it, so some portion of your visitors were left in the dark. Until recently, that user base was relatively small — the purists who didn’t want Flash or the people whose hardware/software couldn’t support it. When Apple decided it wouldn’t enable Flash on the iPhone/iPad, web developers around the world groaned. A HUGE user base (that’s growing exponentially) couldn’t access the rich media and interactive content.

In the last year or so, Adobe released Flash Media Server to circumvent the Apple-imposed restrictions, but the larger web community has responded with a platform that will be both compatible and phenomenally functional: HTML5.

HTML5 allows us to do things we’ve never been able to do before (at least without the hassle of plugins, installations and frustration). Gone are the limitations that resigned HTML to serving as a simple framework for webpages … Now developers can push the limits of what they thought possible. As the platform has matured, some developers have even taken it upon themselves to prototype exactly where this generation of scripting is heading by creating Flash-free browser games.

Yes, you read that right: Games you can actually play on your browser, WITHOUT plugins.

From simple Pong clones that use browser windows as the paddles and ball to adventure-based Zelda-like massively multiplayer online role playing games (MMORPGs) like BrowserQuest, it’s pretty unbelievable to see the tip of the iceberg of possibilities enabled by HTML5 … Though it does seem a bit ironic to say that a Pong clone is such a great example of the potential of the HTML5 platform. Click on the screenshot below to check out BrowserQuest and tell me it doesn’t amaze you:

Browser Quest

With an ingenious combination of CSS, JavaScript and HTML5, developers of BrowserQuest have been able to accomplish something that no one has ever seen (nor would ever even have thought possible). Developers are now able to generate dynamic content by injecting JavaScript into their HTML5 canvasses:

<code>
function handleKeyDown(evt){
	keys[evt.keyCode] = true;
}
 
function handleKeyUp(evt){
	keys[evt.keyCode] = false;
}
 
// disable vertical scrolling from arrows :)
document.onkeydown=function(){return event.keyCode!=38 && event.keyCode!=40}
</code>

Look familiar? The game-making process (not syntax!) appears eerily similar to that of any other popular language. The only difference: You don’t need to install this game … You just open your browser and enjoy.

Using a popular port of Box2D, a physics simulator, making pure browser-based games is as simple as “Make. Include. Create.” Here’s a snippit:

<code>
//Make your canvas
<canvas id="game" width="600" height="400"></canvas>  
 
//include your js physics files
 
// create your world
function createWorld() {
	// here we create our world settings for collisions
	var worldAABB = new b2AABB();
	worldAABB.minVertex.Set(-1000, -1000);
	worldAABB.maxVertex.Set(1000, 1000);
	// set gravity vector
	var gravity = new b2Vec2(0, 300);
	var doSleep = true;
	// init our world and return its value
	var world = new b2World(worldAABB, gravity, doSleep);
	return world;
}
</code>

We may be a few years away from building full-scale WoW-level MMORPGs with HTML5, but I think seeing this functionality in native HTML will be a sigh of relief to those that’ve missed out on so much Flash goodness. While developers are building out the next generation of games and apps that will use HTML5, you can keep yourself entertained (and waste hours of time) with the HTML5 port of Angry Birds!

Angry Birds

HTML5 is not immune to some browser compatibility issues with older versions, but as it matures and becomes the standard platform for web development, we’re going to see what’s to come in our technology’s immediate future: Pure and simple compatibility for all.

-Cassandra

March 27, 2012

Tips and Tricks – How to Secure WordPress

By in Development, Technology, Tips and Tricks

As a hobby, I dabble in WordPress, so I thought I’d share a few security features I use to secure my WordPress blogs as soon as they’re installed. Nothing in this blog will be earth-shattering, but because security is such a priority, I have no doubt that it will be useful to many of our customers. Often, the answer to the question, “How much security do I need on my site?” is simply, “More,” so even if you have a solid foundation of security, you might learn a new trick or two that you can incorporate into your next (or current) WordPress site.

Move wp-config.php

The first thing I do is change the location of my wp-config.php. By default, it’s installed in the WordPress parent directory. If the config file is in the parent directory, it can be viewed and accessed by Apache, so I move it out of web/root. Because you’re changing the default location of a pretty significant file, you need to tell WordPress how to find it in wp-load.php. Let’s say my WordPress runs out of /webroot on my host … I’d need to make a change around Line 26:

if ( file_exists( ABSPATH . 'wp-config.php') ) {
 
        /** The config file resides in ABSPATH */
        require_once( ABSPATH . 'wp-config.php' );
 
} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
 
        /** The config file resides one level above ABSPATH but is not part of another install*/
        require_once( dirname(ABSPATH) . '/wp-config.php' );

The code above is the default setup, and the code below is the version with my subtle update incorporated.

if ( file_exists( ABSPATH . 'wp-config.php') ) {
 
        /** The config file resides in ABSPATH */
        require_once( ABSPATH . '../wp-config.php' );
 
} elseif ( file_exists( dirname(ABSPATH) . '..//wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
 
        /** The config file resides one level above ABSPATH but is not part of another install*/
        require_once( dirname(ABSPATH) . '../wp-config.php' );

All we’re doing is telling the application that the wp-config.php file is one directory higher. By making this simple change, you ensure that only the application can see your wp-config.php script.

Turn Down Access to /wp-admin

After I make that change, I want to turn down access to /wp-admin. I allow users to contribute on some of my blogs, but I don’t want them to do so from /wp-admin; only users with admin rights should be able to access that panel. To limit access to /wp-admin, I recommend the plugin uCan Post. This plugin creates a page that allows users to write posts and submit them within your theme.

But won’t a user just be able to navigate to http://site.com/wp-admin? Yes … Until we add a simple function to our theme’s functions.php file to limit that access. At the bottom of your functions.php file, add this:

############ Disable admin access for users ############

add_action('admin_init', 'no_more_dashboard');
function no_more_dashboard() {
  if (!current_user_can('manage_options') && $_SERVER['DOING_AJAX'] != '/wp-admin/admin-ajax.php') {
  wp_redirect(site_url()); exit;
  }
}
 
###########################################################

Log in as a non-admin user, and you’ll get redirected to the blog’s home page if you try to access the admin panel. Voila!

Start Securing the WordPress Database

Before you go any further, you need to look at WordPress database security. This is the most important piece in my opinion, and it’s not just because I’m a DBA. WordPress never needs all permissions. The only permissions WordPress needs to function are ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT and UPDATE.

If you run WordPress and MySQL on the same server the permissions grant would look something like:

GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE ON <DATABASE>.* TO <USER>@'localhost' IDENTIFIED BY '<PASSWORD>';

If you have a separate database server, make sure the host of the webserver is allowed to connect to the database server:

GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INDEX, INSERT, LOCK TABLES, SELECT, UPDATE ON <DATABASE>.* TO <USER>@'<ip of web server' IDENTIFIED BY '<PASSWORD>';

The password you use should be random, and you should not need to change this. DO NOT USE THE SAME PASSWORD AS YOUR ADMIN ACCOUNT.

By taking those quick steps, we’re able to go a long way to securing a default WordPress installation. There are other plugins out there that are great tools to enhance your blog’s security, and once you’ve got the fundamental security updates in place, you might want to check some of them out. Login LockDown is designed to stop brute force login attempts, and Secure WordPress has some great additional features.

What else do you do to secure your WordPress sites?

-Lee