The server configuration for ventrilo isn’t very well documented.
Here’s the settings available in the ventilo_srv.ini, what they do along with some recommendations.
Name=Server 1
This sets the name of the server.
Rename the server to whatever you like.
Phonetic=Server 1
Ventrilo has a voice synthesizer that will read the server name.
This setting set how Ventrilo should pronounce your server’s name.
Auth=0
This setting determines if usernames and/or passwords are required to logon to the server.
“0″ Anyone can connect (Public Server)
“1″ Users much have the Global password, set below with ‘Password’
“2″ Only pre-configured user accounts can connect to the server.
Duplicates=1
Allows or forbids duplicate user names.
Set to “0″ to require each user to have a unique user name
AdminPassword=
This is where you set the password to access administrator rights.
It goes without saying, don’t give this to normal users.
Password=
You set the global password clients will need to connect.
Users with specific account don’t need this password
SendBuffer=0
Sets the size of the TCP outbound buffers. “0″ defaults to 131,072 bytes. Probably best to leave this setting as is.
RecvBuffer=0
Sets the size of the TCP inbound buffers, also best to leave this as it is unless you’re an advanced user.
Diag=0
This setting toggles diagnostics for developers, leave set at “0″.
LogonTimeout=5
Specifies how many seconds a client has to log in to the server before the user is disconnected.
Once logged in, the user is fine.
CloseStd=1
This setting deals with running the server as a background service.
“0″ does not close handles while “1″ will close handles. In most cases this should be left set to “1″
TimeStamp=1
Enables or disables times stamps in console messages.
If you are interested in knowing exactly when messages occurred, set this to “1″
PingRate=10
The interval in seconds that the server pings the client.
The default is 10, this seems a little overkill to me so I set at 30
ExtraBuffer=0
Gives additional buffer space to outbound client data streams.
“0″ sets the default to 128,000 bytes.
There’s no real need to alter this, the default allows is plenty.
ChanWidth=0
Sets the number of possible sub-channels that can be created.
“0″ means no limit.
ChanDepth=0
Sets the depth at which channel nesting can go.
Nested sub-channels are sub-channels that retain attributes of the main channel from which they were created.
“0″ sets the maximum at eight.
ChanClients=0
Limits the number of clients in a channel.
“0″ sets no limit.
DisableQuit=0
Enables or disables someone with administrator rights from remotely instructing the server to exit.
“0″ Allows administrator to turn off the server
VoiceCodec=0
Sets which codec should be used by clients.
Refer to the table below to determine this setting.
Generally set to Speex (3) or GSM (0)
VoiceFormat=1
Quality setting for the VoiceCodec used, again refer to the table below.
This can drastically affect the bandwidth required by the server.
Total bandwidth required can be calculated using the following:
(Bytes * Number of people talking) * Number of people connected
SilentLobby=0
Allows (default) or forbids voice in the lobby.
AutoKick=0
This setting determines how long, in seconds, that a client can remain connected to the server.
“0″ sets no limit.
| VoiceCodec | VoiceFormat | Description |
|---|---|---|
| 0 | 0 | GSM 6.10 (8 KHz, 16 bit) 1625 bytes/sec |
| 0 | 1 | GSM 6.10 (11 KHz, 16 bit) 2210 bytes/sec |
| 0 | 2 | GSM 6.10 (22 KHz, 16 bit) 4420 bytes/sec |
| 0 | 3 | GSM 6.10 (44 KHz, 16 bit) 8905 bytes/sec |
| 1 | 0 | DSP Group TrueSpeech (8 KHz, 16 bit) 1056 bytes/sec |
| 2 | 0 | Lernout & Hauspie (8 KHz, 16 bit) 600 bytes/sec |
| 3 | 0 | Speex (8 KHz, 16 bit, 0 Qlty) 424 bytes/sec |
| 3 | 1 | Speex (8 KHz, 16 bit, 1 Qlty) 620 bytes/sec |
| 3 | 2 | Speex (8 KHz, 16 bit, 2 Qlty) 865 bytes/sec |
| 3 | 3 | Speex (8 KHz, 16 bit, 3 Qlty) 1110 bytes/sec |
| 3 | 4 | Speex (8 KHz, 16 bit, 4 Qlty) 1110 bytes/sec |
| 3 | 5 | Speex (8 KHz, 16 bit, 5 Qlty) 1502 bytes/sec |
| 3 | 6 | Speex (8 KHz, 16 bit, 6 Qlty) 1502 bytes/sec |
| 3 | 7 | Speex (8 KHz, 16 bit, 7 Qlty) 1922 bytes/sec |
| 3 | 8 | Speex (8 KHz, 16 bit, 8 Qlty) 1922 bytes/sec |
| 3 | 9 | Speex (8 KHz, 16 bit, 9 Qlty) 2384 bytes/sec |
| 3 | 10 | Speex (8 KHz, 16 bit, 10 Qlty) 3168 bytes/sec |
| 3 | 11 | Speex (16 KHz, 16 bit, 0 Qlty) 620 bytes/sec |
| 3 | 12 | Speex (16 KHz, 16 bit, 1 Qlty) 865 bytes/sec |
| 3 | 13 | Speex (16 KHz, 16 bit, 2 Qlty) 1110 bytes/sec |
| 3 | 14 | Speex (16 KHz, 16 bit, 3 Qlty) 1355 bytes/sec |
| 3 | 15 | Speex (16 KHz, 16 bit, 4 Qlty) 1698 bytes/sec |
| 3 | 16 | Speex (16 KHz, 16 bit, 5 Qlty) 2188 bytes/sec |
| 3 | 17 | Speex (16 KHz, 16 bit, 6 Qlty) 2678 bytes/sec |
| 3 | 18 | Speex (16 KHz, 16 bit, 7 Qlty) 3070 bytes/sec |
| 3 | 19 | Speex (16 KHz, 16 bit, 8 Qlty) 3560 bytes/sec |
| 3 | 20 | Speex (16 KHz, 16 bit, 9 Qlty) 4344 bytes/sec |
| 3 | 21 | Speex (16 KHz, 16 bit, 10 Qlty) 5324 bytes/sec |
| 3 | 22 | Speex (32 KHz, 16 bit, 0 Qlty) 669 bytes/sec |
| 3 | 23 | Speex (32 KHz, 16 bit, 1 Qlty) 1061 bytes/sec |
| 3 | 24 | Speex (32 KHz, 16 bit, 2 Qlty) 1306 bytes/sec |
| 3 | 25 | Speex (32 KHz, 16 bit, 3 Qlty) 1551 bytes/sec |
| 3 | 26 | Speex (32 KHz, 16 bit, 4 Qlty) 1943 bytes/sec |
| 3 | 27 | Speex (32 KHz, 16 bit, 5 Qlty) 2433 bytes/sec |
| 3 | 28 | Speex (32 KHz, 16 bit, 6 Qlty) 2874 bytes/sec |
| 3 | 29 | Speex (32 KHz, 16 bit, 7 Qlty) 3266 bytes/sec |
| 3 | 30 | Speex (32 KHz, 16 bit, 8 Qlty) 3756 bytes/sec |
| 3 | 31 | Speex (32 KHz, 16 bit, 9 Qlty) 4540 bytes/sec |
| 3 | 32 | Speex (32 KHz, 16 bit, 10 Qlty) 5520 bytes/sec |
ventrilo, server, ventrilo_srv
I though I’d remember Steve in my own way. In ASCII
Grab the code below. Feel free to use this wherever you like, personally I’ve added it to motd.tail.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | ymmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmy dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNmh+o/+++syhmMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy+/-.` -/sdNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmh/` `-sNMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMNy:` ` ` :hMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMdo` ````.```..`````````` -yMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMm:` `...---......--::-.........`` .sMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMd. ./+o+/:-:-:-:::-:/:/:::::-::-..` :mMMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMNo` `/sysyyy+++++sosys+////++/+////:-.` .dMMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMN: `-yhdddhhhyyyyhhddmmdhyo+++oooo+/:-.`` `dMMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMm- .ohdmmdddddmdmNNNNNNmmmmhyssso++/---.`` `yMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMm. .+ddmmmmmmmmNNNNMMMMNNNNNmddhhyso+/:-..` oMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMy /hdmmmmNNNNNMMMMMMMMMNNNNNNmmmdhyso/-..`` oNMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMh` `odmmmmmNNNMMMMMMMMMMNNMMNNNmNmdhyy+:-.``` oMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMo`` `ydmmmmmmNNMMMMMMMMMMMMMMMNmmmmdhhy+:-.```` oMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMd.. .sdmmmmNNNNMMMMMMMMMMNNMMNNmdmmhyyo/:-.```` :MMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMM-.` `.+hmmmmmNNNNMMMMMMMMMNMMMNNmmNmhsso++:--```` `` .MMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMN/:-`.-./hdmmmNNNNNNMMMMMMNNNMMMNNNNNmhyyyso+/:.` ` ``. `NMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMho:`.:+++hddmmmNNNNMMMMMMMMMMMMMNNNNNmmddyyys+-`` `.. sMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMNo//:+oyy/hddmmNNNNMMMMMMMMMNMMMMNNNNNNmNdhyhy+/-.` `.` +hmMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMy:-:--/+s/+ddmmmNNNMMMMMMNMMMMMMMMNNNNNmNmdhdhyso:-` `` ```yMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMM- -:.`.+:/ydddmNNNMMMMMMNNNNMNNMNMNNNNNmmddhdddhs+-.` /MMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMM:`oo--.--shds/::/+ydmmNNNNNNNmdNNNNNNNmdyyysooo/-..`` /MMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMM+-oso-.``ydyoss+/-::::/+ooyhhyyNmmmdys+:..-------.. hMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMd:-..`.-+/hmhhyo+:::`. .`.-/ymNNNd+.````.`- `` `.-` -MMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMNs.`-+:+dsodmhy://hm+-.:/.-oodNMMNh/ `+s/.-:-` `.`` :MMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMd/`-h+shmssddhdNNNNmdhhs+smhohMMNh/`.``/shhhyso/.`-:.`` /MMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMms+:os+hmmdyyyNNNNNNNmdhsdmysNNNNd/`..`-oyddddyo/+y+:.` hMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMyydos/hdmNmmNNNNMMMNmmNmmNNNMMMNd:```.-ohddmmmddhhs/. `NMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMNhmdy:oddmmmmmNNMMNNmNmdmNMMMMMMm/``.-:+yddmmmhyyy+.` ` :MMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMydmh++shhddmmmNNNNmmmmmmNMMMMMMmo-` `-+yhdddhsoo/-` `dMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMNddhyo/+s+yyddmNNNNNmdmNNMMMMMMmo``` :osyhys+::-. ``yMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMNmyy//+ossydmNNNNNmmmNNMMMMMNm/```` `/oyhys+/.`` odMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMhhsoooosshdNNNNNmdmNMNmNMMNNo` .+sys+:-` mMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMhdhdsssyosdNNNNmmNMMMNmmNNmh- .:/++/-` ` `MMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMmhddyyhhosmmmNmmmmmNddh+oo+-` `..::-:` ``` ` :MMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMmhysdhdyydmmdhyooyysoyo/-.... ````..` `.. sMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMdysdmdhdhdd+/:.:/o+//://.`.-` `...`-.` `NMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMmshhdyhyho:.``.-:/++++//::-.` ``+--.-.` oMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMNhydhyyys-` -yhddmNNmmmddys+-`` ``.-:...-` .NMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMNhhs+///.`-shdddmdhosss++++-`` ``-/.` ` ` :NMMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy/-://.:oyhmhhyo:.::-.-..`````.+/` ` /NMMMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMNsho+//:/+symdmmhosssoo:-.`.::-:++` /hNMMMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMs/yy/::/o+shsyNmhhmddy/--.:oys/.. .ymMMMMMMMMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm::/++/ossddysyoo+/+//...--+o+.` `/sshdmNMMMMMMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh-////:+yymhhs//+-:oo/..+:/./. `-odmNNMMMMMMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd`/ooo:-.-oos++oooodNm. -.-.` `-/oymNMMMd dMMMMMMMMMMMMMMMMMMMMMMMMMMMNm+ `/oyoo/.``-smNNNmmhh/ .+ymh dMMMMMMMMMMMMMMMMMMMMMMMMms/-` `:ssso/.-dmNNMNNNmdo. - dMMMMMMMMMMMMMMMMMMMMNdy+` `-:+++:sNNMMMNNNNmy:` dMMMMMMMMMMMMMMMMNNh/. :dNNmmNMMMMMMMNmy/` dMMMMMMMMMMMMNmy+-` .NNNNNNdmMMMMMMMNhso. dMMMMMMMMMNd+- .NNNNNNNNNMMMMMMms:o- dMMMMMNNy/. .sNNNNMNNmNNNNNms/:-` .. dMMNh+- .ydddmNNNMNdhdmmdhoo:.` -- so-` sdNNNNNNNMNhsohhyyoo/.` `` ./hNNNNNMNmNms+ss+//+/:-`` ` yNMmNNMMNNNNmh+oyo/::///-.` :NMMNNNMNmddmddyysyo+///:/-.` yNMMMMNmmyhdhhhyyyyso+/://:..` sNMMMNNmdhshhhyysyyyyso/::-..`` :mNmddhyssyyhhyyyyyhhy+:/::--..``` +hdhyyyyyhyhyyhyyhhhys+//o/::...` |
Credit to aalib for possibly being the greatest gfx lib on the planet.
It’s becoming more and more of a requirement to run different apps under different versions of ruby
One one project I have needed to take the plunge with Ruby 1.9 for unicode support.
This is no big deal really because Passenger and Rails 3 are pretty stable on Ruby 1.9, however, I still have apps that need 1.8 for various reasons I wont go into.
As it stands, Passenger does not support running apps under different interpreters using the apache or nginx modules, I came across this article
I’m going to try and simplify by just giving installation instructions, but if you want a bit more in-depth info as to the reason for this process head on over to Phusion’s blog.
First of all your going to need RVM and passenger module installed on your apache/nginx instance, I’m going to assume you’ve already got this working and the reason your here is to use multiple different versions of the ruby interpreter with passenger.
NOTE: You should be using the interpreter used for the majority of your apps as the base apache or nginx passenger ruby
Lets assume we already have a working app using passenger with ruby 1.8.7 and we want to get another app running but using ruby 1.9.2
So here’s our basic configuration:
1 2 3 4 5 6 7 8 9 10 11 12 | # Basic Apache configuration PassengerRuby /home/user/.rvm/wrappers/ruby-1.8.7-p330/ruby <VirtualHost *:80> ServerName foo.com DocumentRoot /home/user/apps/foo.com/public </VirtualHost> <VirtualHost *:80> ServerName bar.com DocumentRoot /home/user/apps/bar.com/public </VirtualHost> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Basic Nginx configuration passenger_ruby /home/user/.rvm/wrappers/ruby-1.8.7-p330/ruby server { listen 80; server_name www.foo.com; root /home/user/apps/foo.com/public; passenger_enabled on; } server { listen 80; server_name www.bar.com; root /home/user/apps/bar.com/public; passenger_enabled on; } |
Now lets setup bar.com so that it’s using the ruby 1.9.2 interpreter
$ rvm install ruby-1.9.2 # if you don't already have it
$ rvm use 1.9.2
$ cd /home/user/apps/bar.com
$ passenger start -a 127.0.0.1 -p 3000 -d
Update our web server config to use proxy pass
1 2 3 4 5 6 7 8 | # Updated Apache configuration <VirtualHost *:80> ServerName www.bar.com DocumentRoot /home/user/webapps/bar.com/public PassengerEnabled off ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/ </VirtualHost> |
1 2 3 4 5 6 7 8 9 10 | # Updated Nginx configuration server { listen 80; server_name www.bar.com; root /home/user/webapps/bar.com/public; location / { proxy_pass http://127.0.0.1:3001; proxy_set_header Host $host; } } |
Deploying your app, bundle and reload your apache or nginx instance.
Then point your browser to `bar.com` If you’ve followed all the steps, you’ll have foo.com using 1.8.7 and bar.com using 1.9.2
AC Computer Warehouse, who sell new and refurbished laptops and offer an excellent laptop repair service.
They’re holding a contest over the summer and giving away an 8GB iPod Touch to a lucky follower on Twitter or Facebook.
To enter all you need to do is:
- Follow them (http://www.twitter.com/accomps)
- Retweet the following – “I’ve just entered to win an 8GB iPod Touch. Just follow @accomps and retweet http://bit.ly/win-ipod-touch”
Alternatively visit their facebook page for more info.
Ridiculously easy to enter, go over and check it out their site.
This shorty story/dialog will answer questions you may have as to the sudden disappearance of ‘My Nectar’ the Android app
In January I released the ‘My Nectar’ app to give collectors of nectar points quick access to their points balance on their Android phones, the app was listed absolutely free, all my development costs were paid for out of my own pocket, aren’t I just a nice guy. The official Nectar app released in the late summer of 2010 was and still is only available for Apple’s iOS.
Whilst the app is simple, I figured it would be useful for others that regularly collect nectar points, avoiding the need to visit their bloated website, it would be nicely to quickly get information about your points balance.
Feedback after the release was mostly good, a few people complaining it didn’t do much, true but it did to everything it was supposed to, unlike plenty of other apps out there.
Early evening yesterday (16th Feb 2011), I received the following email from Alex Schajer, Head of Digital Technology at Groupe Aeroplan Inc. the Canadian parent company of Nectar
Hello Rob,
Thank you for your interest and enthusiasm in building an Nectar Android
app. We appreciate that you have spent some time developing this app but
we would ask you to please remove the app from the Android Market. There
will be an official Android app available shortly featuring all of the
functions of the iPhone version. Please bear with us whilst we go
through the final rounds of testing.Can you please respond within the next few days to let me know that you
have removed the app from the Android Market,Many thanks,
Alex Schajer
Head of Digital Technology
Whilst the email from Alex was fairly polite, I felt quite insulted, I was trying to do a good thing, helping their customer infact, for absolutely no finantial gain of my own.
Hurt, I sent a brief reply back to Alex.
Sorry but sending this email does not show appreciatation at all. I don’t see the problem?
The android market is an open free platform. Im not doing anything illegal. The app is free and merely helping your customers get some simple information on their android phone.Regards
Rob
After sleeping (or not sleeping) on the Alex’s email, I thought, maybe I was a little hostile with my reply so I followed up my reply with the following
Morning Alex,
I have been thinking about your email last night.
I appreciate that maybe you don’t want people to find my app over yours.As you correctly mentioned, I have spent a considerable amount of my
personal free time producing the app to fill a hole left by the lack
of an Android app, many people have found this a simple useful tool to
quickly lookup their current points balance, I made the app out of
love for shopping and collecting points, for no personal monetary
gain, as you already know, the app is offered on the Android Market
free of charge.I would be happy to remove the app from the Android Market and provide
you with the app’s code,
and transferring ownership of my app to you for a small token gesture from
you of 1000GBPI look forward to hearing from you.
Regards,
Rob
I reasonable request, I’d put a lot of time and effort into creating and supporting the app, I though only fair that if I was to be bullied out of the free open platform for which I’ve paid my $25 developer fee just like the next, I should be given something as a token gesture for my Love for Nectar and helping to improve their service for the Android audience they decided to neglect in the first place.
//update
A few days passed with no reply from Alex
Then on the 21st Feb 2011, I received the following email from Jeremy Henderson-Ross, Legal Director & General Counsel at Groupe Aeroplan Inc.
Rob
It has come to my attention that you have launched a Nectar ‘app’ on the Android Market which uses the Nectar brand.
Loyalty Management UK Limited (“LMUK”) owns numerous registered trade marks for the word “Nectar” in the United Kingdom and the European Union. Details of our registered UK trade marks and CTMs are available online at the UKIPO and OHIM websites. Nectar is therefore LMUK’s brand in the loyalty programme sector and we take the protection of our brand very seriously. As a result, we take a very serious view of your app and use of the Nectar brand and consider these acts to be an infringement of our rights
In addition your app is likely to confuse people into believing that the Nectar app is registered to, operated or authorised by, or otherwise connected with LMUK. This amounts to trademark infringement and the common law tort of passing off and entitles us to commence legal proceeding for trademark infringement and/or passing off to prevent you continuing such use of the Nectar app.
These infringements of our rights are unacceptable to us. We would prefer to resolve this matter with you on an amicable basis without the need for legal proceedings. On this basis we require you to cease marketing and use of the Nectar app immediately.
In the meantime, we reserve all rights in this matter.
Kind regards
Jeremy Henderson-Ross
Legal Director & General Counsel – Groupe Aeroplan EMEA
Ok, now we’re starting to get heavy, getting their Legal Director involved. Yes I used the word Nectar in the app a trademark LMUK own. But seriously I’m not trying to compete, I haven’t started my own Loyalty scheme called nectar, I’m providing a simple app to improve their service since they don’t have an Android app of their own.
I’m don’t know much about trademarks and all that boring legal shit, I’m just a happy, normal guy, who wanted to help the people who use nectar that have an Android phone. I certainly never meant step on anyone’s toes, I’m not charging for the app, I make no revenue at all from the app, it actually costs me money :/ I mean how stupid must I be?
I really don’t see how it’s passing off, maybe If I was using their brand to sell jars of honey or something even then, their trademark only covers use for classes 9, 16, 35 updated in 2002 to include 39. None of which relate to foot products.
ramble ramble ramble…
Jeremy appeared to know little about my app, and it’s function. The app clearly states in the description and in the app’s about screen that it is a 3rd party application and in no way affiliated with Nectar and the other relevant companies.
Jeremy also appeared to have not been made aware of my previous emails to Alex.
I wrote back.
Without prejudice:
Dear Jeremy,
Thank you for your email. As you may or may not be aware, I’ve already sent an email to Alex Schajer and am still waiting for a response.
In response to your claims, if you’ve seen my app, you will be aware that it is my intention to create something that is of use to people who use your service, and certainly never to ‘pass off’ or any ‘infringement of your rights’. Any lay user of the app would be completely aware of this before and during any use of the app.
Designing and building apps is a time consuming and expensive business, and although I am not benefiting financially from this app, it has still cost me money to develop. I would be willing to remove the app from the Android Market if you were to make a small token gesture of remuneration for the effort I’ve put in to the design and build of the app to date. As I have said to Alex Schajer, if you pay me £1000 I will remove the app immediately, and will even give you the source code should you wish to use it for future development.
This token sum will bring the matter to an amicable close and we can all carry on our business as usual.
I look forward to hearing back from you.
Kind regards,
Rob
Reiterating my earlier proposal made to Alex for a small gesture as a thank you for putting my hard work and time into improving their service.
Jeremy replied swiftly
Rob
I am aware of your previous email correspondence with Alex Schajer. We absolutely reject your requirement of a payment to cease using our trade marks in breach of the intellectual property laws I detailed in my previous email. Please confirm that you are to cease use of the app immediately otherwise we will have no other option but to commence legal proceeding for trademark infringement and/or passing off – a course of action we would very much like to avoid.
Kind regards
Jeremy Henderson-Ross
Legal Director & General Counsel – Groupe Aeroplan EMEA
If course he’d like to avoid legal action, it would start to cost them money.
But what’s in it for me for bending over now?
Nothing it seems.
//update2
After much deliberation I have decided to unpublished the ‘My Nectar’ app from the Android Market, I feel like this is giving up, maybe I should have taken it further.
With hindsight I don’t have a fancy title and a large customer focused corporation supporting my efforts.
I was simply trying to do something out of the goodness of my heart for absolutely no personal gain.
As it’s the life of the ‘My Nectar’ app has come to an end very quickly, I’d like to thank everyone who downloaded ‘My Nectar’ and emailed me with feedback, good and bad, feedback helps keep apps user focused and bug free, so thanks to all of you.
Bullies never win, but in this case I’ve decided the bully is just too big to fight.
Rob
@robaldred
//As of 22 Feb 2011, the “Official” Nectar app for Android is still no where to be seen.
If your like me, you might want enable delivering of mail in development, mostly because testing email layout is a pain without actually sending the email to a real client.
In doing this you’ll probably want to avoid the possibility of emails making their way to your customers from your development machine, this can be achieved with a simple initializer to override the destination.
Rails 2.x
1 2 3 4 5 6 7 8 9 10 11 12 | if Rails.env.development? class ActionMailer::Base def create_mail_with_overriding_recipients mail = create_mail_without_overriding_recipients mail.to = "mail@robaldred.co.uk" #mail.cc = #mail.bcc = end alias_method_chain :create_mail, :overriding_recipients end end |
Rails 3.x
1 2 3 4 5 6 7 8 | if Rails.env.development? class OverrideMailReciptient def self.delivering_email(mail) mail.to = "mail@robaldred.co.uk" end end ActionMailer::Base.register_interceptor(OverrideMailReciptient) end |
If you prefer to use a plugin, there is one called mail_safe personally, i think it’s a little overkill.
When using Rails, sunspot and cucumber with a mysql test database, I received the following the MySQL server has gone away error.
After some googling a came across the `reconnect` option for database config
1 2 3 4 | Using the default profile... Sunspot server is starting... Sunspot server took 2.72 sec. to get up and running. Let's cuke! Mysql::Error: MySQL server has gone away: SHOW TABLES (ActiveRecord::StatementInvalid) |
Solution is to add
1 | reconnect: true |
to cucumber section of your database.yml
Thanks to: http://rywalker.com/
I have released version 1.1.0 into the Android Market.
This release includes the addition of support for UK Vodafone accounts.
I have also made a few changes to the user interface and added support for usage counts for unlimited plans.
My Allowance app for Android.
Allows you to keep track of your mobile usage
Including:
- Current allowance usage
- Overspend during the current billing period
- Details of your last and next bill
The app is in its early stages, but I believe has all the information needed to make it useful to people now.
I plan to make improvements to the UI, Speed and add more networks. (At the moment only O2 UK is supported)
All you need is an O2 online account. Input your login details and your away.
You can get it from the Android Market for just 59p
Here’s a couple of screenshots
Any suggestions, issue or feedback, please feed free to comment here, or drop me an email.
–Rob
Gemspec files require the list of files to include in the gem build, here’s simple command you can run to add all files descending from the current directory, it ignores the .git directory and sorts the list for you.
1 | find . -type file | grep -v .git/ | sort |
You just to add the ruby array syntax.
replace ./ with ”
replace \n with “,\n










