Showing posts with label Technology. Show all posts
Showing posts with label Technology. Show all posts

Wednesday, October 08, 2014

Post Chromebook



I've been using a Chromebook Pixel as my primary laptop for over a year now and have just gone back to using a Mac. (A 15" MacBook Pro to be exact.) The reason for retuning to the Mac was simple. After a hiatus from developing, I've been finding myself getting drawn back into writing code.

What I'll miss

1) Google Hangout Integration

With the Chromebook, Hangout is a first class citizen. It sits comfortably in the system tray at the bottom right of the screen and can be docked to the edge of the window to have a persistent presence.  Given I work exclusively with distributed teams, this is possibly the most missed aspect of the Chromebook.

On the Mac, Hangout feels awkward in comparison. Maybe it has always been awkward - somehow Hangout doesn't feel like it really belongs on a Mac.

2) Google Drive as the file system

In Chrome OS,  Google Drive is part of the file manager. It could be better as there is still a little awkwardness in the UI, but it still feels like it is part of the OS.  My business is run using Google Apps so this is more valuable that it might at first appear.

On the Mac, I installed the Drive sync app which puts all your Drive files on the local file system and keeps them synced. On the whole then syncing works well. However I'm already finding myself putting files outside Drive - I know that this is down to me, but I never even had the option on Chromebook.

3) The Pixel screen

I was sceptical when I read the Pixel had a 3:2 screen to support better browsing. (A taller screen is more useful for vertically scrolling content like web pages and documents.)  Now I'm back to a wide screen, I rather miss the retro screen size of the Pixel.  Of course a 15" MBP has an excellent screen so I'm not suffering. 

The Pixel screen quality is great, but doesn't set it apart from the MBP - at least not for me.

What I won't miss

1) Google Cloud Printing

I generally don't need to print much, but doing it from my Pixel was never a great experience. With Chromebooks printing is done via Google Cloud Print. My Cannon printer supported GCP - but that was sheer luck.
Cloud Print actually worked quite well however the printer itself was the problem in that it didn't seem to persist the cloud print settings if turned off - and my printer is mostly turned off.  In addition, the printer could only be registered to one Google Account so I had to shuttle documents back and forth far too often.

In comparison Apple's printing support has always served me well.

2) Forced restarts

The Pixel (and maybe all Chromebooks) is 'always on' when in standby mode. This means there is always some battery use, if the laptop is closed but not shutdown.
Often I would find the Pixel had shut itself down overnight and I suspect it is in response to the battery getting too low.

Either way, a computer that shuts itself down without user interaction is a no-no.

3) The Keyboard

There is nothing wrong with the keyboard on the Pixel. It's actually very good.
But after a solid year of intense use, it's starting to creak. And I quite literally mean creak. Some of the keys make a strange squeaking sound.

This isn't too disturbing, but compared with the Pixel, the MBP keyboard is much better. It just feels more solid and satisfying to use.

4) Performance

Given the Pixel has 4GB of RAM, I was often left feeling disappointed with performance. And if the machine is left running for several days, performance degradation was noticeable.

Things you might expect would come up, but didn't

1) Offline Support

I don't find having a full blown laptop much of a benefit when offline primarily and this is because I'm wedded to Google Apps, email etc.

2) SSH / Remote Desktop

I have my Pixel in developer mode so I could easily create SSH connections. For remote desktop I used the xxx extension which works admirably.

So, support for these items isn't noticeably better on the Mac.
Posted - Wednesday, October 08, 2014

Sunday, July 28, 2013

SSH to EC2 via ChromeOS

Using the Chrome Secure Shell Extension to connect to an Amazon EC2 instance is pretty easy, although there are a couple of steps you need to know about.

Creating Public/Private Keys

AWS creates PEM files to make it possible to connect to EC2 instances via SSH.  The Chrome Secure Shell, however, needs a private and public key.

Generating a public key is easy, but you will not be able to do this from ChromeOS. (It is probably possible to do this ChromeOS when running in Dev mode, but I haven't tried it yet.)

Using the following command:  ssh-keygen -y -f key.pem > key.pub

At this stage you will have 2 files: key.pem and key.pub.  Rename the key.pem to just 'key'. This will allow the Chrome Secure Shell to understand that it is the private key.

Create the SSH Connection

To create the SSH connection, open the Secure Shell extension and create a new connection.  Use the EC2 connection string as you normally would - for example, an EC2 instance running Ubuntu would be ubuntu@<ec2 address> or when running an Amazon Linux instance it would be ec2-user@<ec2 address>.

Import the private/public key by clicking in the Import button - from the file chooser select both the key and key.pub files.


Posted - Sunday, July 28, 2013

Friday, January 18, 2013

Project Dates with Google Spreadsheets

I've been doing some project planning using a Google Spreadsheet and came across a couple of useful functions when dealing with dates.
DAYS360(date_1, date_2, type) returns the difference between two dates, for example =DAYS360(A1, A2).
NETWORKDAYS(start_date, end_date, holidays) calculates the number of working days between two dates. You can also subtract holidays by passing a range of dates as a third parameter, for example =NETWORKDAYS(A1, A2, Holidays!A1:A30)
Posted - Friday, January 18, 2013

Tuesday, May 08, 2012

London YouTube/Google TV Hackathon

Here's a photo from our demo at the end of last week's YouTube/GTV Hackathon where our team's effort was voted "Best Google TV App". (I'm on the left...)
In two days we build a Nexus Q-like app for YT video playback. We had multiple Android devices contributing to a video queue which with playback on the Google TV.
We hacked on a few Google technologies to do this: Android, Google TV, Python on App Engine, YouTube APIs, and the new Google Cloud Messaging.
A Big Thanks to Kirill Kounik for all the organisation and Google Campus for hosting the event.


Posted - Tuesday, May 08, 2012

Monday, April 09, 2012

Easily track changes to web pages using Femtoo

Today I discovered that an event I was due to attend had been cancelled. Although the event's website had been updated to reflect the cancellation, no notification had been sent to registered attendees. For the organisers, the explanation "But we updated the website" seemed to be enough. However the thought of having to regularly check for changes to a single web page made me wonder, how far have we really come since the computing of yesteryear?
Media_httpjaspermorga_uwcte

So it occurred to me, there has to be a way to be automatically notified when a web page changes.  And there is - it's called Femtoo.
Femtoo is a project by Tom Carnell that makes it easy to track changes to the contents of a web page.  You can track changes to the entire page or even a single piece of text in the page. Femtoo is packed full of useful features such as simple 'point-and-click' selection of the content to track, multiple notification methods (Email, IM, SMS etc.), a report to highlight what has changed and even buttons for your pages to make it easy for users to track changes.  Check out the full list of features. The only problem now, is that if I screw-up the planning of an event I no longer have a valid excuse!  Maybe I'll just blame Tom.
Posted - Monday, April 09, 2012

Install BeautifulSoup

BeautifulSoup is a library for parsing HTML which makes scraping websites nice and easy.  Unfortunately BeautifulSoup isn't installed with Python...so how do we install it?  Let's see.

Option 1 - "Manual" install

OK, so this isn't very manual but it requires you to download BeautifulSoup and run the setup script.  It's pretty straightforward.
  1. Download BeautifulSoup from here: http://www.crummy.com/software/BeautifulSoup/#Download
  2. Unpack the archive and you get these files: [caption id="attachment_229" align="alignnone" width="300" caption="BeautifulSoup Unpacked"]
    Media_httpjaspermorga_vrcjs
    [/caption]
  3. To install run python setup.py install

Option 2 - EasyInstall

EasyInstall is a module "that lets you automatically download, build, install, and manage Python packages".  Although you have to install EasyInstall itself, it is worth doing to make life easier for yourself when installing modules in the future.  So, the steps are as follows.
  1. EasyInstall is installed as part of them the Python Setup Tools which you can find here: http://pypi.python.org/pypi/setuptools
  2. Install the setup tools package using the clear instructions from above link.  For me on the Mac I ran sudo sh ./setuptools-0.6c11-py2.6.egg
  3. Finally, installing BeautifulSoup is just a matter of running this simple command easy_install BeautifulSoup
Media_httpjaspermorga_egdfg
So, that's all there is to it.
Posted - Monday, April 09, 2012

Monday, November 14, 2011

Dial-up Dinosaurs

I don't download software from Microsoft very much any more, however last night I was fighting with some DLL issues in a VM running on my Mac.
I remember when I first spent time in the Microsoft playground writing olde VB and ASP applications.  Back then, it wasn't unreasonable to expect users to be accessing the internet via a dial-up modem.

Microsoft-download

So I was more than a little surprised to see the Microsoft download pages still, as default, calculated an estimated download time based on a dial-up 56K modem.
I'd really love to know how many people download anything from them using such a retro connection type.  Actually, I would even expect a lot of people have never heard the little chirp of a modem as it goes through it's handshaking process.
Posted - Monday, November 14, 2011

Thursday, November 10, 2011

Installing Sublime Text 2 on Ubuntu

Sublime Text is a nice simple code editor.  I was looking for a good way to install it on Ubuntu 11.10 and came across the answer at commandlinefu.com:
1. Add the necessary repository
add-apt-repository ppa:webupd8team/sublime-text-2
2. Refresh repositories
apt-get update
3. Install
apt-get install sublime-text-2

done.
Posted - Thursday, November 10, 2011

Wednesday, November 09, 2011

Ubuntu 11.10 goes Hollywood

Out of the box, my unbutu 11.10 install wouldn't play DVDs (the movie kind, that is).  Well, the remedy to make 11.10 fall in love with Hollywood is to instal libdvd...from the terminal of course:
wget -c http://packages.medibuntu.org/pool/free/libd/libdvdcss/libdvdcss2_1.2.9-2medibuntu4_amd64.deb

sudo dpkg -i libdvdcss2_1.2.9-2medibuntu4_amd64.deb




Et voila.
Posted - Wednesday, November 09, 2011

Saturday, July 09, 2011

jQuery and Samsung Smart TV

Some Background
Samsung's Smart TV environment supports apps built using web technologies (html/css/javascript). It also has a proprietary browser based on Gecko called Maple.
The nice thing is that the browser supports cross site scripting (XSS) so you can easily pull data from any web service into your Samsung app running on a TV.

jQuery, Well Mostly
Samsung were also nice enough to include jQuery as a pre-installed library within the environment. Some slightly wierd syntax triggers a script to be loaded from the app's runtime environment rather than the app's own files:
<script type='text/javascript' src='$MANAGER_WIDGET/Common/jquery.js'></script>
This is all well and good, but it turns out that this version of jQuery, 1.4.2, is a little out-of-date.  If you want to take advantage of bug fixes and performance improvements a later version of jQuery should be used.
This was great, except that when I started using jQuery 1.7.1, all my $.ajax calls stopped working - in fact they were throwing a cryptic error with jqXHR.status = 0.

XSS Pitfalls and Rescues
Because XSS is supported by Samsung's embedded browser, it too me a while to identify that this was the source of the problem.  However in this case jQuery was the culprit rather that browser security.
It turns out that as of jQuery 1.5, jQuery's ajax module itself blocks XSS, irrespective of what the browser supports.
Luckily the solution is simple.  Just add the following to be called when the app loads:
 $.support.cors = true;
Posted - Saturday, July 09, 2011

Wednesday, March 09, 2011

Disk burning...the command-line way

Today I needed to burn an iso image to a dvd.  Now that I am using Linux again, I wondered what the command-line way to do this would be.
One solution is to use wodim with a command like:
wodim dev=/dev/cdrw -v -data cd_image.iso
For a more complete run-down of how to do this and other useful tasks like creating an iso, check out this ubuntu help article: https://help.ubuntu.com/community/CdDvd/Burning
Posted - Wednesday, March 09, 2011

Monday, May 10, 2010

Hello Homebrew

Installing some development tools and libraries on a Mac can be a pain. (In particular, I'm thinking of the woes of installing MySQL as I write this!)
So I was pleased to come across Homebrew when installing MongoDB.  Homebrew installs with a one-liner ruby script, but it is recommended that Fink and MacPorts are uninstalled first.

So to uninstall Fink it is simply enough to remove the /sw directory (sudo rm -rf /sw).  For MacPorts there is a little more cleaning to be done.  Firstly installed ports can be uninstalled by executing sudo port -f uninstall installed.

Then the following directories need removing by running:
sudo rm -rf \
/opt/local \
/Applications/DarwinPorts \
/Applications/MacPorts \
/Library/LaunchDaemons/org.macports.* \
/Library/Receipts/DarwinPorts*.pkg \
/Library/Receipts/MacPorts*.pkg \
/Library/StartupItems/DarwinPortsStartup \
/Library/Tcl/darwinports1.0 \
/Library/Tcl/macports1.0 \
~/.macports


Done.
Posted - Monday, May 10, 2010