Developping for the translation industry RSS 2.0

 Thursday, July 29, 2010

Here is a simple way to get a specific character count (for example, count the number of occurences of the character ‘0’) and the word count of a varchar string using T-SQL.

-- Count the number of specific characters, in this case, ‘0’

Declare @value varchar(100)

Set @value = 'SQL Server 2000, SQL Server 2005, SQL Server 2008'

Select Len(@value) - Len(Replace(@value, '0', ''))


-- Count the number of words


SELECT @String = 'SQL Server 2005 Stan test code'

SELECT LEN(@String) - LEN(REPLACE(@String, ' ', '')) + 1


As you see this is quite straightforward, the script simply substract the length of the string minus the character searched from the full length of the string, giving as a result the character count. The script counting words is simply counting the space characters.


Other posts:

How to remove multiple whitespaces from a string with SQL Server 2005

How to generate random numbers with a SQL query

How to remove leading zeros from the results of an SQL Query

How to Find The List Of Unused Tables Since The Last SQL Server Restart

Which performs better: ISNULL or COALESCE

Thursday, July 29, 2010 8:58:32 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Code Snippet | SQL
 Thursday, July 08, 2010

The Association de l’industrie de la langue/Language Industry Association (AILIA) is Canada’s industry representative in all matters pertaining to the language industry, including sectors such as translation, interpretation, terminology, training and technology. In 2008, AILIA launched the first ever national standard for translation services, CAN/CGSB‑131.10‑2008, Translation Services.

The CAN/CGSB-131.10-2008 includes all applicable definitions, in addition to sections on Human Resources, Technical Competencies, Quality Management Systems (QMS), Client‑TSP Relationship, Project Management Procedures and the Translation Process.

The benefits of this new certification are:

Assuring clients
The CAN/CGSB‑131.10‑2008, Translation Services Standard will give clients assurance that the TSP meets criteria deemed important in the delivery of translation services. AILIA’s position is that by having access to independently audited suppliers, purchasers of translation services in Canada are better protected.

Creating a level playing field
An important business objective of the CAN/CGSB‑131.10‑2008, Translation Services Standard is to create a level playing field for translation service providers. The certification will give clients the added assurance that the TSP applies certain quality control measures. Certified TSPs will therefore be required to make certain investments, making competition fairer. AILIA’s position is that all TSPs offering services in Canada should be able to provide independent proof of their competency in translation service delivery.      

Supporting contracting
The CAN/CGSB‑131.10‑2008, Translation Services Standard can act as a baseline for contracting procedures. By focusing on auditing translation services processes, the certification becomes a natural tool for contracting authorities to use when purchasing translation services. AILIA’s position is that conformity to an independent certification should be the basis for procurement policy and practices among purchasers of translation services.      

Supporting professional certification
Although leading Canadian TSPs promote professional certification for their employees and subcontractors, the CAN/CGSB‑131.10‑2008, Translation Services Standard takes an extra step by supporting professional certification and listing it as a criterion for CGSB certification. AILIA’s position is that a strong Canadian professional body is an essential pillar for a quality Canadian translation sector.


My company, Versacom, recently obtained the CAN/CGSB-131.10–2008 certification.


Other Posts:

Non-Latin internet addresses

Facts and Figures about the Language Industry

Big news in the translation industry

Domain registration and one full year of Web hosting for Free!

Thursday, July 08, 2010 9:12:54 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Language Industry
 Tuesday, July 06, 2010

This is an interesting new attack, I just saw a live demo of it here: Tabnabbing: A New Type of Phishing Attack. All you need to do is let the page load, then browse to another tab for more than 5 seconds and you’ll see the favicon change to Gmail and the page will load a Gmail image.

And apparently the use of this attack is on the rise in the wild according to Panda Labs. It’s a pretty interesting phishing attack and although it’s unable to change the URL in the address bar I believe a lot of people rely on visual cues and may not notice the URL doesn’t match the page content.

The use of Tabnapping, the recently-identified phishing technique, is on the rise, says Panda Labs.

Tabnabbing exploits tabbed browser system in modern web browsers such as Firefox and Internet Explorer, making users believe they are viewing a familiar web page such as Gmail, Hotmail or Facebook. Cybercriminals can then steal the logins and passwords when users enter them on the these hoax pages.

According to Panda’s latest Quarterly Report on IT Threats, the technique is likely to be employed by more and more cybercriminals and users should close all tabs they are not actively using.

I think this could be quite effective, especially for the less technical crowd on Facebook and using services like Hotmail and Gmail. It could even extend into targeted localized attacks on online banking systems.

Apparently all browsers are susceptible to this including Chrome, Firefox, Internet Explorer and Opera (on Windows XP anyway). More details in a PC Advisor article here.

Perhaps this is something that can be addressed in Firefox as the person who developed this technique is the Creative Lead for Firefox – Aza Raskin.


Other Posts:

Big news in security: 1024-bit RSA encryption cracked!

Google Translator Hacked

Tips to enhance your SQL Server security

How to: Use Active Directory to authenticate users in C#

Tuesday, July 06, 2010 8:40:27 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
 Tuesday, June 15, 2010

How can you can make your site run faster? Google has launched a firefox extension called Page Speed which webmasters can use to evaluate the performance of their web pages and to get suggestions on how to improve them.

Page Speed is available as an open-source Firefox Add-on. However it requires another addon to work called Firebug, which integrates with Firefox and lets you edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.

Page Speed will perform several tests on your web server configuration and front-end code based on a set of best practices for improved web page performance, and will then provide helpful suggestions on how to improve its performance. It will not only make your site faster, but also reduce your bandwidth and hosting costs.

Here is how a sample site speed test error report looks like

Page Speed Test


While you give your site a try with Google Page Speed, you can also check out Yahoo! Yslow, another Firefox extension that works with Firebug to identify website speed performance issues.

Other Posts:

Tools for Web developers

8 easy tips to drive traffic from search engines to your site

What are your customers saying about you online?

Tuesday, June 15, 2010 10:05:09 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
General | SEO | Tools
 Thursday, May 06, 2010

Microsoft has released the Internet Explorer 9 Platform Preview 2, keeping to its promise of delivering new IE9 functionality every eight weeks.

Microsoft originally introduced the IE9 Platform Preview in mid-March at the MIX 2010 show in Las Vegas, and just seven weeks later the software giant has released version 2 of the IE9 Platform Preview, which features advances in compliance to industry-standard tests, improvements in performance and a lot more. Internet Explorer 9 Platform Preview 2 is available for developer download at the IE Test Drive site:

Moreover, according to a source close to the company, there have been more than 1 million downloads of the IE9 Platform Preview to date.

Among the goals of IE9 is to deliver HTML5 capability into the browser as well as the "same markup" experience to developers -- which basically means developers will be able to write code once and have it run on multiple sites without modification. Essentially this means enabling the same markup – the same HTML, the same CSS and the same script – to work the same across different browsers is as crucial as performance for HTML5’s success.  Developers should expect the same markup to produce the same results across browsers consistently. 

Microsoft has created a rhythm of disclosure around IE9. At the company's Professional Developers Conference in November 2009, Microsoft discussed performance, hardware acceleration and same markup. At MIX  2010 the company discussed performance, hardware acceleration and same markup. And on May 5 Microsoft is back with improvements to its IE9 preview for developers.

Among the improvements is that Microsoft's IE9 preview has passed more of the Acid3 test. Microsoft has taken heat for its Acid3 results, but it is still early in the IE9 development process and the company is showing improvement. Acid3 comes from the Web Standards Project and checks how well a browser adheres to certain selected elements from web standards, especially the Document Object Model (DOM) and JavaScript. With IE9 Platform Preview 2, Microsoft increased its Acid3 test score results from 55 in the initial platform preview to 68 -- out of 100 -- in the new release.

To be sure, the new release builds on the initial platform preview . And in addition to more improvements to IE9’s performance and support for standards , with this release Microsoft has submitted additional tests to the working groups at the  World Wide Web Consortium (W3C). Indeed, Microsoft submitted 79 new tests to the W3C, bring the number of tests the company has submitted to 183, a company spokesperson said. Microsoft has been busy creating, submitting, and revising comprehensive test cases for developers and browser manufactures to responsibly test and design for same markup.

Meanwhile, according to’s SunSpider benchmark test, Internet Explorer 9 Platform Preview 2 is now even faster. The overall performance results have improved by 117 milliseconds.

In addition, more than 10 new developer samples on the IE9 Test Drive site highlight performance, graphics and HTML5 . Developers can take a look at these samples in a video at, or view demonstrations of the concept of same markup in action at,, and Should a password be required, use "samemarkup," however the videos will be live on Microsoft's Channel 9 by mid-day May 5.

Microsoft also changed the platform preview console window to be a full tab that includes diagnostic information from IE.  The company also added a “Change User Agent String” tool that enables you to change the UA string sent with every request, selecting from preset strings or creating your own custom string.  This complements another feature Microsoft added – the IE9 UA string.

Said a company spokesperson: "We know that when developers spend less time re-writing their sites to work across browsers they have more time to create amazing experiences on the web.  At its essence, that is what we are trying to achieve when we say 'same markup.'  It’s allowing for an interoperable web so developers can create the next class of rich web apps that will take advantage of the capabilities that will be made available with HTML5." 

Source: eWeek


Other posts:

In the news: Google will allow users to opt-out of Analytics tracking

How to spot innovators

Survey of .NET Framework features most used

Big news in security: 1024-bit RSA encryption cracked

Silverlight Game Creation Tutorials

Thursday, May 06, 2010 9:02:03 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
 Tuesday, May 04, 2010

Some people are really language gymnasts. Georges Perec, who could write a whole 300 pages novel without ever using the letter e, also wrote a palindrome of more than 6000 characters. At the time of this writing, it can also be found at (which is, of course, a palindromic URL, in case you did not notice). This is the palindrome in French. Enjoy:

Trace l'inégal palindrome. Neige. Bagatelle, dira Hercule. Le brut repentir, cet écrit né Perec. L'arc lu pèse trop, lis à vice versa.

Perte. Cerise d'une vérité banale, le Malstrom, Alep, mort édulcoré, crêpe porté de ce désir brisé d'un iota. Livre si aboli, tes sacres ont éreinté, cor cruel, nos albatros. Être las, autel bâti, miette vice versa du jeu que fit, nacré, médical, le sélénite relaps, ellipsoïdal.

Ivre il bat, la turbine bat, l'isolé me ravale : le verre si obéi du Pernod -- eh, port su ! -- obsédante sonate teintée d'ivresse.

Ce rêve se mit -- peste ! -- à blaguer. Beh ! L'art sec n'a si peu qu'algèbre s'élabore de l'or évalué. Idiome étiré, hésite, bâtard replié, l'os nu. Si, à la gêne secrète -- verbe nul à l'instar de cinq occis --, rets amincis, drailles inégales, il, avatar espacé, caresse ce noir Belzebuth, oeil offensé, tire !

L'écho fit (à désert) : Salut, sang, robe et été.


Adam, rauque ; il écrit : Abrupt ogre, eh, cercueil, l'avenir tu, effilé, génial à la rue (murmure sud eu ne tire vaseline séparée ; l'épeire gelée rode : Hep, mortel ?) lia ta balafre native.

Litige. Regagner (et ne m'...).

Ressac. Il frémit, se sape, na ! Eh, cavale ! Timide, il nia ce sursaut.

Hasard repu, tel, le magicien à morte me lit. Un ignare le rapsode, lacs ému, mixa, mêla : Hep, Oceano Nox, ô, béchamel azur ! Éjaculer ! Topaze !

Le cèdre, malabar faible, Arsinoë le macule, mante ivre, glauque, pis, l'air atone (sic). Art sournois : si, médicinale, l'autre glace (Melba ?) l'un ? N'alertai ni pollen (retêter : gercé, repu, denté...) ni tobacco.

Tu, désir, brio rimé, eh, prolixe nécrophore, tu ferres l'avenir velu, ocre, cromant-né ?

Rage, l'ara. Veuglaire. Sedan, tes elzévirs t'obsèdent. Romain ? Exact. Et Nemrod selle ses Samson !

Et nier téocalli ?

Cave canem (car ce nu trop minois -- rembuscade d'éruptives à babil -- admonesta, fil accru, Têtebleu ! qu'Ariane évitât net. Attention, ébénier factice, ressorti du réel. Ci-gît. Alpaga, gnôme, le héros se lamente, trompé, chocolat : ce laid totem, ord, nil aplati, rituel biscornu ; ce sacré bedeau (quel bât ce Jésus !). Palace piégé, Torpédo drue si à fellah tôt ne peut ni le Big à ruer bezef.

L'eugéniste en rut consuma d'art son épi d'éolienne ici rot (eh... rut ?). Toi, d'idem gin, élèvera, élu, bifocal, l'ithos et notre pathos à la hauteur de sec salamalec ?

Élucider. Ion éclaté : Elle ? Tenu. Etna but (item mal famé), degré vide, julep : macédoine d'axiomes, sac semé d'École, véniel, ah, le verbe enivré (ne sucer ni arrêter, eh ça jamais !) lu n'abolira le hasard ?

Nu, ottoman à écho, l'art su, oh, tara zéro, belle Deborah, ô, sacre ! Pute, vertubleu, qualité si vertu à la part tarifé (décalitres ?) et nul n'a lu trop s'il séria de ce basilic Iseut.

Il à prié bonzes, Samaritain, Tora, vilains monstres (idolâtre DNA en sus) rêvés, évaporés : Arbalète (bètes) en noce du Tell ivre-mort, émeri tu : O, trapu à elfe, il lie l'os, il lia jérémiade lucide. Pétard ! Rate ta reinette, bigleur cruel, non à ce lot ! Si, farcis-toi dito le coeur !

Lied à monstre velu, ange ni bête, sec à pseudo délire : Tsarine (sellée, là), Cid, Arétin, abruti de Ninive, Déjanire...

Le Phenix, ève de sables, écarté, ne peut égarer racines radiales en mana : l'Oubli, fétiche en argile.


Prix : Ile de la Gorgone en roc, et, ô, Licorne écartelée, Sirène, rumb à bannir à ma (Red n'osa) niére de mimosa : Paysage d'Ourcq ocre sous ive d'écale ; Volcan. Roc : tarot célé du Père.


Silène bavard, replié sur sa nullité (nu à je) belge : ipséité banale. L' (eh, ça !) hydromel à ri, psaltérion. Errée Lorelei...

Fi ! Marmelade déviré d'Aladine. D'or, Noël : crèche (l'an ici taverne gelée dès bol...) à santon givré, fi !, culé de l'âne vairon.

Lapalisse élu, gnoses sans orgueil (écru, sale, sec). Saluts : angiome. T'es si crâneur !

* * *

Rue. Narcisse ! Témoignas-tu ! l'ascèse, là, sur ce lieu gros, nasses ongulées...

S'il a pal, noria vénale de Lucifer, vignot nasal (obsédée, le genre vaticinal), eh, Cercle, on rode, nid à la dérive, Dèdale (M... !) ramifié ?

Le rôle erre, noir, et la spirale mord, y hache l'élan abêti : Espiègle (béjaune) Till : un as rusé.

Il perdra. Va bene.

Lis, servile repu d'électorat, cornac, Lovelace. De visu, oser ?

Coq cru, ô, Degas, y'a pas, ô mime, de rein à sonder : à marin nabab, murène risée.

Le trace en roc, ilote cornéen.

O, grog, ale d'elixir perdu, ô, feligrane ! Eh, cité, fil bu ! ô ! l'anamnèse, lai d'arsenic, arrérage tué, pénétra ce sel-base de Vexin. Eh, pèlerin à (Je : devin inédit) urbanité radicale (elle s'en ira...), stérile, dodu.

Espaces (été biné ? gnaule ?) verts.

Nomade, il rue, ocelot. Idiot-sic rafistolé : canon ! Leur cruel gibet te niera, têtard raté, pédicule d'aimé rejailli.

Soleil lie, fléau, partout ire (Métro, Mer, Ville...) tu déconnes. Été : bètel à brasero. Pavese versus Neandertal ! O, diserts noms ni à Livarot ni à Tir ! Amassez.


Pali, tu es ici : lis abécédaires, lis portulan : l'un te sert-il ? à ce défi rattrapa l'autre ? Vise-t-il auquel but rêvé tu perças ?

Oh, arobe d'ellébore, Zarathoustra ! L'ohcéan à mot (Toundra ? Sahel ?) à ri : Lob à nul si à ma jachère, terrain récusé, nervi, née brève l'haleine véloce de mes casse-moix à (Déni, ô !) décampé.

Lu, je diverge de ma flamme titubante : une telle (étal, ce noir édicule cela mal) ascèse drue tua, ha, l'As.

Oh, taper ! Tontes ! Oh, tillac, ô, fibule à reve l'Énigme (d'idiot tu) rhétoricienne.

Il, Oedipe, Nostradamus nocturne et, si né Guelfe, zébreur à Gibelin tué (pentothal ?), le faiseur d'ode protège.

Ipéca... : lapsus.

Eject à bleu qu'aède berça sec. Un roc si bleu ! Tir. ital. : palindrome tôt dialectal. Oc ? Oh, cep mort et né, mal essoré, hélé. Mon gag aplati gicle. Érudit rossérecit, ça freine, benoit, net.

Ta tentative en air auquel bète, turc, califat se (nom d'Ali-Baba !) sévit, pure de -- d'ac ? -- submersion importune, crac, menace, vacilla, co-étreinte...

Nos masses, elles dorment ? Etc... Axé ni à mort-né des bots. Rivez ! Les Etna de Serial-Guevara l'égarent. N'amorcer coulevrine.

Valser. Refuter.

Oh, porc en exil (Orphée), miroir brisé du toc cabotin et né du Perec : Regret éternel. L'opiniâtre. L'annulable.

Mec, Alger tua l'élan ici démission. Ru ostracisé, notarial, si peu qu'Alger, Viet-Nam (élu caméléon !), Israël, Biafra, bal à merde : celez, apôtre Luc à Jéruzalem, ah ce boxon ! On à écopé, ha, le maximum

Escale d'os, pare le rang inutile. Métromane ici gamelle, tu perdras. Ah, tu as rusé ! Cain ! Lied imité la vache (à ne pas estimer) (flic assermenté, rengagé) régit.

Il évita, nerf à la bataille trompé.

Hé, dorée, l'Égérie pelée rape, sénile, sa vérité nue du sérum : rumeur à la laine, gel, if, feutrine, val, lieu-créche, ergot, pur, Bâtir ce lieu qu'Armada serve : if étété, éborgnas-tu l'astre sédatif ?

Oh, célérités ! Nef ! Folie ! Oh, tubez ! Le brio ne cessera, ce cap sera ta valise ; l'âge : ni sel-liard (sic) ni master-(sic)-coq, ni cédrats, ni la lune brève. Tercé, sénégalais, un soleil perdra ta bétise héritée (Moi-Dieu, la vérole !)

Déroba le serbe glauque, pis, ancestral, hébreu (Galba et Septime-Sévère). Cesser, vidé et nié. Tetanos. Etna dès boustrophédon répudié. Boiser. Révèle l'avare mélo, s'il t'a béni, brutal tablier vil. Adios. Pilles, pale rétine, le sel, l'acide mercanti. Feu que Judas rêve, civette imitable, tu as alerté, sort à blason, leur croc. Et nier et n'oser. Casse-t-il, ô, baiser vil ? à toi, nu désir brisé, décédé, trope percé, roc lu. Détrompe la. Morts : l'Ame, l'Élan abêti, revenu.

Désire ce trépas rêvé : Ci va ! S'il porte, sépulcral, ce repentir, cet écrit ne perturbe le lucre : Haridelle, ta gabegie ne mord ni la plage ni l'écart.


Great stuff!


Other posts:

Once in a while, stop and pay attention...

List of Crazy Laws in the United States

SQL Injection humor

Facts and Figures about the Language Industry

Tuesday, May 04, 2010 2:25:37 PM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
 Friday, March 19, 2010
Some people don’t like the idea of Google having any data about them. Unfortunately, if you visit a site tracked by Google Analytics (and chances are you hit several each day), you have no choice. But soon, you might.

Google is testing a browser-based opt-out solution for Google Analytics, they briefly note today on the Google Analytics blog. Specifically, this would be a “global browser based plug-in to allow users to opt out of being tracked by Google Analytics.” They note that engineers are finalizing and testing the funtionality.

How exactly this will work globally across all browsers remains to be seen. While Firefox and Chrome allow for easy use of plug-ins, Internet Exploerer and Safari are a bit more complicated. Still, if you’re a user who really cares about Google not tracking this information about you, it will probably be worth it to you to install this thing.

Of course, the other question is what this means for site owners. While it’s unlikely that a lot of users would install something like this, what if they did? That could drastically cripple the entire point of Google Analytics.

Source: Techcrunch

Other posts:

Big news in security: 1024-bit RSA encryption cracked

US Investigators Pinpoint Author Of Google Attack Code

Google Translator Hacked

How to use the Robots.txt file

Friday, March 19, 2010 8:16:00 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
 Thursday, March 18, 2010
InnovationHere are some tips to spot people who are likely innovators.  In this way, you can identify them more quickly, and choose to hire them if you want to be more innovative, or you can ignore and avoid them if the status quo is more your thing.  Good luck with that strategy, by the way.

Identifying people who are innovators is actually relatively easy.  They are the ones who don't actually seem to belong the organization in the first place.

Innovators tend to:

  1. Reject the standard framing of a problem and restate the problem or opportunity.  Rather than work within the given constructs or framing, many innovators want to toss out the framing and start anew.  Just like Galileo, this may require working against an orthodoxy, yet nonetheless, it moves and so must we.  Those folks who are so problematic about wanting to change or expand the framing of a problem?  Probably good innovators.
  2. Be optimistic.  They are almost always the glass half full people.  Pessimistic people will focus far too much energy on the "problem" while innovators will acknowledge the problem and move on to find interesting solutions.  They believe the problems are merely temporary barriers to more interesting solutions.
  3. Look to the future for signals rather than to the past.  In most businesses, many people will ask "has this been done before" and "what can we learn from that success or failure.  Innovators want to know "can we be the first" and what signals in the market or environment give us indications that we'll be successful
  4. Care about solving unmet or poorly understood challenges.  Often innovators are going beyond the obvious, ordinary problems to uncover deeper unmet or poorly understood issues.  If your team is captivated by solving an obvious and incremental problem, they aren't innovators.
  5. Network with people different than they are.  Evidence suggests that the best innovators are people who read outside of their industry, interact with people from many different backgrounds and interests and seek to bring solutions from outside their industry to the table.  People who are very deep in one industry but ignore signals and solutions from other industries are usually not very innovative.
  6. Are proactive.  Innovators actively seek change while many executives are content to wait and react to what other firms do.
  7. Are dissatisfied with the status quo and willing to change it rather than simply accept the status quo and merely complain.
  8. Are very comfortable learning, trying and failing, and then trying again.  They aren't stymied by a single failure and are usually very determined to start again, reframe the problem and try a new tack or approach, learning from previous failures and incorporating that knowledge.
So, if you are in the market to hire someone and want to know if he or she is likely to be an innovator, look for these signs:

  • Ask them about an existing problem that you have.  See if they are perfectly willing to accept your framing, or if they request the opportunity to reframe or change the frame entirely.  If the latter, a likely innovator.
  • Ask them about existing societal problems or corporate problems or challenges.  Listen to how they approach the problem and their willingness to suggest changes or alternatives and the possibilities they suggest for change.
  • In the context of a problem, what information do they seek - external, future oriented or internal information about the past?
  • Can they name a big failure in their lives and demonstrate what they learned and how that failure helped them gain more insight into an eventual solution?
  • Can they name five people in relatively senior positions they interact with on a regular basis who are from different industries?  Can they demonstrate an active network outside of their "home" industry?

The kinds of answers you get with these questions will tell you how strong the "innovation" force is within the candidate, and whether you should hire that person or turn the Force against them.

Photo source: vermininc


Other posts:

Once in a while, stop and pay attention...


What Are Customers Saying About You Online?

Hiring and managing geeks

Thursday, March 18, 2010 10:48:53 AM (Eastern Standard Time, UTC-05:00)  #    Comments [0] -
Hiring | Management

About the author/Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2019
Stanislas Biron
Sign In
Total Posts: 135
This Year: 0
This Month: 0
This Week: 0
Comments: 1
All Content © 2019, Stanislas Biron