Basic resources for iOS developers

The App Store is full of applications. Most of them are written in the Objective-C programming language, the native language to develop apps for iOS, basically iPhone and iPad. Other options to build iOS apps include JQuery, HTML5, C and other programming languages. There are also websites and platforms to build basic apps by dragging and dropping buttons, labels and images.  However, the native iOS is the best option in terms of performance, management of resources and user experience.

Apple provides lots of resources to help developers build their apps. Native apps are built using XCode, Apple’s IDE (Integrated Developer Environment) which includes tools to build the app’s interface, program the code, simulate the app on a simulator, and test the memory, CPU and resource usage. The apps are programmed using Objective-C, the Apple’s object oriented programming language.

To build an iOS app, developers must use a Mac OS X since other operating systems are not supported. The development tools needed are iOS SDK and Xcode. Both are free of charge and available on the Apple’s Developer Website. These tools allow any developer to build and test it using the iOS simulator, which is part of the iOS SDK. However, to run the app on a real device, developers must pay $99/year, which includes the license to publish unlimited apps in Apple’s App Store.


The basic resources to learn iOS programming and build apps for iPhone and iPad among other iOS devices are:

  • Apple’s Developer Website: the developers website allows to register as an iOS Developer and download Xcode and iOS SDKs. It also includes lots of resources to learn how to build apps, API references, etc.
  • iOS Developer Library: detailed API information. References are classified by resource types, topics, and frameworks. All the information you need is here.
  • Stamford University Course: There are hundreds of courses and tutorials but the iPhone Application Development from Stamford is the most popular and well-regarded course. The video lectures, demos and sample code are available to watch and download on iTunes.
  • Ray Wenderlich’s Blog: this blog, owned by Ray Wenderlick, contains thousands of programming tutorials. The tutorials cover almost all topics and are very easy for everyone to understand and learn.
  • AppCoda’s Tutorials: Blog about iOS programming which includes lots of tutorials and a big community of programmers who share and discuss development tips.
  • Stackoverflow: Any developer knows stackoverflow. It is a question and answer site for programmers. Developers help other developers answering their questions and discussing programming topics and issues.


Besides of these websites, Internet is full of tutorials, blogs, forums and other resources. You only need time and enthusiasm to start building amazing apps for iOS devices. Hands on!


Multiplexing of MPEG-2 streams

MPEG-2 is an international standard for video coding and transmission. It is the standard used in the current European digital television standard, DVB-T (and also in other TV standards). This digital television standard uses the MPEG-2 standard for the encoding of the video and also uses the MPEG-2 standard for the transmission and signaling of the video. Previous post detailed the DVB-T television standard, the video encoding standard, and the signaling standard.

To transmit the compressed video, and also other extra media content and information, all the streams must be combined. The process of combining these multiple streams is known as multiplex. A multimedia program consist of compressed video, compressed audio, control data and user data. In the multiplex process, these multiple streams are combined into one signal over a shared channel. Currently there are several shared channels where the multiplexed stream can be transmitted such as radio frequency (UHF/VHF), satellite, cable TV, standard terrestrial communication, digital networks (ADSL), etc. 

Multiplexing techniques

The multiplexed stream is transmitted over a communication channel, also know as shared channel or transmission link. Today they coexist several communication channels (UHF, cabe TV, terrestrial communication…) and the physical transmission mediums are very different.  To provide communication services to multiple users, multiplexing techniques are required. There are currently several multiplexing techniques, also known as access methods, and the use of each one depends on the characteristics of the medium such as bandwidth or if its wired or wireless.

Several multiplexing techniques are used depending on the transmission system, bandwidth and characteristics of the medium. There are the following basic multiplexing methods for the transmission of TV signals to multiple users:

  • Frequency Division Multiple Access (FDMA): The TV programs are carried by different independent carriers (in different frequencies), sharing the transponder bandwidth. 
  • Time Division Multiple Access (TDMA): The digitalized TV programs are time multiplexed onto a signal carrier. This technique is used when the transmission bitrate is higher than the bitrate needed.
  • Code Division Multiple Access (CDMA): It employs spread-spectrum technology and a special coding scheme to allow multiple users to be multiplexed over the same physical channel. The modulated coded signal has a much higher data bandwidth than the data being communicated. 


The multiplexing process

Once the A/V signals have been digitalized and compressed the different bitstreams are combined and multiplexed to be transmitted. The streams are combined onto the following streams:

Packet Elementary Stream (PES)

The elementary stream (ES) is packetized by encapsulating sequential data bytes inside PES packets. PES packets consist on a header and the Playload (0-64kB). Once PES packets are created from the elementary stream data, these PES packets are encapsulated inside Transport Stream (TS) or Program Stream (PS).

Program Stream (PS)

Program Streams are created by combining one or more PES packets (audio, video or data), which have a common time base, into a single stream. Audio and video PES packets includes the Time Stamp for a correct synchronization. PS are designed for reasonably reliable media such as DVDs, CDs, HDDs…

Transport Stream (TS)

Transport Stream specifies a container format encapsulating packetized elementary streams, with error correction and stream synchronization features for maintaining transmission integrity when the signal is degraded. TS are designed for broadcast applications.

Null Packet Optimization

Standards like ATSC or DVB impose strict constant bitrate requirements on the transport stream. In order to maintain a constant bitrate, the multiplexer insert some additional null packets (not contain any data). The receiver ignore its contents.

Program Clock Reference (PCR)

The PCR is a 42 bits number transmitted in the Transport Stream packets to enable a decoder to present synchronized content.


Conditional Access

Conditional Access is the protection of content by limiting the access or requiring certain criteria. In the DVB standard is achieved by a combination of scrambling and encryption.


The data stream is scrambled with an 48-bit secret key, the control word (CW). The CW have been encrypted with the service key and the service key have been encrypted with the user key. The control word is encrypted as an Entitlement Control Message (ECM). The CA subsystem in the receiver will decrypt the control word only when is authorized by and Entitlement Management Message (EMM). The contents of ECMs and EMMs are not standardized and depends on each CA system provider.


CAT tables are used to indicates to the receiver the position of EMMs and important information and conditional access descriptors.

Technologies of conditional access systems

  • Symulcript: The CW is transmitted through different ECMs at once. This allows the use of several conditional access systems at the same time. It uses multiple set-top boxes, each using a different CA system, to authorize the programs for display.
  • Multicrypt: The CW is sent sequentially through different conditional access modules and its based on a DVB standardization. It allows two or more different encryption systems to co-exist in the same receiver.


Evolution of video interfaces

The existence of many different audio and video standards necessitates the definition of hardware interfaces, which define the physical characteristics of the connections between the electrical equipment.

A few years ago, composite video was the interface most used at homes and component video in professional environments. However, these interface have been replaced for digital ones, with or without compression. The differences between the video interfaces are as shown in the following tables, where their use, type of signals and other parameters are compared.

Analog video interfaces

Analog video interfaces

Digital Video Interfaces

Digital Video Interfaces

Compressed video interfaces

Compressed video interfaces


Apps to make your Android smarter

Today‘s smartphones are pretty smart. We can browse the Internet, play music and videos, take pictures, connect to social networks, talk with our friends, etc. However, they can be even smarter. If we browse the market, both App Store (iOS) and Google Play (Android), we have apps for almost everything.

In this post I am going to give a brief overview of some apps to make your Android smarter. With the right app you can automate thinks like turning off your notifications after midnight, switching to silent mode when you are working in your office, navigating through the apps faster and customize your launcher. These apps can be classified into those for customization, creation of widgets, quick navigation and automation:


taskerLatest versions of Android OS automatically switch from 3G to WiFi when this is available, increasing battery life and preserving our data plan. However, not all tasks can be automated with the features of the operating system. In the store we can find several apps that allow/enable from switch to silent mode when you are sleeping to launch your favorite music player when you plug-in your headphones. The automation apps lets you make mini programs that carry out task you would otherwise need to do manually.  Features:

  • Tasker: app to set up actions (aka tasks) based on contexts (application, time, date, location, event, gesture) in user-defined profiles or clickable or timer home screen widgets.
  • Llama: app that allows automatically change sound profiles depending on your location.
  • Automatelt: this app allows to automate various tasks by assigning actions to be performed when triggered with the location, event, gesture, application, time, etc.
  • Good Night, Android: it provides a widget to turn off and restore WiFi, sound, or lock the screen immediately with one click.
  • Phone schedule: scheduler for your phone. It allows to auto-sync, schedule backups and restores, switch on/off WiFi or Bluetooth, launch apps, change ringtones and notification tones, etc.
  • Screebl: this app controls your screen based on orientation. It detects how you are holding the phone to turn on the screen, and releases the lock and turn off the screen when not. 

Quick Navigation

In our mobile devices we have apps for almost anything. The Android’s app drawer allows to customize the launcher, organizing the apps in several ways and also combining them with widgets. Moreover, in Android, not all apps have to be in the launcher, allowing with this way to use the launcher only for the apps we use the most and making navigation easier. However, sometimes we want to switch between apps, start the apps we use the most, or navigate through the recent opened apps quickly. For this purpose, there are several solutions for setting up quick navigation on your device:

  • SwipePad: It consists of a launcher panel overlay to switch apps and tasks quickly. With a single swipe action such as touch down a pre-set edge of the screen, move your finger towards the center of the screen or release your finger on a specific slot, you can launch anything from within any app.
  • Homeflip: another app to switch between favorites, recent and set-up apps faster. It can be activated with the home button or a swipe gesture.
  • Sidebar: this apps creates sidebars where you can put various items on them such as apps, contacts, commonly accessed settings, shortcuts, and widgets. It supports multiple bars, as well as change the visuals and trigger options for the bars.
  • Glovebox: this apps performs multitasking by swiping without lifting the finger to select an application to open it. It has apps, shortcuts and widgets on the side bar and also pins recent tasks, notifications and includes floating widgets.


Customized launcher

Android is a very customizable operating system (OS), especially if we compare with  iOS, Windows Phone and other proprietary OS. It is possible to customize the home screen, lock screen, launcher (including the app, widget and notification drawer), dock… Some of the featured apps for customization are:

  • Nova Launcher: one of the most popular apps for customization of the launcher. It includes color themes, icon themes, scrollable dock, scroll effects and styles, etc.
  • Chameleon launcher: is an app that lets you create multiple home screens with different layouts of widgets and apps. It includes a set of widgets for the most featured apps (google, clock, facebook, twitter, instagram, media player, switches…) to layout as drawing on a screen.
  • Aviate: it is an intelligent home screen that categorizes your apps and rearranges them giving you the apps and information you need the most at precisely moment you need it. It is currently in Beta version.


widgetsWidgets are small application views of an app’s most important data and functionality that is accessible from the home screen. Widgets are only available for Android. Many apps come with widgets to perform some features quickly, such as play music with one click, create and store a quick memo, or check the weather in the home screen. However, sometimes you want a widget to perform a different function or a feature that is not available in/possible with the widgets that come when you download an app from the store. For this purpose, some apps allow to  create your own widgets, allowing to design and customize almost anything. Some examples are:

  • Ultimate Custom Widget (UCCM): app to create your own widgets easily. You can use a custom layout, fonts, images, shapes, and objects (clocks, weather information with icons, unread sms, battery information, and more).

Hopefully, these apps will change your Android experience and make you discover new features and functionalities. Developers around the world are continuously working to create original and interesting apps, and at the same time, Google is improving their OS to add more and more functionalities. In this post I tried to highlight the most interesting apps for customization, navigation and automation but feel free to suggest any others.

Officially an Engineer

Today is a very special day, I graduated in Electrical and Computer Engineering (aka Telecommunications Engineering) from the Technical University of Catalonia (UPC). After five years of study and a year abroad I finally completed my studies.

I started in 2007 with a bachelor’s degree in Electrical and Computer Engineering, specializing in Audiovisual Systems. I graduated after three years and my final thesis was titled NortheasternDevelopment of a Video on Demand Service for the iPhone. In 2010 I extended my studies with a 2.5 year program withi UPC. After finishing all courses in Spain, I had the opportunity to complete my studies with a year abroad. I was working as a research scholar in the Mathworks SMART Laboratory, in Northeastern University, Boston (USA). I developed KiFall, a Privacy Preserving Fall Detection Using Smartphones and Wireless Camera Sensors. The year in Boston was, personally and professionally, one of the best experiences of my life.

Today when I went to pay for the title, I realized this was the last time I will go to the Telecommunication Engineering School at UPC as a student. I have spent so much time in these buildings, I have attended hundreds of lectures, I have spent thousands of hours studying in the library (and a few hours in the bar), I have learnt so much and I have met a lot of nice people. I suffered and enjoyed the studies at the same time. But overall, my balance is very positive.


What’s next? This is the big question I keep asking myself over and over again. I have just graduated and now I have many possibilities: looking for a job, creating my own company, continuing my studies, starting a career as a researcher, etc. And, what is also very important, where? After a year abroad and seeing how is the situation in Spain, we’ll see where I end up… The future is full of opportunities!


With the new Internet era, people can distribue high quantities of information by the network. It has developed a new economical and business organization and we are entering into a new model of education and work thanks to the ICT.

TeleworkTelework consists off doing your work in a different place to the office using informatic and telecommunications networks. With this new model is possible to reduce travel time of the employees, increase the effectivity of hours dedicated to work and provide to the workpeople time to spend with family. But not all is good: with teleworking we are loosing groups of teamworks, loosing the corporation hierarchies (the teleworker many times only have to communicate with one boss), causing sedentay lifestyle to the employees, loosing the relationship with other employees, and a long etcetera.

Estimates suggest that over fifty million U.S. workers could work from home at least part of time. The call center industry and IT sector employ thousands of home-based workers but these are notables exceptions because very few companies employ large number of home-based full-time staff. However, the development of new video conferencing systems and technologies increase the number of teleworker day by day. Many public and private companies are now starting to use polycom systems and teleworking in order to avoid costs and becase they started to appreciate multiple benefits of teleworking. 



Long distance telework is facilitated by tools such as groupware, virtual private networks, conference calling, videoconferencing and voice over ip. Telework technology requirements will vary by agency but many teleworkers requires:

  • Internet Service Provider (ISPs) to connect remote employees to the Internet, e-mail, and agency network.
  • Internet Access to allow teleworkers to use Internet for their voice, video, fax, and unified communications needs. Some examples are:
    • dial up telephone networks or PSTN for voice and data communications in narrow-band.
    • Integrated Services Digital Network (ISDN) standards.
    • DSL standards to provide broad-band Internet connection.
    • Cable broadband access.
  • Network infrastructure comprised of the equipment and connections that make up a network:
    • VPNs as a remote access solution to access the network securely (firewalls, encryption…).
    • Remote Access Servers (RASs) and Virtual Desktop Infrastructure (VDI) to provide the computer and associated software for teleworkers to access the network remotely.


  • Laptop as a main teleworker’s tool.
  • Mobile Phone / Smartphone / PDA for data applications and instant communication anytime, anywhere.
  • Peripherals such as printers, scanners, fax or multi-functional devices.
  • Security policies for automatic backups and restore, biometric devices, data encryption, configuration management, software updates, virus and spyware protection software…
  • Collaboration tools to facilitate information-sharing for individuals in remote locations through an interactive forum. Examples include data conferencing, e-mail, phone and fax, instant messaging, presence technology, software collaboration, telepresence and web collaboration.
  • Software as a service (SaaS) providers to manage data storage, for example.
  • Video conferencing systems to allow remote users to connect using real time, interactive voice, video and data collaboration technologies. Some examples of video conferencing systems are: Polycom, Avaya Solutions or Verizon Communications Systems.

Currently, telework yields multiple benefits to government, public sector organizations, private sector, individual employee and the community. It is becoming increasingly prevalent in the modern workforce because its proven results and reliability are shown to significantly improve life holistically.

Both public and private sector organizations are reaping the benefits: boosting morale, enhancing continuity of operations (COOP) plans, saving real estate space and dollars, as well as enabling efforts to recruit and retain the best and brightest.

Indoor positioning using smartphones

Currently, GPS is the most used navigation system for outdoors. It provides location, altitude and speed through GPS satellites and it offers an accuracy down to a few meters. However, the accuracy of the system in indoors is bad, which makes it useless for navigation and positioning in this environment. 

Today smartphones have full GPS capability onboard but it is also useless for indoor navigation. Nevertheless, the combination of other connectivity capabilities such are WiFi or 3G with the built-in motion and position sensors offers many possibilities for the future of indoor positioning. In this post I will discuss some of the techniques that can be used for indoor positioning taking advantage of the smartphones capabilities. 

Distance and bearing

The first approach consist off determining the distance and bearing (angle between two points measured in a clockwise direction from the north line) between two points. The distance and bearing could be calculated through the A-GPS, a set of location sensors that combines GPS location, network positioning and cellular positioning. The figure below shows how to determine the angle between two points. However, this approach is not useful using the A-GPS because of its bad accuracy of location in indoors (10m).  location by triangulation using several WiFi or blueetoth hotspots.


Distance and bearing using WiFi and Blueetoth hotspots (requieres additional installation)

This method requieres the installation of WiFi or Blueetoth transmitter every few meters. Distance and bearing can be approximated based on the relationship between transmitted and received signal strength. The problem of this solution is that accuracy is significantly impacted by reflection and absorption from walls. Moreover, measurements can be extremely noisy so there is a lot of ongoing research focused on making more accurate systems by using statistics to filter out the inaccurate input data.wifiBluetooth

Integration of the acceleration

The second approach uses the double integration of the linear acceleration (acceleration of the device minus the acceleration due to gravity) to measure position, like the following equation shows. However, double integration amplifies acceleration noise so fast. The acceleration readings from the smartphone’s sensors are very noisy, making this approach useless for most of the systems.

position integration

Inertial measurements

The third approach consists of the development of algorithms based on the detection of steps and heading directions while walking. The positioning might be reliable using the accelerometer and gyroscope sensors, and with an accurate estimation of the step length.

Currently, this seems the best approach for reliable indoor positioning using only smartphones and without any additional installation. This system is  specially useful if the measurement of the steps is referred to maps or additional sensors (using sensor fusion)  to constrain the inherent sensor drift encountered with inertial navigation.