I’m Oliver Wolff, one of the developers working on Qt Simulator. We would like to give you a quick overview about what’s new in Qt Simulator’s 1.2 release.
There were certain areas which needed improvement either requested by users or driven by us seeing that things could be easier or more intuitive. For the 1.2 release there are 3 main parts we wanted to improve.
As we added more and more categories to the configuration widget we became more and more aware of the fact that a major ui overhaul had to be done. We tried several approaches and finally found a way to have a flexible, space saving approach to organize all the settings. It is now possible to enable and disable categories so that everyone can just see the settings they need. Additionally we removed the artificial distinction between the “Simulate”, “Application” and “View” area so that the categories are all on one level and the configuration widget behaves more like you would expect it from a toolbox.
Another often requested feature is the ability to simulate multiple touch point interaction with the application. First we enabled forwarding touch events from the host to the applications running in Qt Simulator. But as Multi-touch screens are not widespread yet there was the need to add another possibility to trigger multiple touch point actions in Qt Simulator. Therefore you can now change Qt Simulator’s “mouse input mode”. By default it behaves just like mouse input but you can change to “pinch”, “pan” and “swipe” mode to simulate these gestures. Additionally you can use Qt Simulator’s script engine to add more complex gestures. These gestures can be triggered when Qt Simulator is in “custom gesture” mode and they can be relative to the display or mouse position (by using input.mouseX/Y in your script).
The third new feature is the possibility to add your own category to Qt Simulator’s control widget. In order to do so, you either have to create a custom options item or a widget if it is supposed to cover the whole width of the control widget. Communication between client and your plugin can be done with the help of the support library which can be installed as optional component for the Qt SDK.
You can check out the results of these actions by downloading the latest Qt SDK package which is blogged about here
Besides the given main areas there was of course the day to day bug fighting work to be done. If there is anything else you would like to see in the Simulator just drop a comment or file a bugreport/suggestion on bugreports.qt.nokia.com
We are happy to announce the Qt 4.7.4 release for desktops. This is mainly a maintenance release which contains bug-fixes based on feedback and contributions since the Qt 4.7.3 release back in May.
4.7.4 is currently last planned 4.7 release. Work will continue in 4.8, Beta has been released already and Release Candidate is going to be available soon.
4.7.4 introduces new features like Qt Quick 1.1 (see more from documentation)
- Right-To-Left support
- Improved image caching
- Text input improvements – Support for split-screen virtual keyboard
- Pinch Area to provide a declarative API for handling touch input
and also QML Shaders plugin (embed OpenGL shader effects in QML apps, see more). Documentation can be found from here and here.
For Symbian there are additional improvements:
- Opt-in split view editor support (e.g. enabler for Qt Quick Components 1.1),
- Graphics improvements: Productized OpenGL ES support with optimized GPU memory management, Several OpenVG paint engine optimizations
- Faster orientation switching support
- Support for copy/paste keyboard accelerators in editors
Please note that Qt 4.7.4 will be available for the upcoming Symbian and MeeGo devices when final device software is available. Targets will be made available accordingly with updates of the Qt SDK.
Qt 4.7.4 is available as part of the Qt SDK update. Qt packages can be downloaded from the Qt Download page, and for those who prefer to get it directly from the public git repository at http://qt.gitorious.org. The release has been tagged there as “v4.7.4,” and the changes are listed in the Qt 4.7.4 changelog.
Thank you to all of you that have provided bug reports and/or bug fixes.
To provide feedback, you can use the Qt Bug Tracker. To contribute code, documentation updates or autotests for Qt, then all you need to get started is at http://qt.gitorious.org.
HTTPbis published RFC6266 a little while ago, but the work isn’t finished.
This is the RFC that clarifies how the Content-Disposition header is used in HTTP; in a nutshell, while basic file downloads worked OK, there wasn’t any broad interoperability between browsers for non-ASCII filenames.
Julian Reschke did the hard work of coming up with a test suite to find how how bad things were, filing bugs with browsers (such as here and here), and finally writing the draft that eventually became the RFC. Thanks again, Julian.
Since publication, it’s become apparent that browsers are indeed moving towards better interop. So, the next step was to start to publicise this interop so that people on the content side can take advantage of it.
As a result, we’ve come up with a page giving advice to people who produce Content-Disposition — especially Web frameworks.
There’s also a sample implementation for Node.JS called sweet, so you can see how it should work, and support for checking Content-Disposition in REDbot, so you can confirm that you’re doing it well.
So, if you’re involved in a Web framework, please have a look and publicise this within your community. We’ve already filed a request with Django; if your framework has a tracking URL, please add it to the producer advice wiki page.
We are pleased to announce that the BBC Future Media is a Gold Sponsor of Over the 2011!
BBC Future Media is the driving force behind the BBC’s digital media proposition. We design, develop and run digital services and products. Our aim is to allow audiences to enjoy the BBC’s best content via their preferred route, whether that’s online, via mobile, or through internet-connected TV.
This cutting-edge group is responsible for delivering the BBC iPlayer (online and on TV), the BBC News site, BBC Weather site, BBC Children’s games on TV and online, the Red Button, the BBC Wildlife finder, BBC Lab UK and the BBC Radio 1 Chart, to name just a few.
To create such unique digital media offerings on this scale requires many teams working with a common purpose, using different technologies. These include software engineers, technologists, testers, user-experience designers, product managers and business analysts. Together, we create the concepts, then design and build the platforms to give the user an online experience that comes alive.
As many of you alert Mobilists will know, the annual Droidcon Android Conference is a mere 5 days after Over the Air, and we're pleased to announce that we've partnered with WIP to be the official Android Hack Day that they always organise before their big event.
If you haven't heard of Droidcon, it is the UK's largest Android conference exclusively covering the Android, Android Development, Android Applications and the ecosystem that has grown up around Google's Mobile Platform.
Droidcon 2011 will take place at Islington Design Centre on the 6th-7th October 2011 and will feature the cream of the Android Developer world. Day One will be a community-led Android Unconference with a full day Barcamp and Democamp. Delegates will take to the stage to give talks, participate in discussions and showcase their Android applications. Day Two will be an Android Conference. Android Experts from around the World will present on every aspect of the Android and its many uses. Around 40 speakers on 4 Tracks will cover Android Development, testing, Marketing, and lots, lots more.
The OTA Hack-a-thon Android Category
Droidcon will be supporting the Best Android Apps hack-a-thon category by offering free tickets to Droidcon for the winning team as well as a slot to demo their winning app at the Democamp on Thursday.
(That shouldn't be an excuse not to get your early bird ticket now before they disappear...)
But that's not all.... Droidcon will also be giving away 2 Sony Ericsson Xperia Play devices (the first PlayStation certified Android smartphone! w00t!) to the 2 best teams. So don't just sit there - start thinking of a great Android hack to enter!
A key feature of every Over the Air is the Hack-a-thon, which opens after the Keynotes on Friday morning and closes shortly before the Demo's on Saturday after lunch. There are always a number of general categories, sponsored categories, and thematic or problem-solving challenges.
As we finalise the schedule for OTA11, we are also getting a good picture of what this year's Hack-a-thon categories will be (and some really fantastic prizes have been donated as well!)
Here's what it's looking like so far:
- Best in Show (judges selection) - a LEGO Mindstorms Kit donated by LEGO
- Audience Favourite (audience vote) - a LEGO Mindstorms Kit donated by LEGO
- Best Bletchley Park related entry - an Electronic Enigma Machine Kit donated by the Bletchley Park Shop
- The Telefonica #Blue Challenge - BlueVia
- The X.commerce Challenge - PayPal
- The Ericsson Labs Challenge - Ericsson
- Best User Experience - $1,000 of In-Network Ad Spend donated by InMobi
- Best Android App / Hack- Free tickets & a demo slot at Droidcon + a Sony Ericsson Xperian Play for the two best entries donated by WIP
- Best iPhone App / Hack
- Best Windows Phone App / Hack
- Best use of Open APIs and Open Data
- Best use of Mobile Web
- Best Game on or using the Mobile Phone
- Best Use of other features (RFID, Camera Bluetooth, Light Sensors)
- Best Visual / User-Interface Design
- Best use of Widgets
- Best Hardware Hack
- The Most Fun / Cheeky
- The Most Useful
So, to hell with all that noise. It’s just a big mass of envy, chatter and FOMO. Let’s get excited and make things.
Yes. Let’s.
What happens when you take Augmented Reality and put it together with new glasses-free 3d phone display technology? We're about to find out. We're very excited to announce that the folks from a title="NudgeNudge" href="http://overtheair.org/blogNudgeNudge will be running a workshop on building 3D AR apps at this year's Over the Air. Roll up to get hands-on with this exciting new technology.
We are pleased to announce that the Guardian Open Platform team is sponsoring Breakfast on Friday at Over the Air 2011.
The Guardian Open Platform is part of the Guardian's ongoing digital engagement strategy. Encompassing such projects as the Guardian Content API which gives access to over 10 years of journalistic content, the Data Blog which provides the data behind the popular stories and the Guardian Developer Network which is improving the conversation between developers and journalists.
I've been trying to run load tests against a node.js web app that I'm working on. I've hacked up my app to log (every 5 seconds) the number of requests per second that it handles and the amount of memory that it uses. I saw some strange numbers. I should also mention that I was using ab to throw load at the server. Perhaps not the best load tester around, but it served my purpose for this particular test.
My app started out well, handling about 1500 requests per second, but then all of a sudden it would stop serving requests. With repeated runs, the point where it would stop was always around 16K connections... in fact, it always hovered around 16384, mostly staying below, but sometimes going above it a bit (eg: 16400).
Ephemeral Ports
To those of you familiar with TCP networking, you'll recognise that value as the IANA specified number of Ephemeral Ports (49152 to 65535).
I started to log the state of all TCP connections every second using the following shell script (split onto multiple lines for readability):
while true; do
echo -n "$( date +%s ) ";
netstat |
awk '$4~/.http-alt/ { conn[$6]++ }
END {
for(c in conn) {
printf("%s: %dt", c, conn[c]);
}
printf("n");
}
';
sleep 1;
done
This is the output it returned:
1315341300 TIME_WAIT: 209 ESTABLISHED: 100 1315341301 FIN_WAIT_1: 4 FIN_WAIT_2: 4 TIME_WAIT: 1892 ESTABLISHED: 92 1315341302 FIN_WAIT_1: 1 FIN_WAIT_2: 2 TIME_WAIT: 3725 ESTABLISHED: 97 1315341303 FIN_WAIT_2: 2 TIME_WAIT: 5426 ESTABLISHED: 97 1315341304 FIN_WAIT_1: 1 FIN_WAIT_2: 5 TIME_WAIT: 7017 ESTABLISHED: 94 1315341305 TIME_WAIT: 8722 ESTABLISHED: 100 1315341306 FIN_WAIT_1: 2 TIME_WAIT: 10459 ESTABLISHED: 98 1315341308 FIN_WAIT_1: 3 FIN_WAIT_2: 3 TIME_WAIT: 12246 ESTABLISHED: 94 1315341309 FIN_WAIT_1: 7 TIME_WAIT: 14031 ESTABLISHED: 93 1315341310 FIN_WAIT_1: 3 TIME_WAIT: 15937 ESTABLISHED: 97 1315341311 TIME_WAIT: 16363 1315341312 TIME_WAIT: 16363 1315341314 TIME_WAIT: 16363 1315341315 TIME_WAIT: 16363 1315341316 TIME_WAIT: 16363 1315341317 TIME_WAIT: 16363 1315341318 TIME_WAIT: 16363 1315341319 TIME_WAIT: 16363 1315341321 TIME_WAIT: 16363 1315341322 TIME_WAIT: 16363 1315341323 TIME_WAIT: 16363 1315341324 TIME_WAIT: 16363 1315341325 TIME_WAIT: 16363 1315341326 TIME_WAIT: 16363 1315341328 TIME_WAIT: 16363 1315341329 TIME_WAIT: 16363 1315341330 TIME_WAIT: 16363 1315341331 TIME_WAIT: 14321 1315341332 TIME_WAIT: 12641 1315341333 TIME_WAIT: 11024 1315341334 TIME_WAIT: 9621 1315341336 TIME_WAIT: 7516 1315341337 TIME_WAIT: 5920 1315341338 TIME_WAIT: 4227 1315341339 TIME_WAIT: 2693 1315341340 TIME_WAIT: 1108 1315341341 TIME_WAIT: 23There are a few things to note here.
- I ran
abwith concurrency set to 100, so the number of connections in theESTABLISHED, andFIN_WAIT_{1,2}states should be about 100 for the most part - I was polling netstat once per second + the amount of time it took netstat to return, so you might notice missing seconds in between
- Requests were being handled at over 1000 per second, so many of the connections would have gone from the
SYN_SENTstate toTIME_WAITin less than 1 second.
It's pretty clear here that everything just stops once the number of connections reaches 16363, and my app's logs confirm that. ab ends up timing out somewhere near the end of this report (which should probably be the subject of a different blog post).
Now if we look closely, we notice that it takes 30 seconds from the first result we see to when the number of connections in the TIME_WAIT state start dropping below 16363
TIME_WAIT
A few points should be noted about the TIME_WAIT state.- Only the endpoint that sends the first
FINwill end up in a TIME_WAIT state. I'll tell you later why this is important - A connection remains in the
TIME_WAITstate for twice the connection's MSL (See RFC793)
So we now have a whole load of TCP connections in the TIME_WAIT state and the client (the load tester) has run out of ephemeral ports to keep running the test. This is independent of the load tester used, and how it handles its sockets (poll, select, multiple threads, multiple processes, whatever). This is a limit imposed by the Operating System in order to comply with the TCP spec, and in general make sure the internet doesn't break.
Now there are various ways to get around this limit. The simplest is to just use multiple boxes to run your performance test all simultaneously hitting your server. The more boxes you use, the more likely it is that your server will break down before your client hits the port limit. But what if you don't have access to so many boxes (in a world without EC2 for example), or it's too expensive, or you're not utilising the other resources (CPU/RAM/Network Interface) on your client boxes and would like to get a little more out of them?
You could program your load tester to use SO_REUSEADDR, which would allow it to reuse sockets that are in the TIME_WAIT state, but that could backfire if there's still data on the network.
MSL
Now remember that TIME_WAIT is twice the MSL. RFC793 recommends setting the MSL to 2 minutes, which would leave TIME_WAIT at 4 minutes. Luckily no current implementation uses this value. Linux has its TIME_WAIT length hardcoded to 60 seconds (implying a 30 second MSL), while BSD has set to 15 seconds (sysctl net.inet.tcp.msl) and tunable at run time.
To verify, I reran the test after setting the MSL to 5 seconds:
sudo sysctl -w net.inet.tcp.msl=5000
And these were the results:
1315344661 TIME_WAIT: 1451 ESTABLISHED: 100 1315344662 FIN_WAIT_2: 5 TIME_WAIT: 3272 ESTABLISHED: 95 1315344664 FIN_WAIT_1: 1 TIME_WAIT: 5010 ESTABLISHED: 99 1315344665 TIME_WAIT: 6574 ESTABLISHED: 100 1315344666 FIN_WAIT_1: 11 FIN_WAIT_2: 2 TIME_WAIT: 7908 ESTABLISHED: 87 1315344667 TIME_WAIT: 9689 ESTABLISHED: 100 1315344668 TIME_WAIT: 11155 ESTABLISHED: 100 1315344669 FIN_WAIT_1: 3 TIME_WAIT: 12522 ESTABLISHED: 97 1315344671 FIN_WAIT_2: 2 TIME_WAIT: 13655 ESTABLISHED: 98 1315344672 FIN_WAIT_1: 4 FIN_WAIT_2: 12 TIME_WAIT: 13847 ESTABLISHED: 84 1315344673 FIN_WAIT_1: 2 TIME_WAIT: 13218 ESTABLISHED: 98 1315344674 FIN_WAIT_1: 2 TIME_WAIT: 13723 ESTABLISHED: 97 1315344675 FIN_WAIT_1: 2 TIME_WAIT: 14441 ESTABLISHED: 98 1315344677 FIN_WAIT_1: 4 FIN_WAIT_2: 6 TIME_WAIT: 13946 ESTABLISHED: 90 1315344678 FIN_WAIT_1: 3 FIN_WAIT_2: 15 TIME_WAIT: 14670 ESTABLISHED: 82 1315344679 FIN_WAIT_1: 2 TIME_WAIT: 15164 ESTABLISHED: 98 1315344680 FIN_WAIT_1: 2 TIME_WAIT: 15062 ESTABLISHED: 98 1315344681 TIME_WAIT: 15822 ESTABLISHED: 100 1315344683 FIN_WAIT_1: 4 TIME_WAIT: 15855 ESTABLISHED: 82 1315344684 FIN_WAIT_1: 15 TIME_WAIT: 15506 ESTABLISHED: 84 1315344685 FIN_WAIT_2: 9 TIME_WAIT: 15928 ESTABLISHED: 91 1315344687 FIN_WAIT_1: 4 TIME_WAIT: 15356 ESTABLISHED: 96 1315344688 FIN_WAIT_1: 2 FIN_WAIT_2: 8 TIME_WAIT: 15490 ESTABLISHED: 90 1315344689 FIN_WAIT_1: 1 TIME_WAIT: 15449 ESTABLISHED: 99 1315344690 FIN_WAIT_1: 3 TIME_WAIT: 15801 ESTABLISHED: 97 1315344692 FIN_WAIT_1: 1 TIME_WAIT: 15882 ESTABLISHED: 70 1315344693 FIN_WAIT_1: 3 TIME_WAIT: 16106 ESTABLISHED: 56 1315344694 FIN_WAIT_1: 3 TIME_WAIT: 15637 ESTABLISHED: 2 1315344695 TIME_WAIT: 14166 1315344697 TIME_WAIT: 12588 1315344698 TIME_WAIT: 10454 1315344699 TIME_WAIT: 8917 1315344700 TIME_WAIT: 7441 1315344701 TIME_WAIT: 5735 1315344702 TIME_WAIT: 4119 1315344703 TIME_WAIT: 1815 1315344704 TIME_WAIT: 88
The test runs longer here because it actually gets to 50000 connections. We're doing about 1500 requests per second, so it would take just under 11 seconds to exhaust all 16384 ports, but since ports are reusable in 10 seconds, we would have reclaimed the first 3000 ports in this time and then just continue to use them.
Here's the catch though, you can only do this on BSD. Linux doesn't let you change the MSL. Also, DO NOT DO THIS IN PRODUCTION!
TIME_WAIT, FIN and HTTP keep-alive
Now I mentioned earlier that only the endpoint that sends the first FIN packet will enter the TIME_WAIT state. This is important because in production, you really do not want your server to end up with a lot of connections in the TIME_WAIT state. A malicious user could, for example, make a large number of HEAD requests to your server, and either wait for them to terminate, or specify Connection:close but leave the connection open for your server to close by sending the first FIN packet.
How do you deal with this?
We're exited to announce that Mo McRoberts from BBC will be presenting on the BBC's Digital Public Space Project at this year's Over the Air. You can learn more about this exciting project in Mo's blog post on BBC's Internet Blog.
The schedule for our 2011 event is taking shape on this page. The sessions might move around but the timings of the day are pretty much set at this point.
We are pleased to announce that PayPal is a Sponsor of Over the Air 2011.
In November 2009, PayPal opened its global payments platform to third-party developers, ushering in a new generation of innovative payments. PayPal X is the world's first truly open global online payment platform - giving developers access to its global payment engine built over the last decade with more than 100 million active PayPal accounts available in 190 markets and 25 currencies. The PayPal X Developer Network puts developers in the driver's seat, providing the resources and the tools needed to change the future of payments – from mobile apps to web apps and social networks. Developers can now monetize their ideas and tap into the $30 trillion global payments opportunity - the next wave of payments innovation is now in their hands.
"Further to receiving your application form, I have to inform you that on this occasion you have been shortlisted but due to the number of applications received we have had to randomly select applications for interview. Your application has been placed on reserve, and should we not find a suitable candidate we will get in touch with you. "
I thought this kind of thing was a bit of an urban legend, but apparently not. Still, it's nice to know that after two hours plus of filling in an application form for something you really want to do, your chances of even getting an interview depend on random chance. That makes it better, but at the same time so much worse. Getting a job is just a game of bingo. I wonder how many other recruiters do this kind of thing, but don't tell you about it; I wonder how many other applications just got shoved in the bin because I just wasn't lucky enough.
I was wondering whether to reveal the name of the people who did this, but then thought, why think about things? Why not let fate decide? So as luck would have it I have a 2p coin handy. Heads, I tell you who it is. Tails, I don't.
Tails.
Bugger. Ah well.
No related posts.
Let's start with an excerpt from the paper:
I love this approach, blending experts and the human intuition of experts to help guide, assist, and correct algorithms running over big data. These Googlers used an ensemble of classifiers, trained by experts that focused on labels of the edge cases, and ran them over features extracted from a massive data set of advertisements. They then built custom tools to make it easy for experts to search over the ads, follow their intuition, dig in deep, and fix the hardest cases the classifiers missed. Because the bad guys never quit, the Googlers not only constantly add new models and rules, but also constantly evaluate existing rules, models, and the human experts to make sure they are still useful. Excellent.A small number of adversarial advertisers may seek to profit by attempting to promote low quality or untrustworthy content via online advertising systems .... [For example, some] attempt to sell counterfeit or otherwise fraudulent goods ... [or] direct users to landing pages where they might unwittingly download malware.
Unlike many data-mining tasks in which the cost of false positives (FP's) and false negatives (FN's) may be traded off, in this setting both false positives and false negatives carry extremely high misclassification cost ... [and] must be driven to zero, even for difficult edge cases.
[We present a] system currently deployed at Google for detecting and blocking adversial advertisements .... At a high level, our system may be viewed as an ensemble composed of many large-scale component models .... Our automated ... methods include a variety of ... classifiers ... [including] a single, coarse model ... [to] filter out .. the vast majority of easy, good ads ... [and] a set of finely-grained models [trained] to detect each of [the] more difficult classes.
Human experts ... help detect evolving adversarial advertisements ... [through] margin-based uncertainty sampling ... [often] requiring only a few dozen hand-labeled examples ... for rapid development of new models .... Expert users [also] search for positive examples guided by their intuition ... [using a custom] tool ... [and they have] surprised us ... [by] developing hand-crafted, rule-based models with extremely high precision.
Because [many] models do not adapt over time, we have developed automated monitoring of the effectiveness of each ... model; models that cease to be effective are removed .... We regularly evaluate the [quality] of our [human experts] ... both to access the performance of ... raters and measure our confidence in these assessments ... [We also use] an approach similar to crowd-sourcing ... [to] calibrate our understanding of real user perception and ensure that our system continues to protect the interest of actual users.
I think the techniques described here are applicable well beyond detecting naughty advertisers. For example, I suspect a similar technique could be applied to mobile advertising, a hard problem where limited screen space and attention makes relevance critical, but we usually have very little data on each user's interests, each user's intent, and each advertiser. Combining human experts with machines like these Googlers have done could be particularly useful in bootstrapping and overcoming sparse and noisy data, two problems that make it so difficult for startups to succeed on problems like mobile advertising.
We are pleased to announce that the ICT Knowledge Transfer Network is sponsoring Friday Lunch at Over the Air 2011.
The ICT Knowledge Transfer Network has been established by an industry-led group of leading players, with funding from the Technology Strategy Board. We seek to bring competitive advantage to the UK by promoting collaboration and knowledge sharing between the users and providers of Information and Communications Technologies, and helping to drive innovation in the sector.
Cyber Security - Benelux calls for UK SMEs
The ICT KTN is seeking SMEs which are interested in providing their Cyber Security related products and services into the Benelux market (Belgium, the Netherlands and Luxembourg), or wishing to secure alliances and partnerships in those countries.
In conjunction with the British Embassy Science and Innovation Office and UK Trade and Industry, the KTN is hosting an event in Brussels on 29th February 2012 and here UK SMEs are being invited to present on their Cyber Security related offerings to an audience of key contacts from Benelux. There will be plenty of networking opportunities – both organised and informal – to meet key people in the Benelux Cyber Security industry and UKTI.
If your company is interested in taking part in this opportunity please click on this link to read further information at the Cyber Security Group.
I’m going to give away all of my secret sauce, and tell you the three things that are required to be successful at business analytics (or data science, or whatever you want to call it):
1) Know at least a little bit about what you’re talking about.
At its foundation, business analytics is about converting a rather broad question (like “why do people cancel?”) into a set of specific questions that you can answer with data. This takes a bit of knowledge of what you’re talking about—you need the ability to construct hypotheses (e.g., people might cancel because they left the company, or because their corporate IT department rejected it, or…), and you need to know where you can get the answers. The best statistician in the world will be useless if they don’t get the context of the business.
A theoretician might call this “domain knowledge”, but all this is is the ability to know what you’re looking for and where to find it. There are no real shortcuts here – it takes exposure to your content matter to pick this up. Just open up the firehose—read as much as you can about your business and industry, stay involved in every conversation that’s even tangentially related, and be patient. Domain expertise will follow.
2) Make it easy.
There’s actually very little about data science that’s technically or intellectually challenging – it’s mostly about execution. Sure, machine learning uses advanced concepts that are worth understanding before you build a predictive model, and a passing understanding of statistics is a big deal, but most business questions can be answered with little more than simple arithmetic—what portion of customers do X? How long does it take people to do Y?
What then differentiates good data analysts from the rest? The ability to do this simple analysis quickly and easily, with minimal “friction”, so you can do more analysis faster. A few things help with this:
- Set up “one click” access to data. Shell scripts to drop you directly as a read-only user in your database, libraries to get your data from your database into a clean format in your prefered analysis environment, robots, and data exploration / dashboard type tools all help with this. These aren’t rocket science, but being able to get to your data in under ten seconds means you’ll be able to do it more.
- Have common definitions. Know what “active” means for each of users, accounts, etc. Try to pick consistent time periods for how far back you look at data. If you can skip the figuring out what someone means, data analysis becomes easier.
- Keep a calculator handy. Seriously, the friction difference between a calculator that you’re familiar with at arms reach and having to find one in a drawer, or opening Calculator.app, makes an impact in how easily you can do the simple arithmetic.
- Memorize your database schema. This isn’t a joke. You’ll know what you’re able to be able to find from a database alone and you’ll save a ton of time by not doing
SHOW TABLESandDESCRIBE TABLE Xall the time. At the very least, know what tables are named and generally what the relationship between them is. I’d hazard a guess that if you surveyed the business analytics people at a handful of brand-name internet companies, they could all write out the schemas for their main databases by memory.
3) Look at lots of data.
The only way to know what “normal” is when it comes to your data is to look at it, a lot. Look at graphs of different things over different time periods, review log files, read customer emails—be the most voracious consumer of new information and data that you can. Keep finding that next source of information.
Try to spend an hour a day consuming new data – just reading it in, absorbing it, maybe making some notes. It doesn’t need to be for any specific investigation of the moment, but it will pay dividends down the line. This is very similar to the “Rule of 10,000 hours” and other notions of “Just do, a lot”.
It's been a while since I've said this, but I'll say it again: Google is a media company, and at some point, most media companies get pretty deep into the Making Original Content business. With the acquisition of Zagat* Google has clearly indicated it's going to play in a space it once left to the millions of partners who drove value in its search and advertising business. Google is walking a thin line here - media partners are critical to its success, but if its seen as favoring its "owned and operated" content over those who operate in the open or independent web, well, lines may be redrawn in the media business.
Now, it's easy to argue that this was a small, strategic buy to support Google's local offering. Then again...Blogger, YouTube, and GoogleTV are not small efforts at Google. And if I were an independent publisher who focused on the travel and entertainment category, I'd be more than a bit concerned about how my content might rank in Google compared to Zagat. Just ask Yelp.
So...what other content-driven categories might Google find the need to get into? Well, ask yourself this question: What other content-driven business categories are important to Google?
Answering that question falls into the category of "things that make you go....huh..."
I'll have more thinking on this soon, I hope. But I wanted to note the sale as indicative or a larger trend worth watching.
*Zagat has had a commercial relationship with FM, a company I founded, but not a material one on either side as I understand it.
I could not make Twitter's press event today, but I did get a chance to sit with CEO Dick Costolo (the Web 2 Summit dinner speaker this year) yesterday afternoon, and got a chance to do a deep dive on today's news. I'll write up more on that as soon as I can, but the recap:
100 million active users around the globe turn to Twitter to share their thoughts and find out what’s happening in the world right now. More than half of these people log in to Twitter each day to follow their interests. For many, getting the most out of Twitter isn’t only about tweeting: 40 percent of our active users simply sign in to listen to what’s happening in their world.
This is from their blog post, but there are a lot more stats to share (400 million people visit Twitter.com each month, for example), as well as insights and thoughts from our conversation yesterday. Stay tuned.
We are very pleased to announce that Marmalade is sponsoring Saturday morning breakfast at Over the Air 2011
Marmalade makes software that lets developers build and distribute cross-platform applications quickly, easily and without compromise. Our true cross-platform technology provides the best performance and the best portability - and all within the industry’s most open and flexible development environment.
That’s why tens of thousands of the world’s leading developers use Marmalade.
The slides from a presentation that I gave at Refresh Dallas last night. It goes over the lessons learned through both the good and bad decisions that we feel we’ve made while bootstrapping Sifter.
Enterprise pricing is a funny thing.
Sometimes it feels like you need to get a crowbar out to get a consumer to take money out of their wallet. Spotify is 15 million songs for $5 a month, and most of my friends are reticent about paying even that. It’s 15 million songs for chrissakes! You live in Manhattan, $5 won’t even get you half a cocktail!
Enterprises work on a different demand model entirely. Any price is justified for an enterprise customer, as long as you can prove that the benefits to revenue are greater than the additions to expenses. $250,000 for a new business software platform is trivial if it processes all of your payments - allowing you to do $5,000,000 net this year.
I have a friend at Adobe. He made an offhand comment that he was pitched on a certain service by a vendor, and the price point was $5000. “Adobe sneezes on $5000,” he said. He thought that getting purchase approval on $5000 might even be harder than getting it on $25000. “If you’re only providing Adobe $5,000 of value - well, you’re wasting our time.”
In fact, enterprise pricing is in some ways similar to luxury pricing. Price is a signal - a signal of quality and value. If you’re paying $125,000 for a software installation, well, it’s probably pretty good. $50 a month for a software installation - well, is that even worth my time?
Even if you can't join us for the full OTA11 event, you should definitely try to make it out to Bletchley Park for Friday evening, as we will be introducing an exciting new element to the programme:
Ignite is a global event, organized by volunteers, where participants are given five minutes to speak about their ideas and personal or professional passions, accompanied by 20 slides. Each slide is displayed for 15 seconds, and slides are automatically advanced. The Ignite format is similar to Pecha Kucha, which features 20 slides displayed for 20 seconds each. The presentations are meant to "ignite" the audience on a subject, i.e. to generate awareness and to stimulate thought and action on the subjects- Wikipedia
Also check out the Ignite Cardiff websitefor more details.
Our Opening Speaker - Bill Thompson

We are thrilled to announce that our opening speaker is Bill Thompson of the BBC, who will be taking a philosophical look at the way the proliferation of online and mobile has changed society and will introduce the Digital Public Spaceas a concept which will potentially change the landscape of society and the internet.
If you would enjoy the chance to speak passionately for 5 minutes (yes, you get only 5 minutes!), keep your eyes peeled, as once a number of speakers have been confirmed we'll be opening up the Ignite Bletchley Park programme to proposals.
See you on Friday night!
NASA problems require many years and massive teams to solve. It took us over 10 years and 109 manned missions to gain enough knowledge and experience to send a man to the moon. That’s a lot of work.
Making a rocket of out LEGOs, comparatively, is trivial. Even if it’s a really big one - like 5 feet tall - it would take maybe 8 hours if you had a few friends. It maybe even will feel like a lot of work. How many times do you sit down and do something for 8 hours straight? Sheesh!
But compare the LEGO rocket to the NASA rocket. It took 24 man-hours to build a rocket out of LEGOs. It took us millions of man-years to build a real rocket that could take people to the moon.
Too many startups think they’re solving NASA problems when they’re really solving LEGO problems. When you’ve never run a company before, everything seems like a massive challenge which has never been surmounted before. You feel like no one else could ever surmount that same mountain you did. But you’re wrong. They will - as soon as you start making real money, they’ll come in droves.
Don’t lie to yourself. If you’re solving LEGO problems, the competitors will come. Better to be ready.
I’ve had this one sitting in the queue for a while, but it looks like Mark Suster beat me to it: Feature, not a Company.
I can only add one thing to the discussion:
A “feature” startup is essentially the best proof for open innovation.
Open innovation is the idea that research and development is no longer the monolithic institution that it was in the 60’s and 70’s. There are no more skunkworks, no more massive labs at IBM. Companies have learned it is far easier, and far cheaper to buy innovation. They acquire companies which have innovated.
It’s a lot easier than orienting your entire company culture towards innovation (and that’s a hell of a lot harder in big companies. Hell, even Google is now killing Labs).
Venture capitalists are playing a game. They’re not (financially speaking) interested in creating the next great company - they’re interested in maximizing the market value of their portfolio. And the acquisitions market has shown that they’re very willing to pay for features (and userbases), not necessarily companies with viable business models (they already have that).
So if you hate “feature” companies - don’t hate the player, hate the game.
Over the past year we have been working with many of you to sort out how we make development of Qt even more inclusive and open. After exploring various options, we are now almost ready to go live with the new solution.
It’s taken a little longer than expected, but we are now very close to move hosting of Qt to a new domain: qt-project.org. The domain will be owned by a non-profit foundation whose only purpose is to host the infrastructure for the Qt project. We spent a lot of time collecting feedback from stakeholders who have an interest in the development of Qt, including both companies and open source projects. We wanted to make sure these parties would be happy with the final setup, and of course, willing to participate. While we couldn’t give everybody everything they wanted, we believe we can deliver a good solution.
Infrastructure
At launch time, we will have a web site, a wiki, a mailman server, the repositories, and our infrastructure to review and merge changes into Qt ready. The merging infrastructure is based on gerrit, an open source code review system on top of git. We have invested some time and resources to integrate gerrit with the continuous integration system we at Nokia run for Qt. The CI system gives us automated regression testing of changes on our major platforms. As we move forward the goal is to enable any new Qt ports to hook themselves in there.
We will continue to use the current Jira as our bugtracking tool. The Jira server will get transferred to the non-profit foundation, but this will most likely happen a bit after the public launch. In practice this means that bugreports.qt.nokia.com will get transferred to bugreports.qt-project.org. We will also establish a number of Qt development related mailing lists at qt-project.org for topics related to Qt development.
Decision making and role of the foundation
I want to make it very clear that the foundation will not steer the project in any way. The foundation is in place only to cover the costs of hosting and run the infrastructure. All technical decisions, as well as decisions about the project direction, will be taken by the community of Contributors, Approvers and Maintainers. For example this means that people in Nokia working on Qt will start working with Qt as an upstream project. Everyone will be using the same infrastructure, including mailing lists and IRC.
The governance model we will use for the Qt project has already been described in detail by Thiago in an earlier blog. Based on feedback we have fine-tuned the model, but it is pretty much the same as described earlier. We are currently finalizing the list of Approvers and Maintainers based on the current de-facto situation in the project. This means naturally that most of them come from Nokia, but it may surprise you that that around 15% of the initial Maintainers do not work for Nokia. We also have quite a few Approvers from companies and the community. While I know that Nokia will continue to invest heavily into Qt for bringing apps to the next billion Nokia users I do hope that more and more people will join the project to broaden the base of Approvers and Maintainers.
As a last point I wanted to talk about one thing that is fixed for the project and not going to go away. To contribute to Qt, you will have to sign a Contribution License Agreement with Nokia. We have put a lot of effort keeping the Qt codebase legally clear and clean, and this attention to detail will continue under the Qt Project. We have been over the last months reviewed the CLA extensively with many stakeholders and believe we have a solution that is as inclusive as possible for all companies and individuals that want to contribute to Qt. The CLA also enables the commercial ecosystem around Qt to continue to thrive and contribute to the project. Further, there are a number of legal obligations from Trolltech and Nokia that have to be taken into account.
Openness continued…
I am excited that we’re now taking another step in a journey that started many years ago. When I joined Trolltech in 2000, Qt was available under the QPL on X11. The same year we changed the license of Qt/X11 to GPL v2. In 2003, we made the Mac port available under GPL as well. Then in 2005, with the release of Qt 4.0, we started releasing all our versions under the GPL. Later the GPL v3 was added as an option. Then in 2009, now under Nokia, we made all of Qt available under the LGPL 2.1.
Opening up development more, as we announced in Jul 2010, was the next logical step and this one is now coming to conclusion. As a person who comes from the open source community, and experienced valuable contributions from the commercial Qt community as well, this is something I’m very happy to see and something I’ve been striving for during all the years I worked at Trolltech and Nokia.
So I’m really looking forward to open governance going live and to work together with all of you on future Qt versions. It’s been quite a journey getting here, but I personally believe that this is only just the start.
We believe the Qt Project will be one of the more transparent and meritocratic open governance models on the market. We are looking forward to the launch in time for Qt Developer days, but no later than October 17th.
You can read some supplementing info in Daniel’s blog
One of the best things about CSS is the cascade, itself. It can also be one of the worst things about CSS. Styles applied to an HTML element are automatically inherited by their children. Cascading is what allows web designers to set styles and keep them consistent throughout a website without repeating themselves. With a single line of CSS you can, for example, set the typeface that will be applied to every element on every page of your website:
body {
font-family: Helvetica;
}
Because every element is a child of the body, those elements will inherit the font style unless that property is otherwise overridden with a more specific rule. That’s where things get tricky. We might want to use Helvetica throughout the website except in the sidebar, where we’ll use Georgia. To reset the font-family rule for the sidebar element we must write something like this:
body aside {
font-family: Georgia;
}
This is how we write CSS. We set styles at the top level and then proceed to override the inherited rules with increasingly specific selectors. There are esoteric rules of inheritance built into the CSS cascade that let designers target elements by id, class, or by relative position in the document. Each time you reset a style using specificity, overriding that style on a subsequent child element requires an even more specific selector.
Within complex website designs this can begin to feel like an arms race. You add classes and containers to your mark-up and more elements to your selectors. As you add increasingly specific (and increasingly long) selectors it becomes equally difficult to override them later. This problem is compounded after the initial composition of the CSS is completed and you begin to edit, maintain, or add new styles later in the life of the website. Even in the most carefully composed stylesheet it can be difficult to completely grasp the overall scheme – especially if you’re coming in behind the original developer to make changes. The safe thing – we’ve all done it – is to write a very specific selector for any new styles so you’re certain yours take precedence. Each round a salvo in the specificity arms race.
So what can be done? We’ve been experimenting with a few techniques that we think make a big difference. There are three parts to this formula: compiled CSS, structured mark-up, and a neglected CSS selector.
There are definitely two attitudes towards “technical” people in the startup community.
One half thinks that engineers are resources to be deployed, ninja-rockstar bombs to be dropped on that inexorable problem of the world not having enough daily deal sites, TaskRabbit spinoffs and AirBnB clones. Most non-YC incubators seem to take this route, though most VCs have been in the game long enough to know it doesn’t work that way.
The other half worships at the altar of the coder-craftsman, reveling in the joy of making a computer do what you want it to. The skilled programmer is a god, bending silicon to fit his will. Spolsky, Dixon, and PG fit in this camp.
It also seems to me that the older you are, the more likely you are to be in the latter half.
Earlier this year, I wrote about Aspects, Intercepting Filters, Signal Slots, and Events, in order to compare these similar approaches to handling both asychronous programming as well as handling cross-cutting application concerns in a cohesive way.
I took the research I did for that article, and applied it to what was then a "SignalSlot" implementation within Zend Framework 2, and refactored that work into a new "EventManager" component. This article is intended to get you up and running with it.
Continue reading "Using the ZF2 EventManager"
Posted by Dr. Pete
As part of our quest to understand the Algorithm, we do a lot of correlation analysis here at SEOmoz. We tend to dive right into the deep end, so I thought it might be a good time to take a step back and talk about the absolute basics of correlation, including some warnings about causation. We’ll often say (and hear) the fallback phrase – “correlation does not imply causation”, but people rarely dig into what that means.
To make this experience as pleasant as possible for the math-phobic, I drew you a picture. I’d like to introduce the world’s first Mathographic. Ok, it’s probably not the world’s first, and it’s really just an infographic, but give a guy credit for trying to keep you entertained.
View Full-sized Infographic (796 x 2200)
Embed this image:
Obviously, our actual studies get a lot more complex than this, but everything has to start somewhere. If you’re interested in more advanced topics on correlation, here are a few references worth checking out:
- Correlation and Dependence (Wikipedia)
- Stastistical Signifcance of Correlations (SUNY)
- Spearman’s Rank Correlation (U. Delaware)
- Non-linear Regression (Graphpad)
- Some Correlation Humor (xkcd)
Are there any other correlation-related topics you’d like to hear more about on the blog? Are there analyses that you’re interested in within the broader realm of SEO and social media? Let us know in the comments.
Posted by Aaron Wheeler
Over 160,000 new top-level domains were registered yesterday. 160,000! This huge volume of new sites being birthed wasn't unique to yesterday; this happens every day (you can check out today's progress at DailyChanges.com). The sites that start out pre-optimized and that continue optimizing immediately after publishing will be at an incredible advantage over those that were made without SEO in place from the get-go. Of course, there's a lot of work to be done for a new site, and it can be hard to remember everything and prioritize work. This week, per PRO member request, Rand presents an SEO checklist that SEOs can use when optimizing new sites.
Have any boxes of your own to add to the checklist? Let us know in the comments below!
Video Transcription
Hi everyone. Welcome to another edition of Whiteboard Friday. This week I have a special request from one of our users to talk about an SEO checklist for new sites that aren't ranking yet. I've created a new website. I want to make sure I am doing all the right things in the right order, that I have got everything set up, and my website is not yet ranking. What are the things that I should be doing and maybe some things that I should not be doing? So, I wanted to create a brief checklist with this Whiteboard Friday, and if we find this useful, maybe we will expand it and do even more stuff with it in the future.
So, let's run through. You have a new site that you've just launched. You are setting things up for success. What do you need to worry about?
First off, accessibility. What I mean by this is users and search engines both need to be able to reach all of the pages, all the content that you've created on your website in easy ways, and you need to make sure you don't have any dumb mistakes that can harm your SEO. These are things like 404s and 500 errors and 302s instead of 301s, duplicate content, missing title tags, thin content where there is not much material on the page for the search engines to grab on to and maybe for users as well. Two tools that are great for this, first off, Google Webmaster Tools, which is completely free. You can register at Google.com/webmasters. The SEOmoz Crawl through the SEOmoz Pro Web App, also very useful when you are looking at a new site. We built a bunch of features in there that we wish Google Webmaster Tools kept track of, but they don't, and so some of those features are included in the SEOmoz Crawl, including things like 302s for example and some thin content stuff. That can be quite helpful.
Next up, keyword targeting. This makes some sense. You have to choose the right keywords to target. What I want to have is if gobbledyzook - probably an awful word for anyone to be targeting, no search volume, just bad choice in general - but we want to be looking at, do these have good search volume? Are some users actually searching for them? You might not be able to target high value terms because you are also looking for low difficulty when you are first launching a site. You don't want to necessarily shoot for the moon. Maybe you do on your home page or some branded page, some product page, but for the things that you know you want to target and you want to work on early short term, maybe some content that you've got, some feature pages for the product or service you are offering, and you think to yourself, I am not going to be able to target gobbledly, which is really tough, but maybe gobbledyzook. That will be easier. So, you can look at search volume, the relevance to the website, please by all means make sure that you have something that is relevant that is actually pulling in searches you care about, and low difficulty. If you have that taken care of, you have your keyword targeting.
Content quality and value. If you have a bunch of users coming to this page and they're thinking to themselves, this doesn't really answer my query, or yeah, maybe this answers one portion of it, but I wish there was more detail here, more video, more images, maybe a nice graphic that explains some things, a data set, some references to where they got this information. Not just a bunch of blocks of text. Maybe I am looking for something that describes a process, something that explains it fully. If you can do that, if you can build something remarkable, where all of these people change from "Huh, huh, what's this?" To, oh, you know what, instead it's "I am happy." "I also am happy." "This page makes me do happy. Yea, I am going to stick my tongue out." If you can get that level of enjoyment and satisfaction from your users with the quality of the content that you produce, you're going to do much better in the search engines. Search engines have some sophisticated algorithms that look at true quality and value. You can see Google has gotten so much better about putting really good stuff in results, even sometimes when it doesn't have a lot of links or it is not doing hardcore keyword targeting, when it is great stuff, they are doing a good job of ranking it.
Next up, design quality, user experience, and usability. This is tough. Unless you have a professional designer or you have a professional design background, you almost certainly need to hire someone or go with a very simple, basic design that is very user friendly that you know when you survey your friends, survey people in your industry, survey people in your company, survey people in your ecosystem, that they go, yeah, yeah, yeah, this looks really good. I am really happy with the design. Maybe I am only giving it a six out ten in terms of beauty, but an eight out of ten in terms of usability. I understand the content on this site. It is easy for me to find things and they flow. There is really no point in ranking unless you are nailing these two, because you are not going to get many more customers. People are just going to be frustrated by the website. There are a few tools you can use on the Web to test these out. Five Second Test, Feedback Army, Silverback App, all of these are potentially useful for checking the usability user experience of the site.
Social account setup. Because social and SEO are coming together like never before, Google is showing plus ones and things that people share by default in the search engine rankings. Bing is showing all the stuff that has been shared on Facebook, and they are putting it above the rest of the content. It really, really pays to be in social, and social signals help search engines better rank things as well as having a nice second order effect on user and usage data, on branding, on the impact of people seeing those sites through social sharing and potentially linking to them. So social account setup, at the very least, you probably want to have these four: Facebook, Twitter, LinkedIn and Google+. Google+ is only about 25 million, but it is growing very fast. LinkedIn, Twitter, Facebook are all over 150 million users right now. I think Twitter is at 200 million. Facebook is at 750 million. So at least have your pages set up for those. Make sure the account experience is the same across them, using the same photos, same branding, same description, so people get a good sense when they see you in the social world. You probably want to start setting something up to be monitoring and tracking these. You might want to sign up for something like a Bitly. I used to really recommend PostRank, but unfortunately they don't track Facebook, since Google bought them, anymore. So it is a little more frustrating. The SEOmoz Web App will start to track these for you pretty soon. Once you've got those social accounts set up, you can feel good about sharing the content that you are producing through those social accounts, finding connections, building up in that world, and spending the appropriate amount of time there depending on the value you are feeling back from that.
Next up, link building. This is where I know a lot of people get sort of off to the wrong start, and it is incredibly hard to recover. I actually just got an email in my inbox before we started doing Whiteboard Friday from someone who had started a new website and he is like, "I got these 300 links, and now I am not ranking anymore. I was doing great last week. For the first six weeks after I launched, I was ranking great." I sort of did just a quick look at the back links, and I went, "Oh, oh no." I think this person really went down the route of I am going to get a bunch of low quality, easy to acquire links, and for a new site in particular, it is so dangerous, because Google is just really on top of throwing people out of the index or penalizing them very heavily when their link profile looks really scummy. When you don't have any trustworthy quality signals to boost you up, that's when low quality links can hurt the most.
So, good things to do. Start with your business contacts and your customers. They are great places to get links from. Your customers are willing to link to you. Awesome. Get them to link to you. If the contacts that you have in the business world are willing to say, hey, my friend Rand just launched a new website, boom, that's a great way of doing it. All your email contacts, your LinkedIn contacts, the people that you know personally and professionally, if you can ask them, hey, would you support me by throwing a link to me on your About page or your blog roll or your list of customers or your list of vendors, whatever it is.
Guest posts and content. This is a great way to do good content positive content production and earning links back for that. Finding trustworthy sites that have lots of RSS subscribers and are well renowned and can give you visibility in front of your audience and give you a nice link back if you can contribute positively to those. I also like high quality resource lists. So, this would be things like the Better Business Bureau maybe, that sort of falls a little in the directory world, but something like a CrunchBase. If you are a startup in the technology world, you definitely need to have a CrunchBase listing. You might want to be on some Wikipedia lists. Granted those are no-follow, but that's still okay. That is probably a good place to get some visibility. There might be industry specific lists that are like these are heavy machine production facilities in the United States. Great, okay, I should be on that list. That's what I do. News media and blogs. Getting the press to cover you. Getting blogs in your sphere to cover you. Finding those, emailing the editors, letting them know that you are launching this new website, that's a great time to say, "Hey this business is transforming. We're launching a new site. We're changing our branding," whatever it is. That is sort of a press worthy message and you can get someone to look at you. Review sites, review blogs are great for this too. They'll sort of say, oh, you've got a new application, you've got a new mobile service, maybe we'll link to you. That could be interesting.
Relevant social industry and app account links. If I contribute something to the Google Chrome store, if I contribute something to the Apple store, if I am contributing something to a design portal or design gallery, all of those kinds of industry stuff and accounts that you can get are likely worth getting your website listed on.
Social media link acquisitions. This is obvious stuff where you spend time on Twitter, on Facebook, on LinkedIn, Google+ connecting with people and over time building those relationships that will get you the links possibly through one of these other forms or just through the friendliness of them noticing and liking, and enjoying your content. That's what content marketing is all about as well.
These are great ways to start. Very safe ways to do link building. They are not short-term wins. These, almost all of them, require at least some effort, some investment of your time and energy, some creativity, some good content, some authenticity in your marketing versus a lot of the stuff that tempts people very early on. They're like, oh, sweet, you know, I have a new website. I need to get like 500 links as soon as possible, so I am going to try things like reciprocal link pages. I am just going to put up a list of reciprocal link partners, and I am going to contact a bunch of other firms. They'll all link to me and we'll all link to each other. It will be a happy marriage of links. No, it's not. It's not a wonderland.
Low quality directories. You search for SEO friendly directory, if it shows up on that list, chances are . . . even in Google. Google is showing you a bunch of bad stuff. Someone was asking me recently on email, they said, "Hey, I really need some examples of sites that have done manipulative link building." I was like, "Oh, it's so easy. Search for SEO friendly directory and look at who has paid to be listed in those directories." They almost all have spammy manipulative link profiles, and it is funny because you go to those, and I don't know why people don't do this, but try searching for the brand names that come up in those lists. None of them rank for their own brand name. Why is that? Clearly, they are killing themselves with these terrible, terrible links. So, low quality directories, really avoid them.
Article marketing or article spinning, I talked about that a few weeks ago on Whiteboard Friday, also a practice I would strongly recommend you avoid, especially, I know it can work, I know there are people for whom it does work, but especially early on, it can just kill you. It really can get you banned or penalized out of the engines, and you just won't rank anywhere if your link profile starts out spammy. Paid links is another obvious one.
Forums, open forums, spam kind of going across the Web. Oh, here's a guest book that's open and forgot to put no-follow. I am going to leave a link there. Oh, here look, it's a forum that accepts registration, and they forgot to close their no-follow off, anyone can leave a link. Even things like do-follow blogs, do-follow blog comments, man, it's really risky because they are linking to bad places a lot of the time and it is usually manipulative people who have no intent to create something of value for the search engines. They are merely trying to manipulate their rankings. Whenever you have a tactic like that it attracts people who have nasty websites, and then Google looks at those and goes, okay, they're linking to a bunch of nasty sites. Well, I don't want to count those links, or maybe I am even going to penalize some of the people that they are linking to. That really sucks. Then link farms, which is essentially setting up all these different systems of links that point to each other across tons of domains that are completely artificial or link for no human reason, or no discernable human reason, and are merely meant to manipulate the engines.
This type of stuff is very, very dangerous when you are early on. If you have already built up a good collection of these types of links, you are much safer. You do have some risk in those first three, six, nine months after you have launched a new site around doing wrong things on the link building front and getting yourself into a situation where you are penalized. We see a ton of that through SEOmoz Q&A. I get it in email. You see it on the Web all the time. So, be cautious around that.
Hopefully, this checklist will help you get your site to a nice established place and you can keep doing some great marketing and eventually win the Internet. I wish you good luck with your new website. Thanks so much. Thanks for watching. See you again next week for another edition of Whiteboard Friday.
Video transcription by Speechpad.com
Question: If your company is boarding a train at 1pm in Boston, but you’re living in Denver, and you have a client living in London, what time does the train reach Philadelphia?
Answer: You don’t have time to figure this out. You have work to do.
Basecamp can now eliminate the time zone confusion!
We may have lost our way as a community.
Phew. I said it. OK. Listen, I don’t want to come off as an always-contrarian, no-one-invited-me-to-the-cool-kid-party type, but I think the startup party limo may be headed in the wrong direction.
Setting the stage: beauty pageants and pump’n’dump
If you’ve ever read anything written by a 37signals employee, you know how much they hate the traditional world of startup investors and tech press. DHH wrote about the TechCrunch debacle:
Nobody has covered the beauty pageant of startup contestants and venture judges better than TechCrunch. They not only cheered on a generation of Silicon Valley dolls to dress their finest for the pump’n’dump cycle, they fucking owned the barn where the show was held.
This is just one of many similar comments they’ve made on VCs and angels. Anti-investment talk can sound like the cries of a spurned lover - I’m sure every startup that failed to raise money and went out of business salves the ego by saying that “being fundable” is a bad thing. But, 37signals makes a lot of money. They don’t have to worry about investors (or offending them).
So I started to notice some things that disturb me.
Techstars - startups are sexy now!
Techstars has a showon Bloomberg TV. Does this not ring alarm bells for anyone? As Eric Ries has pointed out many times before, the real work in a startup is not sexy, it is not cool, and it is very boring:
The real entrepreneurship - not the caricature from pop culture and mass media - is boring, tedious, and extremely difficult. It’s anything but cool: product prioritization meetings, deciding which customers to listen to and which to ignore, and valiantly trying to keep the vision alive in the face of contradictory facts.
Even if you think Techstars is smartly doing the show for “publicity”, what kind of person are they going to attract to Techstars with a glitzed-up TV show?
In addition, the recent announcement of additional “guaranteed” money for Techstars firms at not exactly stellar terms has add even more sex to the whole shebang. The terms are so bad, in fact, that some have postulated that not taking the money would be a positive signal to serious investors. After personally seeing a few Techstars startups struggle to raise financing and some fold two weeks after the program ended, is anyone at Techstars HQ wondering if the priorities have been set correctly?
Even Techstars mentors are worried about the revenue models of the incubator’s startups.
VC blogs - welcome to the human centipede
A lot of VCs are blogging now, Fred Wilson being the prototype of the genre. Nothing inherently wrong about that, of course. But it creates some strange incentives and situations, and I’m not sure would-be founders understand what’s happening. To be clear, I have nothing against VCs with blogs. I have a problem with people who take VC blogs at face value.
A venture capitalist with a successful blog has a strong incentive to promote his portfolio on his blog. For example, Fred gets nearly 60-80k visits per month. If you’ve got a consumer-targeted portfolio company, that’s too good a promotional opportunity to ignore. So you talk about how great your portfolio is. Again, nothing wrong about that.
But I see entrepreneurs take it the wrong way. When Fred blogs about canv.as, he’s promoting it so you’ll sign up. I’ve seen way too many entrepreneurs take the message as: “USV invests in startups like canv.as…to get funded, I’ll need to make something like it.”This isn’t, of course, true. USV has a lot of boring portfolio companies which never get talked about, even if they’re doing well: Simulmedia, Return Path, Workmarket. They’re not consumer internet, so the VCs see no point in blogging about them.
The tech blogs make it worse. TechCrunch and Mashable constantly cover sexy consumer internet startups because their readers are consumers. It’s simply more interesting to read about the latest photo-sharing startup than the latest back-office deal processing startup. You never hear about the rest of the ecosystem because it doesn’t make for good press.
So the budding entrepreneur thinks: “well gosh, to get USV and TechCrunch to notice me I have to build a sexy consumer web startup like Turntable or Chill!” Is it any wonder, then, that reading TechCrunch you think “hmmm…haven’t I seen this before?”
There’s an excess of respect for investors in the startup field at the moment. But the real reason everyone loves the big-name VCs and praises their companies isn’t because they’re great companies - it’s mostly brown-nosing. In private conversations with founders, I was struck by the way they talked about prominent startup investors off the record. “But you can’t come out and disagree with publicly, because you might want his money later.” So because we don’t want to “bite the hand that feeds us,” we don’t call them out. I considered not publishing this post for that reason. I guess we’ll see what happens.
One entrepreneur I massively respect is Matt Mireles. That guy is not afraid to piss off anybody. Go read his blog.
DEMO and TC Disrupt - the pageant, live!
I was recently at the DEMO conference in SF, as part of my job as Hacker-in-Residence (lol) at Gust. (Disclaimer: the following are my views, not the views of my former employer).
The companies were fucking boring.
Almost everything on stage seemed like “this plus that” or “foursquare for zoo animals!” In speaking to the entrepreneurs afterward, it seemed like they thought they were merely doing what the VCs wanted them to do. Were they?
I think a lot of founders regretted going to DEMO or TC Disrupt, like Openera did.
Tech bubble - the VC crunchdown into the Angel space
Essentially, we’re dealing with an early stage market that’s flooded with money. VCs have decided to attack the angel space head on, making smaller and smaller investments earlier and earlier. In addition, VCs are raising more and more capital as returns in the public equities markets and bond markets stagnate.
This may be the most “sustainable” part of the current early-stage bubble, and the reason it could stay around for a while. I’m not sure I see any reason the VCs will move back to the stage of the funding ecosystem where they were in 1999. Startups are cheaper than ever, and if VCs want to play the game they’re going to need to be content with earlier stage investments. Others have written more intelligently than me about the effects and causes of the VC flood, but suffice it to say that I think they’ll be around for at least the next 3-5 years.
And for as long as this money-flood sticks around, we’re going to see a lot of “me-too” startups get funded that shouldn’t be. I’ve sat in on way too many pitches that were clearly intentionally “sexed up” with terms and buzzwords that the entrepreneur thinks the investor wants to hear. I’ve even seen it work.
Creating market value, not customer value
Sit back, and think for a minute on this one: does a VC or angel care about a given startups EBITDA?
Nope (not directly). These are investors, and they’re looking for a return on their investment. And market valuations are driven increasingly less by revenues and more by userbases. An investor is looking to maximize total enterprise value to maximize the eventual sale of the business, not to maximize the bottom line.
VCs and angels don’t invest in services businesses for that reason. Services businesses revenue multiples just aren’t that great. They probably even make more money with less risk than product companies. Never forget that most investors are in the business of selling companies, and they will fund what’s sellable.
This is what gives rise to “feature-not-a-company.” Strategic buyers like Google will pay for features that can be integrated into their larger offering. They don’t need revenue models: they already have one.
Built to flip? What about built to fund?
There’s an old insult in the startup community: “that’s built to flip.” It’s thrown at a startup that seems too sexy, that sold too early. But, I agree with investor Basil Peters that exits will only get smaller and earlier, a thesis he enumerates in Early Exits.
(Side note: I mentioned my love for that book to another founder. He discouraged me from saying that too loudly: apparently, the book is disliked among the VC community (?) because it implies that VCs are going to be pushed out as exits get smaller. Smaller exits don’t make sense for a VC investment strategy (they need bigger returns) but make great sense for angels.)
Only 14% of the Inc. 500 is venture-backed.
It occurs to me there might be an even more important insult, one that founders should take seriously: being “built to fund.”
Posted by Benjamin Estes
Recently I had a client who (generally for the enlightenment of their executive branch) wanted traffic information reported in an easy-to-digest format. The idea was that while they had consistently used Google Analytics for some time, there were people in the company who had an interest in knowing certain traffic data, but were too far from the day-to-day running of the website to be spending a lot of time sifting through Analytics reports.
Enter the Dashboard.
It sounded like the perfect solution: a screen full of nice, big numbers! Lines going up and to the right! Charting all the things!
But lo! my dream was short-lived. There were so many solutions to choose from, and each had different integrated services and custom data reporting methods. Most of them were explained quite well through documentation, but it was all so time consuming. I would have to trial services, only to determine one-by-one that they were somehow not a match for the client's needs. So here I am to save you some time by letting you know some of the pros and cons of various services, as some insights I had along the way. There is probably a service out there that's right for you, but it may or may not be the first one you look at.
I should point out that my concern here is with monitoring organictraffic data specifically. There are many services apart from those listed here which excel at reporting ranking data, and of course some services which walk a line between the two. There are several services which revolve primarily around ranking data instead of traffic, such as Authority Labs and Conductor Searchlight; I can say from experience that these are both great products (NB: Searchlight does provide Analytics integration but I'm not personally familiar with that aspect of their service). With services that revolve around tightly-integrated analytics data, the pain point is usually getting actual lists of keywords sending traffic reported back to you.
Google Analytics
For monitoring organic traffic data, my instinct is always to go straight to the source. For most of us, that means Google Analytics.

And indeed Google Analytics has built in dashboard functionality. The crucial factor which favors Analytics is that, unlike other solutions I have assessed there is no need to depend on a service providers integration of the Analytics API or to have your own dev team spend time building out a custom solution. I mentioned above that some solutions have problems reporting keywords sending traffic; obviously Analytics is not among these, because its dashboard will report just about anything you care to know. Breakdowns by country, for instance, are quite easy to set up in Analytics but are hard to come by outside of the proper Analytics interface.
If all you want is traffic data, you really can't go wrong with sticking to Analytics. The only management issue I've run into is that you can't share dashboards across user accounts at the moment. On the other hand this is a very robust service; there is never a concern about about whether or not a certain report can be integrated into your dashboard. All available traffic information is at your fingertips.
Plus, Analytics is free as in beer, which is the best kind of free.
PRO: It's got all the traffic information EVER. CON: No other SEO related info...
SEOmoz PRO Campaigns
Disclaimer: This is being written on SEOmoz's blog (duh). I don't work for the 'moz, but you could say we're buds. Regardless, I promise the following represents only my own opinion.

Hopefully you're all familiar with SEOmoz's toolset. I'm usually using SEOmoz's campaign tool anyway for clients, so it isn't much of a stretch to start using their Analytics integration to look at traffic data.
The three metrics that SEOmoz's Analytics integration reports are the three that I find myself lost without: Organic Visits, Number of Organic Landing Pages, Number of Organic Keywords. It's a sparse set of metrics to be sure, but in my time at Distilled these metrics have been the three that we always return to and those that we most commonly report to clients as an indication of a site's health.
If I wanted to share this information directly it might be awkward, but if I was advising the client on setting up their own monitoring solution I think that this would work out fairly neatly. And of course, there are any number of other benefits to using SEOmoz's campaign tool (competitive analysis, rank tracking, etc.) but that's a bit beyond what I'm looking at here. No custom data reporting like StatsMix and Geckoboard (below), but then again those services don't hold a candle to SEOmoz in terms of ease-of-use and built-in analysis.
PRO: Super-relevant traffic data, awesome supplementary metrics. CON: No customization, no keyword specific Analytics integration.
StatsMix

StatsMix has the capacity to store data over time that you submit to it, which is unique amongst all of the dashboard solutions. This can be easily accomplished in any number of contexts; the service provides examples in various programming languages, but all that you need to do ultimately is make a POST request to their servers with the information you want to submit. It will be stored in a table that is even manually editable through the web interface.
This obviously requires a certain amount of dev commitment, but it really is pretty neat, and it allows you to do things that no other dashboard service does. External and internal metrics can be brought together. But the Analytics integration that your team would have to do to monitor organic search related metrics is non-trivial, so unless your company is going all the way, this service might be a little too much for SEO-related monitoring. Also, all metrics must be "number-over-time" in nature, so no keyword-based metrics!
I can also say that I've talked to the StatsMix support team and they've been exceedingly helpful in helping me with any questions I might have.
PRO: Awesome customization possibilities. CON: No intrinsically relevant SEO widgets, everything must be built ground-up. Metrics must fit number-over-time format.
Geckoboard

Unlike StatsMix, Geckoboard does not have the capacity to store your data over time; custom information that it retrieves from your data sources must be presented exactly how you want the information to be displayed. There are many built-in widgets that are very handy, including server monitoring and Analytics widgets, but some of the defaults are a wee bit underpowered when it comes to customization
I think Geckoboard's strength lies in its powerful custom widgets. As I said, these require you to either locate or more likely build an API to deliver data. Distilled has done this internally and has been very pleased with the results. One consequence of this extensibility is that with the proper Analytics integration in your infrastructure it would be possible to report a list of top organic keywords or similar data, which is impossible with, for instance, StatsMix.
PRO: Great customizability in its own way, cool built-in widget set. CON: Not necessarily SEO monitoring friendly. Needs a custom API on user's end to explore full potential.
GinzaMetrics

GinzaMetrics seems to strike a fairly good balance between keyword tracking and traffic assessment. There is definitely some cool stuff going on with funnel monitoring, especially as you can filter the data by tracked keywords. Ultimately I find that the data provided by the service is somewhat less useful than SEOmoz's. GinzaMetrics' graphs present a lot of information, but it isn't necessarily actionable or diagnostic in the format in which it is presented. I mean, there are some freaky graphs you can find in here. They would give me data-nightmares, but I can see that they might turn some data-folk on.
I do appreciate that GinzaMetrics pulls in Analytics data for tracked keywords, but as I've been consistently lamenting throughout this post, I wish it were the other way around; that the service would discover keywords based on the traffic they were sending your site. Overall a good service, definitely SEO-centric without much customization outside of that.
PRO: Pretty OK mix of keyword tracking and analytics. CON: OMG numbers everywhere.
NB: After publishing this Ginzametrics brought to my attention that their service does provide for keyword discovery. Might be worth chatting with them if this is on your radar.
Closing Thoughts
I'm not going to declare a winner. I'm using one solution for a client today, and when another client comes along with their own needs, I'll use one appropriate for them. But digging through the many alternatives and learning what is possible really helps me be flexible to respond to these requests when they are made.
I've mentioned that some of these services benefit from a certain level of customization. For anyone interested in building an "API" or automated tool to push data to a dashboard, I highly recommend brushing up on your Python skills and checking out Google App Engine or a Django-based solution (they function very similarly). App Engine probably isn't the most secure solution, but it's dead easy and ridiculously fast, as Will Critchlow demonstrated in his brilliant post on automated link building tools (which I inevitably cite in every blog post I publish).
This is hardly a comprehensive, just my meditations on the services I've run into. So, any of y'all have your own methods or tools? Dashboards? Generated reports? Let's hear about it 'em!
- Sheesh. When did startups start sounding like club promoters? from Why all Employees Should Be VIPS at Your Company, by Nick O’Neill
The consultant looks down at his notes, and clicks to the next PowerPoint slide.
“I think what this company needs…is to think outside of the box.”
But the problem isn’t thinking outside of the box - the problem is that we don’t know where the box is. Thinking outside the box is great, and necessary, in the sense that it’s useful to think outside of the constraints imposed on you at this moment. But the tale of the Trojan Horse isn’t about how the Greeks “thought outside the box.” It’s a tale about how the Greeks released that the idea that they had to take Troy through head-on siege combat was a false constraint.
Karl Duncker, the Gestalt psychologist, presented the Candle Problem.
You are given a matchbook, a wax candle, and a box of thumbtacks. Your objective is to attach the candle to the wall. How do you do it?
The most common answer is to light the candle, let some of the hot wax drip to the bottom of the candle, and then stick the hot wax to the wall. Try it in real life and see if that works - candle wax isn’t exactly the best adhesive.
The solution is to take the tacks out of the tray, tack the tray to the wall, and put the candle in the tray. You probably didn’t even think you could use the tray in your solution, did you? Not using the tray was an imagined constraint. Or perhaps you thought the solution required the matchbook - the presence of the matchbook created a constraint for your thinking that you had to make use of it in your solution. You didn’t understand the boundaries of your solution set, so you chose too narrowly.
Thinking outside the box implies that all the constraints for a problem are known, and that we only need ignore them. But far more often, we don’t even know what our constraints are.
So don’t think outside the box - find it, first.
Greatly indebted to Andrew Hunt and David Thomas of the Pragmatic Programmer.
Speaker Deck is brand new clutter-free way to share your slides from presentations. I suggest that you use it.
Posted by dohertyjf
I love using Advanced Segments in Google Analytics. Sure, you can export a big chunk of data to Excel and then use some Excel wizardry to clean up the data and display it in different ways, but what if you just need to get a quick snapshot of certain traffic or trends, but the default segments don't go far enough? I've put together a few of my favorite Google Analytics Advanced Segments for you, so that you can add them to your own Analytics and use them as you need.
Segment 1: 1 word keywords
This first segment will just give you all of the one-word keywords that are driving traffic to your site. Sometimes there are crap keywords, but I am increasingly finding it interesting how sites can rank for one-word keywords because of personalized results.
^s*[^s]+(s+[^s]+){0}s*$
Segment 2: 2-3 words
^s*[^s]+(s+[^s]+){1,2}s*$
Segment 3: 4+ words
^s*[^s]+(s+[^s]+){3,}s*$
Segment 4: Social Media Traffic
Sometimes you need to see the easy breakdown of your referral sources, and even more often it can be helpful to see just your Social Media traffic. Here is how we have our Social Media Advanced Segment set up in the Distilled Analytics account:
Segment 5: Traffic to Blog (where URL is http://www.site.com/blog)
If you have a separate blog where you write and try to generate both links and traffic, it can be helpful to have a way to easily segment out the traffic to just this section of your site. Sure, you could just use the Filter section, but why do this when you can set up an Advanced Segment and have it forever? A little more work in the short term can save some big headaches. Note: this is really only helpful if your blog articles have the URL structure of http://www.site.com/blog/(post-url) Here is how I have set up an Advanced Segment to do just this:
Segment 6: Google as Source
Since SEOs often care mostly about Google traffic (for better or for worse), since it is where the bulk of our traffic comes from in almost every case, I also have an Advanced Segment set up to show me the traffic where Google is my source. Here you go:
Segment 7: Twitter Traffic
Here is the Advanced Segment I use. Have I missed any?
How to set up Advanced Segments for any section of your site.
Here is how I set up an Advanced Segment for my SEO category:
Finishing Up
These are the most useful Google Analytics Advanced Segments that I have in my arsenal that can apply over almost any client. Others have written about more specific Advanced Segments in these posts:
- Charting 'Unique Keyphrases' Using Advanced Segments
- Guide to Setting up Advanced Segments in Google Analytics for Complex Brand Names
- Segmenting Important Data through Advanced Segments
I suggest you read those as well. Please add in your favorites (especially ones involving RegEx) in the comments!
- Electronista
Posted by Cyrus Shepard
Good news to all you link builders out there. SEOmoz just updated the PRO SEO Web Directory List. The long overdue update includes over 400 directories (up from 180) separated into three categories – Web, Local and Social.
Wait, aren’t link directories dead?
The practice of obtaining links from online directories has changed dramatically over the past 10 years. The stereotypes of the past are both true and dangerous. Spammy, low quality directories flood the lower cesspools of the Internet. An unbridled strategy of obtaining links from these non-discriminate directories can actually hurt your SEO.
But times have changed, and strategies have become more evolved.
Rethinking Directories
We can move beyond thinking about directories as nothing more than paid links. For webmasters who use this approach, the links they obtain may not be worth the effort. An intelligent directory strategy provides depth to your SEO campaigns and offers tangible benefits including:
- A more diverse link profile
- Qualified referral traffic
- Citations for different vertical ranking algorithms
- Trust/Authority Signals
- … and, of course, the link.
If you use different directories for different purposes, you can achieve this and more.
A. Web Directories
If links were easy for everyone, they would be less valuable for all of us. In general, the lower the bar of entry into any directory, the less inclusion into that directory is valued by the search engines.
Some editorial directories raise the bar by charging a high cost of inclusion (Yahoo, Best of the Web) and being somewhat selective about whom they include. Three hundred dollars is a lot to pay for “inclusion review” but the truth is that for an established business, these links are like bread and butter.
Other directories focus on a particular area, and thus are harder to get into. Examples of these “niche” directories include sites such as:
- Designflavr – CSS / Design Gallery
- Chart Porn – Infographics
- Blog Listing – Blog Directory
- Engineers Edge – Professional Directory
- Donations 4 Charity – Charities
When pursuing directory links, keep the following tips in mind:
- Not every directory link is right for your site.Be selective and don't go for every link out there.
- Pace yourself. A good hint I got from Ian Lurie's Fat Free Guide is the 2:1 rule: for every two directory links you build, make sure to build one genuinely natural link. This helps to keep your link profile looking “natural”.
- Research. Understand where your link will be placed before you go after it. Check Google’s cache of the page to make sure they are indexing it. Large directories are often plagued by bad SEO, and not every link carries the weight it should.
- Seek relevancy. Ask yourself if this link has the potential to send qualified traffic to your site. Even if it's a small amount of traffic, it's probably worth the effort.
I’d often rather have a hard-to-get link from a smaller niche site that an easy-to-get link from a larger well-known directory.
B. Social Directories
We know that the rise of Social SEO means sharing your content on sites like Facebook and Twitter can have a positive impact on your site’s traffic. But far too many people limit sharing to the big three (Twitter, Facebook and Google+) without considering other social sharing sites. The plethora of specialized social sites offer several benefits.
1. Member Profiles – Here’s a random profile from Mister Wong, a social bookmarking site. (thank you rgonzalo!) Mr. rgonzalo appears to be an authority on the site. Any content he shares will carry weight with the Mister Wong audience.
2. Content Publishing – Instead of a single website listing, social sites allow you to promote individual pieces of content. Using the above example, whenever Rgonzolo shares a URL, that content is likely linked to and noticed by search engines.
3. Increased participation increases visibility. You probably can’t participate in every social site out there. For web marketers, focusing on a few sites where you can devote your time, like Quora or CrunchBase, may be a good strategy. Those who become trusted authorities within their community are often rewarded with increased visibility of the content they share.
C. Local Citation Directories
Using local directories requires a shift in thinking for many webmasters, because it’s not always about the link, but about the citation. As David Mihm points out, the search engine’s local ranking algorithms work much differently than the search algorithms.
For local SEO, search engines trust verifiable information from local portals such as Superpages and Judy’s Book. In most cases, if you are a verified business, gaining a citation from these sources is worth the effort and time.
For more on local SEO directories, I highly recommend reading Mike Blumenthal and Andrew Shotland (and David Mihm, of course.)
Directories = Diversity in Your Link Profile
Just as you shouldn’t rely solely on directory links, you shouldn’t ignore them either. The goal is a diverse and blended link profile. Many webmasters have abandoned directory links due to the bad reputation they have gained over the past years. In truth, the variety and quality of the directories available today offer unique opportunities to expand your SEO reach and diversify your link profile in future-proof ways.
I encourage you to check out the new PRO Directory list, it's an awesome resource. That said, any SEO can take advantage of the tactics in this post. Even with a curated list, using Web directories takes time and research.
There are no shortcuts in link building, but the effort is worth it.



















.jpg)

