Twitter introduced a new feature called Highlights, that’s intended to help you stay informed on the most important tweets and conversations among your followers. In reality is really not very good. it’s another pointless distraction and imo it needs turning off.
Thankfully it’s quite simple to do.
Select the settings menu
Tap on your account name, if you have multiple, you’ll need to do this for each
Tap on mobile notifications
Scroll down the list of settings until you each Highlights, uncheck the checkbox to disable.
That’s it you’ll no longer get the Highlights notifications.
Google released a feature with Android recently which allows your carrier or network provider to know when you’re using your phone’s internet with a tethered device, either via USB or the Wifi hotspot feature of your Android device.
Before this update the phone would just use the NAT to route traffic between the phone’s internet connection and the tethered devices. Since the update Android is separating traffic from the local phone and the tethered devices onto different virtual network interfaces within networking of the operating system, providing the network operator with a different source device for the traffic.
This update is sneaky and I’d imagine Google has been pressured into implementing this “feature” to help carriers market and charge for tethering as an extra add-on or to impose data caps. A similar feature has been employed by Apple on iOS devices for some time.
Anyway, we can stop this behaviour and get back our freedom to tether without restriction. There are a couple of ways you can achieve this, if you’re rooted there are more options. There are apps that claim to be able to do this, but it’s really not necessary. I’m going to walk through how to do this without apps and without root.
To do this you’re going to have to get your hands dirty a little with the Android developer SDK.
Download the Android SDK which is available for both Windows, Mac OS X and Linux.
The easiest way is to install the Android Studio bundle package. Here’s the direct links (updated Sept 2015):
Your device must have developer mode enabled. You can find instructions on how to do this here, it’s really simple, essentially tap ‘Build number’ in ‘Settings > About’ 7 times .
Ok so now we have the SDK installed and your device in developer mode we can apply the fix to enable unlimited tethering and wifi hotspot.
Open a terminal or command prompt and navigate to the location where you installed the SDK, if you’re using the Android Studio bundle, here’s where it’s usually located:
Mac OS X: /Users/USERNAME/Library/Android/sdk/platform-tools
Connect your device via USB, you might see a warning like this
Click OK to allow your computer access to your device
Back in the terminal or command prompt type
This should list your device in the output something like:
So now we know your device is connected correctly we can jump onto a shell and make the fix for tethering. Type:
Then at the prompt, enter:
settings put global tether_dun_required 0
Disconnect your device and enjoy full unlimited tethering and wifi hotspot, your network operator no longer has the aiblity to tell if the internet traffic is coming from your device or the tethered device.
If you perform a factory reset on your device, you’ll need to follow this procedure again.
Any questions just drop a comment below.
Ventrilo is a great little voice app, it has tons of options and it overall great quality whilst using very little bandwidth.
However the server configuration isn’t very well documented which made me a little sad when I was setting up my server.
I decided I’d go through them all, work out what they did and drop my findings here so hopefully others wont have to spend hours figured it out.
All these settings are available in the ventilo_srv.ini file as of version 3.0.3, In some places I’ve included recommendations of what you should use.
This sets the name of the server.
Rename the server to whatever you like.
Ventrilo has a voice synthesizer that will read the server name.
This setting set how Ventrilo should pronounce your server’s name.
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.
Allows or forbids duplicate user names.
Set to “0” to require each user to have a unique user name
This is where you set the password to access administrator rights.
It goes without saying, don’t give this to normal users.
You set the global password clients will need to connect.
Users with specific account don’t need this password
Sets the size of the TCP outbound buffers. “0” defaults to 131,072 bytes. Probably best to leave this setting as is.
Sets the size of the TCP inbound buffers, also best to leave this as it is unless you’re an advanced user.
This setting toggles diagnostics for developers, leave set at “0”.
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.
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”
Enables or disables times stamps in console messages.
If you are interested in knowing exactly when messages occurred, set this to “1”
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
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.
Sets the number of possible sub-channels that can be created.
“0” means no limit.
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.
Limits the number of clients in a channel.
“0” sets no limit.
Enables or disables someone with administrator rights from remotely instructing the server to exit.
“0” Allows administrator to turn off the server
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)
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
Allows (default) or forbids voice in the lobby.
This setting determines how long, in seconds, that a client can remain connected to the server.
“0” sets no limit.
GSM 6.10 (8 KHz, 16 bit) 1625 bytes/sec
GSM 6.10 (11 KHz, 16 bit) 2210 bytes/sec
GSM 6.10 (22 KHz, 16 bit) 4420 bytes/sec
GSM 6.10 (44 KHz, 16 bit) 8905 bytes/sec
DSP Group TrueSpeech (8 KHz, 16 bit) 1056 bytes/sec
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
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
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,
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 customers infact, for absolutely no financial gain of my own.
Hurt, I sent a brief reply back to Alex.
Sorry but sending this email does not show appreciation at all. I don’t see the problem?
The android market is an open free platform. I’m not doing anything illegal. The app is free and merely helping your customers get some simple information on their android phone.
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
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 1000GBP
I look forward to hearing from you.
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.
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.
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.
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.
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.
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
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.
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.
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 should never win, but in this case I’ve decided the bully is just too big to fight.
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.
1 2 3 4 5 6 7 8 9 10 11 12
if Rails.env.development? classActionMailer::Base def create_mail_with_overriding_recipients
mail = create_mail_without_overriding_recipients
mail.to = "email@example.com" #mail.cc = #mail.bcc =
alias_method_chain :create_mail, :overriding_recipients end end
1 2 3 4 5 6 7 8
if Rails.env.development? class OverrideMailReciptient defself.delivering_email(mail)
mail.to = "firstname.lastname@example.org" 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)