Posts
Developed novel information theoretic approximations
Formulated a framework for approximating
high-dimensional information theoretic statistics using
automatically inferred relational models. Validated the metrics on
synthetic data, demonstrating significantly enhanced accuracy when
faced with limited quantities of data.
Analyzed diverse biological data sets
Applied the approximation framework to
a variety of data sets:
selected compact gene sets for cancer classification; selected
sets of phospho-protein data for enhanced statistical
models; selected
representative sets of experimental conditions to improve the
efficiency of idiosyncratic drug hepatotoxicity studies; identified
non-redundant cluster assignments to improve hypothesis
generation.
Extended framework to molecular systems
Adapted the information theoretic approximations to analyze configurational
space of small molecules and protein sidechains using molecular
dynamics or rotameric enumeration. Demonstrated improved
convergence of configurational entropy calculations compared to
existing methods. Analyzed the conformational freedom of residue
sidechains in MD simulations of HIV protease bound to drug candidates.
Performed protein sequence-structure-function studies
Contributed to the design of an enzyme mutant library by
combining sequence data and computational structure-based design methods to
identify residue positions likely
to impact, but not destroy, activity when mutated.
Developed a novel
information theoretic phrasing for incorporating phylogeny into
sequence-based residue coupling analyses.
Designed modified lanthanide binding tags
Developed novel techniques for computationally exploring the energy
landscape of protein backbones. Identified candidate amino-acid
positions responsible for the lack
of crystallographic order of an existing lanthanide binding
peptide. Applied computational protein design
techniques to suggest single and double mutants expected to have
improved order in the crystal structures.
Identified putative biomarkers to predict drug response of human tumors
Developed a system to analyze genetic, mRNA/protein
expression, and phenotypic data in a consistent
framework for biomarker identification. Generated putative
sets of biomarkers of
tumor cell-line response to treatment with various drugs.
Examined molecular mechanisms of mechanical properties of engineered cardiac tissues
Measured stress--strain properties after treatment
with targeted MMP
inhibitors to refine an existing
mechanical model. Participated in the
development and characterization of a 96-well format machine for
high-throughput measurement of tissue properties.
Posts
Mentor for Undergraduate Researchers
Formulated and directed independent research projects for three
undergraduates, applying information theory
to: gene selection for cancer classification, identification of residue
coupling from MSAs, and transcriptional network inference.
Guest Lecturer, Biomolecular Kinetics Cellular Dynamics
Prepared and delivered a 1.5 hr lecture on diffusion-limited
enzyme kinetics. Reviewed theoretical
developments, Brownian dynamics simulations, and finite element
methods for the calculation of diffusion-limited rate constants.
Teaching Assistant, Thermodynamics of Biological Systems
Prepared and presented twice-weekly recitation sections for
undergraduates. Organized and held monthly review sessions.
Helped develop and grade homework and exam problems.
Teaching Assistant, Biomechanics
Held regular office hours and review sessions for
undergraduate students. Graded problem sets and exams.
Posts
Last week I talked about how to use Unsum.com to convert partial RSS feeds into full text feeds. While the Unsum method is very general and customizable, it also takes a little effort to identify the content that you care about (determined by looking at the source HTML of the page). Happily FiveFilters.org has a similar tool that will often work with nothing more than the feed URL.
FiveFilters full text feeds (say that five times fast)
If you want to try things out for yourself, the process for creating a feed is pretty straightforward. Head over to http://fivefilters.org/content-only/, enter the URL for a partial RSS feed that you want to convert and click "Create Feed." You'll then be taken to a new page containing your new feed, the url of which you can paste into your RSS reader. If everything goes well, you're done and can move on to the next feed.
For this example, I used the same partial feed I talked about previously with Unsum.com, and had somewhat mixed results. The feed actually gave me an error message saying that it couldn't import the feed, but then it seemed to work anyway (showing the full text of each post). In addition to this issue, the free version of the service is pretty limited, only giving 3 items at a time and leaving a link at the bottom of each feed item. As such, I'm sticking with Unsum for now, but if you don't feel like parsing out HTML elements yourself, it's hard to get easier than FiveFilters.org offering.
It's also worth pointing out that FiveFilters.org also provides a paid option with more items per feed, as well as an option to host the code yourself, without restrictions (other than those imposed by the AGPL under which it is licensed). If you really want a fully customized solution, this latter option may be the way to go.
|
If you liked this post,
Please share it:
|
If there's one thing we like to talk about on this blog, it's great software. But unfortunately most software isn't great. Most software is overwhelmingly mediocre. The world has an abundance of great programmers and graphic designers. Put them together and you should end up with awesome software, right? Well, apparently that's not quite how it works. In this post, I want to examine why talented designers and talented developers often combine to make really crappy software.
There's not one all encompassing reason for the lack of truly great software, but I think the major issue is that the people creating software aren't good consumers. There are many different programs used to create software. From designing mockups, to writing code, to managing databases, everything is done with the help of software, and the products used by designers and developers are without a doubt the worst types of software I've ever seen.
Let me repeat that: The most consistently terrible category of software is the kind used by the creators of software. Despite their incredible understanding of how software works, programmers and designers can't even build good tools for themselves. How can we possibly expect them to build anything decent for the average user?
You may be interested in some specific examples of really bad software that many designers and developers rely on. Ok, here goes: Adobe Photoshop, Adobe Illustrator, Eclipse, Netbeans, Emacs, vi, PHPMyAdmin, SQLYog, Subversion, Git, and pretty much anything else software creators regularly use. If you're familiar with any of the programs I just mentioned, you might be thinking to yourself, "But Tyler, I use ______ and it works just fine." If you're thinking that, you're right. All of those programs work. They are all capable of performing their intended functions, but not a single one of those programs takes the next step. The step from functional to acceptable (which is about five steps short of great).
All of these programs I've mentioned are complicated. They have annoying quirks and unresolved bugs. They've had the same clunky user interfaces since the 90's, and they weren't even good in the 90's. They're hard to learn and hard to use, but they're functional. And that's the problem. Programmers are good enough with computers that they don't need simplicity. When there are problems, they can find workarounds. They don't demand great software because they don't need great software. Unfortunately this also means that they don't know how to build great software.
So this is a call to programmers and designers out there. We all need to do two things. 1) Start expecting better software. I want better version control, better code editors, better database managers, and better design tools. I'm willing to pay for all of those things, and there will come a time when I'll build them myself if no one else will. 2) We need to build software for other people, not for ourselves. Just because you know enough about computers to find workarounds, that doesn't mean your customers want to put up with the hassle. Assume that your customers want a great experience, not just a functional one.
|
If you liked this post,
Please share it:
|
We've talked a few times in the past about how RSS feeds are a great way to keep track of a bunch of different online content in one consistent interface. While a number of sites provide excellent RSS feeds of their content, there are a few common problems that can get annoying after a while. In particular some sites tend to have too much content, and a way to filter a feed to only see content you care about could be really useful. On the other side of the coin, a number of sites only provide the first paragraph of their posts, requiring you to click through to the site to read the whole thing.
Happily, both of these problems can be solved with just a little tweaking, using some online tools. Today I'm going to talk about one option for solving each problem, but there are definitely alternatives out there. I'll start out showing you how to use Feed Rinse to filter RSS feeds, and then get into the slightly more involved method of generating full-content feeds from partial feeds using Unsum.
Filtering RSS feeds with Feed Rinse
Sometimes, a particular site will just have too much content to deal with regularly. Often such sites will offer some kind of highlights feed in addition to the full feed, but if they don't, or if you want to tailor a feed just for yourself, a filtering tool is a great option. Feed Rinse is one of many RSS filtering options available, but I think it strikes the right balance of ease of use and filtering power.
To get started with Feed Rinse, head over to www.FeedRinse.com and sign up for an account. Once you've signed up, the main page should have a big button saying "Click Here to Get Started." As you might imagine, your next step is to click that button. From there, you'll be prompted with a page to enter your feeds. If you want to filter a bunch of feeds at the same time, you can enter one per line, or import a list that you've exported from your RSS reader. For this example, I wanted to pare down the feed for a scientific journal that I keep tabs on called the Proceedings of the National Academy of Sciences (PNAS). The address for the RSS feed of new PNAS articles is www.pnas.org/rss/ahead.xml, so I just added that feed, then clicked import.
Once the feed(s) is(are) imported, you're able to set up filters. In this case, PNAS has a ton of articles, but I'm particularly interested in those tagged [Biophysics and Computational Biology] or those about mutual information (sorry for the esoteric example, but the principles should be pretty clear). As such, I chose to allow any post with the appropriate tag in the title, or "mutual information" anywhere in the post.
After saving changes, Feed Rinse shows all of the feeds you've created. You can now subscribe to the filtered feeds just like you would any other RSS feeds. Clicking on the orange RSS logo to the left of the feed title will give you an option of adding the filtered feed to your reader of choice (I'm partial to Google Reader, but there are plenty of options out there.
Expanding partial feeds with Unsum.com
If you've subscribed to many RSS feeds, the chances are pretty good that you've run across some that don't show you all of the post content. Sites prefer that readers click through to the actual articles (so they can show ads and get better analytics), so many will provide partial content in RSS feeds to encourage readers to click through to read the full thing. Unfortunately, if you spend a lot of time in your RSS reader, it can get rather annoying to click through to read full posts. For example, I spend most of my RSS time in the mobile version of Google Reader, and many of the sites aren't optimized for mobile sites; furthermore, if I am offline, I'm completely out of luck.
If you want to get around such partial feeds, Unsum.com lets you convert partial feeds to full RSS feeds. While the process is a bit more involved than the filtering example above, once you've done it, the feed will update itself with full content, letting you stay in the warm embrace of your RSS reader.
To get started, click the "Converter" tab and enter the url of the RSS feed you want to start with. In this example, I'm expanding the feed from Rams Herd, a St. Louis Rams blog which recently moved from a full feed to a partial (again, sorry for the esoteric example).
Unsum provides a few different ways to identify the full content of a page, but in my experience, only the regular expression option worked. The basic idea of Unsum is that it needs a way to identify the beginning and end of the relevant content on any given post. Based on these criteria, it will then extract the content and place it into the new feed.
Telling Unsum how to identify the beginning and end is the tricky part. The key is to look at the html of an example page and find elements that will always come immediately before and after the content. For this example, I went to one of the Rams Herd posts, and looked at the source code in Chrome by right clicking, and choosing "View Page Source".
To get to the right part of the html, I search for the title of the post which is, in this case, surrounded by an h1 tag. The key piece then, is to identify a unique element that comes immediately before the start of the article. In this case, I choose <div class="article">, but this will be different for every site (but needs to be the same for every post on the same site). I next identified a pattern to mark the end of the content. In this case, I used <!-- JOM COMMENT START -->. Again, this will be different for each site you use.
With the start and end patterns in hand, you can set up the regular expression by typing the first pattern, then '(.+?)' (without the quotes), then the second pattern. In my case, this turned out to be:
<div class="article">(.+?)<!-- JOM COMMENT START -->
If you've never used regular expressions before, that probably looks like nonsense, but the basic idea is that you want to keep everything between the start and the end patterns (keep everything inside the parentheses). If you take a look back at the first screenshot of this section, you'll see where I entered this expression. In my experience, this field was very finicky. Even adding an extra space at the end messed things up, so be careful. I also filled in a title, and then hit "Generate".
The resulting feed is shown on the next page, and in the screenshot below. The "converted RSS" url can be added to your RSS reader just like any other feed. Once doing so, you should have a new feed that pulls the full content of articles, based on the links from the partial feed.
Anyway, hopefully that gives you a good idea of the types of tweaks you can use to make RSS even better. If you have any questions about these, or suggestions of other RSS tools, let us know in the comments.
|
If you liked this post,
Please share it:
|
If you use a web-based email client, you've probably received an email before that you didn't notice because there's not any kind of notification. If you're a Gmail user, that problem is solved. Gmail just launched desktop notifications for anyone using Chrome as their web browser. After you turn the notifications on, you'll see a little box pop up anytime you receive an email or chat message. Here's what a notification looks like:
If you want to try this feature out, make sure you're using Google Chrome, and go into the settings section of your gmail account. About half-way down on the main settings page, you'll see a "Desktop Notifications" option which you should enable. That's all there is to it.
Warning: The rest of this post is going to be much more technical and pointless. If you're not into reading rants aimed at programmers, you might want to stop reading.
One thing that stands out about the new Gmail notifications is that they're the first instance of HTML5 notifications I've ever seen in a real webapp. HTML5 is one of the hottest buzz words in tech right now - every company is talking about how they plan to use it in the future - but there really aren't very many examples of HTML5 actually being used by any major software products. Additionally, HTML5 is supposed to be an open web standard, but Gmail notifications only work in Chrome for some reason. This all begs the question: What is HTML5 and why do tech bloggers and software companies spend so much time talking about it?
But before talking about what HTML is, let's go over what it isn't? HTML5 is not CSS3. That means that when you see web sites using fancy fonts, rounded corners, shadows, and CSS transitions, that's not HTML5. It's all very cool and modern, but it's just not HTML5.
HTML5 is (generally) not javascript. So when applications make heavy use of AJAX, animations, dialogs, that's not HTML5. It's all very cool and modern, but it's just not HTML5.
There are really only a few features users will notice that are entirely within the domain of HTML5. The ones that seem important to me are: The canvas element (although that's been around for a while and it works in IE I think, so I'm not entirely clear on how that counts), offline storage, drag-n-drop file uploads, and desktop notifications. There are some other more obscure features, but I think I named the big ones.
Of that list of features, I've only ever seen the file uploads in Gmail and LucidChart. The canvas element is used more commonly, but like I mentioned, that doesn't really count as HTML5 in my book. I don't know of a single web service that uses HTML5 offline storage, and Google has just now added the first instance of desktop notifications I've ever seen. So why is it that HTML5 is the second most overused tech buzz word (after "cloud") despite the fact that it appears to be vapor-ware? If everyone's talking about HTML5, why isn't anyone using it?
Furthermore, the Gmail notifications only work in Chrome. What's the point of using a web standard if it only works in one browser? Doesn't that sort of defeat the whole point of having standards?
There's one simple conclusion to draw from this incoherent rant: HTML5 is not a web standard. It will be a web standard one day, but it's not right now. Firefox, Chrome, Safari and Opera all have completely different support for HTML5 which means you need to write up to four different versions of your code to support HTML5 functionality... and it still won't work in the world's most popular browser (IE).
So if you've been hearing all the HTML5 hype and wondering what the big deal is, please know that there is no big deal (yet). Are web apps getting more powerful at an amazingly fast pace? Yes. Is HTML5 the reason? Absolutely not. The reason web apps are getting better is because developers are getting better, web browsers are getting faster, and consumers are demanding more. One day HTML5 will be a real standard with support from all the major browsers. Until that day comes, let's just enjoy how awesome javascript is.
Image via http://trpdsah5.tumblr.com/ (NSFW language)
|
If you liked this post,
Please share it:
|
Near the end of last year Google finally opened up the full slate of Google services to Google Apps for your domain users. If you had previously set up dedicated accounts for dealing with AdWords or Google Analytics (as many business users have), you may want to transfer those accounts to your domain account. While Google doesn't explicitly discuss how to transfer such accounts, it's actually not too tough to do.
The basic idea in both cases is to add your Google Apps account as an admin user. You can then log in with your Apps account and remove the original account (if you so desire), effectively transferring ownership of the account to your Apps one. We've previously talked about some ways to get around multiple login problems by using multiple Chrome profiles or application shortcuts, but it's definitely easier to consolidate everything under one roof. You can get most of the benefit of this approach without ever deleting the original account as well, to ensure that all of your accounts have access to these services.
AdWords
The procedure I outlined above is pretty straightforward, but I figured it was worth detailing it out to simplify the process a little further. Start by logging in to your AdWords account with your existing Google account (not you Apps account). Click on the "My account" tab, and choose "Account access." From there, add the email address of your Apps account as an admin user. There'll be a couple rounds of email verification to get everything squared away at which point, both your old Google account and your Apps account will both have full access.
Once you've granted access to your Apps account, and verified that the new access is working (I'd probably give it a day or two to make sure), you can log in with your Apps credentials and revoke access to the old account. Personally, unless you're dropping the old Google account entirely, I'd probably leave access to both accounts, but you can obviously that for your case.
The one snag I ran across when transferring our AdWords account was that I had inadvertently set up an AdWords account on my Apps account already. Even though I had never started a Campaign or run a single ad, it still wouldn't let me associate the existing account with my Apps credentials. To get around this problem, in the case of an empty account, you can just delete the account from the "preferences" option of the "My account" tab.
Analytics
The procedure for transferring an Analytics account is basically identical. Unlike AdWords, a single user can access multiple GA accounts, so you shouldn't have any trouble adding in your Apps account, even if it is already linked to existing analytics. Start by logging in to your regular Google Analytics account, then click the "User Manager" link at the bottom of the page. From here, you'll add you Apps address as an admin user, and proceed as mentioned above.
As I said, there's nothing particularly complicated about transferring accounts in this way, but for whatever reason, Google doesn't explicitly mention it in any of their help documentation. In both cases, I definitely recommend exercising caution before deleting any old accounts. At the very least, sharing access across all your Google accounts can help avoid the multiple login problem that persists throughout Google's products.
|
If you liked this post,
Please share it:
|
NOTE: This is a very old blog post listing our plans for 2011. If you want to see a current list of our upcoming development projects, you can find that here.
We try not to talk about our business too much on this blog, but we've been getting lots of questions about what we're doing to make Less Annoying Software (our simple CRM product) even better in 2011. This blog post will go over some of the improvements we have planned. Please note that the dates aren't set in stone, and we won't know for sure what will happen with each of these improvements until we get around to actually working on them. This is just a roadmap.
LAS 2.0 (Expected in February)
We've been around for about a year now, and so it's time to release the second version of our product. This is the largest project we've ever worked on (including the entire original product which launched last year) and it's going to make Less Annoying Software even more Less Annoying. Here are some of the major changes you can expect:
- Easier system for managing leads - Right now LAS is capable of tracking leads, customer service requests, and anything else you can think of. The problem is that it's not very obvious how things work. LAS 2.0 will offer the same functionality, but it will be about a thousand times easier and more intuitive.
- Dashboard - We've created an account dashboard which will show you everything that's going on in your account including recent activity, upcoming reminders, and reporting about your leads and other opportunities.
- Custom Fields - This is one of our most requested features. You'll be able to set up custom fields so that you can store any kind of info you want about your contacts.
- Recent Activity Feed - We're updating the recent activity page to show you a feed of all of your activity so you can easily see absolutely everything you've been working on.
- Speed improvements - We completely re-wrote the backend of the software so that the entire app uses AJAX to load new information. This means that you never actually reload the page you're on, so everything will be blazingly fast. We've been using LAS 2.0 internally for a while now, and it seems about twice as fast as the previous version.
- Many other things - We have redesigned literally every single aspect of the app to make things easier, more powerful, and less annoying. There are too many things to list here, but trust me when I say that absolutely every screen will be at least a little bit better.
Integration with other services
We know that LAS isn't the only software out there, and we want to make it easier to use our product along with the software you're already using. That's why we plan to build integration with several other popular services in 2011. This includes:
Google Contacts (Expected in April)
You'll be able to set up your LAS contacts to automatically sync with your Gmail contacts. This will be be useful for a number of reasons, including that most phones have Gmail integration so you can effectively sync all your LAS contact information to your phone's address book. We're also looking into Google Calendar integration while we're at it.
Mailchimp, Constant Contact, etc. (Expected in June)
Many of our users want to be able to send out emails and newsletter to their contacts, so we're going to integrate LAS with an email marketing tool. We haven't decided which tool we'll start with, but you'll be able to automatically send emails to some or all of your LAS contacts with this integration.
Skype, Google Voice, etc (Expected in August)
We want to make your life as easy as possible which means you should be able to call your contacts directly from LAS, and we should automatically log information about the calls in your contacts' histories. We have a lot of research to do before making any promises, but our goal is to offer at least one fully integrated calling option in 2011 (with more to come later).
Better Reminders (Expected in April)
Right now we offer a very simple way to set reminders for yourself in LAS, but the functionality is very limited. This project will expand the functionality of our reminders tool to offer the following:
- Check off reminders - When you've dealt with a reminder, you'll be able to check a box next to it to indicate that you've completed it (like a task list). If you don't check off all your reminders in a day, we'll send you an email the next morning to help you keep track of what you missed.
- Include times with reminders - Right now reminders are only linked to dates. We're going to add the option of entering a time as well so that we can send you reminders throughout the day rather than all at once in the morning.
- SMS reminders - If you're using a major cell network, you'll be able to receive text message reminders during the day to make sure you don't miss anything, even if you're not at a computer.
- Sharing options - Right now reminders are all private. We'll give you a way to share reminders with other members of your company so that everyone can be on the same page.
- Better display and printing options - You'll be able to view and print a calendar view of all your upcoming reminders.
Attaching Files (Expected in August)
One of the big holes in our software right now is that you can't attach files to your contacts. Well that hole will soon be filled. Later this year we'll give you the ability to upload files to your contacts' histories. These files can be anything you want, including contracts, proposals, images, and more. With this new functionality, you'll be able to store absolutely everything you need about your customers in LAS.
Better Reports (Expected in October)
We currently offer some simple reporting to help you manage your business, but there's a lot more we can do with the information we have. Without you needing to enter any extra data into the system, we'll give you interesting analytics about your customer activity, the productivity of the different members of your team, and much more. We've got a lot of planning to do on this one still, so if there's a report you want to see, let us know and we'll add it to the list of ideas.
API (Expected in December)
For those of you that don't know, API stands for "Application Programmer Interface." An API is basically a tool that allows third parties to write code that interacts with our software. For example, if you have a form on your website to collect leads, you could use our API to automatically enter contact forms from your website directly into your LAS account. There will be many creative uses for our API, and I'm excited to see what the LAS community can come up with.
...And Much More
These are the big projects we're planning, but we work every day to make our software just a little less annoying. You'll notice minor improvements all across our software throughout the year. And as always, if you have any ideas for us, please don't hesitate to let us know. You can email me personally at tyler@lessannoyingsoftware.com (or just leave a comment at the bottom of the page) and I'll be happy to discuss any ideas you have.
Sorry for the self indulgent post, and thanks for reading. We're looking forward to a great 2011, and hopefully this post has helped share some of our excitement with you.
NOTE: This is a very old blog post listing our plans for 2011. If you want to see a current list of our upcoming development projects, you can find that here.
|
If you liked this post,
Please share it:
|
Today I just wanted to mention updates to two utilities we've posted previously. The first comes courtesy of Mait Vilbiks who has generated an easier to use version of our Mac Chrome application shortcut generator (download the updated version from here). The second is an update to include iPad support for our fullscreen webapp generator for iOS (directly available at www.lessannoyingsoftware.com/tools/iphone/).
An easier to use Mac Chrome application shortcut generator
For reasons that aren't entirely clear, application shortcuts are disabled in Chrome for Mac. To get around this problem, we previously posted a shell script that was able to generate Chrome application shortcuts from the command line. In addition to the terminal being a bit daunting, this script was pretty finicky about spaces in filenames and had some other undesirable quirks. Happily, Mait recently posted an improved version of the tool in the comments of the original post:
I have a couple of friends (recent PC defectors), who I knew would start bugging me with questions, so I set out to make this a little friendlier using AppleScript, and ended up with a pretty much usable application. I'm posting this file here absolutely "AS IS", source included, I'm not taking any responsibility if it breaks anyone's system or something else happens. It works as intended for me and a couple others so I thought I'd share it, should be quite safe.
In addition to giving it a much more familiar interface, it also fixes some of the bugs in the previous script such as those preventing spaces in application names. The usage of the new version of the tool should be pretty straight forward. Start by downloading the .dmg, and opening the image. Inside, you should find a readme file, a script called createGcApp, and the source folder. Double-clicking the script will prompt you with questions about name, url, and icon for the application shortcut (make sure it's a square if you include an icon). The resulting file will then be saved to the /Applications folder. Thanks so much to Mait for sharing this much easier version.
iPad Fullscreen Webapp Generator
A few weeks back, we posted a new tool that lets you create webapp shortcuts on your iOS homescreen that act more like native apps. When launched from the homescreen, webapps created through the tool will appear in fullscreen, and can be backgrounded and switched to like other apps, rather than existing as tabs in Safari.
That original version supported iPhone and iPod platforms, but we've recently extended it to work on iPads as well. Neither Tyler nor myself own an iPad, so it's been a little tricky to develop, but I'm pretty sure things should work as they do on the other platforms (thanks to Nate for testing things out for us on his). To get started, just head to the webapp generator page to create an app. After doing so, you'll be instructed to save a shortcut to your home screen. When you launch the app from the homescreen, you should get a full screen, dedicated version of the website you inputted. Here's an example using GMail:
As a reminder, the webapp generator only works for sites that are entirely in AJAX (including Gmail, Buzz, and Youtube). If you've created apps already, they should work on your iPad without any changes. If you run across any problems, let us know in the comments
Enjoy.
|
If you liked this post,
Please share it:
|
As you probably know, there are many different types of computer files, and different file types are generally opened by different applications. Doc files open in Word, xls files in Excel, jpg files in your image editor, html files in your web browser, and so on. All these different types of files are necessary, but you might occasionally run into a problem with portability. Maybe you want to send someone a spreadsheet but they don't have excel. Maybe you want to save a web page to your computer for later, but there's not really a good way to do that.
In situations like these, you can just save a pdf version of the file. Pdf readers (like Adobe Reader or Foxit) are freely available, so anyone can view the file from any computer. Also, pdf files are designed to be printed, so you can be sure that printing won't be a problem.
So how do you turn something into a pdf? You use a pdf writer like CutePDF or PrimoPDF. In this post, I'll demonstrate how to use CutePDF to generate a pdf our of any file you can print. This assumes that you use Windows, but I'm sure there are similar programs for Macs as well.
Step 1: Install CutePDF
Go to cutepdf.com and click on the "Free Download" link to download the installer. Once it's downloaded, run the installer and click through the steps just like you would with any other installation. The only thing to look out for is that it will give you the option to install a "crawler toolbar" which you should choose not to install.
Step 2: "Print" to pdf
Pdf files are a little unique, because you don't actually "save" them. The pdf format is sort of like a digital version of a printed sheet of paper, and they way you generate a pdf is to actually "print" it to your computer. If that doesn't make sense, don't worry. It will soon enough.
To get started, open up a file that you would like to turn into a pdf. This will work with any type of file that you can print such as a Word document, spreadsheet or web page. For this example, I'll print Bracken's blog post from earlier this week. So go ahead and open up the file, and then select the print option (just like if you were printing it to an actual printer). You'll see a menu that looks something like this:
Select the "CutePDF Writer" option and click on the "Print" button. A new box will pop up that looks like this:
Navigate to the folder you want the file to be saved in, and click the "Save" button.
That's it. You now have a pdf version of the original file. You can open it with your normal pdf reader, email to a friend, print it, or save it for later. The one thing I should mention is that this pdf file won't necessarily look exactly like the original file. It will instead look like what the original file would have looked like if you had printed it. Web pages in particular don't always print well, so your pdf might look a little strange, but that's not CutePDF's fault. Here's what my new pdf looks like:
|
If you liked this post,
Please share it:
|
A while back I posted about how to automatically import Google Analytics data into Google Docs using a third party script. One of the coolest features of Google Spreadsheets is the motion chart which helps visualization of multi-dimensional data. As you might imagine, the two also make a great team, and in this post I discuss a Google Spreadsheet that you can use to make motion charts from your Google Analytics data.
Google Analytics in Google Docs
As a brief introduction, the previous post gave a rundown of how to use a Google Docs script written by Mikael Thuneberg of AutomateAnalytics.com to import Google Analytics data directly into a Google spreadsheet. Once there, you can use a series of calls of the script to set up your data for various analysis, including tailored charts and visualizations. The great thing about the whole setup is that it will all update automatically, just by reloading the spreadsheet.
Motion Charts
One of my favorite Google Spreadsheet tools is the "motion chart" which provides some really nice visualization of multi-dimensional data. In particular, the charts are perfect for visualizing time-courses in which a single set of categories have a number of numeric values associated with them. For example, I first saw motion charts in the context of a TED talk about economic and health data (numeric values) for a number of different countries (the categories) over the past century or so (time). While this setup certainly isn't perfect for every multi-dimensional data set, it's pretty great for analytics data which has a natural time component, as well as a number of categories you might be interested in (e.g. browser, location, or source). If you've never seen or used a motion chart before, you should definitely check them out independent of any analytics ambition. Here's a decent place to get started, or you can add one to any Google spreadsheet through Insert->Chart->Charts->Trend. For now, I'll show you an example using Google Analytics data.
Putting it together
To get started with motion charts and your Google Analytics data, start with this Google spreadsheet that I created. When you follow that link, it should prompt you to make a copy (which will only be visible to you). If it doesn't do that automatically, just use File->Make a Copy... to create your own version. The spreadsheet has three sheets: login, data, and chart. The only thing you'll need to do to get started is to fill in your the email and password for your Google Analytics account on the "login" sheet, as shown in the screenshot below:
After filling out those fields, the spreadsheet should automatically refresh to fill in the token and domain info. You'll next want to click on the "data" sheet. After doing so, you'll see that the sheet is propagated with data from your analytics account for each month of 2010. For now, it categorizes things by web browser, but if you poke around the sheet a bit, you should see how to customize that. Once the data is all imported (it'll take a few seconds), you can click on the chart tab. Now it's time to play with your data. Here's an example chart comparing Chrome and Firefox traffic in 2010.
If you've never used a motion chart before, it can take a bit of getting used to, but once you get the hang of it, it's a great way to visualize data like this. The default chart shows data in 6 dimensions. Each category is it's own circle (one dimension, D1), and it's x and y placement show two numeric values (D2 and D3) which can be selected using the dropdown boxes (showing "visits" and "newVists" above). The color (D4) and size (D5) of each circle correspond to two more selectable values (pageviews and bounces in the above example), and finally the slider at the bottom lets you move through time (D6). You can also select and deselect categories either by clicking on them in the chart or using the checkboxes in the right-hand panel. The "Trails" checkbox toggles whether the trace through time should be shown, or only the current time.
In addition to that view, the three tabs at the top let you instead show a bar or linegraph with the same data. For example, here's what happens when you click the "line" tab:
Anyway, there's ton more to do and see, but it's best achieved by poking around. If you have any questions, feel free to let me know in the comments.
|
If you liked this post,
Please share it:
|
Today's post might seem off-topic, but it does relate to technology in the end.
Bracken and I are fans of the St. Louis Rams. In case you don't follow football, they were expected to be horrible this year but then they ended up being ok. Unfortunately they looked terrible at the end of the season and missed the playoffs. Many Rams fans are excusing their collapse by pointing out that we only expected them to win about three games, and they ended up winning seven. Clearly we should be happy.
Wrong. At the beginning of the season, sevens wins would have sounded great. But after watching the team play and seeing that they should have easily won 10 games, why should we be happy with seven wins? We have more information now than we had at the beginning of the season, and it would be silly not to adjust our expectations accordingly.
This type of excuse happens with technology all the time. Microsoft excuses how bad IE8 is by pointing out how much better it is than IE7. AT&T deflects criticisms of their network by bragging about how many new towers they build each year. In general, people seem to have an attitude that just because technology wasn't very advanced in the past, that means we shouldn't expect great things from our technology today. If I want a better phone, or a faster internet connection, it means that I'm taking tech for granted. Just think about how far technology has come in the past 20 years!
Well, I couldn't disagree more. It's ok to expect more out of your technology. When I use my phone, I expect it to actually work. This doesn't make me an entitled brat. This makes me a responsible consumer. I know more or less what we're capable of accomplishing with current technology, and I'm not willing to let expectations from years ago excuse the laziness of tech companies now.
As an example, I bought a Palm Pre about a year and a half ago. At the time, I thought it was the best phone on the market. I still think that it was the best phone, but that doesn't mean that it still is. It's been a year and a half and Palm hasn't made a new phone for me to buy, so I'm stuck using what I now consider to be a pretty crappy phone. I can't wait for my contract to expire so I can upgrade to something much better. The point I'm trying to make is that it's ok for me to feel this way. It's ok for you to feel that way too. Don't believe what so many people say about how it makes you materialistic, discontent, or a whiner. Technology is too important to be complacent. It's too important to accept excuses.
So go ahead, adjust your expectations, and don't look back.
As an added bonus, here's a Youtube clip of one of my favorite comedians taking the opposite stance. I don't agree with him, but he sure is funny.
|
If you liked this post,
Please share it:
|
The mail merge feature in Microsoft Word is a great way to generate a series of similar files with dynamic text fields (for example, when you want to generate copies of a file with different names and addresses). Unfortunately, the feature doesn't work with watermarks. I recently ran across this problem when I was trying to put a watermarked copy number onto a series of documents I needed to print out. The graphic below shows the problem I was trying to solve.
Obviously, doing this once would be easy by just editing the watermark of the template file (shown on the left). The problem was that I needed to generate >50 copies with different numbers (such as 001 on the right), and editing all those files by hand was a little more tedious than I was interested in.
To get around the problem, I wrote a Perl script that extends the mail merge feature to any text in a Word document. The problem is pretty specific, and the current script has a few limitations (detailed below), but if you ever need to generate a merge in Word including the watermark text, hopefully it will come in handy.
Mail merge in Word
If you've never used a mail merge before, the basic principles are pretty straight forward. The goal is to generate multiple variants of a template document that substitutes in some variable text. Traditionally, the variable text would be the name and address of a number of different people (to generate "personalized" letters or emails to a list of people), thus the name "mail merge." The functionality of a mail merge can be much broader than just personalized greetings, however, and it's definitely worth taking a look at the feature if you haven't already (here's a Microsoft tutorial of how set up a mail merge in Word).
In any event, because watermarks are stored as word art, mail merges don't work with them in Word. Fortunately, the new .docx file format for Word documents is relatively accessible for manipulation, enabling one to use a script to replace a pattern in a document with some target text. So that's basically all the script does. You start by creating a word document with some special keyword in it (e.g., XXREPLACEXX), save the document, and then use this script to modify all instances of that keyword with some text of your choosing.
The script
Before going any further, I should mention a few caveats. First off, the script only works on template documents saved in the .docx file format, available in recent versions of Word. Secondly, the script uses a few standard command line tools, so while it should work out of the box on a Mac or Linux system, it won't work in Windows without additional software (such as Cygwin). Finally, the script itself only generates one file at a time, so if you want to perform a series of merges, you'll need to do a little extra work. I'll show an example of that at the end of the post.
To use the script, start by downloading it from here (right click on that link and choose "Save As..." if the direct link is causing trouble) and keep track of where you save it (e.g., on your Desktop). You'll also need a template Word document, either by creating your own, or by downloading and modifying this one. Once you've downloaded the script and created a template, open a terminal window (such as Terminal.app in the Applications folder on a Mac) and change directories to the location of the script. If you saved the script to your Mac Desktop, use the command:
cd ~/Desktop
You then need to make sure the script is executable with the command:
chmod +x ./replaceText_Word.pl
To run the script to generate a new file with the substituted text (e.g., Copy #001), use the command:
./replaceText_Word.pl template.docx out.docx 'Copy #001'
This command will replace all occurrences of 'XXREPLACEXX' in template.docx with the phrase 'Copy #001' (even if it shows up in a watermark), and save the results to out.docx. If you want to use a different replacement pattern (rather than XXREPLACEXX), feel free; just type in the pattern as an additional input to the script (after 'Copy #001').
Wrapping the script
With the above commands, you should be able to manually create a series of documents with modified text. If you want to generate a lot of files, however, you might want to write a little wrapper around the core script. For example, to generate 5 different copies, numbered 001 to 005, you can use a for loop in the terminal:
for i in {1..5}; \
do ./replaceText_Word.pl template.docx out00$i.docx "Copy #00$i"; \
done;
If you've done a little scripting before, you can easily imagine writing basic wrappers to perform more complicated merges with this (even more advanced than what word supports). If not, the above commands should be enough to get a functional watermark merge. If you run across any problems, feel free to let me know in the comments. Enjoy.
|
If you liked this post,
Please share it:
|
Christmas is just a few days away, and businesses are scrambling to squeeze every last penny they can from desperate shoppers. This leads to many aggressive and annoying marketing campaigns (enough with the diamond commercials already), but none are more annoying than spam coming from companies of which I'm already a customer.
Let's back up and talk about why spam works for some companies. Spam works because there's virtually no cost involved. Sending out hundreds of thousands of marketing emails is basically free. The recipients of the emails will either read them, or delete them, but either way there's no way the sender can lose. That's how normal spam works, but the equation changes when the the recipient is already a customer of the spammer. In that situation, the spammer can lose the customer's trust, which is worth much more than whatever they're offering in the unsolicited marketing email. There is a very real cost to spamming your existing customers.
Companies spam their users throughout the year, but it gets way worse in November and December. Companies that I otherwise would have trusted like Netflix, Pandora, and Amazon have all sent multiple spammy emails to me this past month, and I want it to stop. Christmas is not an excuse to spam your customers. If you're involved with the marketing at your company, please keep this message in mind. There's nothing more valuable than your relationship with your customers, so please don't jeopardize that just because Christmas is coming up.
You obviously shouldn't spam anyone, but if you're going to, at least spam people that aren't already giving you money.
Side note: when I clicked on the "unsubscribe" link from Pandora's spam, I was taken to a web page with the following message: "Your request has been processed and the email address has been removed from the list 2010_11_17_New_Artists." What a worthless confirmation message.
|
If you liked this post,
Please share it:
|
In yesterday's post about things you can't yet do in a web browser, Tyler mentioned that code development is one of the major existing deficiencies in web-based software. While it is by no means a full solution (or even a partial one, really), Codepad.org can be an occasionally useful tool for development in a number of popular languages.
Similar to previously mentioned Regexr, Codepad lets you upload or write a snippet (or larger piece) of code. This code is then run on the server, generating a page with a view including the source code, as well as the output of running the code. The resulting page is posted to a webpage that you can then share with collaborators (great for getting some debugging help). An example page for a php "hello world" script is shown below.
Codepad defaults to making all of your code public, but it also provides a "private" option that is protected by a cryptic url that you can share with others (it's worth noting that this really provides on a minimum level of privacy). For bigger projects, or for a compiled listing of related pieces of code, you can also set up a project page (again, as either private or public).
There's certainly nothing particularly flashy about the codepad, and it isn't something you're likely to need every day (even if you are a developer). For those times when you need to get a little help with some code, want to share some code with another collaborator, or just do a little debugging on a machine without access to a particular programming language, codepad is great.
|
If you liked this post,
Please share it:
|
As you may have heard, Google has been building a new operating system called Chrome OS. It's not finished yet, but they just sent out a number of test laptops so that early adopters can start trying it out. I'm not going to bother writing my thoughts about the OS (because I haven't used it yet - Bracken might have an upcoming post about it though) but all you really need to know is that it's an operating system like Windows or Mac OSX, but the entire OS is a web browser.
You read that right. It's a computer without anything other than a web browser. You boot it up, log in, and see a new browser window. There are no programs to install, no files to worry about, and none of the complexity you get with traditional operating systems. While it sounds like an interesting idea, Chrome OS can only replace the things you use your current computer for if those things happen in a browser. If you can't do it online, you just can't do it in Chrome OS.
With this in mind, I've been trying to think about what I use my computer for that can't currently be done online. I use web-based software for email (Gmail), documents (Google Docs), calendar (Google Calendar), listening to music (Pandora and GrooveShark), organization (Workflowy), plus all the normal web stuff like Facebook and Google Reader. That covers about 95% of all my recreational computer use, but there are some holes missing:
Image/Video/Audio editing
Despite all the advances in online applications over the past few years, there are some things that are just too sophisticated for a browser to do well. Media editing is one of those things. Sure, there are websites such as aviary.com that offer some basic tools for image and audio editing, but they're nowhere near as powerful as tools like Photoshop, and they're all pretty poorly designed so I wouldn't want to use them anyway.
Documents with complex formatting and layout
Google Docs works just fine for my normal word processing, but sometimes I need to make something that looks a little bit nicer like a brochure or flier. Google Docs just isn't able to handle precise layouts. If you want something designed right, you're unfortunately stuck using something like Microsoft Word or Publisher.
Development Tools
This probably isn't an issue for most people, but I spend much of my time writing code, interacting with databases, and testing software. I rely on traditional applications (PowerPHP and SQLYog) for my development, and I'd have a hard time moving to the online equlivalents. One thing that would be particularly difficult to do in Chrome OS is test how websites behave in browsers other than Chrome. I have to test my code in Internet Explorer, Firefox, Safari and Opera. I don't think that would be possible using ChromeOS.
File Storage
This is a kind of weird one, because I currently use Dropbox to store absolutely all of my files online. The problem is that Dropbox's online interface is clumsy. This isn't Dropbox's fault, it's due to a fundamental limitation with browsers. So while I'd love to continue using Dropbox, I need some native-feeling application to make it easy to interact with those files and open then with the correct web apps by default.
So that's my list. Just four things.
File storage should be a piece of cake for Google to figure out. Tools like LucidChart prove that browsers are capable of handling the complex layouts in documents (but for now those layouts are restricted to flowcharts, and other specific types of documents). So basically, I just need image editing and development tools before I could become 100% web-based. I don't really expect either of these areas to move to the cloud anytime soon, but there are many people out there who aren't professional designers or programers (what? you mean most people don't build software for a living?) and those people are probably just fine with the existing online tools.
What I'm getting at here is that I think we're closer than many people realize to being able to perform absolutely all of our computer use from within a browser. What do you think? What native apps couldn't you live without?
|
If you liked this post,
Please share it:
|
When designing and optimizing just about any website, the conversion rate is one of the most important statistics to focus on. Basically, the conversion rate of a page is just the percentage of visitors to your site who complete a particular task just as signing up for your service, clicking on a story on your blog, or buying one of your products. Conversion rate optimization is the reason that the "call to action" (like that ugly orange button in the top corner of this post) is such a prominent feature of many websites (and many advice pages about optimizing websites). But what if your website is really just a way to drive people to your physical place of business. The truth is, conversion rate optimization isn't really that different in these cases, but for some reason, these types of sites tend to be really awful about it.
Every site has online goals
The first thing to note is that even if your site is primarily meant to direct traffic to your physical location, there are still plenty of ways you might want to convert visitors in the purely digital realm. If you're able to set up an online store or ordering system (for example through a service like Shopify), that should definitely be your first option. If you're not up for taking your business all the way online, however, you might encourage visitors to contact you via email or print out a coupon. All of these things are simple interactions that your site should encourage your visitors to perform, and, importantly, that you can easily track and optimize through your site's analytics.
Conversion rates in the real world
If you're really focused on getting people to your business, however, you're going to need to expand the concept of a conversion rate a little bit. Whereas traditional conversions involve getting a user to click a button or fill out a form, physical conversions require a lot more work for the visitor and are a lot harder to track. Other than that though, the principles are basically the same. To get people to sign up through a form, you need to provide motivation (i.e. convincing and easily digestible information about why they should sign up for your shiny web service) and to make the process as easy as possible (i.e. an obvious button to click, a limited number of fields to fill out, etc). So how do you adapt those same principles to in-person conversions?
Make a convincing case, but don't hide relevant info
The first part of the equation is basically identical: you need to convince your online visitor that there's a reason for them to come to your store. Much like with online conversions, pictures, descriptions, and reviews can go a long way towards making this case, but depending on what your business does, the chances are good that there's at least one more thing that really should be online, that is very often omitted: the price. If you're a store that sells lots of products, a full price list probably isn't feasible, but if you provide a single service or a small number of them, there is no excuse for leaving your prices off. I recently was checking out gyms near me, and almost none of them had any pricing information online. As a result, I ended up basically focusing on the small number of gyms that did publish there prices. I don't think the ones that published their prices were probably any cheaper than those that didn't, but I didn't want to make the effort of calling or visiting in person to find out (yet). Maybe that makes me lazy, but I guarantee you, the visitors to your website are lazy too. They're going to find out your prices eventually (or not bother looking any further), so you may as well get it out there now.
Make the trip as easy as possible
The second part of the equation (making it easy to convert), is again not that big of a departure. For a purely online experience, easing the conversion process means having a big call to action and simplifying the process as much as possible. For to-the-store conversions, you also need to make it as easy as possible for people to get there. If you want people to phone in an order, put your phone number in a prominent place that's easy to find. If people should be visiting you, do the same thing with your address and driving directions. If there's information people need before visiting, make sure it's easily accessible. It's amazing to me how many restaurants hide their phone number and address on a "contact us" page. Even menu's are often difficult to find. If I was designing the site for a restaurant (and wasn't allowed to include online ordering), I'd have some pictures of delicious looking food; an obvious link to the menu, and the phone number and address/directions front and center on every page.
All of this stuff sounds pretty obvious, I'd imagine, but spend some time looking around at the websites of local businesses. It is amazing how many local sites hide the information their customers care most about. On the flip side, if you do manage one of those sites, just a few small tweaks can put you head and shoulders above the competition in converting online visits to real life ones.
|
If you liked this post,
Please share it:
|
Yesterday Bracken wrote about how a Dropbox user was rewarded for submitting a detailed bug report to the company. This got me thinking about how much I appreciate it when users do a great job of telling me about a problem they find with software I've built. When a bug report is detailed and informative, that makes solving the problem much easier and everyone wins. I'm pretty sure that most people don't really understand what makes a good bug report, so in this post I'm going to explain exactly what you can do as a user to make the bug-fixing process as fast and smooth as possible. First, a few random thoughts:
- There's no such thing as bug-free software. We try to make the software as solid as possible, but there will be bugs from time to time, and everyone (users and developers) should be aware of that.
- If you run into a bug, don't assume the company already knows about it. If everyone assumes someone else will submit the bug, then the company will never end up hearing about it and it never gets fixed.
- Sorry if I sound entitled or demanding in this post. I don't mean to imply that you have an obligation to submit bug reports. Obviously bugs are the company's problem, not yours, but I'm just trying to explain how you can do the company an awesome favor if you're so inclined. It's absolutely your right to ignore bugs and go about your business.
What should you include in your bug report?
Ok, so what makes a great bug report? The two main things that programmers want you to explain when reporting a problem are what is the problem and how can I recreate the problem. If we can't see the bug for ourselves, there's virtually no chance that we can fix it. With that in mind, if you're interested in getting your problem solved as fast as possible, here are some things we'd like to learn from your bug report:
- Who are you? Sometimes users send us emails from addresses we don't know about and they don't state their full names. If the problem is specific to your account, we've got no chance of solving it without knowing who you are.
- What are you trying to accomplish? We need to be able to narrow down exactly where the bug is occurring. Emails that say "the website isn't working" aren't very helpful (unless the entire website is in fact down). It helps us so much to know exactly what you're trying to do that isn't working (logging in, importing data, etc.). The more details, the better.
- In what way is the software failing? Let's say you're trying to log in and it isn't working. Does that mean you're seeing an error message? Maybe the form is forwarding you to a blank page. Maybe nothing happens at all when you click the button. It helps us to know the exact behavior you're seeing when the problem occurs.
- What web browser are you using? Every web browser has different quirks, and most bugs only show up in one browser. If you're not sure which browser you're using, this site will tell you.
- What is the URL of the web page you're on? Sometimes bugs will only occur under weird scenarios. We can find the bug much faster if you link us directly to the page you're on. Just copy the URL from the address bar in your browser, and include that in the bug report.
- Do we need to do anything special to recreate the bug? If the bug only happens after you perform a specific series of actions, that's great information for us to know. We want to know what links you clicked, what buttons you pressed, what information you entered, etc. that caused the bug to occur.
- Do you have a screenshot? If you really feel like going above and beyond, take a screenshot of your computer screen and send us the image. That way we can see exactly what you're seeing so there's no confusion about what's going wrong.
If you submit a bug report with all (or even most) of that information, you'll be a programmer's best friend. These details could potentially turn a full-day project into a five minute fix which means you get working software sooner, the programmer doesn't hate life (fixing bugs is the worst part of the job), and the programmer can spend more time working on new features for you instead of fixing old ones. It's really a win-win-win.
I hope you found this helpful. As a bonus, here's an example bug report I wrote up about a problem I'm having with gmail. This provides all the information they should need to fix the problem quickly and easily:
Hi, I'm running into a problem when I try to set up email delegation in my Google Apps account. After logging in, I navigate to https://mail.google.com/a/lessannoyingsoftware.com/#settings/accounts by clicking "Settings > Accounts > Grant access to your account > Add another account" but when I click on that link, it pops up a blank window.
I've tried this from my normal gmail account (redacted) and it worked fine (i.e. the window isn't blank), but it's not working in any of the three Google Apps accounts I've tried (redacted, redacted, redacted). I've tried this using Chrome 8.0.x, Firefox, and IE7 and they all have the same problem. I'm using Windows XP.
Here's a screenshot:
Let me know if you need any other information. Thanks for the help.
-Tyler King
|
If you liked this post,
Please share it:
|
Unless you've been hiding under an Internet rock for the past few days, you've probably heard by now about the massive security breach of the similarly large blog network Gawker.com. If you want a full recap of what happened (and how, as far as it's understood right now), the Firewall blog over at Forbes.com has one of the better rundowns I've read. Separate from the huge embarrassment for Gawker, there are plenty of lessons to take away about both online security and about handling problems in your company. To round things out a bit, I also wanted to touch briefly on some great customer service from the cloud-based file syncing utility Dropbox. Coincidentally, the story comes courtesy of Gawker Media blog, Lifehacker. But before we get to the good, lets handle the bad news.
Bad Internet
Just to make sure we're on the same page, it's worth reviewing what happened at Gawker. As far as people can tell so far, a group of hackers intent on gaining access to Gawker's database and account info were able to do so through a combination of brute force and technical effort on the part of the hackers, and some pretty severe mistakes on the part of Gawker and it's staff. In addition to the user account data that was compromised, a huge amount of confidential Gawker information -- including source code, in progress designs, and private chat logs, all spread across a number of independent services -- was accessed and published. While it's not exactly clear how so many different accounts were compromised, it seems to be at least partially due to Gawker employees (including the founder, Nick Denton) using poor passwords, using the same passwords at multiple sites, and talking about account information including usernames and passwords in private chats.
In addition to demonstrating some negative examples of password policy, the Gawker breach demonstrates how wide-ranging the consequences of a poor policy can be. Chances are you're not the head of a massive blogging network, but that doesn't mean that having your own account compromised won't negatively impact any number of people that you work with or know. Take a second to think about how much information is stored in, for example, your email account, and it's easy to see how even one chink in the armor can spread very quickly. If you happen to have a Gawker account, you may be feeling a bit of the brunt directly right now. Despite their being encrypted, many of the passwords on Gawker accounts have already been cracked via brute force attacks, and anyone who uses the same password on other major sites may be at risk. As far as I can tell, my Gawker password hasn't been cracked (and it was unique to Gawker, in any event), but I've received two separate password lockout notices from LinkedIn that I'm guessing are a result of Gawker's breach.
On top of all the security problems, Gawker's handling of this very serious situation has been rather poor. All indications are that initial signs of a security breach showed up over a month ago, but were basically ignored. More troubling is that even after the signs of the breach were obvious (starting this past weekend), Gawker has been rather slow, and not entirely forthcoming about the full situation to it's users. Gawker claims they've been notifying their extremely large userbase as soon as possible, but I didn't receive email notification until today. Furthermore, while Gawker's blogs have been fairly good about informing users how to protect themselves (changing passwords, canceling accounts, etc), there's been almost no discussion of the full scope of the breach. Obviously there are security and protection issues that Gawker needs to consider, but the overall lack of notification and full transparency with it's userbase has been yet another example of what not to do.
Good Internet
To cleanse the palate a bit after all the Gawker mess, I just wanted to mention a small, but cool, piece of customer service, courtesy of Dropbox (and reported on Lifehacker). Basically, a Dropbox user filed a detailed bug report with the service. Some time later, without asking for it, or even being notified, that user had his Dropbox quota increased from 5 GB to 25 GB. Aside from this being a nice thing for Dropbox to do in exchange for a user contributing to the development of the software, I just think it's a pretty well executed move for Dropbox.
In addition to the good will from the user (chances seem good he'll continue to report any bugs he runs across), that good will spread quickly around the internet (in the comments of the LH post alone, two users explicitly mention that they're submitting bug reports they hadn't gotten around to). As a formal, stated policy, paying for bug reports would almost certainly result in a lot of worthless bug reports, and would lead to more dissatisfied customers, I'm guessing, than the low-profile approach used her. On top of all that, rewarding someone for finding a problem with their product really highlights the way Dropbox values their customers' feedback, in a way that many more business should.
Anyway, hopefully that leaves you nicely ambivalent on the Internet and inhabitants thereof.
|
If you liked this post,
Please share it:
|
Are you using Google Chrome as your web browser yet? If you're not, you should be. If you are, then you have a brand new way to find awesome web apps. Google just released a new online store called the Chrome Web Store. It still has a long way to go, but I think it's a huge step in the right direction for Google, and I encourage you to try it out.
So what is the Chrome Web Store? It's basically just a collection of web-based applications that you can browse in Chrome and "Install" on your computer. You might be wondering how installing a web app works since they're not actually running on your computer. The simple answer is that you're not really installing anything, you're just saving a bookmark to the webapp on your "new tab" screen in chrome. This might seem like a stupid abuse of the word "install" but I think it's actually a very clever way to solve a common problem with web apps. Which brings us to...
What I like about the Chrome Web Store
Because web apps are so new, many users don't really understand how they work. They understand that they have to go to web sites to sign up for a service, but they then assume that the application is installed on their computer somehow. I've dealt with a number of customer questions at LAS where people are sure they installed our software (which isn't possible) and now they can't seem to find it on their computer.
What the chrome web store does is clear up this confusion by adopting old-school terminology with new-school technology. If people want to think they're installing apps on their computers, I'm willing to play along. With the Chrome Web Store, these non-savvy users can get the familiar experience of shopping at a store and installing an application, and there's a nice big link to the app in chrome so that they can always find it again. This may seem really worthless to you, but as a software developer, I think it's a very cool approach.
The other great thing about the Chrome Web Store is that it changes how web apps are discovered. Most things you buy online are very easy to find and evaluate because of the powerful search and extensive reviews from sites like Amazon. If you want a new tv, just go on Amazon (or any number of other sites) and compare all the different options. But web apps don't have any sort of online marketplace. If you want to try new accounting software, you have to do a Google search for "Accounting Software" and hope that you like what you see. There are no trustworthy reviews. There are no real comparison tools. This leads to a broken ecosystem where the rich get richer. The established companies are already at the top of search results, so that's all anyone ever sees when they search.
Now with the Chrome Web Store, web apps finally have a real marketplace. The quality of a product is now more important than a company's marketing budget because users can compare many different apps from the web store, and see (relatively) impartial user reviews. It's a very exciting direction for small software companies and I think it will really improve the quality of software.
One last thing I want to mention is that the Chrome Web Store might be able to turn the tide in the web-app-vs-native-app battle. As I've written about before, I really hate how Apple has convinced everyone to use native (i.e. non-web) apps. Apple is doing this so that they can take a cut of all software sales on their platforms, but it's really a bad thing for consumers. The Google Web Store offers (or will offer at some point) all the simplicity and functionality of the Apple App Store, while maintaining the openness of the web.
What I don't like
Well, there's not much that I don't like about the Chrome Web Store, but there's a lot of room for growth. This store is clearly still in the early stages, and it could use a little more polish. For example, the categories they use to organize software are incredibly broad and the search isn't very sophisticated, so it's not always easy to find the software you're looking for. I'm sure Google will improve on this over time.
Additionally, because the apps in the store are really just bookmarks to existing websites, it's pretty difficult to explain what the Chrome Web Store is. The benefits I described should make sense to developers, but most people (including many tech-savvy friends of mine) just don't get the point. This can be improved by offering more integration options between the apps and the store (such as one-click signups for most services) but for now the store is really just a collection of links. I still love it, but I'm not sure users will see the benefits right away.
Conclusion
I encourage you to start using the Chrome Web Store. Seriously. Right now. For the time being it's a great way to find new web apps. In the future, it may very well make software as a whole more open and accessible to consumers. So please, play your part, and give it a shot: chrome.google.com/webstore
|
If you liked this post,
Please share it:
|
Earlier this week, Google announced announced a new service for enterprise users that syncs an existing Exchange account with Google Apps. In so doing, this service (dubbed Google Message Continuity) provides redundancy in the security and availability of email, contacts, and calendars. It also provides an easier path towards the cloud for companies currently entrenched in an on-premises Exchange system. From a practical standpoint, this seems like it could be an extremely important option for companies that are currently tied to Exchange for historical reasons, or who are interested in moving into the cloud with a minimally perturbative transition. If that describes you, head over to the Postini site (a service primarily known for spam filtering that Google purchased recently), and get started.
For those of us who don't rely on Exchange, Message Continuity still represents an import step, I think, both in what it says about data security and reliability, and in what it suggests about moving away from entrenched legacy systems. Before diving into that, I just want to go into a little more detail about how the system works. Basically, Google Message Continuity wraps around an existing Exchange setup, keeping a cloud-based version of the locally-hosted Exchange server. Generally, users are expected to interact directly with Exchange, but in the event of an outage, either expected or not, users can instead access their account through Gmail directly. At all times, the data is kept synchronized between the two servers. So with that out of the way, why might you care, even if you don't currently use Exchange?
Security and reliability are more than just feeling comfortable
The first thing that I'd like to highlight is that Google is selling this service as a way to bring added reliability to an existing local server. The thing that I find interesting about this, is that I think many companies tend to use Exchange because it is perceived as a "more secure" solution relative to services like Google Apps. I can certainly understand why on premises solutions *feel* better: the data is stored on a server that you have physical access to; if something goes wrong, you're able to take care of it yourself; you know exactly what types of backups you're making and where those backups live.
While all of those things are probably true, none of them mean that your system is actually more secure; it just means that you feel more comfortable about their security. Much like you, I've never been in Google's server rooms, and I've never talked to anyone there about their backup cycle and redundancy, but if I had to place my bets, I'm guessing they're more competent than the local IT guy or I am.
The data that you keep on your computer at home (or business) may feel safer than data you put in the cloud, but between risks of corrupted hard drives, a disaster in your home, or theft (a friend of mine though all of his personal data was secure since it was backed up on three computers, until someone broke into his apartment and stole all three computers), there's a pretty good chance that your data is safer in the cloud.
With this particular option, Google Message Continuity is offering added reliability through redundancy, which can certainly provide you with the best of both worlds. But if you read between the lines, what they're really saying is that your on premises data isn't as reliable as you think it is.
Bridges to the cloud
The other interesting thing about Google Message Continuity is what it says about ways to break out of legacy entanglements. A huge amount of data and infrastructure is currently tied up in closed system, be it in the form of services like Exchange or proprietary data formats like those used by Office, Photoshop, and many other software packages. While these types of closed systems are great for software providers, and occasionally can provide a better user experience, they can also be extremely difficult to leave down the road.
Services like Google Message Continuity, while requiring additional infrastructure at the start, represent a way to seamless transition from old systems to new. In this case, the service provides a specific adaptor between two services (Exchange and Google Apps), but more general solutions exist in other cases. Services like Dropbox provide a similar experience for seamlessly transitioning data between a variety of local sources and a cloud-based system. A number of services also exist to better bridge between Micrsoft Office and Google Docs or Zoho. These types of services are rarely ideal, but if you feel locked in to some kind of legacy system, it's worth looking around for these types of bridges to get out. Furthermore, when choosing new software, it's important to think about what bridges away from those solutions may exist in the future, as your needs change and alternatives become more attractive.
|
If you liked this post,
Please share it:
|
Social media is often credited with revolutionizing communication. You can use Facebook to reconnect with old friends, or Twitter to follow your favorite celebrities. You're always in touch with the entire world. That's a good thing for online communication, right?
I'm not so sure.
Before you accuse me of being a cranky old geezer that can't keep up with the rest of the world, let me say that I'm an active social networking user. I user Facebook to plan events with my friends. I share things that interest me on Google Buzz. I regularly use Twitter's real-time search to figure out what weird things are going on in San Francisco. I believe that social networking is incredibly powerful, and it's not just a fad.
However, I really do think that sites like Facebook and Twitter are killing intelligent discussion online. How? They're killing intelligent discussion by making unintelligent discussion too easy. Five years ago, if you had an interesting thought to share, you'd write a blog post, or go to a message board, or maybe send it in an email. All of these formats encourage thoughtful, complete messages. You start an idea, then develop it, then conclude it. This is how writing has worked for centuries, and for the most part I think it's a good system.
Enter Twitter. Now, rather than writing a full thought, you just spit out 140 characters. Just enough to start an idea, but not enough to finish it. For example, instead of writing this blog post, I could tweet, "are fb and twitter killing discussion on the web? wat do u think?" That's just not an interesting thought. Sure, in my head there's an interesting thought, but the tweet itself is just a meaningless question without context. I enjoy brevity and all, but many interesting ideas need more than 140 characters.
Similarly, let's say you're reading a blog post and you liked it and want to take an action. In the past, you would leave a comment with your point of view. If enough people left comments on a blog, a community would form and the conversation in the comments could be even more interesting than the blog posts themselves. Now what happens? You click the "like" or "retweet" buttons and you move on. Retweeting is so much easier than actually contributing your own opinion, so that ends up being what everyone does.
My favorite example of this is a website called SmallBizTrends.com. It's a very popular blog for small businesses. According to Alexa, it's the 8,000th most popular site on the internet which means it has a ton of readers. And yet when you scroll down the list of posts, you see a ghost town in the comments. I'm looking in at the home page right now and the top three posts have 1 comment each, but an average of 65 retweets. This means that 65 people thought it was worth sharing the posts with their twitter followers, but none of them seemed to think it was worth adding to the discussion. Because adding to the discussion requires actual thought. And In the "micro-blogging" world of social networking, things that require thought are just too much work.
I don't mean to suggest that the social networking companies are to blame. They're just building businesses that encourage fleeting and unsubstantial conversation. Ultimately the users are at fault. It's not Mark Zuckerberg's responsibility to encourage everyone to say interesting things online, but he sure is making it easy not to.
What do you think about all this? If you agree with me, retweet this blog post. If you disagree, like it on Facebook.
|
If you liked this post,
Please share it:
|