Technical Experience


Talat's experience is derived both from his professional career in the higher education sector and from various personal and community projects over a long period, including in Linux, MacOS and Windows systems, server admininistration, CMS systems, digital asset management software, programming languages and web technologies such as PHP, JavaScript, HTML5, XHTML, CSS, XML & RDF. His work in information science has given him considerable experience in a wide range of technologies and information organisation systems, particularly in metadata standards and semantic web technologies.

He has built production sites based on major content management and related systems such as Drupal, WordPress, Joomla! and MediaWiki, and has been administering various static and dynamic web sites and numerous other web applications since 2006, mostly on LAMP and LEMP stacks with MySQL but also using Tomcat and other web servers.

He can program proficiently in PHP, Javascript (including JQuery), and C based languages e.g. Java, C#. He has some experience of ASP.NET, Python and Perl. He has developed cloud web applications on Google App Engine and RedHat OpenShift.

Talat's technical and linguistic experience has given him particular expertise in technical translation, especially software interface translation. He provided the Welsh translations for DSpace 1.4, DSpace 1.5 (JSP UI), EPrints 3.1, MetaLib (Ex Libris), Voyager 7 (Ex Libris) and Primo 3.0 (Ex Libris). Previously, he translated various other interfaces, e.g. web mail applications for voluntary groups.

As well as a wide range of other Open Source projects, he has personal interests in: embedded devices and open source firmware, e.g. Raspberry Pi and similar, OpenWRT, DD-WRT; the OpenSim platform for 3D virtual worlds and related technologies; instant messaging infrastructure based on XMPP and IRC; VoIP and SIP telephony; IPv6; HTTP/2 and HTTP/3.





Server Experience

  • Ubuntu Server 6.10+ (2006+)
  • Fedora/RedHat (2008-13)
  • Debian (2014+)
  • Windows Server 2010
  • Domain names, DNS & IP routing
    • A, AAAA, CNAME, TXT (DMARC & SPF) & MX records
    • IPv6 connectivity via Hurricane Electric 6in4 tunnel on Technicolor TG582n router (see blog post)
    • Techniques such as reverse proxies, Cloudflare CDN, for IPv6 connectivity without dual-stack infrastructure
    • Configured IPv6 firewall rules on Technicolor TG582n router to enable all sites over IPv6
    • Optimised DNS servers for IPv4 and IPv6 using Google namebench
  • Major security patches
    • OpenSSL Heartbleed vulnerability
    • CVE-2019-11043 - PHP7.x-fpm + nginx
  • Docker
    • Various server software
    • Node.js projects
  • Apache 1.x, 2.x
    • Largely LAMP, some stand-alone MAMP and WAMP
    • Virtual hosts for a variety of web sites and web applications
    • mod_rewrite, mod_proxy, mod_proxy_ajp, mod_python
    • used Apache AJP reverse proxy to Tomcat for Greenstone 3, Magnolia (see below)
    • used Apache modwsgi Python adapter for CKAN (HTTP & HTTPS)
    • mod_perl, e.g. Greenstone 2
    • TLS/SSL certificates (CAcert.org, LetsEncrypt & self-signed)
    • Apache 2.4 configuration changes
  • Nginx
    • Static web pages
    • Reverse proxy
    • Virtual hosts for a variety of web sites and web applications
    • used Nginx reverse proxy to Tomcat for DSpace, Greenstone 3, Magnolia (see below)
    • used uWSGI to serve Python via Nginx reverse proxy for CKAN (HTTP & HTTPS)
    • PHP via PHP-FPM (FastCGI)
    • PHP and Hack via HHVM (Hip Hop Virtual Machine)
    • Perl with FastGCI, e.g. Greenstone 2
    • TLS/SSL certificates (CAcert.org & self-signed)
    • SPDY/2 with Nginx 1.4.1, SPDY 3, SPDY 3.1 with Nginx 1.5.12 (see blog post)
    • HTTP/2 with Nginx 1.9.5+ (see blog post)
    • Migrated sites from Apache 2.4 to Nginx 1.4.1 (replacing Apache mod_rewrite rules etc)
      • 2 x PHP/static sites
      • 1 x WordPress
      • 1 x Joomla!
      • 1 x MediaWiki
      • Demo sites: CKAN; Greenstone 2; Greenstone 3; Magnolia; Bolt; Anchor
      • Various development sites including 1 x Drupal
  • Tomcat 5.x - 8.x
    • Guacamole HTML5 with VNC, forced TLS/SSL for security
    • Magnolia
    • Greenstone v3.05
    • DSpace 4
    • Virtual hosts
    • TLS/SSL certificates (CAcert.org & self-signed)
  • Twisted
    • Qwebirc
    • IRC relay bots written in Python
  • h2o
    • High performance server with HTTP/2 and HTTP/3
    • Compiled from source with libuv 1.x, wslay, mruby, libressl
    • Compiled latest cURL from source to allow HTTP/3 requests
    • HTTP/3 test end point (see blog post)
    • PHP via PHP-FPM (FastCGI)
    • PHP and Hack via (HHVM Hip Hop Virtual Machine)
  • SQL
    • MySQL
      • Various CMSs (see below)
      • FreeSwitch (see below)
      • FreeRADIUS (see below)
      • OpenSim (see below)
      • Scheduled backups
    • PostgreSQL
      • CKAN (see below)
      • DSpace (see below)
  • LDAP
    • OpenLDAP for FreeRADIUS WPA/WPA2 Enterprise (802.11i) servers for eduroam
    • Testing OpenDJ for FreeRADIUS WPA/WPA2 Enterprise (802.11i) servers for eduroam
    • Dovecot authentication for IMAP4 & POP3
    • LDAP & PAM user authentication for Linux
    • N-way multi-master replication for FreeRADIUS for eduroam and email
    • SAMBA using OpenLDAP
  • SAMBA
    • Using OpenLDAP
  • E-mail
    • SMTP
      • Postfix
      • Exim4
    • IMAP4 & POP3
      • Dovecot
      • Courier
  • webDAV, calDAV & cardDAV
  • VoIP servers
    • FreeSWITCH using fs_curl gateway cgi to load dynamic XML configuration
    • Configuration of SIP phones with FreeSwitch
    • Integration with OpenSim (see below)
  • FreeRADIUS
    • FreeRADIUS WPA/WPA2 Enterprise (802.11i) servers for eduroam
      • MySQL
      • LDAP - OpenLDAP, OpenDJ (testing)
  • Instant Messaging Servers:
  • Monit (with OpenSim, see below)
  • SFTP access within a chroot jail (see blog post)

CMS & Wiki

  • MediaWiki
    • with Semantic MediaWiki
  • Drupal 6 & 7
    • e.g. Technical Foundations web site (2011-13) at UKOLN for JISC
    • Major Drupal modules, e.g. Content Construction Kit, and many others
    • Deployment and modification of themes using CSS, PHP etc
    • Migration of blog and page content from WordPress to Drupal (2012)
    • Used wget to migrate Technical Foundations and private UKOLN staff intranet from Drupal to static sites (2013)
    • Some simple module writing
    • Migrated parts of OpenSim Web Interface PHP code
  • WordPress etc
    • e.g. blog.talatchaudhri.net
      • Migrated from self-hosted at WordPress.com to self-hosted WordPress.org
      • Customisation of WordPress and Blogger themes, widgets etc
      • Migration of blog and page content from WordPress to Drupal (2012)
    • Cymdeithas Cymru-Llydaw
      • Blog with custom domain at blogspot.com
      • Migrated to own domain e.g. blog.domain.example
  • Joomla! 3.2+
  • Others deployed in testing

Data, Research & Library Management Software

  • CKAN data management system
    • Installed from source
    • Created blog post instructions to install Apache Solr separately on Tomcat7 rather than Jetty.
    • Created blog post instructions to serve Python with uWSGI via Nginx proxy (HTTP & HTTPS).
  • DSpace
    • Installed DSpace 4 via Nginx reverse proxy, 2014
    • Front-end experience 2007-8
    • Theming through HTML & CSS
    • Testing on local copy using Eclipse with Tomcat
    • Responsible for repository and content as front-line production service
  • EPrints, Fedora Commons etc
    • Largely front-end testing experience as user, 2007-2013
  • Greenstone
  • Flashing router firmware
    • OpenWrt
      • Compiled and flashed on defunct Inventel Livebox v1.1
      • Flashed on Belkin F5D7130 for WPA/WPA2 Enterprise (802.11i) project testing
    • Flashed 10.2.x firmware upgrade on Technicolor TG582n router (DANT-1) via TFTP
      • Factory default Technicolor firmware 10.2.5.2.BM for IPv6 connectivity (see blog post)
    • Installed v2.85
    • Installed v3.05 (Java version on Tomcat7)
  • EMP iLex
    • 2.3 122+

PHP

  • Dropbox PHP Proxy for Dropbox
    • Deployed on Apache server at talatchaudhri.info/downloads
    • Submitted patch for correct division of HTTP header and response body
    • Added dev branch with code to:
      • Fix requests for bare domain where final character of URL was not / to point to index.htm(l) in order to act effectively as simple web server
      • Modify HTTP response header to send Content-Type: text/html; charset=utf-8 rather than Dropbox default ASCII in order to support character set for additional languages
      • Modify HTTP response header to send Last-Modified for correct modified date using JavaScript, rather than the modified date of the proxy script (Dropbox does not run server-side scripts, so this cannot be achieved with PHP)
      • Tested and deployed on RedHat OpenShift to migrate proxy to cloud server via CloudFlare CDN
    • Completely re-wrote code in new branch without cURL for Google App Engine and similar services that do not allow cURL and other 3rd party C# libraries:
      • Deployed via Google App Engine
  • Multilingual PHP web sites
    • Browser language detection:
      • e.g. talatchaudhri.info (cy, en)
        • User languages matched in order against those available on the site
        • Overrideable by user
        • Unlimited extensible language buttons
    • The now defunct static site of Cymdeithas Cymru-Llydaw
      • Included scripts for online petitions
  • Migrated sites to Nginx and h2o servers via PHP-FPM and HHVM (FastCGI)
  • OpenSim
    • Migrated parts of OpenSim Web Interface PHP code to Joomla! and Drupal
    • Wrote code for OpenSim login screen news feed via RSS, site notices
  • Wrote back-end recursive link checker script for admin and cron jobs.

JavaScript & jQuery

  • OpenSim Maps for OpenSim (part of OpenSim Web Interface)
    • Completely re-wrote (2012) to migrate to Google Maps API v3 from deprecated v2 (2008)
    • Re-wrote (2014) to enable larger regions e.g. varregions in OpenSim/Aurora/WhiteCore
    • Added multiple map centres
    • Added home re-centering
  • Re-wrote JavaScript last modified date script to replace unavailable PHP on Dropbox
  • Contact details obfuscation
  • Deployed Highslide JS JavaScript thumbnail and media viewer at www.alicarpentry.co.uk
  • Web page rotator for digital signage platform on Raspberry Pi (see demo)
    • Custom looped timer script with arbitrary timings per page
    • Animated JavaScript/CSS transitions using ElementTransitions.js
    • Agnostic about Web technology and content
  • Node.js
    • Regular expression web scraper to query multiple library collections

(X)HTML, CSS, XML & RDF

Search Engine Optimisation

Hardware

  • Many years of experience replacing memory, hard drives, PCI, PCIe cards, fans, power supplies etc
  • Flashing router firmware
    • OpenWrt
      • Compiled and flashed on defunct Inventel Livebox v1.1
      • Flashed on Belkin F5D7130 for WPA/WPA2 Enterprise (802.11i) project testing
    • Flashed 10.2.x firmware upgrade on Technicolor TG582n router (DANT-1) via TFTP
      • Factory default Technicolor firmware 10.2.5.2.BM for IPv6 connectivity (see blog post)
  • Raspberry Pi (B, B+)
  • Banana Pro

Distributed social networking platforms

  • See blog posts on Diaspora (open source)
  • Demo installation of movim (open source)
  • Longstanding interest in XMPP, JSON, XML technologies etc

Other

 

Last updated: 11 Mar 2024

IPv6 ready

Dr Talat Chaudhri

Contact Information

E-mail:

Skype:

ProfilesAcademia.edu, LinkedIn

Research IDs: ORCID, ResearcherID

PGP Key: 0x1A0097B6B4A58FA6

Twitter: talat