Genetics

Genetics is the science of genes, heredity, and variation in living organisms. It’s a discipline of biology and can be applied to the study of all living systems, from viruses and bacteria, through plants and domestic animals to humans. The modern science of genetics, which seeks to understand the process of inheritance, began with the work of Gregor Mendel in the mid-19th century.

The molecular basis for genes is deoxyribonucleic acid (DNA). Genes correspond to regions within DNA, a molecule composed of a chain of four different types of nucleotides :

  • adenine (A)
  • cytosine (C)
  • guanine (G)
  • and thymine (T)

Genetic information exists in the sequence of these nucleotides. DNA exists as a double-stranded molecule, coiled into the shape of a double-helix. Each nucleotide in DNA  pairs with its partner nucleotide on the opposite strand: A pairs with T, and C pairs with G. Thus, in its two-stranded form, each strand contains all necessary information, redundant with its partner strand.

Genes are arranged linearly along long chains of DNA base-pair sequences. Eukaryotic organisms, which include plants and animals, have their DNA arranged in multiple linear chromosomes. These DNA strands are often extremely long; the largest human chromosome is about 247 million base pairs in length.

The full set of hereditary material in an organism (the combined DNA sequences of all chromosomes) is called the genome.

Wellknown, registered, dynamic and private ports

In computer networks a port is a communications endpoint in a computer’s host operating system. A port is associated with an IP address of the host, as well as the type of protocol (TCP, UDP, SC)used for communication. A port is identified for each address and protocol by a 16-bit number, commonly known as the port number which completes the destination address for a communications session. Different IP addresses or protocols may use the same port number for communications.

The Internet Corporation for Assigned Names and Numbers (ICANN) is responsible for the global coordination of  Internet protocol resources which includes the registration of commonly used port numbers.

The port numbers are divided into three ranges :

  • well-known ports (0 – 1023
  • registered ports (1024 – 49151)
  • dynamic or private ports (49152 -65535)

Examples :

Well-known ports :

  • 1 : Echo
  • 20 & 21 : File Transfer Protocol (FTP)
  • 23 : Telnet remote login service
  • 25 : Simple Mail Transfer Protocol (SMTP)
  • 43  : Whois
  • 53 : Domain Name System (DNS) service
  • 80 : Hypertext Transfer Protocol (HTTP) used in the World Wide Web
  • 110 : Post Office Protocol (POP3)
  • 143 : Internet Message Access Protocol (IMAP)
  • 194 : IRC
  • 443 : HTTP Secure (HTTPS)
  • 554 : RTSP
  • 636 : LDAP

Registered ports :

  • 1234 : VLC
  • 1220 : Qicktime Server Admin
  • 1935 : RTMP
  • 2948, 2949 : MMS
  • 3306 : MySQL
  • 5004, 5005 : RTP
  • 5060, 5061 : SIP
  • 5269 : XMPP
  • 5500, 5800, 5900 : VNC
  • 8008 : HTTP Alternate
  • 25565 : MySQL

Dynamic and private ports :

The dynamic port numbers (also known as the private port numbers) are the port numbers that are available for use by any application to use in communicating with any other application, using the Internet’s Transmission Control Protocol (TCP) or the User Datagram Protocol (UDP).

More informations about computer ports are available at the following links :

Concurrent connections in browsers

The HTTP/1.1 RFC says a single-user client SHOULD NOT maintain more than 2 simultaneous connections with any server or proxy. This rule is on a per server basis. Using multiple domain names, such as 1.mydomain.com, 2.mydomain.com, 3.mydomain.com, allows a web developer to achieve a multiple of the per server connection limit, even if all the domain names are CNAMEs to the same IP address. This is called domain sharding. There are several issues with this technique : The main one is that domain sharding results in more DNS lookups and takes extra time to make the initial connections.

Modern browsers don’t follow the guideline and exceed 2 connections per server. The following list shows some actual values :

Browser connections per host max connections
IE 9 6 35
Firefox 10 6 60
Safari 5.1 6 35
Chrome 19 6 40
Opera 11 6 35
iPhone 4 4 30
Android 3 6 35
BlackBerry 7 5 5
Opera Mobile 2 6

The data has been provided by Browserscope, a community-driven project for profiling web browsers. The goals of Browserscope are to foster innovation by tracking browser functionality and to be a resource for web developers.

Every web developer can participate in the Browserscope project by gathering test results from users “in the wild”. The project was launched in September 2009. The owner’s of the project are Lindsey Simon and Steve Souders.

More informations about concurrent (simultaneous, parrallel) browser connections are available at the following links :

Adaptive and context-aware images

Last update : July 1, 2014

Each image has an innate, original height and width that can be derived from the image data. This derived height and width information is content, not layout, and should therefore be rendered as HTML <img> element attributes. To override height and width for adaptive images, CSS is the best approach.

Context-aware images in responsive web design are created by declaring a 100% width in CSS :

img {width : 100%}

Modern browsers keep the image’s proportions intact. To render a context-aware image at its native dimensions and to resize it only if it exceeds the width of its container, the classic solution is the CSS code :

img {max-width :100%}

But scaling down images is not sufficient. Sending huge image files to low-performance devices with narrow screens is not very clever. The early HTML image tags had a lowscr attribute which is no longer supported by modern browsers.

Sending the right-sized image to devices without wasting bandwith is one of the challenges in responsive web design. The main problem is that the HTML img tag has only one source attribute today.

The different techniques proposed in the recent past by the pioneers of context-aware images, listed at the end of this post, can be grouped as follows :

  1. client-side current technology solutions
  2. server-side current technology solutions
  3. standardized future-technology solutions

Client-side current technology solutions :

  • CSS with background-images controlled by media-queries : Harry Roberts
  • dirty script to load temporary images and altering the image source path before handing it to the DOM parsing (1×1 pixel transparent GIF and <noscript> tag) : Jake Archibald, (Mairead Buchan, Antti Peisa, Vasilis van Gemert)
  • dynamic modification of the base tag : Scott Jehl
  • CCS3 content & attr() : Nicolas Gallagher

Server-side current technology solutions :

  • php-script dealing with AJAX requests : James Fairhurst
  • php-script dealing with image arrays : Craig Russel
  • php-script dealing with cookies : Matt Wilcox, Keith Clark, Scott Jehl, (Mark Perkins, Andy Hume)
  • service to resize images – tinySCR, now Sencha.io.SCR : James Pearce, (Graham Bird, Andrea Trasatti)
  • service to adapt mobile content to cell-phones with Opera Mini pre-installed : Opera Software ASA

Standardized future-technology solutions :

  • new html attribute pointing to a list of sources : Dominique Hazael-Massieux, Anselm Hannemann
  • new picture tag : Bruce Lawson, Jake Archibald, Nicolas Gallagher
  • progressive resolution-enhanced streaming images
  • new HTTP headers for content negotiation

Problems :

“Starting with small images for mobiles and upgrade to large images for desktops, without loading both and working with all browsers” is the goal of responsive design with context-aware images. Until now there is no solution that meets this objectif.

The common problems are listed below :

  • dynamic image tags : double downloads with external scripts ; race problems with internal scripts in some browsers ; inconsistencies when diffrent scripts change the base tag
  • temporary image : without javascript the image never loads
  • noscript tag : some browsers cannot manipulate the noscript tag
  • CSS generated content : only supported in Opera10+
  • cookies : no effect when cookies are disabled
  • same URL :  caching fails
  • php scripts : CDN routing not possible
  • device detection : not reliable for all browsers

Some pioneers in the field of “adaptive images” are presented hereafter :

Scripts, programs and tools :

Contributions to W3C and drafts by W3C :

Blogs :

more contributors :

Internet and computer slang

On Internet (websites, Twitter, chat rooms, blogs, SMS, forums ) you often find terms, acronyms or abbreviations that are not widely understood. They belong to a group of Internet and computer slang words.

Some often used slang terms are listed below :

  • AFAIK : as far as I know
  • IMO : in my opinion
  • TL;DR : too long, did’nt read

The website Internet Slang provides an Internet dictionary with more than 7.800 acronyms of the most commonly slang terms used today.

Google Chrome Frame

Google Chrome Frame is an open source plug-in that seamlessly brings Google Chrome’s open web technologies (for instance the canvas tag) and speedy JavaScript engine to Internet Explorer (IE 6, 7, 8, or 9).

Enabling Google Chrome Frame is simple. For most web pages, all you have to do is add a single tag to your pages and detect whether your users have installed Google Chrome Frame.

  • If Google Chrome Frame is not installed, you can direct your users to an installation page.
  • If Google Chrome Frame is installed, it detects the tag you added and works automatically.

Semantic Web

Last Update : October 7, 2012

The Semantic Web is a collaborative movement led by the international standards body W3C. The Semantic Web is a Web of Data, as opposed to the existing Web of Documents. The goal of the Web of Data is to enable computers to do more useful work and to develop systems that can support trusted interactions over the network.

The Web of Data is empowered by new technologies such as RDFa (Resource Description Framework-in attributes), SPARQL, OWL (Web Ontology Language), SKOS (Simple Knowledge Organization System), Microdata and Open Graph.

HTML (HyperText Markup Language) remains still the main markup language for displaying web pages and other information that can be displayed in a web browser.

Semantic HTML refers to the semantic elements and attributes of HTML (h1, h2, …, p, …), as opposed to the presentational HTML elements and attributes (center, font, b, …). The acronym POSH was coined in 2007 for semantic HTML, as a shorthand abbreviation for “plain old semantic HTML”.

HTML5 introduced a few new structural elements :

  • <header> : this tag replaces the <div class=”header”>, commonly used in the past by most designers. The header element contains introductory information to a section or page.
  • <footer> : same as above, it’s the well known <div class=”footer”>. The footer element is for marking up the baseline of the current page and of each section contained in the page.
  • <nav> : replacement for <div class=”navigation”>. The nav element is reserved for the primary navigation. Not all link groups in a page or section need to be contained within the <nav> element.
  • <section> : this is the replacement for the generic flow container <div> when it contains related content. <div> is a block-level element with no additional semantic meaning, whereas <section> is a sectioning element which has normally a header and a footer and represents a generic document or application section.
  • <article> : the <article> element represents a portion of a page or section which can stand alone and makes sense even outside the context of the page. Like <section>, an <article> generally has a header and a footer. You should avoid nesting an <article> inside another <article>.

HTML5 tag <aside>

  • <aside> : this tag is used to represent content that is related to the surrounding content within an section, article or web page, but could still stand alone in its own right. (see figure at right). This type of content is often represented in sidebars.
  • <hgroup> : A special header element that must contain at least two <h1>-<h6> tags and nothing else. It’s a group of titles with subtitles. Make sure to maintain the <h1> – <h6> hierarchy.

RDFa is a W3C Recommendation that adds a set of attribute-level extensions (rich metadata) to web documents. RDFa 1.1 was approved in June 2012. It differs from RDFa 1.0 in that it no longer relies on the XML-specific namespace mechanism, but ca be used with non-XML document types such as HTML 4 or HTML 5. eRDF is an alternative to RDFa. SPARQL is an RDF query language. On 15 January 2008, SPARQL 1.0 became an official W3C Recommendation. OWL is a family of knowledge representation languages for authoring ontologies. An ontology formally represents knowledge as a set of concepts within a domain in computer science and information science, and the relationships among those concepts. Ontologies are the structural frameworks for organizing information and are used, among others, in artificial intelligence. SKOS is a family of formal languages designed for representation of of structured controlled vocabulary (thesauri, classification schemes, taxonomies, …). Microdata is a WHATWG specification used to nest semantics within existing content on web pages. The Open Graph protocol, originally created by Facebook, enables any web page to become a rich object in a social graph.

All these technologies help computers such as search engines and web crawlers better understand what information is contained in a web page, providing better search results for users.

Another set of simple, structured open data formats, built upon existing standards, is Microformats. One difference with the other semantic technologies is that Microformats is designed for humans first and machines second.

The following list provides links to some useful blogs and tutorials about the semantic web:

Polyfills and Hacks for older browsers

Last update : June 25, 2014

Polyfills, or polyfillers, are pieces of code that provides the technology that a developer expects a browser to provide natively. Paul Irish has given the following definition: A shim that mimics a future API providing fallback functionality to older browsers.

Alexander Farkas (author of Webshims Lib, a modular capability-based polyfill-loading library) says : Every polyfill is a hack! innovative frontend development is hacky and always will be hacky!

Polyfills are especially relevant in the context of responsive web design.

A list of HTML5 Cross Browser Polyfills is available at the Modernizr GitHub website. The HTML5Please website provides look up tables for HTML5, CSS3, etc features to know if they are ready for use, and if so, to find out how you should use them : with polyfills, fallbacks or as they are.

Links to more useful informations about polyfill’s are listed hereafter :

X-Lite 4 : a freeware VoIP soft phone

 

X-Lite Soft Phone 4.0

X-Lite is a proprietary freeware VoIP soft phone that uses the Session Initiation Protocol (SIP). X-Lite is developed by CounterPath Corporation, a Vancouver based software company. Version 4.0 was released in September 2010. X-Lite complements other non-free products offered by the company, like Bria, Bria iPad, eyeBeam, mobile gateways and SIP based developer tools.

X-Lite is available for Windows and Mac and  can be used to make audio/video calls and to send Instant Messages to a softphone, mobile or landline telephone number. X-Lite has some outstanding features. A comprehensive user guide is provided. I use X-Lite with a SIP account from my Internet provider Visual-Online in Luxembourg.

Optical and intelligent character recognition (OCR and ICR)

Optical character recognition (OCR) is the mechanical or electronic translation of scanned images of handwritten, typewritten or printed text into machine-encoded text.

Intelligent character recognition (ICR) is an advanced optical character recognition or handwriting recognition system that allows fonts and different styles of handwriting to be learned by a computer.

Today the platform for people to use OCR has been changed from single PC’s to web-based applications (Cloud Computing) and mobile devices.

A comparison of optical character recognition software is available at Wikipedia.

One of the best open source OCR engines available today is Tesseract. Tesseract was originally developed as proprietary software at Hewlett-Packard between 1985 and 1995. In 2005 it was released as open source by Hewlett Packard and University of Nevada-Las VegasUNLV (UNLV). Tesseract development has been sponsored by Google since 2006. It is now released under the Apache License, Version 2.0.

There are some free OCR tools available that are based on Tesseract, for desktop PC’s and as online services :