Archive

Archive for the ‘Technology’ Category

Citrix ICA Client (Xenapp) on Ubuntu

August 21st, 2010 No comments

Since I am building a machine from scratch right now, a number of things are becoming minor annoyances. Thankfully the interwebs are alway standing by to provide answers. Since I managed to find answers to this particular issue, in a myriad of different places (all linked to at the bottom of this post), I figured I might as well bring them all into one location. Also, please note, these instructions are usually compiled for folks who know nothing about Ubuntu or libraries, or security certificates etc.. If you are indeed knowledgeable about these things, feel free to skip this entire post.

The best guide for installing the Citrix XenApp Client is on Ubuntu’s forums.

Only follow instructions till the point where it gets to “Download Citrix client 10.6″… those are older instructions and you don’t need to follow them.

After that you will need the security certificates. Otherwise you will get the “you have chosen not to trust” error message when you connect to your Citrix server.

So to avoid doing that grab the certificates from the following locations :

i) Thawte Certs from :

http://www2.slac.stanford.edu/computing/windows/services/citrix/linux_client.htm

Grab both files – thawte-server-ca.crt and ThawteRoot.crt

ii) GoDaddy from :

https://certs.godaddy.com/anonymous/repository.seam

Grab the file gd-class2-root.crt

Download these, then move them into usr/lib/ICAclient/keystore/cacerts

Done. Once that happens, you should be able to open the ica files that Firefox gives you with the wcfmgr in /usr/lib/ICAClient folder.

You might need other certificates – download them and place them in the same directory. You can export certs from Opera if needed (I haven’t found how to do them from FF).

Categories: Technology Tags: ,

How to install Flash on 64 bit Ubuntu

August 21st, 2010 No comments

Note : This post will become obsolete as soon as Flash re-releases its 64 bit Flash application. They did have an Alpha release in the wild, but personal testing led me to believe it was buggy and extremely prone to crashing my browsers (especially Chrome). They apparently felt the same way and have shut it down for now, with the promise of better, stronger, faster, coming soon.

Update : I got an email asking which version of Ubuntu this was. My apologies for not adding that in – 10.04 – Lucid Lynx released in April 2010. Its the LTS version so will retain support till 2013.

Anyways, there’s lots of tutorials out there in the wild, that instruct you to use ia32-libs, and nswrapperplugin via the nswrapper plugin -i method (see end of this post for that method if you need). However there is an easier way.

Anyways, assuming this is a fairly new build. Here’s what you do.
sudo apt-get install flashplugin-nonfree

Restart all your browsers and voila – all is good in the world again. This will automatically install the following packages as well.

flashplugin-installer flashplugin-nonfree ia32-libs nspluginwrapper

If you already have a previous version of ia32-libs installed, this may or may not work for you. In that case, you may be tempted to purge your current ia32-libs, however, be careful when you are doing this, I strongly suggest you only do this on ‘new builds’ that don’t already have a ton of 32 bit programs running that are relying on this. For instance, Skype. If you have already installed Skype on your 64 bit machine, do not remove ia32-libs. Scroll down and try the more manual method.

The more manual method is described in detail in the following blog post : My Science is Better…

For those of you that don’t want to follow the link – its fairly straight forward.

i) Remove all older versions of Flash Plugins
sudo apt-get remove -y --purge flashplugin-nonfree gnash gnash-common mozilla-plugin-gnash swfdec-mozilla libflashsupport nspluginwrapper

ii) Then remove any Flash Libraries
sudo rm -f /usr/lib/mozilla/plugins/*flash*
sudo rm -f ~/.mozilla/plugins/*flash*
sudo rm -f /usr/lib/firefox/plugins/*flash*
sudo rm -rfd /usr/lib/nspluginwrapper

iii) If you haven’t already download ia32-libs and nswrapperplugin
sudo apt-get install ia32-libs nspluginwrapper

iv) Get the latest version of Flash from Adobe : http://get.adobe.com/flashplayer/

v) Untar it.

vi) Place libflashplayer.so (or whatever the filename is then) in a folder that you can access. Preferably put it in /usr/lib/mozilla/plugins. Both Firefox and Chrome look in this folder for plugins. Then run the following

vii) Nswrapper time…
sudo nspluginwrapper -i /usr/lib/mozilla/plugins/libflashplayer.so
sudo ln -sf /usr/lib/nspluginwrapper/plugins/npwrapper.libflashplayer.so /usr/lib/mozilla/plugins/
sudo ln -sf /usr/lib/nspluginwrapper/plugins/npwrapper.libflashplayer.so /usr/lib/firefox-addons/plugins/

Note, that in some cases, this won’t work – and you will get the dreaded error ::
nspluginwrapper: no appropriate viewer found for libflashplayer.so

If that happens to you, try the first approach, and see if that works.

Update [April 2011]
Flash released a 64 bit version in Adobe Labs. Install that if you like. Thus far it seems stable, and not too much of a memory hog.

Categories: Technology Tags: ,

What is this worth?

September 24th, 2009 No comments

In 2008 DHH (of 37signals and RoR fame) gave a speech to StartUp School. It was titled – the secret of making money online.

While I strongly suggest you watch the entire speech – the key part is that everything has a “Price”.

DHH talking about a secret behind a profitable company - "make sure you charge a price"

DHH talking about a secret behind a profitable company - "make sure you charge a price"

He suggests that the secret is to “charge a price”.

The question then becomes, what is the price to be charged – or what is this worth? A friend of mine is running into this issue with a new service he’s developing that will make lives easier for both, his information supplier, and his information consumer. How much this service is worth, is unknown to him though.

The elasticity in price isn’t linear –  (image stolen from redeye VC)

Perfectly elastic - Price vs Demand

Perfectly elastic - Price vs Demand

From the point of view of the corporation/individual who must pay the fee, there are a few things that they will need to consider before agreeing to the fee.

1) Value – what is the ROI on this investment? This usually deals with the hard cost of buying something at $10 a month – what is the value of buying this for $10 a month?

2) Cost – what is the cost of NOT doing something? For example – even if I know that spending $20 for a neon sign isn’t directly going to make me $20 in an attributable way – what does it say about my business if all the other businesses on the block have neon signs?

For a sales lexicon, the words above can be translated into – Greed, and Fear respectively.

If a person/business crosses the initial hurdle – i.e. they decide they want “it” – the next hurdle is whether they build or they buy.

The trade off they are making here,  is time vs money.

For example – if you’d like to sell them something that costs $100

  • that they can do in under 10 hours
  • given that they have 10 hours to spare
  • and they value their time at less than $10/hour
  • and given that there are no other up front costs that they need to expend, or that they have already spent all the necessary up front costs (i.e. hire a developer etc.)

they might make the decision to build instead of buying.

Given all this information, how do you determine the price elasticity of your product, and where the sweet spot along that curve is?

Remember that free is a price as well – and as Josh Kopelman says – it is much harder to move a customer from $0 to $1 than to move them along past that point.

So, how do you figure out what price to charge?

Well, it depends on what your business model is.

If scale is important – for example – similar to a review site like yelp – your product is only valuable at a certain scale, then getting to that size is the most important aspect. Adding friction to that process, will only make it more difficult. That’s why Yelp will pay reviewers in new markets – as a way to reduce friction and speed up the process of making the site useful.

What can you do with the data?

Let’s say that you could charge each customer $10 per month – and this allows you to acquire 500 customers. You will now be making $5000 per month.

Alternately, you could give it away for free, and this will allow you to attract 5000 customers. This means you will make $0 per month from this revenue source. However, to match the previous revenue stream of $5000/month you only need to figure out a way to make $1 per customer per month as opposed to the previous $10 per month.

Potentially having 5000 customers as opposed to 500 customers will provide an increase in something – data, analytics, usability, etc.

Find a way to monetize that data in order to create a revenue stream. Google 411 – is a free 411 service that quickly became the most popular information call in several metro areas. The “data” they acquired was speech patterns and accents. Now, if they wanted to say – create a speech to text product, for say Voice Messages (Already done) then they might be able to find a way to monetize that instead of charging the 411 callers. The more callers, the more data, the more data, the better the auxiliary product. The better the auxiliary product, the easier to monetize, and possible the higher revenue per user to the first service.

Free is a price – it just means that you need to figure out a second route to revenue, and that route need not always be “advertising”

If scale isn’t important, and the value of your product is inherent in its usage (example – the value of a product like Microsoft Word for a writer doesn’t really increase by all that much if all the writers are using Microsoft Word. If the value of this product is not inherently tied to the number of users using it) then the question of what this is worth becomes much trickier.

It is certainly something I will be thinking about for the next few days.

Categories: Technology Tags:

Hope Springs Eternal

August 22nd, 2009 No comments

Every day thousands of people leave behind everything they know, and travel, to someplace else. The reasons behind each move are certainly different, and I can barely talk authoritatively about my own move – but I do know that when you’re at the other end, at the beginning, you look to those that have crossed the bridge before you. You hope to see them in a place where you’d want to see yourself. Here’s the list of people, that folks at the beginning of their journey, are probably looking towards right now….

Hope Springs Eternal

Hope Springs Eternal

Hope springs eternal in the human breast;
Man never Is, but always To be blest:
The soul, uneasy and confin’d from home,
Rests and expatiates in a life to come.

-Alexander Pope,
An Essay on Man, Epistle I, 1733

Categories: Technology Tags:

Ruby Regular Expressions

August 18th, 2009 No comments

For those of you that are involved in scraping via Ruby etc. that require the use of RegEx’s a great site that will be useful is Rubular.

One of the little tricks I discovered today was the use of the ?: in the regular expression.

I’m sure this is old news to most people, but since it was useful to me, maybe it is of use to someone else.

In Ruby, lets say I’m scraping a page, using the scan operator, and if there’s a <H2> I want to grab it, and if there’s an <H3> I want to grab it, and I want to ignore anything inside a <p>. Well, I can make the H2 optional, by placing it in brackets, and throwing a ? after it like so

/<H2>.*<\/H2>/mi

However, now I have the problem of cleaning the gathered data of the H2′s etc. An easier way is this -

/(?:<h2(.*?)<\/h2>)?(?:<H3(.*?)<\/H3>)?(?:<p.*?>)?/mi
Categories: Technology Tags: , ,

Making Soap Requests with Ruby (on Rails even)

August 17th, 2009 2 comments

If you want to interact with another web-service on the inter-webs as we know it, sooner or later you will find the need to make a SOAP call using Ruby.

Today I ran into such a need.

I looked at a few things already out there that could do it, but for the most part, it was overkill.

So I tried to figure out how to roll my own, and this is what I found ::

Read more…

Categories: Technology Tags: , ,

gem install mysql

August 8th, 2009 No comments

If you attempt to
gem install mysql
and run into errors that look like this…

Read more…

Categories: Technology Tags: , , ,

Be Remarkable.

August 6th, 2009 No comments

Seth Godin talks about a number of things here that strike a chord (note, this was at the Business of Software Conference in 2008).

Some quick notes :

  • Be Remarkable.
  • If you’re going to interrupt everybody with an ad, it better be a product that everybody wants. So, you end up with average products for average people.
  • Go to the edges.
  • Build trust

Facebooker error UnableToLoadAdapter

July 31st, 2009 11 comments

Quick note about the latest version of facebooker (as of July 31st 2009)

If you see an error that looks like

/home/brickfactor/facebooker_tutorial/vendor/plugins/facebooker/lib/facebooker
/adapters/adapter_base.rb:43:in `load_adapter': Facebooker::AdapterBase::UnableToLoadAdapter (Facebooker::AdapterBase::UnableToLoadAdapter)
/RAILS_APP/vendor/plugins/facebooker/lib/facebooker/adapters/adapter_base.rb:43:in `load_adapter': Facebooker::AdapterBase::UnableToLoadAdapter (Facebooker::AdapterBase::UnableToLoadAdapter)
from /RAILS_APP/vendor/plugins/facebooker/lib/facebooker.rb:121:in `load_adapter'
from /RAILS_APP/vendor/plugins/facebooker/lib/facebooker.rb:65:in `apply_configuration'
from /RAILS_APP/vendor/plugins/facebooker/lib/facebooker.rb:45:in `load_configuration'
from /RAILS_APP/vendor/plugins/facebooker/rails/../init.rb:6
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:153:in `require'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:521:in `new_constants_in'
... 16 levels...
from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/commands/generate.rb:1
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'



Its because you haven’t configured config/facebooker.yml file correctly, or at all. (Most tutorials etc. have you creating and editing this file after you install facebooker)


Make sure you fill in all the details in the file, and you should see the error no more.

Categories: Technology Tags: , , ,