Introducing Outsight App
I am proud to introduce a new product. Outsight is a small app which does only one thing: it downloads and displays your 37signals’ Highrise tasks, right from your Mac OS X menubar. Clicking a task will let Highrise know that you have successfully completed the task.
Why did I create this? I found that my primary use of Highrise is reviewing my tasks and act on it. When I am done, I return to Highrise again to check it off. Outsight allows you to quickly glance at your tasks, so you know what you are up to, and save time because you do not have to go to Highrise manually. Next to this, I found that I often get distracted during the process of going to Highrise and reviewing tasks. There is always some interesting e-mail to read, contact details to enter and so on. With Outsight, you are able to really focus on processing tasks.
I think it’s a great small app, but do not hesitate to get in touch if you have problems or suggestions! The easiest way to get in contact is through our Twitter account: @outsightapp.
Will MLKSHK change the image sharing playground?
MLKSHK. The first thing you’ll notice is a very friendly and colorful interface. Signing up is easy, choose your preferred username, password and enter your e-mail address to become a member. You will need to verify your e-mail address and after this you are good to go. I expected a Twitter/Facebook sign in method but from a sharing website on it’s own recreating this sounds logical. It’s an easy process anyway.
Verifying your account will take you to a ‘getting started’ page. This page explains the basics of MLKSHK. I’m really loving the detail of the little texts, the “I’m new and have no profile pic-image” and pretty tiny buttons.
MLKSHK is a platform for sharing images and video’s. It allows you to quickly share stuff with the bookmarklet and browser plugins (they support Safari, Firefox and Chrome). You can follow users that are added to your “shake”. The only stuff you can post are pictures (or images) and video’s with a short description. You can “save” and “share” a post and sharing a post will include it in your own shake. It will be a linked copy, so people can then “save” or “like” it on your shake. The original poster will be mentioned next to your post.
Next to personal shakes, it is possible to start a new shake which is centered on a specific topic, like New York, design or gardens. You can request access to post in a specific shake. Once accepted, you will be able to add posts to these shakes as well. The main editor of the shake will have to accept the stuff you post. An easy way to group and discover images and video’s.
What eventually triggered me to sign up was the MLKSHK blog. The owners of the website, Amber and Andre, explained how they ended up creating MLKSHK. You can read their inspiring story on the MLKSHK blog. It is possible to support them by getting a paid account. With this paid account you will be able to create you own shakes based on a specific topic (as described above).
Short conclusion: nice webapp with a small but nice featureset. It does one thing and it does it well. If you like sharing pictures and want to present them in a nice way, MLKSHK could be your way to go.
Check out my shake: http://mlkshk.com/user/rickpastoor
Stuff I like:
- Refreshing terminology (my shake, incoming for the public stream)
- Colorful and polished interface
- Easy to setup and to start using
- The ability to post pictures around a topic is nice (note: could not test how this works with my free account)
- Note to self: the weekly “what are we working on” list is awesome. Would this work with clients too?
- No options to change my profile, I think this is a good thing
Stuff to think about:
- Ok, it is not Twitter and it has a couple of nice features, but is it worth using next to the 100 other social networks you use?
- Inviting people is not easy (as far as I can see). I am not able to e-mail people about it or import Facebook friends. Sharing about MLKSHK on Twitter would work great as well.
- No search option. If I would use MLKSHK as image resource database, a search option would work great (your pictures are already tagged by the different groups anyway).
- I think MLKSHK could work great for organizations too, but a way to create private shakes would be necessary.
(Source: mlkshk.com)
Pigment for iPhone. The ultimate Freckle companion.
I’m going to admit it, this app is produced with a big “Wrep” sign on it. But: most of the development is done by Mathijs, so please allow me to tell you why I think you should buy and use Pigment.
When we started working, we did no such thing as time tracking. Last year, while working on different graduation projects, we started using Freckle to track what we did and how long that took us. Almost one year ago, we continued working with the beautiful timer standing by, always keeping us in line with what we discussed with our clients.
There was one thing we missed: an iPhone app. Wouldn’t it be great to use your mobile device to record meetings, time spend on the train and other moments your computer is not around? So, we tried to get lucky in the App Store, but no such thing was there. There was no app for that. In his spare time, Mathijs decided to take matters in his own hands. He build what we were longing for: a Freckle timer for iPhone. I think he did great, and I will tell you why.
1. Built for speed
The one thing you do not want is to wait. Wait for your rice to cook, wait for your laundry to finish and wait for your timer to launch. You will find that there are only two times where waiting is involved: while downloading the app and while downloading your projects and tags. The rest of the stuff is done in the background, so your interactions are not interrupted. You can keep doing without what you hate: waiting.
2. Minimalistic
As a developer, the worst thing you can do is build too much features. Adding features is fun, optimizing and polishing stuff can be less fun. The current version of the app is able to record and log your time. That’s it, and it does well. There are some much requested features underway, but trust me, nothing is added while keeping the minimalistic goal in mind. Next to this it does many little things that seem small but are really useful. For example: it auto-suggests tags while typing and keeps the lights on while using the timer.
3. Well designed
I’m going personal here, but I do not like apps that have a completely custom design as much as the designers of such apps probably had in mind. I like what Apple did with my phone and apps that stay close to the look and feel are appreciated. Why? I feel at home, I know how that app will react and Apple optimized their elements for both usability and speed. Pigment combined the best of that with a little color here and there, with a focus on a usable design, focussed on it’s task.
4. Robust
Combine 1 + 2 + 3 and you will get a robust app. I know testing apps with multithreaded functionality can be a pain, but the app feels rock solid while using.
5. Compatible with 97.14% of iOS versions (1)
Most of the apps out there are only compatible with the latest version of iOS. I think this is logical, because working with a recent version of the iOS SDK gives you a lot of advantages. I, however, am still using my beloved first generation iPhone, running iOS 3.1.3. I know this gave Mathijs some headaches, but even if you are using the oldest version of Apple’s phone around, you are able to use the full potential of the Pigment app.
As you can see, I’m pretty excited about this. If you are using Freckle to track your time, you will be delighted by the way the Pigment app allows you to track time without browser around. I am happy to answer questions via Twitter or e-mail. You can also leave your comments below.
Check out Pigment in the App Store.
1) http://www.readwriteweb.com/mobile/2011/01/what-percentage-of-iphone-owners-are-on-ios4.php
(Source: pigmentapp.com)
The road to real Social Television
In my last post, I briefly mentioned my view on TV apps. It would be great to have applications that are not single user focussed, but allow multiple people to interact. To make this possible and usable, a device (let’s say a TV) should be able to identify and automatically connect people that are sitting in the room. Actually, this idea is not new. People have tried it before, multiple times but most of them appear to have all passed away.
I found one interesting article about a team of scientists who created a tool to identify people by their Bluetooth device id. What if your television would do something similar? It would scan the environment for Bluetooth devices and send it to a service. Online, you would be able to adjust privacy settings and connect other accounts. That way, you could connect your Facebook and Twitter account to one or more Bluetooth id’s. This will result into some security issues, because a Bluetooth id is not private, so the service should make sure it is not possible to get access to your profiles by just providing a bluetooth id. It would be great to have an open service, maybe based on the Open ID strategy, where different devices (TV’s, consoles, coffee machines) would connect to and use the Bluetooth id to get data about the user(s) around.
If this would work, could it be the next step into social television? Sitting with a couple of friends in front of the television and automatically be signed in together, so you are able to share and play together.
The next big thing: Television
There you have it: the next separated market. Television. After the whole mobile movement, dynamic, interactive and social television stands a good chance be the next big thing. As a developer, you want to have a head start on this matter. In this post, I will compare the services and platforms of, what I think, will be the three biggest players in this area.
Why so sure?
But first: why am I so convinced? Here is why: people watch television a lot. The figures presented here and here may or may not be true, fact is that a lot of people watch a lot of television. What if that time could be spend more effective or could be more interesting? What if your app could take major role in this?
What about the ‘laziness factor’?
Watching television is easy. It might be that people are just not interested to add functionality and interaction to their television. This is something the developer should keep in mind when building an app.
Content is key
This goes for all solutions: content is the key to win over users. Using your internet television, (paid) high-quality, non-interrupted content should be available. The platform should provide the end-user with easy access to movies, series and other content to rent or buy. For some people, this will turn into a problem. Broadcasters are already blocking content on our players, because more and more people are skipping the regular broadcasts and watch shows and movies on demand.
My view on TV apps
Before we get into the three players, I want to express a little about my view on TV apps. While doing some research for this post, I found that many apps are single user focussed. For PC’s and phones this is normal, and a lot of widgets and apps designed for TV use the same approach. Once the widgets and TV apps are settled a bit, it would be great to see some apps using the ‘watching together’ mode in their software. How interesting is it to update my Twitter status on screen? Viewing my e-mail? I guess not. Maybe I want to see our feeds combined, or have the TV detect us as a group so we can update our status instead of just mine.
The players
Google TV
Let us take a look at the players. There are a couple more of them, but these are the ones I think are the most promising. First, there is Google with Google TV. Google TV is a Android/Linux based operating system for televisions. Currently there is one device (the Sony Internet TV) available which runs Google TV. The second option is to use the separate Sony Internet TV Blu-ray Player, which also runs Google TV.
Pro:
- Full web access, so also possible to develop web app
- Develop applications based on Android platform
- Android Market for Google TV will be available early 2011
- Google owns a lot of commonly used services, like Picasa (pictures) and YouTube
- Google is working hard to open source the code for the Google TV project
- Google TV web apps can use Flash (10.0)
- Applications built for Android devices will also run on Google TV (unless they require hardware or software features not supported by Google TV)
Con:
- The SKD is not yet available, but knowledge of the Android platform should get you started
Yahoo! ConnectedTV
Yahoo! is doing something similar, with ConnectedTV. The big difference with Google TV is that creating widgets requires no more than a simulator and knowledge of Javascipt. I wrote a separate blogpost on how to set up the environment to create your own widgets. The platform has a couple of strong points, they claim to be available on 70 TV models (compared to one for Google TV) and as of March 2011 it will be possible to develop paid TV Widgets. The process is pretty straightforward, develop your widget using the available Widget Developer Kit (WDK), submit it to Yahoo! and if approved the widget will appear in the Widget store.
Pro:
- Paid Widget store (March 2011) available
- WDK and resources already available
- Developing in Javascript, which is very common
- Multiple vendors, freedom of choosing the device you like
Con:
- Not hardware specific, functions and available options to developer may vary depending on used device
- Only widgets, no ‘real’ applications (for now)
Apple TV
There is another player, a rather big one, and that is Apple. With their second generation Apple TV, without hard drive, targeted at streaming, online is clearly a target. The approach of Yahoo! is very different from that one of Apple, where Google TV is more or less comparable. At this moment, there is no way to build your own apps or widgets for Apple TV. It is not possible to browse the web freely, only a select number of services are available.
Pro:
- Second generation device, well tested
- Large user base, users will know app store concept
- Hardware is cheap ($99) and already available
- Apple’s experience with setting up an online app store
Con:
- At this moment no store (or even free apps or widgets) in sight
- Hardware available in only 14 countries
- Movie rentals available in only 14 countries
- TV show rentals available only in the United States
Conclusion
All players are somewhat heading in the same direction. They are all coming up with some way to enable developers to create, publish and sell apps. Yahoo! appears to be well on their way, with an widget market opening in March. Close behind is Google, but they have experience with the Andoid market. Apple does not tell people very much, but my best guess is that they are working on someting similar. Is Apple’s experience with hosting an app store going to help them dominate the TV app market as well?
If you want to be prepared, develop a widget (like I did) for Yahoo! Connected TV and get started on both Android and iOS development. When both Apple and Google come up with SDK’s we have to see where things are going. For now, my bet is with Apple, because of the hardware that is cheap and in place and because of their experience with the current app store. But, they have to pick up the phase, Yahoo! and Google are moving on fast and especially Google with Android as base can do some serious damage to what Apple probably wants to achieve.
Read on
All about apps for television — http://www.appmarket.tv/
Home of Yahoo! Connected TV — http://connectedtv.yahoo.com/
Wikipedia on interactive television — http://en.wikipedia.org/wiki/Interactive_television
Engadget review: Google TV — http://www.engadget.com/2010/10/29/google-tv-review/
Google TV Web Site Optimization Guide — http://code.google.com/tv/web/
Google TV Developer home — http://www.google.com/tv/developers.html
Windows Media Center SideShow Gadgets — http://www.widgetslab.com/tag/sideshow/
MSDN: Developing Applications for Windows Media Center —http://msdn.microsoft.com/en-us/library/bb189066.aspx
Wanted: Developers for Yahoo’s Internet TV — http://www.eweek.com/c/a/Application-Development/Wanted-Developers-for-Yahoos-Internet-TV-354001/
Engadget: Yahoo! Connected TV store will let developers start charging for apps in March 2011 — http://www.engadget.com/2010/11/18/yahoo-connected-tv-store-will-let-developers-start-charging-for/
Blogpost on Google TV: It’s the Platform, Stupid — http://www.networkworld.com/community/blog/google-tv-its-platform-stupid
Jeremy Horwitz shares his ideas on how to make the Apple TV stickier — http://www.ilounge.com/index.php/backstage/comments/making-apple-tv-stickier-your-thoughts/
Ideas on using the Apple TV with apps — http://idea.wirus.com/article/Potential_of_a_Software_Development_Kit_for_the_AppleTV_Scaling_Up_from_Simple_115
Overview of six connected TV offerings — http://searchengineland.com/a-quick-overview-of-six-connected-tv-offerings-53022
Overview of content available via iTunes — http://support.apple.com/kb/ht3069
Get the Yahoo! Connected TV simulator running on your mac
So, you want to try creating your own Yahoo! Connected TV widget? I’m sure I want to, so in this post I will try to guide you through getting the simulator up and running. I used information from Yahoo!, but jotted down the little things that took me some time to figure out. Hope this speeds things up for you!
This page covers the basics, which tells you first to install Virtual Box (which is free) and after this some tool named VagrantVersion. This tool ends up being a Ruby gem, which was my first hurdle, because I’ve never worked with gem. I ended up updating gem first, using the following command:
sudo gem update --system
Using the sude there because mac protects the files gem needs to touch.
After this, install Vagrant this way:
sudo gem install vagrant
This will take a while, but after some time it will tell you that it has successfully installed vagrant-0.6.7. The next step is to get the Vagrant box, as mentioned in the blogpost. Using wget this is easy, if not available on your mac, follow this easy guide.
wget http://h.yimg.com/us.yimg.com/lib/ctv/wdk/wdk.box.zip
unzip wdk.box.zip
vagrant box add wdk ./wdk.box
I made a little mistake here, by executing vagrant init myself. This way vagrant will put in a standards config, which starts a headless machine. This is nice, but for developing tv widgets not really handy, so make sure to add the vagrantfile that is included in this zip file available from Github, created by @jsjohnst.
After this, boot up the virtual machine:
vagrant up
Once the virtual machine is booted, execute the install.sh script, also available from the Github project mentioned.
Also included in the .zip file you downloaded from Github, is a sample widget. The simulator on your virtual machine will search in the /devwidgets folder for widgets to load, so you want to make sure your widgets are located there. Otherwise they will not show up in the simulator.
So far so good, you (and I) are now ready to start making some widgets! Take a look at what I created so far.
Unlink your Twitter from Facebook
I decided to unlink my Twitter from my Facebook. Why? I would like to separate stuff I post work-related from my personal life a bit. Here is what I did:
I found a blogpost (http://www.beekerswords.com/how-to-unlink-twitter-and-facebook) but it is not up to date anymore. Here is how to get to your applications setting:
Click ‘Account’, and then ‘Privacy settings’. At the bottom of the page, click the link to edit the privacy settings for applications. Edit the Twitter application and either remove it or disable it to post to your wall. Now send out a tweet to check if it is working.
You’re all set!
(If you want to optionally post your tweets to Facebook using the #fb tag, you might want to take a look at Selective Tweets)
PHP Intersect and foreach compared
A couple of days ago, I sent out a tweet about the use of the PHP array_intersect function in our framework. Because it saves some lines of code and it looks better, I wanted to know if there is a performance penalty when going for looks.
Basically, this was the situation:
$array1 = array('role12311', 'role22', 'role3422', 'role374');
$array2 = array('role4212', 'role5423', 'role2', 'role3422');
foreach($array1 as $item)
{
if (in_array($item, $array2))
{
return true;
}
}
There are two arrays with roles. One is a list of allowed roles, the other one are the roles that the current logged in user has. The little piece of code goes trough the roles and tries to find a match.
Using the array_intersect function, this can be rewritten as following:
return (sizeof(array_intersect($array1, $array2)) > 0);
Which is a nice (small) improvement. I did a speed comparison for both, which gave me the following results:
foreach, 100000x: 0.269µs
array_intersect, 100000x: 0.299µs
Based on this comparison, using the foreach is faster. Because I wanted to know how the function exactly works I pulled the PHP source code from their website. I discovered that before comparing, they do not sort the arrays. My guess is this is by design, but for my purpose it really doen’t matter. So, as a second test I sorted both the arrays and compared speeds. Some very interesting results:
foreach, 100000x: 0.258µs
array_intersect, 100000x: 0.294µs
Where there is a small difference here, if you use larger datasets, sorting before comparing the arrays is a definite go. Whether you choose to work with array_intersect depends on the type of data you are working with, you should compare them in your specific case.
One could say that optimizing on this scale is not really relevant. I guess, in this case, he would be right.
Display the amount of LinkedIn connections you have
Let’s say you want to show off your network. This time, not your social one, but you want to tell the whole world about your huge business network. With YQL this is very easy. The code below takes care of what I did on the left side of this page. Enjoy!
A PHP framework in the making
Long time since posting here, just wanted to tell you where I am working on. Together with Mathijs (@Mac_cain13) I am working on a PHP framework we are planning on releasing to the public. Currently it features a very clean model-template-controller structure, a form module, a very helpful exception handler, role based security and basic routing options.
Hope to announce more within the next couple of weeks!




