Wednesday, 30 January 2013

Apple MBP three screen setup

I just received the USB UGA-2K-A DisplayLink adaptor and it's working great! I'm seriously impressed by the no-hassle-plug-n-play. That's the good thing about having lowered expectations, you're pleasantly surprised when it does work.

I used the latest alpha 2.0 version drivers available from DisplayLink's site.

Sweet!
I've got the old mini-DVI-to-VGA plugged into one monitor, the DisplayLink adaptor into the other one and the MBP screen working too.

Friday, 14 December 2012

ITU and their lost battle to charge YouTube

ITU's Final acts of the World Conference on International Telecommunications, Dubai 2012, is out. 

Besides begging for money and trying to stay relevant, the ITU ratified 'Deep Packet Inspection' (DPI). They also managed to insert this gem: "optionally requires DPI systems to support inspection of encrypted traffic “in case of a local availability of the used encryption key(s).” [1]

What that means is that should your ISP magically come into possession of say your private keys, they are allowed to decrypt your email, communications etc. that you used to encrypt it, forever without telling you.

Their shameless money grab was left for last, on page 23 of the Final Acts titled 'International telecommunication service traffic termination and exchange'. It recognises that dedicated phone and data has moved to IP based networks and many Member States are asking for their authorised operating agencies to invoice service providers. In other words, many Governments are asking, on behalf of their state-run-money-losing telecos, to invoice YouTube for sending traffic to their users. 

The sooner these governments accept the fact that state run telcos are worse than state run airlines, the sooner they can stop begging YouTube for money and implement an open platform for all telecommunication firms to flourish.

Source:
[1] https://www.cdt.org/blogs/cdt/2811adoption-traffic-sniffing-standard-fans-wcit-flames

Monday, 1 October 2012

Flask, MySQL, WTForms & SQLAlchemy that works

Quick 'n dirty Flask, WTForms & SQLAlchemy that works.

database.py
#!/usr/bin/env python
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import sqlalchemy.interfaces

# Without this, MySQL will silently insert invalid values in the
# database, causing very long debugging sessions in the long run
# source: http://www.enricozini.org/2012/tips/sa-sqlmode-traditional/
class DontBeSilly(sqlalchemy.interfaces.PoolListener):
    def connect(self, dbapi_con, connection_record):
        cur = dbapi_con.cursor()
        cur.execute("SET SESSION sql_mode='TRADITIONAL'")
        cur = None

engine = create_engine('mysql+mysqldb://root:banana@127.0.0.1/testdb?charset=utf8&use_unicode=0', convert_unicode=True, listeners=[DontBeSilly()], echo=True)
db_session = scoped_session(sessionmaker(autocommit=False,autoflush=False,bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
Base.metadata.create_all(bind=engine)
models.py
#!/usr/bin/env python
from sqlalchemy import Column, Integer, String
from flask_application.database import Base
  
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)
    password = Column(String)
    email = Column(String, unique=True)
    country_id = Column(Integer)

    def __init__(self, username=None, password=None, email=None, country_id):
        self.username = username
        self.password = password
        self.email = email
        self.country_id = country_id

    def __repr__(self):
        return '' % (self.username, self.password, self.email, self.country_id)
forms.py
#!/usr/bin/env python
from flask.ext.wtf import Form, TextField, PasswordField, BooleanField, SelectField
from flask.ext.wtf import Required, Email, EqualTo
    
class user_add_form(Form):
    username = TextField('Username', [Required()])
    password = PasswordField('Password', [Required()])
    confirm = PasswordField('Repeat Password', [Required(), EqualTo('password', message='Passwords must match')])
    email = TextField('Email')
    country_id = SelectField(u'Country', choices=[('1', 'UK - United Kingdom')])
template_add_user.html
{% block content %}

{{ form.username }} {{ form.username.label }}

{{ form.password }} {{ form.password.label }}

{{ form.confirm }} {{ form.confirm.label }}

{{ form.country_id }} {{ form.country_id.label }}

{% endblock content %}
view.py
from flask import Blueprint, request, render_template, flash, g, session, redirect, url_for
from flask_application import app
from flask_application.database import db_session
from flask_application.models import User
from flask_application.forms import user_add_form
from werkzeug.security import generate_password_hash, check_password_hash   

@frontend.route('/users/add', methods=['GET','POST'])
def users_add():
    form = manage_user_add_form(request.form, csrf_enabled=False)
    if form.validate_on_submit():
        new_user = User(
                    form.username.data,
                    generate_password_hash(form.password.data),
                    form.email.data,
                    form.country_id.data
                    )
        db_session.add(new_user)
        db_session.commit()
        
    return render_template('template_add_user.html', form=form)

Monday, 24 September 2012

iPhone Test Field Mode, Serving PLMN Info and Cell ID.

I'm working on a project and needed to validate the Location Area Code and Cell ID in my tests with actual info from my mobile phone. Using an iPhone and going into Test Field Mode did the trick.

Go into Test Field Mode:

  • Dial *3001#12345#*
  • MM Info -> Serving PLMN - Gives you MCC, MNC, RAC and LAC
  • UMTS Cell Environment -> UMTS RR Info - Gives you Cell ID
There's much more information there and it's very handy since you don't need to muck about in an app.

Thursday, 29 March 2012

Android land at Mobile World Congress 2012

A little late but here are some shots from Android land at Mobile World Congress 2012.




An android making little Android statues.



Club Android.



Wednesday, 29 February 2012

MWC: Huawei pretty booth

Huawei has got a very impressive boot here at MWC and some very neat products, but I didn't have much time as I was just passing by on my way to see Android's booth!











Saturday, 25 February 2012

Mobile World Congress



It's here once again, Mobile World Congress or MWC, is upon us and mad scramble for free badges is in full swing. You'd think a pretty large company would have this all sorted out by now, but what's the fun in that, besides as my crazy aunt always says, procrastination is the art of keeping up with yesterday.

So there you have it, I've just got my badge sorted out and I'll be there everyday till it's over. It's being held in beautiful Barcelona, Spain. Engadget have a beautiful picture of the venue worth checking out.

I'll be out and about looking at cool things to come and will try to live blog as fast as I can. So stay tuned folks because there's more to come.