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, Python, 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, Python, Javascript (including JQuery), and C based languages e.g. Java, C#. He has some experience of ASP.NET 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
- CMS & Wiki
- Data, Research and Library Management Software
- PHP
- JavaScript & jQuery
- (X)HTML, CSS, XML & RDF
- Search Engine Optimisation
- Hardware
- Distributed Social Networking Platforms
- Other
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
- HTTP, TCP and UDP proxy servers
- PHP, Python & Perl via Apache
- nginx_substitutions_filter (content URL forwarding)
- 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)
- MySQL
- 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
- SMTP
- webDAV, calDAV & cardDAV
- SabreDAV server
- Nginx using ngx_http_dav_module, nginx-dav-ext-module, lua-nginx-module and Headers-More modules (see blog post).
- 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)
- FreeRADIUS WPA/WPA2 Enterprise (802.11i) servers for eduroam
- 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
- e.g. blog.talatchaudhri.net
- Joomla! 3.2+
- Aberystwyth Town Council web site (2017-19)
- Various sites
- Migrated parts of OpenSim Web Interface PHP code
- Others deployed in testing
Data, Research & Library Management Software
- CKAN data management system
- 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)
- OpenWrt
- 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
- e.g. talatchaudhri.info (cy, en)
- The now defunct static site of Cymdeithas Cymru-Llydaw
- Included scripts for online petitions
- Browser language detection:
- 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)
- Re-wrote JavaScript last modified date script to replace unavailable PHP on Dropbox
- Contact details obfuscation
- Deployed jQuery script to obfuscate e-mail
- Produced simple demo and detailed blog post instructions
- Re-wrote code for better e-mail obfuscation
- Re-wrote to add ability to block spam Skype address harvesting
- Re-wrote to add ability to block phone number harvesting
- Re-wrote to add ability to block XMPP/Jabber address harvesting
- 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
- ChwiM-aidd - Regular Expressions Search for NLW resources
(X)HTML, CSS, XML & RDF
- HTML5 & XHTML
- Migrated talatchaudhri.info
from XHTML 1.0 Transitional to (X)HTML5
- W3C validation to XHTML 1.0 Strict, XHTML 1.1 & HTML5 for polyglot (X)HTML5
- Migrated talatchaudhri.info
from XHTML 1.0 Transitional to (X)HTML5
- CSS3
- Modification of themes (Drupal, WordPress, Blogger) and style sheets for web sites
- Testing using Chrome Developer Tools and FireBug in real time
- W3C validation, e.g. talatchaudhri.info
- WCAG 1.0 & 2.0 accessibility guidelines
- XML site maps (see below)
- KML for Geohash-36, see blog post
- RDF
- FOAF
- e.g. http://talatchaudhri.info/foaf.rdf
- Substantially re-wrote manually after using automatic generation tools
- Dublin Core Application Profiles (see AP Support Project)
- CERIF, e.g. CERIFy project
- schema.org
- Microformats
- Microdata
- RSS
- Wrote PHP code for OpenSim login screen news feed, site notices
- FOAF
Search Engine Optimisation
- XML site maps using automatic generator tools
- Installed using robots.txt
- Using <link rel="canonical" href="..." /> to de-duplicate web content for search engines
- Optimising <head>...</head> meta content
- DNS via CloudFlare Content Discovery Network (CDN) using web caching to reduce page load times
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)
- OpenWrt
- Raspberry Pi (B, B+)
- Digital signage platform
- Chromium and Matchbox on Raspbian Linux
- JavaScript web page rotator
- Content scheduling using cron
- Webcam with Motion
- Digital signage platform
- Banana Pro
- WPA/WPA2 Enterprise (802.11i) servers for eduroam
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
- Git
- Routine use of Git repositories & GitHub, e.g. PHP, Python projects above
- Web site deployment using post-commit hooks
- Previously familiar with SVN checkouts and Git pulls for deploying various software
- OpenSim 0.6.6 > 0.9.x (2009-present)
- Grid mode
- OpenSim Web Interface
- OpenSim Wifi interface
- Various modules, e.g. IRC Bridge, Profile, Groups, Search
- Integration with FreeSWITCH voice server using OpenSim FreeSwitch module (see above)
- OpenSim on flash drive (2010) using MoWeS (discontinued)
- AuroraSim
- Simian Grid (Open Metaverse Foundation)
Last updated: 21 May 2024
Contact Information
E-mail:
Skype:
Profiles: Academia.edu,
LinkedIn
Research IDs:
ORCID,
ResearcherID
PGP Key:
0x1A0097B6B4A58FA6
Twitter: talat