jimmycollins.org Report : Visit Site


  • Ranking Alexa Global: # 11,451,983

    The main IP address: 195.7.226.159,Your server United Kingdom,Worcester ISP:Namesco Limited  TLD:org CountryCode:GB

    The description :self aware since 2:14 am eastern time, august 29th 1997...

    This report updates in 12-Jun-2018

Created Date:2010-01-31

Technical data of the jimmycollins.org


Geo IP provides you such as latitude, longitude and ISP (Internet Service Provider) etc. informations. Our GeoIP service found where is host jimmycollins.org. Currently, hosted in United Kingdom and its service provider is Namesco Limited .

Latitude: 52.189350128174
Longitude: -2.2200100421906
Country: United Kingdom (GB)
City: Worcester
Region: England
ISP: Namesco Limited

the related websites

    ticketmaster.co.uk theinquirer.net 101greatgoals.com propertyweek.com visitlondon.com ebrd.com hermes.com ikea.com tfl.gov.uk avanquest.com 

HTTP Header Analysis


HTTP Header information is a part of HTTP protocol that a user's browser sends to called containing the details of what the browser wants and will accept back from the web server.

Content-Encoding:gzip
Transfer-Encoding:chunked
Set-Cookie:PHPSESSID=dfqdolf9bpr0msc24v909mo391; path=/, TS01237438=0104bd80e7e4c17526db1f01897ea4b879927808a51db9f1bfd16791e78e8c8f6fbed0b5976fc7694cd46ae58899b7696b66e7ef70; Path=/
Age:0
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Vary:Accept-Encoding
Connection:keep-alive
Pragma:no-cache
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Date:Tue, 12 Jun 2018 15:05:38 GMT
Content-Type:text/html; charset=UTF-8
Accept-Ranges:bytes
X-Pingback:http://www.jimmycollins.org/blog/xmlrpc.php

DNS

soa:ns0.reg365.net. support.reg365.net. 2018032180 28800 3600 604800 86400
txt:"v=spf1 include:spf.reg365.net ~all"
ns:ns0.reg365.net.
ns2.reg365.net.
ns1.reg365.net.
ipv4:IP:195.7.226.159
ASN:8622
OWNER:ISIONUK Namesco Limited, GB
Country:GB
mx:MX preference = 30, mail exchanger = mx1.reg365.net.
MX preference = 30, mail exchanger = mx2.reg365.net.

HtmlToText

skip to content jimmy collins self aware since 2:14 am eastern time, august 29th 1997 home about my favorite reads of 2016 a round up of the best books i have read in 2016. a universe from nothing: why there is something rather than nothing by lawrence m. krauss theoretical physicist krauss writes on the beginnings of the universe and the current state of cosmology. space science is a huge interest for me, and i bought this book as i thought it would help me understand some of the science better. however i found it sometimes introducing concepts very difficult to understand, and found myself referencing wikipedia to learn more. a good read though if you are interested in the subject, i would recommend. american sniper: the autobiography of the most lethal sniper in u.s. military history by chris kyle an amazing journey tracking the beginnings and career of the deadliest sniper in american military history and his tragic murder on home soil after multiple tours in afghanistan. i read this before i saw the clint eastwood directed film adaption. the fault in our stars by john green this tragic tale of terminally ill teenagers was something i had wanted to read for a while based on a recommendation from a friend. although you suspect what’s coming, it still almost knocks you for six when it does. haven’t seen the big screen adaptation, but loved the sound track. i had this book for about a year before i read it, and was sorry i didn’t pick it up the minute it arrived. considering reading john green’s follow up book, “paper towns”. the gestapo: the myth and reality of hitler’s secret police by frank mcdonough excellent history of the gestapo’s key figures, internal power struggles and conduct from their beginnings right up to the end of ww2. interwoven with stories of real people and incidents from gestapo case files. at times i thought mcdonough was somewhat sympathetic towards the gestapo, but overall he presents the material in a very matter-of-fact way, also dispelling many myths about hitler’s secret police along the way. i recommend if you’re a fan of ww2 history. waiting to be heard: a memoir by amanda knox i’ve followed the amanda knox case since the very first day i heard of the murder of british student meredith kercher on the news. this is an absolutely riveting read, presenting the story from the perception of knox from her move to italy, meeting with kercher, and her ultimate incarceration for her murder. i particularly enjoyed her descriptions of the court cases and her time in prison. overall for me thought, some of the content raises even more questions. all she wanted by aphrodite jones all she wanted is the definitive history of the teena brandon case, a transman who was murdered on new years eve 1993 in humboldt, nebraska. i became interested in this case after seeing the big screen adaption, ‘boys don’t cry’ (1999) for which hilary swank won an oscar for her portrayal of brandon. this is a great read that describes the main characters in fantastic detail, along with the ensuing murder cases. both murderers still await execution on the nebraska death row following their convictions in the mid 1990s. trouble in paradise: uncovering the dark secrets of britain’s most remote island by kathy marks i’ve been fascinated with pitcairn island in the south pacific since i saw the marlon brando version of ‘mutiny on the bounty’. pitcairn is the island where the mutineers and their tahitian partners settled to evade detection by the british navy. controversy erupted on the island on the mid 1990′s with claims of decades of sexual abuse, implicating almost every male on the island. kathy marks was one of only six journalists permitted to be on the island during the trials. this book captures the trials and the atmosphere around them brilliantly, as well as exploring how the absence of authorities on pitcairn led to this situation, and the somewhat romantic view outsiders have of the island vs. the actual reality. i read this while on a short break to düsseldorf, germany in may, and found it hard to put down. heavier than heaven by charles r. cross this is the definitive biography of kurt cobain, charting his early life to his rise to the most popular rock star in the world as front man of nirvana. at times a harrowing read, especially when it talks of cobain’s early homelessness, mental anguish, and prolific drug abuse. the book gives great insights into the meaning of lots of nirvana songs (like the reasoning behind ‘smells like tenn spirit’), and what events in cobain’s life they related to. i could not put this down, although it took me a few weeks to read due to lots of engagements, it’s a book that will remain in my mind for a long time. if you’re a nirvana fanatic like myself, you will enjoy this. amongst women by john mcgahern something i’ve read a few times before, and only the second piece of fiction i’ve read this year, after ‘the fault in our starts’. a favorite of mine, thoroughly recommended if you’ve never read it. i took this on holidays to portugal in september this year and read it in a few hours in the sun. the interstellar age: inside the forty-year voyager mission by jim bell the second book i brought on holidays to portugal. i had bought this while in germany in may in the famous ‘mayersche buchhandlung’ book store in düsseldorf. this is a fascinating read even if you have never heard of the voyager program. unfortunately for me, i left this on the airplane on the way home from portugal, still with the final chapter to read. the third reich at war by richard j. evans this is the final part of richard j. evan’s excellent nazi germany trilogy (preceded by ‘the coming of the third reich’ and ‘the third reich in power’). it’s a lengthy read (700+ pages), but well worth it for the level of detail that evan’s goes into. some sections of this, especially the chapters relating to the ‘final solution’ are distressing to read. this is the best history of nazi germany i have ever read. hitler’s last day: minute by minute by jonathan mayo and emma craigie as i had read in many reviews of this book, this is not actually just confined to hitler’s last day. it covers april 29th, april 30th and the aftermath. along the way it introduces a host of characters from allied soldiers as they race through italy, british secret service agents and many political heavyweights such as churchill and truman. hitler’s death is not covered in any great detail, so that doesn’t make this book stand out from countless others covering the topic. but, it’s the ongoing introduction of new characters and how this period effected them that makes this a good read. the dark charisma of adolf hitler: leading millions into the abyss by laurence rees this covers hitler’s rise from disgruntled ww1 veteran to fuhrer of nazi germany. along the way the author seeks to answer the question as to why so many people followed this man unquestionably, and how he led a nation to ruin. auschwitz: the nazis & the ‘final solution’ by laurence rees impressed with the previous book in this list also authored by rees, i decided to read this. a terrifying account of auschwitz from it’s journey from work camp to site of the deaths of over 1 million people. impeccably researched and detailed, this is a book that can be read in a few hours but you will remember for quite some time afterwards. posted on january 2, 2017 by jimmy collins connecting to the sharepoint 2013 rest api from c# today i was updating an internal application we use for grabbing lots of terminology data from sharepoint lists, and exporting it as tbx files for import into cat tools etc. this was required as the sharepoint on which it was hosted previously was upgraded from 2010 to 2013. a small job i thought. then i discovered the the asmx web service in sharepoint i used to grab the data previously, are deprecated in sharepoint 2013, probably not a surprise to anyone in the know, but sharepoint happens to be one of my pet hates, so development of it is not something that i tend to keep up to date with. anyway, i had to re-jig our application to use the sharepoint rest api, and i thought i’d provide the code here for connecting, as it look a little bit of figuring out. the below (after you fill in your sharepoint url, username, password, domain, and name of the list you want to extract data from), will connect and pull back the list contents to an xmldocument object that you can parse. xmlnamespacemanager xmlnspm = new xmlnamespacemanager(new nametable()); uri sharepointurl = new uri("sharepoint url); xmlnspm.addnamespace("atom", "http://www.w3.org/2005/atom"); xmlnspm.addnamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices"); xmlnspm.addnamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"); networkcredential cred = new system.net.networkcredential("username", "password", "domain"); httpwebrequest listrequest = (httpwebrequest)httpwebrequest.create(sharepointurl.tostring() + "_api/lists/getbytitle('" + "list name" + "')/items"); listrequest.method = "get"; listrequest.accept = "application/atom+xml"; listrequest.contenttype = "application/atom+xml;type=entry"; listrequest.credentials = cred; httpwebresponse listresponse = (httpwebresponse)listrequest.getresponse(); streamreader listreader = new streamreader(listresponse.getresponsestream()); xmldocument listxml = new xmldocument(); listxml.loadxml(listreader.readtoend()); posted on november 11, 2015 by jimmy collins localization of email campaign content from eloqua eloqua is a marketing automation platform, allowing marketers to easily create campaigns consisting of emails, landing pages, social media etc. via its ‘campaign canvas’. campaigns can be created via a wysiwyg interface, allowing you to visualize marketing campaigns easily as you build them. it also integrates with crm tools, automatically passing any lead data generated onto your sales staff. my interest in eloqua, and specifically its api, relates to the localization of email campaign content. this can be achieved manually by exporting the created email (as a standalone html file), then re-importing the localized versions post translation, creating a new version of the original, one for each language you have localized for. manual exporting of email content for localization is of course a perfectly valid approach, but the more languages you have, the more manual steps in this process, and the longer it takes, potentially tying up a resource. the eloqua rest api can be used to easily reduce the transactional costs related to localization of email campaign content. using the api, you can quite easily automate the extraction of email content, and potentially send this content directly to your translation management system (tms) such as globalsight or worldserver, or straight to a translation vendor in the absence of a tms. the api documentation is pretty good. i also came across this samples project on github released under the apache license which i was able to use to knock up a proof of concept pretty quickly. it’s written in c# and includes functions to manipulate most asset types in eloqua. the email sample code in this library illustrates how to create, edit, and delete emails in eloqua via the rest api. for example, it’s this easy to grab an object that represents an email in eloqua: emailclient client = new emailclient(eloquainstance, eloquausername, eloquapassword, eloquabaseurl); try { email email = client.getemail(emailid); return email; } catch (exception ex) { // handle error... } some notes: when retrieving the email object which represents an email in eloqua, you need to specify the id of the email in eloqua. for automating the localization process, it could be difficult to determine this without user input. what i plan on doing is providing a nice ui so that users see only the emails that they have created in eloqua (i.e. not all emails created ever), and can click on one and submit it for translation in one click. the email object also contains other useful metadata like when the content was created, when it was last updated and by whom, the encoding, and the folder in which this email resides in eloqua, useful for when you want to upload the localized versions. so, that’s how easy it is to automate the retrieval of email content from eloqua. the library i referenced also has support for other asset types like landing pages etc. next i plan on using asp.net web api to turn this library into a http service i can use to talk to eloqua from other applications, such as the application that manages content submission/retrieval from our tms. posted on january 25, 2015 by jimmy collins globalsight web services api: manipulating workflows programmatically this is part four of my series of posts on the globalsight web services api . see below for the previous posts: interacting with the globalsight web services api from c# globalsight web services api: automate translation memory upload globalsight web services api: job creation here, i’d like to cover how you can manipulate workflows in globalsight via the api. for example, dispatching a workflow, accepting tasks in a workflow, or completing or moving workflows on to the next step. this can be useful if you want to automate specific steps, or if you want to use an interface other than globalsight when dealing with workflows. there are a couple of relevant functions that are pre-requisites when dealing with workflows programmatically: getjobandworkflowinfo - this returns details about workflows in a particular job. the id of the job in question is passed as a parameter to this function. this will return an xml response, detailing as well as the workflow information, some basic information about the job. we need this to get the id of the workflow which we want to work with, within a particular job. getacceptedtasksinworkflow - this will return the task information for a workflow, given the workflow id ( which we would have got from getjobandworkflowinfo ). with the xml response here, we’ll be able to search for specific tasks in a workflow, and get the task id – this is what is required in order to manipulate specific tasks in a workflow. from the above, ( i leave the parsing of the xml response as an exercise to the reader ), we can begin to perform workflow tasks by using the task id. // accept task string accepttask = client.accepttask(auth, "63781"); console.writeline("accept task response: " + accepttask); // send this worfklow to the 'write to tm' step string completetask = client.completetask(auth, "63781", "write to tm"); console.writeline("\n\ncomplete task response: " + completetask); the above is a very simple example of accepting a particular task in a workflow (using the workflow id), and sending it to the next step in the workflow via ‘ write to tm’ . ‘ write to tm ‘ here is the actual text on the arrow in the workflow diagram. i found this syntax strange, but it seems to work. it should be noted that the user under which you are logged into the web service with must be on the list of those allowed to accept the task you are trying to accept, you will receive an error otherwise. the globalsight web services api documentation has much more information the the types of actions you can perform on workflows, but the above should get you started. posted on november 4, 2014 by jimmy collins globalsight web services api: job creation this is the third in my series of posts on the globalsight web services api . see below for the previous posts: interacting with the globalsight web services api from c# globalsight web services api: automate translation memory upload in this post, i’m going to cover how to actually create jobs in the globalsight system via the web services api . creating jobs via the user interface works fine, but if you want to automate the process, this is fully supported via the api. this can be useful if for example you wanted to create a better experience for creating jobs, or a totally different interface – useful if you have people not experienced with globalsight who may want to submit content translation or review jobs. i’ll assume you’re all setup to interact with the api from c# (see the first post above for a basic introduction if you are not). there are a couple of api calls relevant to job creation: getfileprofileinfo - this returns the list of file profiles currently available in the system. the response is xml format, listing all file profiles available in the system, each having an id, name and description. the file profile is a required parmeter to both the uploadfile and createjob functions. uploadfile - this facilitates upload of a single file to globalsight (note it does not actually create a job). this needs to be called once per file. getuniquejobname - this function essentially takes a job name, and adds a nine digit unique id to the name. each job in globalsight must have a unique name. if you already have some unique identifier in your job name, you will not need to call this function, but otherwise it is useful for ensuring that there aren’t any clashes between job names. createjob - this is the function that actually creates the job in globalsight. let’s look at some simple code for job creation using the above listed functions. gs_api.ambassadorservice client = new gs_api.ambassadorservice(); string jobname = "demo job (ignore)"; string textfilepath = @"c:\users\jimmy\desktop\strings.txt"; string fileprofileid = "37"; byte[] filecontents = system.io.file.readallbytes(textfilepath); // authenticate string auth = client.login("testuser1", "password"); // here you would get the file profiles, and find the apt. one for this job // i'll leave this to the reader as an exercise, i've assigned a variable above // next, lets ensure uniqueness of our job name string uniquejobname = client.getuniquejobname(auth, jobname); // upload the file client.uploadfile(auth, uniquejobname, "/files/strings.txt", fileprofileid, filecontents); // create the job - ensure to use the same job name as your call the uploadfile client.createjob(auth, uniquejobname, "demo job", "/files/strings.txt", fileprofileid, ""); a couple of points to note: each file you upload needs to be converted to a byte array. c# provides the handy function i’ve used above for this purpose. the third parameter to uploadfile , (in this case ‘ files/strings.txt ‘), is the location to upload the file on the globalsight server. there are a few folders created by default for any job, the language code , ‘ webservice ‘ which indicates the files were uploaded via the api, and a folder named after the job id . the parameter above is the directory structure inside the job id folder, this is whatever you want it to be. this is useful, as the files are exported in that same structure post translation, so you can for example retain the directory structure of a translation kit if you so wish. here’s an example of how the file we uploaded above is stored on the globalsight server: the job name you pass to createjob , must be identical to the one you passed to uploadfile . this is how globalsight knows which files relate to this job. the final parameter in createjob is the target languages. leave this empty (as i have above) and globalsight will assign all the languages contained in the localization profile that is associated with the file profile you have specified. that’s it, after you have run the above code, your job is now created in globalsight. this was a very basic introduction to job creation in globalsight, showing how a single file can be submitted via the web services api. i haven’t covered items such as error handling, or even creating jobs that have multiple files, not just one as in my simple example above – i will perhaps cover this in a future post. posted on september 7, 2014 by jimmy collins globalsight web services api: automate translation memory upload this is the second in my series of posts on the globalsight web services api . for a brief introduction, and the steps to get setup using the api from c#, see my previous post . translation memories, in tmx format, can take a long time to upload to globalsight via the user interface , especially if you have a lot of large ones. this can be quiet easily automated (and run overnight for example) via the globalsight web services api. first, you need to call uploadtmxfile , which just uploads the tmx file to the globalsight server, then call importtmxfile , which does the actual import to the system: gs_api.ambassadorservice client = new gs_api.ambassadorservice(); string demotmxlocation = @"c:\tmx\demo.tmx"; string tmname = "main"; // authenticate string auth = client.login("testuser1", "password"); // we need to convert the tmx file to a byte array byte[] tmxasbytes = system.io.file.readallbytes(demotmxlocation); // next, upload the tmx client.uploadtmxfile(auth, "demo.tmx", tmname, tmxasbytes); // finally, import the tmx // the final parameter here can be merge, overwrite, or discard client.importtmxfile(auth, tmname, "merge"); we found this to be up to 25 times faster than uploading tmx files via the user interface, outside of the obvious benefit of not tying a resource up uploading tmx files for a few days. next up, i’ll outline how to create translation/review jobs in globalsight using the api. posted on august 26, 2014 august 26, 2014 by jimmy collins interacting with the globalsight web services api from c# globalsight is an open source globalization management system (gms). it’s main purpose is to automate the flow of content to translators, and essentially streamline many of the tasks involved in the translation workflow, scoping, project management, translation, review etc. as well as centralizing translation memories. similar gms systems would be sdl worldserver (formally idiom worldserver before being acquired by sdl in 2008), and sdl tms . what differentiates globalsight (owned by welocalize ), is that it is open source. the source code is freely available . it can be customized as you see fit. it also provides a very powerful web services api , that you can use to integrate other systems in your translation workflow with globalsight, that’s what i want to introduce here, specifically the steps to get setup from c# to interact with this api. i’m going to assume you already have an instance of globalsight setup, i’d imagine you wouldn’t be interested in this api otherwise. setup steps first off, create a new c# visual studio project, a console application will suffice for this tutorial. next, we need to add a service reference to the api. to do this, follow the steps here , using the following url: https://<your_server_url/globalsight/services/ambassadorwebservice?wsdl note – the service is called ‘ ambassadorwebservice ‘ because globalsight itself was previously called ambassador, when it was owned by a company called globalsight. the product was renamed globalsight after it was taken over by welocalize. if you get to the point where you are looking at the (rather large) code base, you will see it littered with references to ambassador. once you successfully add the service reference, try to build your project – you will notice it will fail (at time of writing at least anyway): there are duplicate entries in reference.cs for these two functions, getattributesbyjobid and getprojectidbyfileprofileid . to fix this issue, just double click on each of the above errors, and comment out the duplicate entries in reference.cs . this will allow your project to build, but is a pain, as you need to do it each time you update your service reference. now that your project successfully builds, you are ready to use the api. authentication before trying to authenticate with the web service, you may need to do some manual configuration on your globalsight instance. the ip filter feature is enabled by default – this will only allow ip’s on a white list to interact with globalsight via the api. there are two options here: disable the ip filter completely – not recommended. add the necessary ip ranges to the white list. see the ‘ip filter’ section of the web services documentation for more information on this. once you complete the above, we should be able to connect to the api via some c# code. before calling any operations, the login function must be called with a valid globalsight account. this function returns an authentication token which must then be passed as a parameter to all subsequent api calls. let’s connect, and call a simple function, getallusers , that will give us the list of all user currently in the system, and write it out to the console so that we can see the response: gs_api.ambassadorservice client = new gs_api.ambassadorservice(); string auth = client.login("testuser1", "password"); string userinfo = client.getallusers(auth); console.writeline(userinfo); console.readline(); if you have done everything correctly, you will see an xml response in your console window detailing all the users currently setup in the system. most api calls to retrieve information return an xml response, it’s just a matter of parsing it, and doing whatever you want with it then. conclusion here are my feelings so far, having used this api for the past 3 months to automate different tasks: you can’t rely on the documentation on the wiki – some function definitions are out of date, some now have extra parameters etc. there is not enough information in the documentation about what each call actually returns (i.e. the format of the xml). i found myself having to run commands to see what they actually return. the api documentation needs some love. some api call sequences (e.g. for job creation) are really difficult to figure out, e.g. you need to call uploadfile , then createjob . again, making this clear in the documentation would be better. some functions expect paramters in xml format, but no example of this format is give. documentation! for an open source project, there doesn’t seem to be any community. the forums on globalsight.com are not particularly active, and run some really old forum software that is extremely frustrating to use. maybe there is a community, and i’m just not aware, but it certainly looks like they don’t hang out at globalsight.com. all this aside, the web services api is extremely powerful, and i seriously recommend looking into it if you use globalsight – some functions can save you days – e.g. upload of translation memories via the api, as opposed the web interface. this covered a basic introduction to interacting with the globalsight web services api from c#. in a future post, i’ll cover how to actually create globalsight jobs via this api. if there’s anything else you’d like to see covered in a future post, leave a comment below, and i’ll see what i can do. posted on august 24, 2014 august 26, 2014 by jimmy collins life tips from 18 of the world’s wealthiest i thought this was pretty cool, and very well presented. posted on august 24, 2014 august 24, 2014 by jimmy books i want to read in 2014 my current reading list for 2014: the little black book for managers: how to maximize your key management moments of power by john cross, rafael gomez, & kevin money. pitcairn island, the bounty mutineers and their descendants: a history by robert w. kirk. heavier than heaven: a biography of kurt cobain by charles r. cross. trainspotting by irvine welsh. the day the earth caved in: an american mining tragedy by joan quigley. what you see is what you get by alan sugar. ibm and the holocaust: the strategic alliance between nazi germany and america’s most powerful corporation by edwin black patrick pearse: the triumph of failure by ruth dudley edwards. posted on january 4, 2014 january 4, 2014 by jimmy static analysis for finding i18n issues static analysis tools are useful for quickly identifying issues with your code. recently, my team has been evaluating globalyzer , a static analysis tool for finding software internationalization issues. globalyzer will find such issues as hard coded strings, or hard coded date/time formats. our aim is to move the discovery of i18n issues from the localization qa phase, upstream to the development phase. my first impressions are good. globalyzer is quick to setup, easy to use, and scans code unbelievably quickly. i’ve scanned a project with 350,000 lines of code in less than a minute. the key to an effective rollout of globalyzer is developing rule sets per product. rule sets essentially define the scanning criteria for a code base. for example, for a c++ project, we would start with the built in rule set for c++. then after an initial scan, we analyze the results, and we may want to update the rule set. for example, we may want to configure the rule set to ignore calls to any logging functions, since we don’t localize log messages. i’m hoping that we get the following usage from globalyzer: globalyzer should help us get involved earlier in the development cycle. lots has been written about agile localization. globalyzer should help us certify sprints as i18n ready, for later localization. we should find any serious i18n issues early in the project – thus reducing fire-fighting later on. longer term, i’d like for us to look at integrating globalyzer with our build systems. i’ll be posting here periodically on our progress, and my experiences with using static analysis tools to find code level internationalization issues. posted on july 22, 2013 by jimmy automate your android app testing using robotium i like that it’s the time of the year when i actually have some time to invest in blogging here. updates have been pretty sporadic this year (another item to add to my list of resolutions once 2013 hits in a few days). in this post, i’d like to talk a little about robotium , and how you can use it to automate the qa of your android applications. mobile applications are perfect for quality assurance automation – they are usually small, have limited functionality when compared with desktop applications, and are rarely complex in terms of testing steps. also, if your a solo mobile developer, you may not have the time (or money) to invest in proper quality assurance of your applications. we’ve been using a robotium based solution written in java at my day job for a while, to validate the quality of our localized product builds, both as a unit testing tool and as an actual test automation tool used by our qa team. one of the main reasons why we chose to invest time in robotium is the fact that it offers flexibility in terms of how it recognizes objects within your app (e.g. like it would have to in order to click a button). this is especially important for us, as we want to develop a solution once, and have it support multiple language versions of our application. we also looked at monkeyrunner , which ships with the android sdk. monkeyrunner uses jython (a python implementation in java) scripts to walk through applications. i prefer robotium as monkeyrunner lacks the tight ui integration offered by robotium, (although monkeyrunner is much easier to setup and run). when developing automated test scripts using robotium, we can use the text from a ui object to identify that object at run-time, for example the label on a button. what we do is compile the localized resources from all our languages with our test application, so if we switch our device language to german for example, the resources from the ‘values-de’ folder are loaded by our test application, and thus we can add new languages to our automation solution simply by re-packaging the apk file containing our test automation scripts, and it will run on any of our supported locales without code modifications. one of the disadvantages of this approach, (and almost all ui based test automation solutions to be fair), is that the maintenance may be high – for example, you will probably lose 90% of your code in a ui refresh. creating a simple robotium automated test case first off, download the latest version of robotium, (3.6 at the time of writing). now simply create a new android application in the ide of your choice, i prefer netbeans due to familiarity, but i know most people like eclipse for android development. add the robotium jar as a reference in your project. for the purpose of this example, let’s say we want to click the ‘cancel’ button in the below screen capture. as i mentioned above, our robotium code uses the string id’s to find objects (based on the current device language, we will look for the value of that string id for that language if available, and use that to look for the object on the current screen). code (finally!) package com.jc.robotium import android.app.activity; import android.test.activityinstrumentationtestcase2; import com.jayway.android.robotium.solo.solo; import android.content.res.resources; import android.content.context; import java.util.locale; public class robotiumexample extends activityinstrumentationtestcase2 // provides functional testing of an activity { private static final string target_package_id = "com.yourcompany.yourapp"; private static final string launcher_activity_full_classname = "com.yourcompany.yourapp.activities.mainactivity"; private static class launcheractivityclass; private solo solo; private activity activity; private resources res; private context context; // this will launch the application specified above on the device static { try { launcheractivityclass = class.forname(launcher_activity_full_classname); } catch(classnotfoundexception e) { throw new runtimeexception(e); } } public robotiumexample() throws classnotfoundexception { super(target_package_id, launcheractivityclass); } @override protected void setup() throws exception { activity = getactivity(); solo = new solo(getinstrumentation(), activity); context = getinstrumentation().getcontext(); res = context.getresources(); } public void testui() throws throwable { // .... // robotium code begins here // wait for the 'cancel' button solo.waitfortext(res.getstring(r.string.cancel)); // we may want to take a screen capture... solo.takescreenshot(); // click the cancel button solo.clickontext(res.getstring(r.string.cancel)); // .... } @override protected void teardown() throws exception { try { solo.finalize(); } catch(throwable e) { // catch this } getactivity().finish(); super.teardown(); } notice a few things above: we are extending the activityinstrumentationtestcase2 class, which provides us with the ability to run test methods on the ui thread. the method that contains your test logic must be prefixed with ‘test’, notice mine is called testui(). we could have looked for the ‘cancel’ button by passing the text ‘cancel’ to the waitfortext() and clickontext() methods, but that would only work on the english version of our product. instead we use the string id, and look up the value of that string id based on the current device locale. if you use the ‘takescreenshot()’ method i have shown an example of above, screen captures will be saved in ‘/sdcard/robotium-screenshots/’ on your test device. running the test compile the apk containing your test automation script and install it on your test device, along with the apk under test. one ‘gotcha’ here with robotium is that the apk under test and the apk containing the test logic must be signed with the same certificate. this may not be the case if your apk under test comes out of a build system of some sort. you can use resign.jar to re-sign your apk under test with the same signature as your apk containing the test logic (by running it on the same machine on which you compiled the test apk). once both are installed on a test device, we can launch the test from a command prompt via adb : adb shell am instrument -e class com.jc.robotium.robotiumexample -w com.jc.robotium/android.test.instrumentationtestrunner conclusion robotium is a good test framework for getting automation for android applications up and running very quickly. it has an active community and updates are released regularly, the latest version (3.6 at time of writing), also seems to be a lot more stable than previous versions. on the flip side, since we are relying on text resources (which may change frequently), the maintenance on robotium based automation solutions can be high if your ui changes a lot, which is probably a high possibility for a mobile application. if your looking for an automation framework for your android application that you can get up and running quickly, and use to run scripts across an android application supported in many languages, i would recommend robotium, and will be keeping a close eye on it as it develops further. posted on december 27, 2012 august 24, 2014 by jimmy basic software i18n check list part of something my team is currently working on involves defining a standard approach to assessing the world-readiness of a piece of software, be it a brand new product or a legacy product that has existed for a long time. if your codebase is not correctly internationalized, you will face many problems if you ever want to localize your application for another market. most of these are general items that could apply to any product on any platform, be a it a website or a mobile application. here’s my first draft of my list. this may help you if you are planning of localizing your application to sell in other markets. strings have all strings been externalized? have all strings been approved by someone who is a native english speaker? is there overuse of any abbreviations or acronyms, e.g. ‘app info’? is there anywhere that you are concatenating strings together? punctuation is text too! are you using any hard-coded punctuation marks (.,!?) these need to be externalized? have you identified all trademarks, tokens and other ‘special’ elements in your text and communicated to localisation that these shouldn’t be translated? for mobile applications, is your text short enough to fit the potential small screen size of mobile devices? consider string length expands generally 20% – 30% after translation. some phrases expand by a lot more than 30%. abbreviations and acronyms are the worst offenders here. try to keep resources that shouldn’t be translated separate from those that should. don’t embed html mark up in string resources. source files source files are a standard file format – no need to invent new resource file formats. a standard resource file format will exist for the platform for which you are developing. source files are unicode. you need to be able to generate your localizable file set in one step, it’s ideally handled by the build process. general ui can input fields accept accented characters? can input fields accept double byte characters? is there room for buttons to expand if necessary? are there any ui elements like check boxes or radio buttons that are placed across the screen? it is better to place these vertically. try to put labels for controls above the control, rather than beside it. web applications is server set up to send utf-8 character set? are all buttons resizable? are there any mouse-over buttons with text in them? are other elements on the screen able to expand in size? are links to help and other user documentation appropriately localized? for html based ui, never use absolute positioning. never use html tables to achieve layout. try to avoid using fixed widths with html layouts. don’t use the ‘align’ property to align items left or right. externalize css to a separate file – never use inline css. images is there text in any image? are there any images that depict hand, body or facial gestures? e.g, the thumbs up gesture is offensive in some cultures. are there any icons or images that are very specific to one region? e.g. an american type mailbox indicating an email. sql use the nvarchar type to store all text. can all insert and update statements handle unexpected apostrophes? (o’sullivan, d’accord for example)? can all insert and update statements handle accented and double byte characters? for mysql, ensure it was installed with utf-8 as the default character set. numbers & dates do any parts of your application format numbers using a thousand separator or a decimal point? if so the formatting string must be read from the os. do any parts of your application format currencies? if so the formatting string must be read from the os. does changing the application locale change all numbers appropriately? are all time and date formats read from the os based on locale? does changing the application locale change all dates appropriately? regular expressions do any regular expressions use the construct [a-za-z]? these are not safe from an i18n point of view. never use a regular expression to find a price, as the currency will be different for different languages. collation/sorting do any parts of your application sort alphabetically? if so then they need to be tested for i18n awareness. posted on december 12, 2012 by jimmy beware – ransomware so this evening i was sitting at home when i get a panicked call from a friend in some distress. when he eventually explained what he was seeing on his computer screen at that moment, i immediately suspected a ransomeware infection. ransomware, for those who have been living on the third moon of jupiter for the last few years, is a type of malicious software that basically holds your pc for ransom. the user is prompted to pay a fee to ‘free’ their computer. having seen a few infections in the past, this was by far the most scary looking. i can image many naive users being fooled by this, especially i imagine older pc users. see below for yourself – the reasons your pc has been ‘locked’ are quite serious – pirating content, or one to scare the life out of any user – the mention of your pc being used to view child pornography. what gives it even more sway is that the garda (irish police force) logo is displayed. the designers has also used the ‘mcafee secure’ logo – which is obviously to give the user a sense that this is legitimate – take it from me it’s not. this screen prompts immediately after start up, and the designer has even gone as far to disable alt-f4 and ctrl-alt-delete, so you can’t exit the application, or kill the process from the windows task manager. the infection itself is quite simple to remove. after booting into safe mode and checking the usual places like the windows folder i came across a suspiciously name folder in ‘c:\programdata’. it was a randomly named folder with a name like ‘ajklvnksnvsdfvfv’. inside, a 158mb html page, and all the necessary images, and css files etc. there was also an .exe in the root of the ‘c:\programdata’ folder, the name of which i can’t remember, but it was name similarly to the folder with the html file, images etc. (i didn’t have a usb key handy regretfully). deleting these files and folders removes the infection, so it doesn’t seem too complex in the methods it employs to evade detection. pass this on to any naive users you may know who could potentially see this infection – it may save them a lot of worry. posted on september 21, 2012 by jimmy sql – alter a database user’s password via a query here’s some handy sql to alter the login of an existing user via a query. i recently lost my login to one of the databases i use for a project (ok, i didn’t lose it, i forgot it). luckily i had another account i could login to the database with via sql server management studio, and execute the below query to reset the password of the one that i forgot. this got me out of a bind: go alter login [login_name] with default_database=[database_name] go use [database_name] go alter login [login_name] with password=n'new_password' must_change go posted on july 31, 2012 august 24, 2014 by jimmy interacting with microsoft excel from c# using epplus – part 1 i’ve been working on moving the reporting functionality of an existing application from html to microsoft excel format. i find html fine for creating simple reports or sometimes log files from c# applications, but these reports were churning out at around 50mb, which internet explorer was having serious problems dealing with. so, i decided to solve this issue by moving all reporting functionality in the application to microsoft excel format, which with hindsight i would have done in the original design. epplus is an open source .net library for reading an writing excel files. i’ve used this in many projects, and have found it invaluable when the requirement to either read or write excel files crops up. in this post, i’ll give examples of using epplus to write to a microsoft excel file. setup create a new c# console application project in visual studio. download the epplus binaries from the downloads section on the epplus codeplex site . extract the files and add epplus.dll as a reference to your project. writing to excel epplus writes excel 2007/2010 files using the open office xml format (xlsx). the first thing to do, after the initial setup has been completed, is to add the following imports to your code: using officeopenxml; using officeopenxml.style; next, let’s create a new excelpackage and add some properties to it such as the author, title and company: using (excelpackage p = new excelpackage()) { p.workbook.properties.author = "miles dyson"; p.workbook.properties.title = "skynet monthly report"; p.workbook.properties.company = "cyberdyne systems"; // the rest of our code will go here... } now we’ll need to create a new worksheet where we will add our data: p.workbook.worksheets.add("april 2012"); excelworksheet ws = p.workbook.worksheets[1]; // 1 is the position of the worksheet ws.name = "april 2012"; we’ll be adding some simple data to this worksheet, contained in 3 columns. we might want to add a header to this worksheet with some column names, and some basic formatting, like making the column header background color something different. this is simple to achieve using epplus: int rowindex = 1; int colindex = 1; do { // set the background colours var cell = ws.cells[rowindex, colindex]; var fill = cell.style.fill; fill.patterntype = excelfillstyle.solid; fill.backgroundcolor.setcolor(color.lightgray); colindex++; } while (colindex != 4); // set the cell values var cell_actionname = ws.cells[1, 1]; var cell_timetaken = ws.cells[1, 2]; var cell_processorsused = ws.cells[1, 3]; cell_actionname.value = "action name"; cell_timetaken.value = "time taken"; cell_processorused.value = "processing unit"; the above two actions will be quite common if you use epplus to write to excel files in a lot of different projects. i’d recommend created a static helper class to perform both of these functions (adding the properties and creating a header), i’ve done this with these and other common functions, and i’ve found it’s saved me some time. note that we haven’t actually saved the excel file yet, it’s in memory but we haven’t saved it to disk. before we do, let’s add some data to it as well as the header. for the purpose of this example, let’s say we already have the data (wherever it may have come from), defined as a list of hypothetical processoraction objects. in order to write the data to the file, we can just iterate over this list and write a new row for each processoraction object to the excel file: // get hypothetical data... list processoractions = dataaccesshelper.getprocessordata(datatime.now); // column indexes for clarity int actioncolindex = 1; int timecolindex = 2; int processorcolindex = 3; int rowindex = 2; // row 1 is the header foreach(processoraction p in processoractions) { // action var actioncell = ws.cells[rowindex, actioncolindex]; actioncell.value = p.action; // time var timecell = ws.cells[rowindex, timecolindex]; timecell.value = p.time; // processor var processorcell = ws.cells[rowindex, processorcolindex]; processorcell.value = p.processor; rowindex++; } now that all our data is written, we want to save the excel file for distribution: // save the excel file byte[] bin = p.getasbytearray(); file.writeallbytes(@"c:\reports\report.xlsx, bin); your file should save successfully. that’s the basics of writing to excel files using epplus. in the next post, i’ll outline how to read data contained in an excel file into memory. happy coding 2 comments posted on april 18, 2012 august 24, 2014 by jimmy posts navigation ← older posts decode by scott smith blogroll adobe globalization coding horror joel on software landon dyer moravia phil haack scott hanselman the morning brew the unicode blog zen habits reading recent posts my favorite reads of 2016 connecting to the sharepoint 2013 rest api from c# localization of email campaign content from eloqua globalsight web services api: manipulating workflows programmatically globalsight web services api: job creation globalsight web services api: automate translation memory upload interacting with the globalsight web services api from c# life tips from 18 of the world’s wealthiest books i want to read in 2014 static analysis for finding i18n issues

URL analysis for jimmycollins.org


http://www.jimmycollins.org/blog/?p=669
http://www.jimmycollins.org/blog/
http://www.jimmycollins.org/blog/wp-content/uploads/2014/08/capture.png
http://www.jimmycollins.org/blog/?p=755
http://www.jimmycollins.org/blog/mailto:j%69mmy.b.%63olli%6es%40gm%61il.com
http://www.jimmycollins.org/blog/?page_id=2
http://www.jimmycollins.org/blog/?p=680
http://www.jimmycollins.org
http://www.jimmycollins.org/blog/?p=607
http://www.jimmycollins.org/blog/?p=794
http://www.jimmycollins.org/blog/?paged=2
http://www.jimmycollins.org/blog/?p=624
http://www.jimmycollins.org/blog/wp-content/uploads/2014/09/capture.png
http://www.jimmycollins.org/blog/?p=547#comments
http://www.jimmycollins.org/blog/mailto:j%69m%6dy%2eb.collins@%67%6d%61i%6c.%63om
blog.cwa.me.uk

Whois Information


Whois is a protocol that is access to registering information. You can reach when the website was registered, when it will be expire, what is contact details of the site with the following informations. In a nutshell, it includes these informations;

Domain Name: JIMMYCOLLINS.ORG
Registry Domain ID: D158247631-LROR
Registrar WHOIS Server: whois.register.it
Registrar URL: http://we.register.it
Updated Date: 2017-01-18T12:20:04Z
Creation Date: 2010-01-31T21:20:06Z
Registry Expiry Date: 2018-01-31T21:20:06Z
Registrar Registration Expiration Date:
Registrar: Register.IT SPA
Registrar IANA ID: 168
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +39.5520021555
Reseller:
Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
Registry Registrant ID: C83808178-LROR
Registrant Name: James Collins
Registrant Organization: James Collins
Registrant Street: 6 Church View
Registrant City: Ballymacoda
Registrant State/Province: Cork
Registrant Postal Code: none
Registrant Country: IE
Registrant Phone: +44.8453633630
Registrant Phone Ext:
Registrant Fax:
Registrant Fax Ext:
Registrant Email: [email protected]
Registry Admin ID: C83808179-LROR
Admin Name: Administrator Domain
Admin Organization: Namesco Limited
Admin Street: Acton House, Perdiswell Park
Admin City: Worcester
Admin State/Province: England
Admin Postal Code: WR3 7GD
Admin Country: GB
Admin Phone: +44.8453633630
Admin Phone Ext:
Admin Fax:
Admin Fax Ext:
Admin Email: [email protected]
Registry Tech ID: C83808180-LROR
Tech Name: Namesco Limited
Tech Organization: Namesco Limited
Tech Street: Acton House, Perdiswell Park
Tech City: Worcester
Tech State/Province: England
Tech Postal Code: WR3 7GD
Tech Country: GB
Tech Phone: +44.8453633630
Tech Phone Ext:
Tech Fax: +44.8453633631
Tech Fax Ext:
Tech Email: [email protected]
Name Server: NS0.REG365.NET
Name Server: NS1.REG365.NET
Name Server: NS2.REG365.NET
DNSSEC: unsigned
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of WHOIS database: 2017-09-13T02:13:24Z <<<

For more information on Whois status codes, please visit https://icann.org/epp

Access to Public Interest Registry WHOIS information is provided to assist persons in determining the contents of a domain name registration record in the Public Interest Registry registry database. The data in this record is provided by Public Interest Registry for informational purposes only, and Public Interest Registry does not guarantee its accuracy. This service is intended only for query-based access. You agree that you will use this data only for lawful purposes and that, under no circumstances will you use this data to: (a) allow, enable, or otherwise support the transmission by e-mail, telephone, or facsimile of mass unsolicited, commercial advertising or solicitations to entities other than the data recipient's own existing customers; or (b) enable high volume, automated, electronic processes that send queries or data to the systems of Registry Operator, a Registrar, or Afilias except as reasonably necessary to register domain names or modify existing registrations. All rights reserved. Public Interest Registry reserves the right to modify these terms at any time. By submitting this query, you agree to abide by this policy.

  REFERRER http://www.pir.org/

  REGISTRAR Public Interest Registry

SERVERS

  SERVER org.whois-servers.net

  ARGS jimmycollins.org

  PORT 43

  TYPE domain

DOMAIN

  NAME jimmycollins.org

  HANDLE D158247631-LROR

  CREATED 2010-01-31

STATUS
clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
clientTransferProhibited https://icann.org/epp#clientTransferProhibited
clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited

NSERVER

  NS0.REG365.NET 81.88.63.115

  NS1.REG365.NET 85.233.160.78

  NS2.REG365.NET 85.233.164.72

OWNER

  HANDLE C83808178-LROR

  NAME James Collins

  ORGANIZATION James Collins

ADDRESS

STREET
6 Church View

  CITY Ballymacoda

  STATE Cork

  PCODE none

  COUNTRY IE

  PHONE +44.8453633630

  EMAIL [email protected]

ADMIN

  HANDLE C83808179-LROR

  NAME Administrator Domain

  ORGANIZATION Namesco Limited

ADDRESS

STREET
Acton House, Perdiswell Park

  CITY Worcester

  STATE England

  PCODE WR3 7GD

  COUNTRY GB

  PHONE +44.8453633630

  EMAIL [email protected]

TECH

  HANDLE C83808180-LROR

  NAME Namesco Limited

  ORGANIZATION Namesco Limited

ADDRESS

STREET
Acton House, Perdiswell Park

  CITY Worcester

  STATE England

  PCODE WR3 7GD

  COUNTRY GB

  PHONE +44.8453633630

  EMAIL [email protected]

  REGISTERED yes

Go to top

Mistakes


The following list shows you to spelling mistakes possible of the internet users for the website searched .

  • www.ujimmycollins.com
  • www.7jimmycollins.com
  • www.hjimmycollins.com
  • www.kjimmycollins.com
  • www.jjimmycollins.com
  • www.ijimmycollins.com
  • www.8jimmycollins.com
  • www.yjimmycollins.com
  • www.jimmycollinsebc.com
  • www.jimmycollinsebc.com
  • www.jimmycollins3bc.com
  • www.jimmycollinswbc.com
  • www.jimmycollinssbc.com
  • www.jimmycollins#bc.com
  • www.jimmycollinsdbc.com
  • www.jimmycollinsfbc.com
  • www.jimmycollins&bc.com
  • www.jimmycollinsrbc.com
  • www.urlw4ebc.com
  • www.jimmycollins4bc.com
  • www.jimmycollinsc.com
  • www.jimmycollinsbc.com
  • www.jimmycollinsvc.com
  • www.jimmycollinsvbc.com
  • www.jimmycollinsvc.com
  • www.jimmycollins c.com
  • www.jimmycollins bc.com
  • www.jimmycollins c.com
  • www.jimmycollinsgc.com
  • www.jimmycollinsgbc.com
  • www.jimmycollinsgc.com
  • www.jimmycollinsjc.com
  • www.jimmycollinsjbc.com
  • www.jimmycollinsjc.com
  • www.jimmycollinsnc.com
  • www.jimmycollinsnbc.com
  • www.jimmycollinsnc.com
  • www.jimmycollinshc.com
  • www.jimmycollinshbc.com
  • www.jimmycollinshc.com
  • www.jimmycollins.com
  • www.jimmycollinsc.com
  • www.jimmycollinsx.com
  • www.jimmycollinsxc.com
  • www.jimmycollinsx.com
  • www.jimmycollinsf.com
  • www.jimmycollinsfc.com
  • www.jimmycollinsf.com
  • www.jimmycollinsv.com
  • www.jimmycollinsvc.com
  • www.jimmycollinsv.com
  • www.jimmycollinsd.com
  • www.jimmycollinsdc.com
  • www.jimmycollinsd.com
  • www.jimmycollinscb.com
  • www.jimmycollinscom
  • www.jimmycollins..com
  • www.jimmycollins/com
  • www.jimmycollins/.com
  • www.jimmycollins./com
  • www.jimmycollinsncom
  • www.jimmycollinsn.com
  • www.jimmycollins.ncom
  • www.jimmycollins;com
  • www.jimmycollins;.com
  • www.jimmycollins.;com
  • www.jimmycollinslcom
  • www.jimmycollinsl.com
  • www.jimmycollins.lcom
  • www.jimmycollins com
  • www.jimmycollins .com
  • www.jimmycollins. com
  • www.jimmycollins,com
  • www.jimmycollins,.com
  • www.jimmycollins.,com
  • www.jimmycollinsmcom
  • www.jimmycollinsm.com
  • www.jimmycollins.mcom
  • www.jimmycollins.ccom
  • www.jimmycollins.om
  • www.jimmycollins.ccom
  • www.jimmycollins.xom
  • www.jimmycollins.xcom
  • www.jimmycollins.cxom
  • www.jimmycollins.fom
  • www.jimmycollins.fcom
  • www.jimmycollins.cfom
  • www.jimmycollins.vom
  • www.jimmycollins.vcom
  • www.jimmycollins.cvom
  • www.jimmycollins.dom
  • www.jimmycollins.dcom
  • www.jimmycollins.cdom
  • www.jimmycollinsc.om
  • www.jimmycollins.cm
  • www.jimmycollins.coom
  • www.jimmycollins.cpm
  • www.jimmycollins.cpom
  • www.jimmycollins.copm
  • www.jimmycollins.cim
  • www.jimmycollins.ciom
  • www.jimmycollins.coim
  • www.jimmycollins.ckm
  • www.jimmycollins.ckom
  • www.jimmycollins.cokm
  • www.jimmycollins.clm
  • www.jimmycollins.clom
  • www.jimmycollins.colm
  • www.jimmycollins.c0m
  • www.jimmycollins.c0om
  • www.jimmycollins.co0m
  • www.jimmycollins.c:m
  • www.jimmycollins.c:om
  • www.jimmycollins.co:m
  • www.jimmycollins.c9m
  • www.jimmycollins.c9om
  • www.jimmycollins.co9m
  • www.jimmycollins.ocm
  • www.jimmycollins.co
  • jimmycollins.orgm
  • www.jimmycollins.con
  • www.jimmycollins.conm
  • jimmycollins.orgn
  • www.jimmycollins.col
  • www.jimmycollins.colm
  • jimmycollins.orgl
  • www.jimmycollins.co
  • www.jimmycollins.co m
  • jimmycollins.org
  • www.jimmycollins.cok
  • www.jimmycollins.cokm
  • jimmycollins.orgk
  • www.jimmycollins.co,
  • www.jimmycollins.co,m
  • jimmycollins.org,
  • www.jimmycollins.coj
  • www.jimmycollins.cojm
  • jimmycollins.orgj
  • www.jimmycollins.cmo
Show All Mistakes Hide All Mistakes