{"generator":"Hugo","title":"Home \u00b7 Simon Holywell on Simon Holywell","subtitle":"A developer in Brisbane, Australia with a passion for web application development and mountain bikes.","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/feed.xml","rel":"self","type":"application\/atom+xml","title":"atom"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/","rel":"alternate","type":"text\/html","title":"html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/feed.xsl","rel":"alternate","type":"application\/xslt+xml","title":"atomxsl"}}],"updated":"2024-11-19T02:47:19+00:00","rights":"\u00a9 Simon Holywell. All rights reserved.","id":"https:\/\/www.simonholywell.com\/feed.xml","entry":[{"title":"A note on code portability","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/a-note-on-code-portability\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/03\/mysql-alter-column-in-all-databases\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Alter a MySQL column in all databases"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/12\/sql-style-guide-misconceptions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide misconceptions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/install-pgmodeler-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing pgmodeler on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/01\/mysql-udf-install-error-function-already-exists\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing a MySQL UDF errors with Function already exists"}}],"id":"https:\/\/www.simonholywell.com\/post\/a-note-on-code-portability\/","author":{"name":"Simon Holywell"},"published":"2024-11-19T12:36:21+10:00","updated":"2024-11-19T12:47:01+10:00","summary":"Code portability is the practice of writing code that can be easily reused or transferred between different environments, such as databases or frameworks, with minimal changes. By prioritising portability, developers enhance code maintainability, reduce vendor lock-in, and improve their own adaptability across projects and organisations.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"sql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mysql","label":"mysql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql-style-guide","label":"sql style guide"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"style-guide","label":"style guide"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"portability","label":"portability"}}]},{"title":"BikeYoke Revive dropper post alternative oils","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/bikeyoke-revive-alternative-oils\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/focus-jam-frame-bearing-replacement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Focus Jam frame bearing replacement"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/marco-simoncelli\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The world has lost an excellent and exciting rider in Marco Simoncelli"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Whilst the wedding is a great event for the participants, I am n\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}}],"id":"https:\/\/www.simonholywell.com\/post\/bikeyoke-revive-alternative-oils\/","author":{"name":"Simon Holywell"},"published":"2024-10-15T11:00:53+10:00","updated":"2024-11-19T12:47:01+10:00","summary":"The BikeYoke Revive dropper post is a great piece of kit, but it can be hard to find the correct oil for servicing it. I have found some alternatives that work well and are easier to source.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikeyoke","label":"bikeyoke"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"revive","label":"revive"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"maintenance","label":"maintenance"}}]},{"title":"Focus Jam frame bearing replacement","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/focus-jam-frame-bearing-replacement\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/marco-simoncelli\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The world has lost an excellent and exciting rider in Marco Simoncelli"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Whilst the wedding is a great event for the participants, I am n\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}}],"id":"https:\/\/www.simonholywell.com\/post\/focus-jam-frame-bearing-replacement\/","author":{"name":"Simon Holywell"},"published":"2024-09-27T22:10:31+10:00","updated":"2024-11-19T12:47:01+10:00","summary":"I recently replaced the frame bearings in my 2018 Focus Jam mountain bike and found it hard to find out exactly which bearings I needed until I had the whole thing apart. To make it easier next time I am sharing my notes from the process.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"focus-jam-frame-bearing-replacement","label":"focus-jam-frame-bearing-replacement"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"focus-jam","label":"focus-jam"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"maintenance","label":"maintenance"}}]},{"title":"Para\u00edso dark VS Code and Zed themes","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/paraiso-dark-vscode-and-zed-theme\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/git-delta\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Git and delta"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/git-add-p\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Staging patches with git add"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/dynamic-docker-image-loading\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Dynamic docker image loading"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/pinning-nix-shell-package-versions-for-reproducibility\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pinning nix-shell package versions for reproducibility"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yow-2023-brisbane\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"YOW! 2023 conference highlights"}}],"id":"https:\/\/www.simonholywell.com\/post\/paraiso-dark-vscode-and-zed-theme\/","author":{"name":"Simon Holywell"},"published":"2024-04-04T13:08:12+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A dark theme for both the Visual Studio Code (vscode) and Zed editors based on the Para\u00edso theme from TextMate by Jann T. Sott and Chris Kempson.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"vscode","label":"vscode"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"zed","label":"zed"}}]},{"title":"Git and delta","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/git-delta\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/git-add-p\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Staging patches with git add"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/reverse-github-pull-request\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Reverse a git pull request on GitHub the hard way"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Git tag secrets"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}}],"id":"https:\/\/www.simonholywell.com\/post\/git-delta\/","author":{"name":"Simon Holywell"},"published":"2024-02-19T12:10:32+10:00","updated":"2024-11-19T12:47:01+10:00","summary":"Adding delta to your workflow will give you a nice interactive diff so make command line git so much better!","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"git","label":"git"}}]},{"title":"Staging patches with git add","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/git-add-p\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/reverse-github-pull-request\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Reverse a git pull request on GitHub the hard way"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Git tag secrets"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/git-add-p\/","author":{"name":"Simon Holywell"},"published":"2024-02-15T01:34:07+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Using git add -p to interactively stage specific parts of a file allowing for more precise control over commits in git. It provides a walkthrough on how to split hunks for granular commit control, ensuring that only desired changes are staged. The post emphasizes the utility of this approach in enhancing commit precision and managing contributions more effectively in git.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"git","label":"git"}}]},{"title":"Dynamic docker image loading","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/dynamic-docker-image-loading\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/docker-cross-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Docker cross-compilation"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/pinning-nix-shell-package-versions-for-reproducibility\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pinning nix-shell package versions for reproducibility"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/reverse-github-pull-request\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Reverse a git pull request on GitHub the hard way"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yow-2023-brisbane\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"YOW! 2023 conference highlights"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/duty-free-with-trs-for-australians\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Duty-free with TRS for Australian residents"}}],"id":"https:\/\/www.simonholywell.com\/post\/dynamic-docker-image-loading\/","author":{"name":"Simon Holywell"},"published":"2024-02-12T09:36:58+10:00","updated":"2024-11-19T12:47:01+10:00","summary":"Learn how to dynamically load different base images to build application images and for testing using Docker. Utilize build-time variables in a Dockerfile to specify the Node.js version\/tag and even extend the flexibility to customize both the image name and tag. Bonus - Discover a GitHub Actions workflow that builds and tests your project against multiple Node.js versions, ensuring compatibility across different environments.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"docker","label":"docker"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"github","label":"github"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"node","label":"node"}}]},{"title":"Pinning nix-shell package versions for reproducibility","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/pinning-nix-shell-package-versions-for-reproducibility\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/docker-cross-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Docker cross-compilation"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yow-2023-brisbane\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"YOW! 2023 conference highlights"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/duty-free-with-trs-for-australians\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Duty-free with TRS for Australian residents"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/diy-hybrid-valve-amplifier\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"DIY hybrid valve headphone amplifier (SSMH)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/windows-10-shortcuts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows 10 shortcuts"}}],"id":"https:\/\/www.simonholywell.com\/post\/pinning-nix-shell-package-versions-for-reproducibility\/","author":{"name":"Simon Holywell"},"published":"2024-01-16T10:32:58+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Learn to wield nix-shell&rsquo;s power for precise project dependency management, ensuring hassle-free development environments. Discover techniques for pinning specific Node.js versions, simplifying dependency references, and integrating yarn for enhanced control.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nix","label":"nix"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nix-shell","label":"nix-shell"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"node","label":"node"}}]},{"title":"YOW! 2023 conference highlights","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yow-2023-brisbane\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/duty-free-with-trs-for-australians\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Duty-free with TRS for Australian residents"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/docker-cross-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Docker cross-compilation"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/diy-hybrid-valve-amplifier\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"DIY hybrid valve headphone amplifier (SSMH)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/windows-10-shortcuts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows 10 shortcuts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/jest-date-mocking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Jest Date mocking"}}],"id":"https:\/\/www.simonholywell.com\/post\/yow-2023-brisbane\/","author":{"name":"Simon Holywell"},"published":"2023-12-06T13:08:12+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Highlights from the YOW! 2023 conference in Brisbane. This blog post covers engaging talks on topics ranging from creating a programming language for children to real-world applications of WebAssembly. Gain valuable insights from speakers like Felienne Hermans, Chanuki Illushka Seresinhe, Frank Yu, Dylan Beattie, Katie Bell, and Brooklyn Zelenka. Delve into the future of technology, deterministic execution, local-first software, and more.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"conference","label":"conference"}}]},{"title":"Duty-free with TRS for Australian residents","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/duty-free-with-trs-for-australians\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/docker-cross-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Docker cross-compilation"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/diy-hybrid-valve-amplifier\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"DIY hybrid valve headphone amplifier (SSMH)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/windows-10-shortcuts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows 10 shortcuts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/jest-date-mocking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Jest Date mocking"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yarn-npm-wsl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Yarn and NPM on WSL"}}],"id":"https:\/\/www.simonholywell.com\/post\/duty-free-with-trs-for-australians\/","author":{"name":"Simon Holywell"},"published":"2023-12-05T14:52:58+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"In a departure from common international practices, Australia allows both residents and travellers duty-free purchases under the Tourist Refund Scheme. Buy the goods, get an invoice and you can claim the duty back on the purchase as you depart. Even if you plan to return to Australia with the purchased goods, you can still claim back the tax.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"travel","label":"Travel"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"travel","label":"travel"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"tax","label":"tax"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"gst","label":"gst"}}]},{"title":"Docker cross-compilation","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/docker-cross-compilation\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/diy-hybrid-valve-amplifier\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"DIY hybrid valve headphone amplifier (SSMH)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/windows-10-shortcuts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows 10 shortcuts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/jest-date-mocking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Jest Date mocking"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yarn-npm-wsl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Yarn and NPM on WSL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/making-rope-working-fids\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Making rope working fids"}}],"id":"https:\/\/www.simonholywell.com\/post\/docker-cross-compilation\/","author":{"name":"Simon Holywell"},"published":"2023-11-17T17:11:58+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Explore the advantages of cross-compiling in Docker whilst working through a specific case involving a Node.js project using pkg, aiming for a Linux ARM64 architecture in the Docker build.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"docker","label":"docker"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"node","label":"node"}}]},{"title":"DIY hybrid valve headphone amplifier (SSMH)","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/diy-hybrid-valve-amplifier\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/windows-10-shortcuts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows 10 shortcuts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/jest-date-mocking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Jest Date mocking"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yarn-npm-wsl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Yarn and NPM on WSL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/making-rope-working-fids\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Making rope working fids"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/testing-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Testing TypeScript types"}}],"id":"https:\/\/www.simonholywell.com\/post\/diy-hybrid-valve-amplifier\/","author":{"name":"Simon Holywell"},"published":"2022-02-12T23:36:39+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I made some circuit diagrams for the various versions of the Starving Student Millet Hybrid amplifier, which is a tube\/valve headphone amplifier you can build yourself relatively easily for fun.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"electronics","label":"Electronics"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssmh","label":"ssmh"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"starving-student-millet-hybrid","label":"starving student millet hybrid"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"hybrid-amplifier","label":"hybrid amplifier"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"headphone-amplifier","label":"headphone amplifier"}}]},{"title":"Windows 10 shortcuts","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/windows-10-shortcuts\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Samba File Share Over SSH Tunnel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/windows-cron-jobs-using-schtasks-or-at\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows Cron Jobs using Scheduled Tasks"}}],"id":"https:\/\/www.simonholywell.com\/post\/windows-10-shortcuts\/","author":{"name":"Simon Holywell"},"published":"2020-11-14T13:59:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Here are some of the window management shortcuts that I have discovered and found very useful having moved to working on a Windows 10 machine.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"windows","label":"windows"}}]},{"title":"Jest Date mocking","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/jest-date-mocking\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/testing-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Testing TypeScript types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/advanced-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Advanced TypeScript types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/typescript-constructor-type\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TypeScript constructors and generic types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/11\/conditionally-loaded-responsive-content\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Conditionally loaded responsive content on the client side"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}}],"id":"https:\/\/www.simonholywell.com\/post\/jest-date-mocking\/","author":{"name":"Simon Holywell"},"published":"2020-09-10T17:22:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The release of Jest 26 brought a new timer faking interface, which now supports Date mocks. I couldn&rsquo;t readily find any documentation for this feature so, here is how I used in a project recently.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"typescript","label":"typescript"}}]},{"title":"Yarn and NPM on WSL","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/yarn-npm-wsl\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/making-rope-working-fids\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Making rope working fids"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/testing-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Testing TypeScript types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/advanced-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Advanced TypeScript types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/typescript-constructor-type\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TypeScript constructors and generic types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/the-lambda-calculus-for-developers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The lambda calculus for developers"}}],"id":"https:\/\/www.simonholywell.com\/post\/yarn-npm-wsl\/","author":{"name":"Simon Holywell"},"published":"2020-07-30T17:18:31+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Old versions of WSL can lead to issues with file system permissions with Node. Upgrading the version of WSL can solve this issue for you.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"wsl","label":"wsl"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"yarn","label":"yarn"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"npm","label":"npm"}}]},{"title":"Making rope working fids","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/making-rope-working-fids\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/testing-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Testing TypeScript types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/advanced-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Advanced TypeScript types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/typescript-constructor-type\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TypeScript constructors and generic types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/the-lambda-calculus-for-developers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The lambda calculus for developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/09\/search-and-replace-with-confirmation-in-bash\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Search and replace with confirmation in Bash"}}],"id":"https:\/\/www.simonholywell.com\/post\/making-rope-working-fids\/","author":{"name":"Simon Holywell"},"published":"2020-06-14T18:11:44+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Rope working fids make it easier to splice ropes, but they can be expensive to buy for a small DIY project. Here are some ideas of how to make your own fids and the required dimensions of each fid size.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"rope","label":"rope"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"diy","label":"diy"}}]},{"title":"Testing TypeScript types","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/testing-typescript-types\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/advanced-typescript-types\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Advanced TypeScript types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/typescript-constructor-type\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TypeScript constructors and generic types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/11\/conditionally-loaded-responsive-content\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Conditionally loaded responsive content on the client side"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}}],"id":"https:\/\/www.simonholywell.com\/post\/testing-typescript-types\/","author":{"name":"Simon Holywell"},"published":"2019-07-14T22:40:52+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"To make the construction and maintenance of more advanced types easier it can be helpful to write some tests that ensure their correct function. This sounds a little easier than it turns out to be.\nAs part of the ecosystem for TypeScript Microsoft have written and released the dtslint tool. It can be used to link and compile TypeScript types for static analysis and mostly serves to keep the @types\/* packages in line.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"typescript","label":"typescript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"types","label":"types"}}]},{"title":"Advanced TypeScript types","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/advanced-typescript-types\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/typescript-constructor-type\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TypeScript constructors and generic types"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/11\/conditionally-loaded-responsive-content\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Conditionally loaded responsive content on the client side"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/the-lambda-calculus-for-developers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The lambda calculus for developers"}}],"id":"https:\/\/www.simonholywell.com\/post\/advanced-typescript-types\/","author":{"name":"Simon Holywell"},"published":"2019-06-25T13:02:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"As TypeScript applications get more complex so do the types required to describe it. There are a number of built-in types that can be used for this purpose or combined to create more specialised types.\nWhat I term modifying types such as Partial and Required are included in the language and I will quickly cover these first to warm up for the deeper types we&rsquo;ll address later.\nThis article will quickly move on to focus on the slightly more advanced types beginning with Extract.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"typescript","label":"typescript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"types","label":"types"}}]},{"title":"TypeScript constructors and generic types","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/typescript-constructor-type\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/11\/conditionally-loaded-responsive-content\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Conditionally loaded responsive content on the client side"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/the-lambda-calculus-for-developers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The lambda calculus for developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/09\/search-and-replace-with-confirmation-in-bash\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Search and replace with confirmation in Bash"}}],"id":"https:\/\/www.simonholywell.com\/post\/typescript-constructor-type\/","author":{"name":"Simon Holywell"},"published":"2019-05-27T18:11:44+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have recently found myself needing a type for class constructors that is at once generic and tight enough to ensure a genuine constructor. This is useful in situations where you must handle a variety of classes - those that come from other libraries or applications that you cannot control.\nWhen writing your own dependency injection container or some other generalised library you cannot know what class constructors might be passed in.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"typescript","label":"typescript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"types","label":"types"}}]},{"title":"The lambda calculus for developers","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/the-lambda-calculus-for-developers\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP Second Edition Available Now"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional PHP talks"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Speaking about Functional PHP at BrightonPHP and PHP Hampshire"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-three\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP and immutability: objects and generalisation - part three"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-two\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP and immutability: modified copies - part two"}}],"id":"https:\/\/www.simonholywell.com\/post\/the-lambda-calculus-for-developers\/","author":{"name":"Simon Holywell"},"published":"2019-02-17T13:12:34+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"This will be a quick introduction to the lambda calculus syntax, alpha (\u03b1) equivalence and beta (\u03b2) reduction.\nWhat does a lambda look like? I am going to use the identity function as an example for the simplicity it provides. This can be expressed as a lambda function with the notation \u03bbx.x. It is a function that when given an argument outputs that argument as its return value. You can also have multiple arguments with a lambda like \u03bbxy.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"lambda-calculus","label":"lambda calculus"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-programming","label":"functional programming"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"haskell","label":"haskell"}}]},{"title":"Search and replace with confirmation in Bash","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/09\/search-and-replace-with-confirmation-in-bash\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/01\/email-when-file-changes\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Email me when the file changes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/09\/scrape-site-with-wget-and-httrack\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Scraping websites with wget and httrack"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Crop and resize images with bash and ImageMagick"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/03\/netbeans-jvi-vim-bindings\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"NetBeans with jVi vim bindings"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-three\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP and immutability: objects and generalisation - part three"}}],"id":"https:\/\/www.simonholywell.com\/post\/2017\/09\/search-and-replace-with-confirmation-in-bash\/","author":{"name":"Simon Holywell"},"published":"2017-09-12T01:18:44+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Automated search and replace can be very handy although there are occasions where a human needs to get involved on some of the decisions. If the search term isn&rsquo;t unique or appears as part of other words or something like that. When this is the case you&rsquo;ll want a confirm step where you can approve each replacement before it happens.\nWith very little work we can achieve this using a combination of vim and grep.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bash","label":"bash"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"vim","label":"vim"}}]},{"title":"PHP and immutability: objects and generalisation - part three","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-three\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-two\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP and immutability: modified copies - part two"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/03\/php-and-immutability\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP and immutability: difficulties and scalars - part one"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/11\/quick-way-to-create-php-stdclass\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Quick way to create a PHP stdClass"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP Second Edition Available Now"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/importing-and-aliasing-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Importing and aliasing PHP functions"}}],"id":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-three\/","author":{"name":"Simon Holywell"},"published":"2017-04-27T03:01:53+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"In the last article we learnt how to create modified copies of an immutable in PHP. This one is going to tackle an issue I have hitherto skirted around and avoided. Objects in immutable data structures.\nThis article is part of a series I have written on the topic of immutability in PHP code:\nPart one - a discussion of caveats and a simple scalar handling immutable Part two - improve the process of creating modified copies of the immutable Part three - objects in immutable data structures and a generalised immutable implementation Also available in \u0420\u0443\u0441\u0441\u043a\u0438\u0439 (Russian):","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"immutable","label":"immutable"}}]},{"title":"PHP and immutability: modified copies - part two","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-two\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/03\/php-and-immutability\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP and immutability: difficulties and scalars - part one"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/11\/quick-way-to-create-php-stdclass\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Quick way to create a PHP stdClass"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP Second Edition Available Now"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/importing-and-aliasing-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Importing and aliasing PHP functions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Namespace PHP functions"}}],"id":"https:\/\/www.simonholywell.com\/post\/2017\/04\/php-and-immutability-part-two\/","author":{"name":"Simon Holywell"},"published":"2017-04-03T01:53:38+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"In the last article we learnt how to create an immutable data structure in PHP. There were a few issues to work through, but we got there in the end. Now onto making the immutable class more useful and easier to create modified copies. Note that these are copies and not modifications, in-place, to the original objects.\nThis article is part of a series I have written on the topic of immutability in PHP code:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"immutable","label":"immutable"}}]},{"title":"PHP and immutability: difficulties and scalars - part one","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/03\/php-and-immutability\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/11\/quick-way-to-create-php-stdclass\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Quick way to create a PHP stdClass"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP Second Edition Available Now"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/importing-and-aliasing-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Importing and aliasing PHP functions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Namespace PHP functions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}}],"id":"https:\/\/www.simonholywell.com\/post\/2017\/03\/php-and-immutability\/","author":{"name":"Simon Holywell"},"published":"2017-03-16T17:07:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Being a weakly typed dynamic language, PHP has not really had the concept of immutability built into it. We&rsquo;ve seen the venerable define() and CONSTANTS of course, but they&rsquo;re limited. Whilst PHP does ship with an immutable class as part of it&rsquo;s standard library, DateTimeImmutable, there is no immediately obvious method to create custom immutable objects.\nThis article is part of a series I have written on the topic of immutability in PHP code:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"immutable","label":"immutable"}}]},{"title":"Alter a MySQL column in all databases","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/03\/mysql-alter-column-in-all-databases\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/12\/sql-style-guide-misconceptions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide misconceptions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/install-pgmodeler-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing pgmodeler on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/01\/mysql-udf-install-error-function-already-exists\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing a MySQL UDF errors with Function already exists"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/mysql-to-ms-sql-sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MySQL to MS SQL (SQL Server)"}}],"id":"https:\/\/www.simonholywell.com\/post\/2017\/03\/mysql-alter-column-in-all-databases\/","author":{"name":"Simon Holywell"},"published":"2017-03-01T12:41:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"When you have a series of applications all running the same database structure it can be annoying to roll out schema updates across all the databases. If you&rsquo;ve got migrations then great - script their deployment, but when you&rsquo;re dealing with an old legacy application you probably don&rsquo;t have the luxury.\nI was firmly in the latter class of devops when working on a project a couple of years ago so I wrote a handy little snippet of SQL to help me out.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"sql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mysql","label":"mysql"}}]},{"title":"Email me when the file changes","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2017\/01\/email-when-file-changes\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/09\/scrape-site-with-wget-and-httrack\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Scraping websites with wget and httrack"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Crop and resize images with bash and ImageMagick"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/install-pgmodeler-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing pgmodeler on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/02\/intelligent-vagrant-and-ansible-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Intelligent Vagrant and Ansible files"}}],"id":"https:\/\/www.simonholywell.com\/post\/2017\/01\/email-when-file-changes\/","author":{"name":"Simon Holywell"},"published":"2017-01-25T16:00:55+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"It is important to ensure that Google does not index sites whilst they are still on a staging environment, but you cannot lock it down completely - how would your clients proof it? So I run a simple global rewrite rule in Apache that redirects all requests for robots.txt to a central disallow all response. This works great and Google appears to honour the rule as one would hope.\nWhat happens though when something about that central file changes?","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"email","label":"email"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cron","label":"cron"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bash","label":"bash"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"file-system","label":"file system"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"SQL style guide misconceptions","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/12\/sql-style-guide-misconceptions\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/install-pgmodeler-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing pgmodeler on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/mysql-to-ms-sql-sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MySQL to MS SQL (SQL Server)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/11\/quick-way-to-create-php-stdclass\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Quick way to create a PHP stdClass"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP Second Edition Available Now"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/12\/sql-style-guide-misconceptions\/","author":{"name":"Simon Holywell"},"published":"2016-12-09T16:42:42+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Many people have read, reviewed and even implemented the SQL style guide that I wrote. This is great, but there have also been a number of commonly held misconceptions or incorrect readings of the points made in the guide. I have decided to address some of the more common ones via a blog post that will, hopefully, clarify the situation.\nBasics A lot of people seem to have a very weird understanding of the basic terms used in the guide so here is what I mean when I say &lsquo;Avoid&rsquo; and &lsquo;Try&rsquo;:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"sql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sqlstyleguide","label":"sqlstyleguide"}}]},{"title":"Quick way to create a PHP stdClass","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/11\/quick-way-to-create-php-stdclass\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP Second Edition Available Now"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/importing-and-aliasing-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Importing and aliasing PHP functions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Namespace PHP functions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/international-php-dates-with-intl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"International PHP dates with intl"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/11\/quick-way-to-create-php-stdclass\/","author":{"name":"Simon Holywell"},"published":"2016-11-16T10:39:51+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A very short and simple trick for creating new stdClass objects without having to set every property individually. This is akin to JavaScript&rsquo;s object notation, but not quite as elegant.\nCreating a new object in JavaScript looks like the following example.\nconst x = { a: &#34;test&#34;, b: &#34;test2&#34;, c: &#34;test3&#34;, }; With PHP it is possible to use type casting to convert a simple array into a stdClass object which gives you a similar looking syntax although there is a little more typing required.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"stdclass","label":"stdclass"}}]},{"title":"Functional Programming in PHP Second Edition Available Now","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/05\/2015-05-18-memoization-or-function-cache\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memoization or function cache"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/08\/functional-programming-in-php-the-book\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP - The book"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional PHP talks"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Speaking about Functional PHP at BrightonPHP and PHP Hampshire"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/importing-and-aliasing-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Importing and aliasing PHP functions"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/10\/functional-programming-in-php-second-edition\/","author":{"name":"Simon Holywell"},"published":"2016-10-27T09:17:55+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"It is with great pleasure that I announce the second edition of the Functional Programming in PHP book that I have been working on. There is twice the content of the first edition of the book as well as updates for PHP 7 and Facebook&rsquo;s HHVM (HipHop Virtual Machine).\nThere are now more functional techniques and patterns included with pipelines, pattern matching and flat maps among them. I have added a section of the book dedicated to the handy syntax and functionality that HHVM can provide functional programmers with.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-programming","label":"functional programming"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"book","label":"book"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"second-edition","label":"second edition"}}]},{"title":"Importing and aliasing PHP functions","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/importing-and-aliasing-php-functions\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Namespace PHP functions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/international-php-dates-with-intl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"International PHP dates with intl"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP date localisation with setlocale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/06\/parallel-benchmark-many-urls-with-apachebench\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Simultaneously benchmark many URLs with ApacheBench and GNU parallel"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/10\/importing-and-aliasing-php-functions\/","author":{"name":"Simon Holywell"},"published":"2016-10-18T14:50:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"As a follow on to my short post about namespaces and functions from a year ago I thought it would be worth covering importing a specific function and aliasing functions via namespace operators too. This has been possible since PHP 5.6, but there is a nice addition in PHP 7 I&rsquo;ll cover towards the end.\nIn the previous article I demonstrated how you can namespace functions and use them, but as a refresher; you can enclose functions within a namespace just like a class.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"namespace","label":"namespace"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functions","label":"functions"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"alias","label":"alias"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"import","label":"import"}}]},{"title":"Installing pgmodeler on Ubuntu","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/10\/install-pgmodeler-ubuntu\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/03\/install-netbeans-scala-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Install Netbeans and Scala on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why won't ssh-agent save my unencrypted key for later use?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Batch remove extensions in Ubuntu"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/10\/install-pgmodeler-ubuntu\/","author":{"name":"Simon Holywell"},"published":"2016-10-18T12:41:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Pgmodeler is a handy tool for designing databases with an ERD style interface specifically aimed at the PostgreSQL community. It can come in a couple of different ways, but I am going to covering the self build process here. So if you want to learn how to build and install pgmodeler read on!\nTo be able to build anything you&rsquo;ll need to install the tools from Ubuntu&rsquo;s repositories.\nsudo apt-get install gcc libxml2-dev postgresql The first dependency you will need to install is the from QT5 UI toolkit.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"sql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"postgresql","label":"postgresql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"pgmodeler","label":"pgmodeler"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"Tamiya Manta Ray","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/09\/tamiya-manta-ray\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/09\/brisbane\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Brisbane"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/02\/intelligent-vagrant-and-ansible-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Intelligent Vagrant and Ansible files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/09\/scrape-site-with-wget-and-httrack\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Scraping websites with wget and httrack"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Crop and resize images with bash and ImageMagick"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Namespace PHP functions"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/09\/tamiya-manta-ray\/","author":{"name":"Simon Holywell"},"published":"2016-09-13T10:20:11+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I&rsquo;ve finally found some time to look at my old remote control car again - I was so happy when I bought it as a kid nearly twenty years ago. I&rsquo;ve still got the original nickel cadmium battery (all 1300mAh!) and charger so I charged it up expecting that there&rsquo;d be little to no response from the car. Amazingly the kids and I got about 5 minutes of full throttle action out of it before it slowed to a halt.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"tamiya","label":"tamiya"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"manta-ray","label":"manta ray"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"remote-control-car","label":"remote control car"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"rc-car","label":"rc car"}}]},{"title":"Brisbane","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/09\/brisbane\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/02\/intelligent-vagrant-and-ansible-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Intelligent Vagrant and Ansible files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/09\/scrape-site-with-wget-and-httrack\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Scraping websites with wget and httrack"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Crop and resize images with bash and ImageMagick"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Namespace PHP functions"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/09\/brisbane\/","author":{"name":"Simon Holywell"},"published":"2016-09-02T10:20:11+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Way back in 2007 I arrived in London, England ready to start a new chapter of my life working in the big city. I&rsquo;d left a good job at a web agency in Melbourne - one of the world&rsquo;s most livable cities - to experience the financial capital of Europe.\nIt was a fantastic time and so much happened I could write a novel, but here are a few highlights.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"moves","label":"moves"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"brisbane","label":"brisbane"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"temando","label":"temando"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"aurion","label":"aurion"}}]},{"title":"Intelligent Vagrant and Ansible files","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2016\/02\/intelligent-vagrant-and-ansible-files\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/09\/scrape-site-with-wget-and-httrack\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Scraping websites with wget and httrack"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Crop and resize images with bash and ImageMagick"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP date localisation with setlocale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/03\/install-netbeans-scala-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Install Netbeans and Scala on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/06\/fish-console\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Fish Console Reborn"}}],"id":"https:\/\/www.simonholywell.com\/post\/2016\/02\/intelligent-vagrant-and-ansible-files\/","author":{"name":"Simon Holywell"},"published":"2016-02-08T12:16:56+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I use both Vagrant and Ansible to run and provision development virtual machines for testing work locally. This provides an easy to build environment as close to production as possible that all developers can easily create from the source code repository. A simple vagrant up and the associated Ansible scripts will handle all of the configuration and package installation for the VM.\nThis is unbelievably handy and it really helps to reduce the kind of bugs that are difficult to track down - &ldquo;it works on my machine!","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ansible","label":"ansible"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"vagrant","label":"vagrant"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"Scraping websites with wget and httrack","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/09\/scrape-site-with-wget-and-httrack\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Crop and resize images with bash and ImageMagick"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP date localisation with setlocale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/03\/install-netbeans-scala-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Install Netbeans and Scala on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/06\/fish-console\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Fish Console Reborn"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/linux-on-dell-inspiron-2500\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Running a sane version of Linux on a Dell Inspiron 2500"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/09\/scrape-site-with-wget-and-httrack\/","author":{"name":"Simon Holywell"},"published":"2015-09-05T12:41:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Scrapes can be useful to take static backups of websites or to catalogue a site before a rebuild. If you do online courses then it can also be useful to have as much of the course material as possible locally. Another use is to download HTML only ebooks for offline reading.\nThere are two ways that I generally do this - one on the command line with wget and another through the GUI with httrack.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"wget","label":"wget"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bash","label":"bash"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"scrape","label":"scrape"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"httrack","label":"httrack"}}]},{"title":"Crop and resize images with bash and ImageMagick","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP date localisation with setlocale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/03\/install-netbeans-scala-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Install Netbeans and Scala on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/06\/fish-console\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Fish Console Reborn"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/linux-on-dell-inspiron-2500\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Running a sane version of Linux on a Dell Inspiron 2500"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why won't ssh-agent save my unencrypted key for later use?"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/08\/image-resize-crop-bash-imagemagick\/","author":{"name":"Simon Holywell"},"published":"2015-08-24T11:12:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Not wanting to repeat myself I have written a small bash script to handle the parallel processing of the post images for this site. This involves resizing, cropping and then compressing the images ready for the web. Currently the script supports both JPEG and PNG images for all these operations.\nOn top of this I wanted to ensure that only recently added or modified images would be processed rather than processing the entire folder again.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"image","label":"image"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bash","label":"bash"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"imagemagick","label":"imagemagick"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"Namespace PHP functions","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/06\/parallel-benchmark-many-urls-with-apachebench\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Simultaneously benchmark many URLs with ApacheBench and GNU parallel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL style guide"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/international-php-dates-with-intl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"International PHP dates with intl"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP date localisation with setlocale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/05\/2015-05-18-memoization-or-function-cache\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memoization or function cache"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/08\/namespace-php-functions\/","author":{"name":"Simon Holywell"},"published":"2015-08-10T12:41:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"With the release of PHP 5.3 namespaces became a reality in PHP and they&rsquo;ve made so much possible including better autoloading. The majority of the time you&rsquo;ll be used to seeing them at the top of each class file. They can also be used to namespace functions however.\nA standard PHP namespace declaration would look similar to the following at the top of a class file.\nnamespace Treffynnon\\Html; class Tag { \/\/ .","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"namespace","label":"namespace"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functions","label":"functions"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"drupal","label":"Drupal"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"wordpress","label":"Wordpress"}}]},{"title":"SQL style guide","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/international-php-dates-with-intl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"International PHP dates with intl"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP date localisation with setlocale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/06\/parallel-benchmark-many-urls-with-apachebench\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Simultaneously benchmark many URLs with ApacheBench and GNU parallel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/05\/2015-05-18-memoization-or-function-cache\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memoization or function cache"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/04\/php-function-objects\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Function Objects"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/07\/sql-style-guide\/","author":{"name":"Simon Holywell"},"published":"2015-07-24T12:41:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"When you&rsquo;re working in a team you need ways to easily share and denote good style and taste. This is true of your primary programming language with PEP8 for Python and PSRs 1 &amp; 2 for PHP being well known. There is probably even a style guide for HTML and CSS set out at your company. So why should SQL miss out on the party?\nI have written a style guide for SQL to promote a consistent code style ensuring legible and maintainable projects - sqlstyle.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"sql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mysql","label":"mysql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql-style-guide","label":"sql style guide"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"style-guide","label":"style guide"}}]},{"title":"International PHP dates with intl","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/international-php-dates-with-intl\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP date localisation with setlocale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Add a duration or interval to a date"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/06\/parallel-benchmark-many-urls-with-apachebench\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Simultaneously benchmark many URLs with ApacheBench and GNU parallel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/05\/2015-05-18-memoization-or-function-cache\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memoization or function cache"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/07\/international-php-dates-with-intl\/","author":{"name":"Simon Holywell"},"published":"2015-07-21T15:33:51+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I wrote about localising dates (and other data) in a recent blog post, but unfortunately there were some shortcomings where time zones were concerned. As I alluded to in that post there is a way around this via the Intl extension that exposes a simple API to format DateTime instances.\nThankfully this follow up post will be quite short as the setup is very simple for those of you on Ubuntu\/Debian you can use the repositories.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"intl","label":"intl"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"localisation","label":"localisation"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"date","label":"date"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"localization","label":"localization"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"datetime","label":"datetime"}}]},{"title":"PHP date localisation with setlocale","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Add a duration or interval to a date"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/06\/parallel-benchmark-many-urls-with-apachebench\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Simultaneously benchmark many URLs with ApacheBench and GNU parallel"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/07\/php-date-setlocale-localisation\/","author":{"name":"Simon Holywell"},"published":"2015-07-20T13:43:36+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Localising sites can be a chore, but PHP has the venerable setlocale() to use system locales. These are like templates or profiles that describe how various types of data should be displayed. Should a price have a comma or point to indicate the decimals? When printing a date should PHP output Monday or Montag?\nAll of these considerations are locale specific and they map to a geographical area. Various cultures have their own standards for displaying this kind of information not to mention different languages to accommodate.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"setlocale","label":"setlocale"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"localisation","label":"localisation"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"date","label":"date"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"localization","label":"localization"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"Simultaneously benchmark many URLs with ApacheBench and GNU parallel","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/06\/parallel-benchmark-many-urls-with-apachebench\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/2014-02-28-hhvm-zephir-php-benchmark\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"HHVM vs Zephir vs PHP: The showdown"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/05\/2015-05-18-memoization-or-function-cache\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memoization or function cache"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/04\/php-function-objects\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Function Objects"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/08\/functional-programming-in-php-the-book\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP - The book"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/07\/2014-07-24-three-devs-and-a-maybe-podcast\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming on Three Devs and a Maybe"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/06\/parallel-benchmark-many-urls-with-apachebench\/","author":{"name":"Simon Holywell"},"published":"2015-06-25T14:47:55+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Once in a while you come across situations where someone wants to know what a server can do or how many requests it can handle under a realistic load scenario. It could simply be that you want to hit a large selection of sites or even that you want to simultaneously hit a number of different pages on the same site.\nIn my case I am testing the performance of a Drupal multisite installation where one core set of code is shared by many sites on different URLs.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apachebench","label":"ApacheBench"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"benchmark","label":"benchmark"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"parallel","label":"parallel"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"gnu-parallel","label":"GNU parallel"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ddos","label":"DDOS"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"drupal","label":"Drupal"}}]},{"title":"Memoization or function cache","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/05\/2015-05-18-memoization-or-function-cache\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/08\/functional-programming-in-php-the-book\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP - The book"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/04\/php-function-objects\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Function Objects"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/07\/2014-07-24-three-devs-and-a-maybe-podcast\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming on Three Devs and a Maybe"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/2014-02-28-hhvm-zephir-php-benchmark\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"HHVM vs Zephir vs PHP: The showdown"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/05\/2015-05-18-memoization-or-function-cache\/","author":{"name":"Simon Holywell"},"published":"2015-05-18T13:24:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A little known feature of PHP&rsquo;s static keyword is that it allows for memoization or function caching. This is a process whereby a functions heavy lifting can be cached so that subsequent calls are faster.\nIt is possible to store any value in a memoized way such as arrays or even objects. This is done without any external side effects - that is to say that the code calling the function will require no changes to support memoization.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"memoization","label":"memoization"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"function-cache","label":"function cache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional","label":"functional"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-php","label":"functional php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"book","label":"book"}}]},{"title":"PHP Function Objects","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2015\/04\/php-function-objects\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/08\/functional-programming-in-php-the-book\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming in PHP - The book"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/07\/2014-07-24-three-devs-and-a-maybe-podcast\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming on Three Devs and a Maybe"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/2014-02-28-hhvm-zephir-php-benchmark\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"HHVM vs Zephir vs PHP: The showdown"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional PHP talks"}}],"id":"https:\/\/www.simonholywell.com\/post\/2015\/04\/php-function-objects\/","author":{"name":"Simon Holywell"},"published":"2015-04-16T12:36:38+01:00","updated":"2024-11-19T12:47:01+10:00","summary":"It is possible to treat a class instance as a function in PHP. Quite often this is referred to as a functor even though it should really be known as a function object. This is because functions actually serve a different role in languages that support their use.\nThe convenience of having a reusable function that can be overloaded and carry a context is something to weigh up against using functions or closures.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional","label":"functional"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-php","label":"functional php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"function-objects","label":"function objects"}}]},{"title":"Functional Programming in PHP - The book","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/08\/functional-programming-in-php-the-book\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/07\/2014-07-24-three-devs-and-a-maybe-podcast\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional Programming on Three Devs and a Maybe"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/2014-02-28-hhvm-zephir-php-benchmark\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"HHVM vs Zephir vs PHP: The showdown"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional PHP talks"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Speaking about Functional PHP at BrightonPHP and PHP Hampshire"}}],"id":"https:\/\/www.simonholywell.com\/post\/2014\/08\/functional-programming-in-php-the-book\/","author":{"name":"Simon Holywell"},"published":"2014-08-29T11:09:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"After working hard on the guide to Functional Programming in PHP I am pleased to announce that it has been published by php[architect]! The book is offcially now available and you can purchase your very own copy!\nIf you\u2019re a programmer who wants less bugs and easier testing then this is the functional introduction for you. Throughout the chapters I gently lead you through the various functional constructs available in and with PHP.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional","label":"functional"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-php","label":"functional php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"book","label":"book"}}]},{"title":"Functional Programming on Three Devs and a Maybe","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/07\/2014-07-24-three-devs-and-a-maybe-podcast\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/2014-02-28-hhvm-zephir-php-benchmark\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"HHVM vs Zephir vs PHP: The showdown"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional PHP talks"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Speaking about Functional PHP at BrightonPHP and PHP Hampshire"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Add a duration or interval to a date"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2014\/07\/2014-07-24-three-devs-and-a-maybe-podcast\/","author":{"name":"Simon Holywell"},"published":"2014-07-24T14:11:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I was recently invited to join Edd and Michael to appear on the Three Devs and a Maybe podcast to discuss function programming. The recording of our chat is now available so head on over and have a listen.\nIf you haven\u2019t listened to the podcast before there are some 34 past episodes archived there as well!\nnote\nIf you are interested in finding out more about my book on functional programming in PHP or to subscribe for notification of its release please visit functionalphp.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-php","label":"functional php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"podcast","label":"podcast"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"three-devs-and-a-maybe","label":"three devs and a maybe"}}]},{"title":"HHVM vs Zephir vs PHP: The showdown","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/2014-02-28-hhvm-zephir-php-benchmark\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Functional PHP talks"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Speaking about Functional PHP at BrightonPHP and PHP Hampshire"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Add a duration or interval to a date"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.4.0 Released"}}],"id":"https:\/\/www.simonholywell.com\/post\/2014\/02\/2014-02-28-hhvm-zephir-php-benchmark\/","author":{"name":"Simon Holywell"},"published":"2014-02-28T13:42:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Since its inception the slow running speed of PHP has been widely publicised and over the years there have been a number of improvements. The first Zend Engine arrived with PHP4 and delivered various performance enhancements (among other features). Each release since this time has delivered some sort of increased efficiency in one way or another.\nIt has become more interesting recently however with three projects looking for improvements in different ways.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"hhvm","label":"hhvm"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"zephir","label":"zephir"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"benchmark","label":"benchmark"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"showdown","label":"showdown"}}]},{"title":"Functional PHP talks","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Speaking about Functional PHP at BrightonPHP and PHP Hampshire"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Add a duration or interval to a date"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.4.0 Released"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Improve PHP session cookie security"}}],"id":"https:\/\/www.simonholywell.com\/post\/2014\/02\/functional-php-talks\/","author":{"name":"Simon Holywell"},"published":"2014-02-13T09:38:57+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I was recently invited to speak about functional programming in PHP for both BrightonPHP and PHP Hampshire. The details of which are in a previous blog post.\nIf you attended either talk and you\u2019ve yet to leave feedback then please do on the respective Joind.in pages:\nBrighton PHP joind.in page PHP Hampshire joind.in page You can view the slides from the sessions on my website. I created the slides using reveal.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"phpug","label":"phpug"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"speaking","label":"speaking"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"meetup","label":"meetup"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-programming","label":"functional programming"}}]},{"title":"Speaking about Functional PHP at BrightonPHP and PHP Hampshire","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Add a duration or interval to a date"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.4.0 Released"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Improve PHP session cookie security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"3 things I set on new servers"}}],"id":"https:\/\/www.simonholywell.com\/post\/2014\/01\/speaking-at-brightonphp-and-php-hampshire\/","author":{"name":"Simon Holywell"},"published":"2014-01-09T14:56:57+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have been invited to speak at both the upcoming meetings of BrightonPHP and PHP Hampshire about functional programming. This is off the back of the site I created for my (soon to be released) book tentatively entitled Functional Programming in PHP.\nTo get a better idea of what the talk will include I have prepared an abstract:\nIn the PHP world functions are generally sneered at due to their simplicity and perceived as an evil side effect of spaghetti code.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"phpug","label":"phpug"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"speaking","label":"speaking"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"meetup","label":"meetup"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional-programming","label":"functional programming"}}]},{"title":"Add a duration or interval to a date","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.4.0 Released"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Improve PHP session cookie security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"3 things I set on new servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}}],"id":"https:\/\/www.simonholywell.com\/post\/2014\/01\/add-a-duration-or-interval-to-a-date\/","author":{"name":"Simon Holywell"},"published":"2014-01-03T15:51:13+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"In PHP you can easily add a duration to a DateTime instance in a number of ways. I will review the most common methods for completing the task starting with those available on the DateTime object itself.\nIf you are running PHP 5.2 then the only way to achieve this is to call the modify method. This allows you to pass in a date format, but in this case we are most interested in the relative formats.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"time","label":"time"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"date","label":"date"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"dateinterval","label":"dateinterval"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"datetime","label":"datetime"}}]},{"title":"Reverse a git pull request on GitHub the hard way","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/reverse-github-pull-request\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Git tag secrets"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Convert UTC\/GMT or any time zone to local time in PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/12\/reverse-github-pull-request\/","author":{"name":"Simon Holywell"},"published":"2013-12-12T11:26:17+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"As you may know I am currently the maintainer of both Idiorm and Paris; well recently I merged in what looked to be an innocuous pull request from a contributor. Unfortunately this merge had unintended consequences and basically broke the backwards compatibility of the library. Shame on me!\nAfter waiting for a patch that would fix the problem and coming up short I decided enough was enough. So today I backed out the errant merges in both Idiorm and Paris.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"git","label":"git"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"github","label":"github"}}]},{"title":"Convert UTC\/GMT or any time zone to local time in PHP","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.4.0 Released"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Improve PHP session cookie security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"3 things I set on new servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/12\/convert-utc-to-local-time\/","author":{"name":"Simon Holywell"},"published":"2013-12-11T14:42:31+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Wrangling dates and times can be a somewhat arduous task for all programmers. One very common requirement is to convert a time from one time zone to another.\nIn PHP this is greatly simplified with the DateTime standard library classes and especially DateTimeZone.\nFor this example let us assume we have a UTC date and time string (2011-04-27 02:45) that we would like to convert to ACST (Australian Central Standard Time).","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"time","label":"time"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"date","label":"date"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"timezone","label":"timezone"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"datetime","label":"datetime"}}]},{"title":"Conditionally loaded responsive content on the client side","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/11\/conditionally-loaded-responsive-content\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.4.0 Released"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Improve PHP session cookie security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"3 things I set on new servers"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/11\/conditionally-loaded-responsive-content\/","author":{"name":"Simon Holywell"},"published":"2013-11-21T09:55:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Sometimes it is helpful to entirely change chunks of markup when a certain CSS media query is triggered. This could because a certain layout will not work on smaller screen sizes or because it refers to media that you would not want a mobile to download.\nRecently I had this exact problem when dealing with a site that included a grid based layout in a carousel\/slider. When the browser was sized down from desktop it needed to change the number of columns in the grid.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"responsive-web-design","label":"responsive web design"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"media-queries","label":"media queries"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"rwd","label":"RWD"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"css","label":"css"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"javascript"}}]},{"title":"Idiorm and Paris 1.4.0 Released","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Improve PHP session cookie security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"3 things I set on new servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/09\/idiorm-and-paris-1-4-0-released\/","author":{"name":"Simon Holywell"},"published":"2013-09-05T13:24:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"After a lot of work and many contributions from valued community members Idiorm and Paris versions 1.4.0 have been released into the wild. You can download them now from their respective repositories or via Composer\/Packagist.\nAs you are probably aware from my previous posts Idiorm is a minimalist ORM that is targetted at PHP 5.2 and above. It combines a fluent query builder with a simple ORM interface to allow fast and easy access to databases over PDO.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"idiorm","label":"idiorm"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"paris","label":"paris"}}]},{"title":"Improve PHP session cookie security","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"3 things I set on new servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Navigator: Geographic calculation library for PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/05\/improve-php-session-cookie-security\/","author":{"name":"Simon Holywell"},"published":"2013-05-14T11:42:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The security of session handling in PHP can easily be enhanced through the use of a few configuration settings and the addition of an SSL certificate. Whilst this topic has been covered numerous times before it still bears mentioning with a large number of PHP sites and servers having not implemented these features.\nTo prevent session hijacking through cross site scripting (XSS) you should always filter and escape all user supplied values before printing them to screen.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"security","label":"security"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"owasp","label":"owasp"}}]},{"title":"3 things I set on new servers","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/11\/force-lowercase-urls-rewrite-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Force URLs to lowercase with Apache rewrite and PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Navigator: Geographic calculation library for PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/04\/three-things-i-set-on-new-servers\/","author":{"name":"Simon Holywell"},"published":"2013-04-23T13:42:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"There are a number of things you can do to make a server more secure whilst protecting your hosted entities and their users. Here are just three of the many things I do on every new server I commission. I hasten to add that these are not necessarily the most effective or at the top of my list - they are just that: 3 things I set on new servers.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"security","label":"security"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nginx","label":"nginx"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"owasp","label":"owasp"}}]},{"title":"Install Netbeans and Scala on Ubuntu","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/03\/install-netbeans-scala-ubuntu\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why won't ssh-agent save my unencrypted key for later use?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Batch remove extensions in Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/ubuntu-atd-not-running\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"If you are having problems getting Ubuntu atd running"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/03\/install-netbeans-scala-ubuntu\/","author":{"name":"Simon Holywell"},"published":"2013-03-17T16:06:29+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"If you want to install and run the latest version of Scala and\/or Netbeans then you cannot simply install it from your distributions repositories or pre-built packages. It may sound easy enough to just grab Netbeans from their site and install it, but most Linux distributions no longer have Sun Java packages in their repositories.\nSo after a little bit of mucking about, reading manual pages and documentation I struck upon the following method of setting it all up.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"netbeans","label":"netbeans"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"scala","label":"scala"}}]},{"title":"Create a Google Talk bot with Node.js Part Two","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/03\/create-a-node-js-google-talk-bot-pt2\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/create-a-node-js-google-talk-bot-pt1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Create a Google Talk bot with Node.js: Part One"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-for-hosting-websites\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Node.js for hosting websites"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-in-the-real-world\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Node.js in the real world"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-eco-system\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Node.js eco-system"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/xmpp-and-jabber\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XMPP and Jabber"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/03\/create-a-node-js-google-talk-bot-pt2\/","author":{"name":"Simon Holywell"},"published":"2013-03-01T12:32:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"In part one of the tutorial you built a bot with Node.js that could connect to the Google Talk network and announce its presence to other users with a status message. The bot was also configured to listen for subscription requests from other users and automatically accept them.\nNow you are going to further enhance the bot with additional functionality and commands as you proceed through part two of the tutorial.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"Nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"google-talk","label":"Google Talk"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"published","label":"published"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"net-magazine","label":"net Magazine"}}]},{"title":"Node.js for hosting websites","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-for-hosting-websites\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-in-the-real-world\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Node.js in the real world"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-eco-system\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Node.js eco-system"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/create-a-node-js-google-talk-bot-pt1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Create a Google Talk bot with Node.js: Part One"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/xmpp-and-jabber\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XMPP and Jabber"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting started with Node.js and CouchDB"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-for-hosting-websites\/","author":{"name":"Simon Holywell"},"published":"2013-02-26T12:01:32+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Whilst Node.js is primarily aimed at creating non-blocking servers it can also be used to host simple web pages such as homepages and blogs.\nWe are going to be using a simple web framework for Node.js called Express (http:\/\/expressjs.com), which can be installed via the Node Package Manager on the command line.\nnpm install express Firstly, create a new file called server.js and begin by instantiating the express framework.\nvar app = require(&#34;express&#34;).","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"Nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"express","label":"Express"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"published","label":"published"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"net-magazine","label":"net Magazine"}}]},{"title":"Node.js in the real world","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-in-the-real-world\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-eco-system\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Node.js eco-system"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/create-a-node-js-google-talk-bot-pt1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Create a Google Talk bot with Node.js: Part One"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/xmpp-and-jabber\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XMPP and Jabber"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting started with Node.js and CouchDB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-in-the-real-world\/","author":{"name":"Simon Holywell"},"published":"2013-02-20T14:19:04+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"With Node.js yet to reach a major release you may be wondering if it is mature enough for production environments and live projects. Whilst it is also true, in the past, that the Node.js creators have warned off people with mission critical objectives it is now in a much more stable state.\nSome well known companies including Plurk, LinkedIn and GitHub are using Node.js to deliver vital parts of their offerings everyday.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"Nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"published","label":"published"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"net-magazine","label":"net Magazine"}}]},{"title":"XMPP and Jabber","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/xmpp-and-jabber\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-eco-system\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Node.js eco-system"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/create-a-node-js-google-talk-bot-pt1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Create a Google Talk bot with Node.js: Part One"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ssdeep PHP extension in git"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Git tag secrets"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/02\/xmpp-and-jabber\/","author":{"name":"Simon Holywell"},"published":"2013-02-18T12:34:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Jabber was originally invented by Jeremie Miller in 1998 who was sick of using many different closed protocol instant messenger clients. To begin fixing this situation he created jabberd as an open source server in 1999 and by May of the next year version 1.0 was released.\nOver the course of the last twelve or so years Jabber has evolved into a standards organisation (XMPP Standards Foundation) and developed an open industry standard for instant messaging called the Extensible Messaging and Presence Protocol (XMPP).","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"xmpp","label":"XMPP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"jabber","label":"Jabber"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"published","label":"published"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"net-magazine","label":"net Magazine"}}]},{"title":"ssdeep PHP extension in git","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How the ssdeep PHP extension came into being"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/pecl-install-issues-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PECL Install Issues on Redhat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The PHP ssdeep Extension is Now in PECL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/02\/php-ssdeep-in-git\/","author":{"name":"Simon Holywell"},"published":"2013-02-13T16:12:43+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The PHP project as a whole has been migrating to use git as its SCM of choice. This includes the core code and some PECL extensions such as BitSet and the sources for the PHP.net web properties like wiki.php.net\nWell now the PHP team have helped me to migrate the source of ssdeep to git, which means it is now also mirrored (where you can star it) to the official PHP github account.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php_ssdeep","label":"php_ssdeep"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extensions","label":"php extensions"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"git","label":"git"}}]},{"title":"The Node.js eco-system","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-eco-system\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/create-a-node-js-google-talk-bot-pt1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Create a Google Talk bot with Node.js: Part One"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting started with Node.js and CouchDB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Git tag secrets"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/02\/node-js-eco-system\/","author":{"name":"Simon Holywell"},"published":"2013-02-13T13:51:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"JavaScript started life as a project named Mocha created by Brendan Eich at Netscape in 1995. By the time Netscape Navigator 2.0 was due for release the language had changed names twice becoming LiveScript and then, finally, JavaScript (JS).\nOriginally Netscape were considering a derivative of Scheme for client side scripting, but swept up in the buzz of Sun\u2019s Java at the time management stated that the language must look like Java.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"Nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"published","label":"published"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"net-magazine","label":"net Magazine"}}]},{"title":"Create a Google Talk bot with Node.js: Part One","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/create-a-node-js-google-talk-bot-pt1\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting started with Node.js and CouchDB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Git tag secrets"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Navigator: Geographic calculation library for PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/02\/create-a-node-js-google-talk-bot-pt1\/","author":{"name":"Simon Holywell"},"published":"2013-02-06T13:35:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Programming a chat bot was once the domain of the hardcore hacker tapping packets as they passed over the wire from proprietary client applications to closed source servers, but not any more!\nWith the open Extensible Messaging and Presence Protocol (XMPP) once closed networks are becoming accessible to the rest of us. I selected Google Talk as it is probably the most well known implementation of XMPP and it is easy and free to sign up for, but Windows Live Messenger, AIM and Skype all support it to some extent.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"Nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"google-talk","label":"Google Talk"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"published","label":"published"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"net-magazine","label":"net Magazine"}}]},{"title":"Git tag secrets","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Navigator: Geographic calculation library for PHP"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/02\/git-tag-secrets\/","author":{"name":"Simon Holywell"},"published":"2013-02-04T10:42:29+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Tags are quite a simple aspect of git, but there are a few things that a lot of people don\u2019t know about. These shortcuts will make it quick for you to tag and manage those tags in your git repositories.\nProbably the most common use of tags is to note when a version of the software the repository is tracking is released. Usually this will be something like \u20181.2.8\u2019 if you are sticking with SemVer.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"git","label":"git"}}]},{"title":"Idiorm and Paris 1.3.0 released - the minimalist ORM and fluent query builder for PHP","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Unicode shortcut in Netbeans for React\/Curry"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Navigator: Geographic calculation library for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/11\/force-lowercase-urls-rewrite-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Force URLs to lowercase with Apache rewrite and PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How the ssdeep PHP extension came into being"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/01\/idiorm-and-paris-the-minimalist-orm\/","author":{"name":"Simon Holywell"},"published":"2013-01-31T13:56:29+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Idiorm is a PHP ORM that eschews complexity and deliberately remains lightweight with support for PHP5.2+. It consists of one file and primarily one class that can easily be configured in a few lines of code. There are no models to create, no convoluted configuration formats and there is no database introspection just a simple PDO connection string.\nHowever, having said this, Idiorm is very powerful and it makes most of the queries PHP applications require pain free.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"idiorm","label":"idiorm"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"paris","label":"paris"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"orm","label":"orm"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"database","label":"database"}}]},{"title":"Unicode shortcut in Netbeans for React\/Curry","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Navigator: Geographic calculation library for PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/11\/force-lowercase-urls-rewrite-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Force URLs to lowercase with Apache rewrite and PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/03\/netbeans-jvi-vim-bindings\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"NetBeans with jVi vim bindings"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How the ssdeep PHP extension came into being"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/01\/unicode-shortcut-in-netbeans\/","author":{"name":"Simon Holywell"},"published":"2013-01-22T13:16:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"In some of my code I use a PHP library called React\/Curry and to save typing it uses a unicode ellipsis (\u2026) for a method name. Yes, that is right unicode method names can be legal in PHP!\n&lt;?php $firstChar = Curry\\bind(&#39;substr&#39;, Curry\\\u2026(), 0, 1); See I told you so!\nWell that is great, but how do you type a unicode character into a Netbeans document?\nTo save having to constantly copy and paste the \u2026 character from a symbols list I have setup a very simple macro in Netbeans to print the character for me.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"netbeans","label":"netbeans"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"unicode","label":"unicode"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"functional","label":"functional"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"curry","label":"curry"}}]},{"title":"Navigator: Geographic calculation library for PHP","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/11\/force-lowercase-urls-rewrite-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Force URLs to lowercase with Apache rewrite and PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How the ssdeep PHP extension came into being"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/02\/gearman-php-mod-gearman-status\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gearman, PHP and mod_gearman_status on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}}],"id":"https:\/\/www.simonholywell.com\/post\/2013\/01\/navigator-geographic-calculations-library-for-php\/","author":{"name":"Simon Holywell"},"published":"2013-01-18T11:35:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Navigator is a PHP library for easily performing geographic calculations and distance unit conversions on Earth or any other spheroid.\nCurrently it supports distance calculations between two coordinates using Vincenty, Haversine, Great Circle or Cosine Law. By default it uses the most accurate, but computationally intensive: Vincenty.\nTo calculate the distance between two points on Earth in metres it is as simple as:\n&lt;?php use Treffynnon\\Navigator as N; $distance = N::getDistance(10, 81.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"navigator","label":"navigator"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"geography","label":"geography"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"library","label":"library"}}]},{"title":"Force URLs to lowercase with Apache rewrite and PHP","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/11\/force-lowercase-urls-rewrite-php\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How the ssdeep PHP extension came into being"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/02\/gearman-php-mod-gearman-status\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gearman, PHP and mod_gearman_status on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}}],"id":"https:\/\/www.simonholywell.com\/post\/2012\/11\/force-lowercase-urls-rewrite-php\/","author":{"name":"Simon Holywell"},"published":"2012-11-01T09:07:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Canonical pages are an important aspect of maintaining a website and ensure that search engine rankings are not affected by any duplicated content.\nIn *NIX based systems file names with varying capitalisation are treated as separate files. For example filename.txt is not the same file as FileName.TXT. This extends into the world of Apache where URLs are also case sensitive.\nSo that means that we really should pick a case for our URLs and force all browsers to redirect to our chosen scheme.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"htaccess","label":"htaccess"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"rewrite","label":"rewrite"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}}]},{"title":"Fish Console Reborn","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/06\/fish-console\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/03\/netbeans-jvi-vim-bindings\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"NetBeans with jVi vim bindings"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/nodester-environment-variables-for-sensitive-data\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Nodester environment variables for sensitive data and passwords"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/linux-on-dell-inspiron-2500\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Running a sane version of Linux on a Dell Inspiron 2500"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why won't ssh-agent save my unencrypted key for later use?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}}],"id":"https:\/\/www.simonholywell.com\/post\/2012\/06\/fish-console\/","author":{"name":"Simon Holywell"},"published":"2012-06-11T10:19:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Installing curses:\nsudo apt-get install libncurses5-dev\nfish is now installed on your system. To run fish, type \u2018fish\u2019 in your terminal.\nTo use fish as your login shell:\nadd the line \u2018\/usr\/local\/bin\/fish\u2019 to the file \u2018\/etc\/shells\u2019. use the command \u2018chsh -s \/usr\/local\/bin\/fish\u2019. To set your colors, run \u2018fish_config\u2019 To scan your man pages for completions, run \u2018fish_update_completions\u2019\nHave fun!","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"command-line","label":"command line"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"NetBeans with jVi vim bindings","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/03\/netbeans-jvi-vim-bindings\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/nodester-environment-variables-for-sensitive-data\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Nodester environment variables for sensitive data and passwords"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New version of the Agavi framework support for NetBeans 7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/force-netbeans-line-endings\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Forcing NetBeans to Use Unix (LF) Line Endings"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/netbeans-and-xdebug\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Netbeans and Remote XDebug"}}],"id":"https:\/\/www.simonholywell.com\/post\/2012\/03\/netbeans-jvi-vim-bindings\/","author":{"name":"Simon Holywell"},"published":"2012-03-20T13:20:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I love vim and its very handy shortcuts, but I also like to be in a GUI IDE for most of my development. Thankfully there is an answer; add vims keybindings to the NetBeans environment with jVi.\nOnce you have Netbeans 7+ installed you can install jVi by going to Tools &gt; Plugins &gt; Available Plugins and searching for jVi. Select jVi for NB-7.0 Update Center and click Install.\nNow click the Reload Catalog button and wait for the updates to stream in.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"command-line","label":"command line"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"netbeans","label":"netbeans"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"vim","label":"vim"}}]},{"title":".net magazine article: Create a Google Talk bot with Node.js","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/02\/create-a-google-talk-bot-with-nodejs\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/nodester-environment-variables-for-sensitive-data\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Nodester environment variables for sensitive data and passwords"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/01\/mysql-udf-install-error-function-already-exists\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing a MySQL UDF errors with Function already exists"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting started with Node.js and CouchDB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New version of the Agavi framework support for NetBeans 7.0"}}],"id":"https:\/\/www.simonholywell.com\/post\/2012\/02\/create-a-google-talk-bot-with-nodejs\/","author":{"name":"Simon Holywell"},"published":"2012-02-03T23:07:54+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have written a two part article for this months\u00a0.net magazine detailing how easy it is to write a Google Talk bot with the evented power of Node.js.\n\u201cProgramming a chat bot was once the domain of the hardcore hacker, tapping packets as they passed over the wire from proprietary client applications to closed source servers, but not any more!\u201d\nnote\nAs of 6\/2\/2103 I have now published this article on my blog.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"Installing a MySQL UDF errors with Function already exists","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2012\/01\/mysql-udf-install-error-function-already-exists\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/nodester-environment-variables-for-sensitive-data\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Nodester environment variables for sensitive data and passwords"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting started with Node.js and CouchDB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New version of the Agavi framework support for NetBeans 7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}}],"id":"https:\/\/www.simonholywell.com\/post\/2012\/01\/mysql-udf-install-error-function-already-exists\/","author":{"name":"Simon Holywell"},"published":"2012-01-31T11:47:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"When installing a UDF recently I got an annoying error message, which didn\u2019t seem to want to go away. Deleting the function before attempting to remove it did not work so I used the following set of escalating commands to attempt to get it to install.\nBut back to the error for a moment:\nbash &gt; mysql -u user -p &lt; installdb.sql Enter password: ERROR 1125 (HY000) at line 7: Function 'lib_mysqludf_ssdeep_info' already exists This can be solved really simply with the following options:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mysql","label":"mysql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"udf","label":"udf"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"Nodester environment variables for sensitive data and passwords","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/nodester-environment-variables-for-sensitive-data\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP extension writing: PHP Extensions Made Eldrich"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting started with Node.js and CouchDB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New version of the Agavi framework support for NetBeans 7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/10\/nodester-environment-variables-for-sensitive-data\/","author":{"name":"Simon Holywell"},"published":"2011-10-27T23:21:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"When I began using Cloudno.de recently to have a go at\u00a0Node.js and CouchDB I stored my username and password in plain text in a configuration file. If you are also looking to get CouchDB going with CloudNo.de then my earlier Getting started with Node.js and CouchDB post may be of interest.\nThe configuration file was fine for testing as nobody who came across the database login details could do any real damage, but as the project got more interesting I wanted to send it live and these details would need to be kept private.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"command-line","label":"command line"}}]},{"title":"PHP extension writing: PHP Extensions Made Eldrich","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How the ssdeep PHP extension came into being"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/pecl-install-issues-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PECL Install Issues on Redhat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The PHP ssdeep Extension is Now in PECL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-extensions-made-elrich\/","author":{"name":"Simon Holywell"},"published":"2011-10-26T09:56:45+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"PHP extension writing: PHP Extensions Made Eldrich\nSince writing my 15 Excellent Resources for PHP Extension Development post in September last year Kristina Chodorow of 10gen (MongoDB) has written an excellent four part article on writing PHP Extensions on her blog Snail in a Turtleneck.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extension","label":"php extension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extensions","label":"php extensions"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"The world has lost an excellent and exciting rider in Marco Simoncelli","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/marco-simoncelli\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Whilst the wedding is a great event for the participants, I am n\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/fucking-keep-it\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Ah, so eloquent! jeffreyshek: Only in Scotland. Photo taken by a\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/10\/marco-simoncelli\/","author":{"name":"Simon Holywell"},"published":"2011-10-24T01:10:39+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The world has lost an excellent and exciting rider in Marco Simoncelli. He was a true character. RIP #58.\nYou can leave a tribute on the MotoGP website.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"motogp","label":"MotoGP"}}]},{"title":"Getting started with Node.js and CouchDB","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New version of the Agavi framework support for NetBeans 7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/10\/getting-started-node-js-couch-db\/","author":{"name":"Simon Holywell"},"published":"2011-10-21T15:47:17+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Node.js and CouchDB feel like they were made for each other right from the very first time I used them. With the cradle node package the\u00a0integration\u00a0becomes even easier.\nWhilst both Node.js and CouchDB are open source with packages for most operating systems it maybe easier for you to start out using a hosted solution such as CloudNo.de (has CouchDB now) or Nodester for example. As far as the CouchDB portion goes there is only one place to go and that is IrisCouch.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"couchdb","label":"CouchDB"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"nodejs","label":"Nodejs"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"PHP elephants","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-elephants\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How the ssdeep PHP extension came into being"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/linux-on-dell-inspiron-2500\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Running a sane version of Linux on a Dell Inspiron 2500"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/i-remember-watching-trains-from-this-bridge-when-i\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"I remember watching trains from this bridge when I first arrived\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/fucking-keep-it\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Ah, so eloquent! jeffreyshek: Only in Scotland. Photo taken by a\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New version of the Agavi framework support for NetBeans 7.0"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/10\/php-elephants\/","author":{"name":"Simon Holywell"},"published":"2011-10-21T15:23:09+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"PHP elephants","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"How the ssdeep PHP extension came into being","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/pecl-install-issues-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PECL Install Issues on Redhat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The PHP ssdeep Extension is Now in PECL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/02\/gearman-php-mod-gearman-status\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gearman, PHP and mod_gearman_status on Ubuntu"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/07\/how-php-ssdeep-was-made\/","author":{"name":"Simon Holywell"},"published":"2011-07-14T13:17:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Recently (well in a loose sense anyway) I had the need to build a document bank in PHP for a client at Mosaic. It was a fairly involved application with various public and private APIs for integration into the clients network of websites.\nThe core PHP code was written on top of the Agavi framework and various PHP libraries for extracting text and meta data from documents. One of the major features the client required was for the system to detect similar files to prevent unintentional duplicates making it into the document bank.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php_ssdeep","label":"php_ssdeep"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extension","label":"php extension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extensions","label":"php extensions"}}]},{"title":"Running a sane version of Linux on a Dell Inspiron 2500","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/linux-on-dell-inspiron-2500\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why won't ssh-agent save my unencrypted key for later use?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Batch remove extensions in Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/ubuntu-atd-not-running\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"If you are having problems getting Ubuntu atd running"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/06\/linux-on-dell-inspiron-2500\/","author":{"name":"Simon Holywell"},"published":"2011-06-22T21:33:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have ended up with a very old piece of hardware and of course the first thing I did was wipe the Windows 2000 installation and stick a few versions of Linux on it. Unfortunately it only came with 128MB of memory from factory so nothing would run very well. The PCMIA wireless card that came with it wouldn\u2019t work with WPA2 under Windows 2000 so an upgrade was required.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"I remember watching trains from this bridge when I first arrived\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/i-remember-watching-trains-from-this-bridge-when-i\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/fucking-keep-it\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Ah, so eloquent! jeffreyshek: Only in Scotland. Photo taken by a\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New version of the Agavi framework support for NetBeans 7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/tz3-stradale\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TZ3 Stradale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Whilst the wedding is a great event for the participants, I am n\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why won't ssh-agent save my unencrypted key for later use?"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/06\/i-remember-watching-trains-from-this-bridge-when-i\/","author":{"name":"Simon Holywell"},"published":"2011-06-10T09:55:51+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I remember watching trains from this bridge when I first arrived in Edinburgh from Australia. It was cold then too!\nnationalgeographicdaily:\nChildren Watching Train, Edninburgh\nPhotograph by Vishal Soniji\nThis photo was taken during my visit to Edinburgh as I was on my way to Edinburgh Castle.","content":{"@attributes":{"type":"html"}}},{"title":"Ah, so eloquent! jeffreyshek: Only in Scotland. Photo taken by a\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/06\/fucking-keep-it\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/tz3-stradale\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TZ3 Stradale"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/new-lancia-stratos-by-pininfarina\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A nice modern take on the original Stratos by Pininfarina set to\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gives an amazing sense of speed. missedapex: Norma M20 makes its\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Whilst the wedding is a great event for the participants, I am n\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/06\/fucking-keep-it\/","author":{"name":"Simon Holywell"},"published":"2011-06-03T10:14:35+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Ah, so eloquent!\njeffreyshek:\nOnly in Scotland. Photo taken by a friend of mine.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"rants","label":"rants"}}]},{"title":"New version of the Agavi framework support for NetBeans 7.0","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/05\/netbeans-7-agavi-support\/","author":{"name":"Simon Holywell"},"published":"2011-05-05T13:32:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"necora-markus:\nReleased a new version of the Agavi framework support plugin for the shiny new NetBeans 7.0. Still depends on implementation versions of the PHP-plugin, so if something doesn\u2019t work, please let me know.\nPrebuilt NBM available here, source code here.\nUPDATE: Even newer version\u00a0available for download here. Should fix a null pointer exception.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"netbeans","label":"netbeans"}}]},{"title":"TZ3 Stradale","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/05\/tz3-stradale\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/new-lancia-stratos-by-pininfarina\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A nice modern take on the original Stratos by Pininfarina set to\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gives an amazing sense of speed. missedapex: Norma M20 makes its\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Whilst the wedding is a great event for the participants, I am n\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/05\/tz3-stradale\/","author":{"name":"Simon Holywell"},"published":"2011-05-05T13:28:59+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"TZ3 Stradale","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}}]},{"title":"Whilst the wedding is a great event for the participants, I am n\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/new-lancia-stratos-by-pininfarina\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A nice modern take on the original Stratos by Pininfarina set to\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/04\/prince-william-a-squid\/","author":{"name":"Simon Holywell"},"published":"2011-04-28T09:21:13+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Whilst the wedding is a great event for the participants, I am not interested in the slightest. However William was seen last night out on his motorbike in less than adequate gear (squidding) and confirming his continued love for Ducati - some would say at the cost of Hinckley. Triumph being the only mass produced British rival to the big Duke.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}}]},{"title":"Why won't ssh-agent save my unencrypted key for later use?","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Handy Linux Commands"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Samba File Share Over SSH Tunnel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Batch remove extensions in Ubuntu"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/04\/ssh-agent-not-storing-unencrypted-key\/","author":{"name":"Simon Holywell"},"published":"2011-04-26T12:09:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Why won\u2019t ssh-agent save my unencrypted key for later use?\nI recently was annoyed by always having to enter my private keys passphrase every time I wanted to do a git push to or pull from a public git repository. Turns out that if you are logged into a Gnome session on an Ubuntu machine it will automatically add you key to ssh-agent, but if you are logged into a bash session (as I was) then it won\u2019t.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssh","label":"ssh"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}}]},{"title":"hotvvheels: Cool is a Color","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/03\/hotvvheels-cool-is-a-color\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/02\/gearman-php-mod-gearman-status\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gearman, PHP and mod_gearman_status on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-electrics\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Winter motorcycle storage: battery and electrical systems"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-tyres\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Winter motorcycle storage: suspension and tyres"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-fuel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Winter motorcycle storage: fuel system"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/03\/hotvvheels-cool-is-a-color\/","author":{"name":"Simon Holywell"},"published":"2011-03-09T13:18:13+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"hotvvheels:\nCool is a Color","content":{"@attributes":{"type":"html"}}},{"title":"Gearman, PHP and mod_gearman_status on Ubuntu","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/02\/gearman-php-mod-gearman-status\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An Excellent Development Server for a Team of Developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/02\/gearman-php-mod-gearman-status\/","author":{"name":"Simon Holywell"},"published":"2011-02-11T14:01:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Installing Gearman is pretty easy as there are packages for it in Ubuntu:\nsudo apt-get install gearman libgearman-dev\nThe development headers (libgearman-dev) are only required if you need to compile a library for your programming language such as a PHP extension. To install the PHP module you would run:\nsudo pecl install channel:\/\/pecl.php.net\/gearman-0.7.0\nIf you have trouble with the above step then it is probably because you are running an older version of Ubuntu.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"gearman","label":"gearman"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"Apache"}}]},{"title":"Winter motorcycle storage: battery and electrical systems","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-electrics\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-tyres\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Winter motorcycle storage: suspension and tyres"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-fuel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Winter motorcycle storage: fuel system"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/why-does-fuel-go-stale\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why does fuel go stale?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-electrics\/","author":{"name":"Simon Holywell"},"published":"2011-01-23T01:53:38+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"There are many things to consider as you wrap your bike up for winter such as ensuring your fuel does not go stale, but the electrical system needs attention too. One of the most common failures when placing your motorcycle in storage is the battery losing charge and eventually becoming damaged beyond repair.\nCauses of battery failure Most vehicles have a residual draw that slowly saps power from the battery even with the ignition switched off, but this is exacerbated by the fitment of alarms or other after market accessories.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"battery","label":"battery"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bike","label":"bike"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"electrics","label":"electrics"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"motorcycles","label":"motorcycles"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"winter-storage","label":"winter storage"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fulloctane","label":"fulloctane"}}]},{"title":"Winter motorcycle storage: suspension and tyres","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-tyres\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-fuel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Winter motorcycle storage: fuel system"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/why-does-fuel-go-stale\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why does fuel go stale?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PHP Hangs When Fed 2.2250738585072011e-308"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/wombert-xkcd-convincing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"wombert: xkcd: Convincing"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-tyres\/","author":{"name":"Simon Holywell"},"published":"2011-01-05T01:53:38+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"This is by no means an exhaustive list of steps for long term motorcycle (or car for that matter) storage, but a few tips I have picked up along the way.\nWhen a motorcycle is put into storage it will often remain in the same position for extended periods of time. This is not the intended purpose from factory though and as such the tyres and suspension will not thank you for it.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"suspension","label":"suspension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"tyres","label":"tyres"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bike","label":"bike"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"motorcycles","label":"motorcycles"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"winter-storage","label":"winter storage"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fulloctane","label":"fulloctane"}}]},{"title":"PHP Hangs When Fed 2.2250738585072011e-308","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An Excellent Development Server for a Team of Developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/01\/php-number-error\/","author":{"name":"Simon Holywell"},"published":"2011-01-04T14:25:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"PHP Hangs When Fed 2.2250738585072011e-308\nA pretty horrible bug when you assign the number 2.2250738585072011e-308 to a variable PHP will hang on Linux or Windows 32bit builds of PHP. This does affect $_GET and $_POST variables as well and as such could be an exploit in some PHP sites.\nSo the following code will break your PHP for example:\n$var = 2.2250738585072011e-308; Or if a page is given a GET parameter like page.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"Winter motorcycle storage: fuel system","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-fuel\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/why-does-fuel-go-stale\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Why does fuel go stale?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"FullOctane: Bike and Car Blog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/wombert-xkcd-convincing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"wombert: xkcd: Convincing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/01\/winter-motorcycle-fuel\/","author":{"name":"Simon Holywell"},"published":"2011-01-04T01:53:38+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"This is by no means an exhaustive list of steps for long term motorcycle (or car for that matter) storage, but a few tips I have picked up along the way.\nThe most commonly known issue with bikes in storage is bad or stale fuel, which I have described the causes of in a previous post; Why does fuel go stale?. Generally petrol is fairly stable and won\u2019t break down all that quickly, but motorcycle fuel tanks present problems that dedicated fuel containers do not.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fuel","label":"fuel"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bike","label":"bike"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"motorcycles","label":"motorcycles"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"winter-storage","label":"winter storage"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fulloctane","label":"fulloctane"}}]},{"title":"FullOctane: Bike and Car Blog","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An Excellent Development Server for a Team of Developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/redis-under-the-hood\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Redis: under the hood (internals)"}}],"id":"https:\/\/www.simonholywell.com\/post\/2011\/01\/fulloctane-introduction\/","author":{"name":"Simon Holywell"},"published":"2011-01-03T03:20:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"FullOctane: Bike and Car Blog\nI have setup a site to post all my automotive related discoveries. Currently I have two posts up there about fuel\u00a0degradation\u00a0and storage.\nPutting motorcycles into storage or \u201cwinterizing\u201d can be an involved procedure so I have decide to cover it in a series of posts beginning with the fuel system in the post entitled \u2018Winter Motorcycle Storage: Fuel System\u2019.\nContinuing the fuel theme the reasoning behind previous post is backed up by a technical article that addresses the question; \u2018Why does fuel go stale?","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fulloctane","label":"FullOctane"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"Why does fuel go stale?","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/why-does-fuel-go-stale\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/wombert-xkcd-convincing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"wombert: xkcd: Convincing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An Excellent Development Server for a Team of Developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/redis-under-the-hood\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Redis: under the hood (internals)"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/12\/why-does-fuel-go-stale\/","author":{"name":"Simon Holywell"},"published":"2010-12-23T01:53:38+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"When stored correctly, high quality gasolene should continue to be stable forever (well almost!). There are few factors that contribute to the degradation of petrol with the two primary concerns being oxidisation and water.\nOxidation If petrol is not stored in an air tight container then the process of oxidation occurs. Fuel that has been exposed to air flow will begin to look cloudy and get darker in colour. Sometimes you may even be able to see particles floating in the fuel if it is badly oxidised.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fuel","label":"fuel"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bike","label":"bike"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"motorcycles","label":"motorcycles"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"winter-storage","label":"winter storage"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fulloctane","label":"fulloctane"}}]},{"title":"wombert: xkcd: Convincing","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/wombert-xkcd-convincing\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Logging global PHP objects and saving memory using a lazy loading proxy"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Set up a new port forward on a Draytek Vigor over the telnet interface"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An Excellent Development Server for a Team of Developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/redis-under-the-hood\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Redis: under the hood (internals)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/pecl-install-issues-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PECL Install Issues on Redhat"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/12\/wombert-xkcd-convincing\/","author":{"name":"Simon Holywell"},"published":"2010-12-13T13:29:56+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"wombert:\nxkcd: Convincing","content":{"@attributes":{"type":"html"}}},{"title":"Logging global PHP objects and saving memory using a lazy loading proxy","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An Excellent Development Server for a Team of Developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/12\/logging-global-php-objects-lazy-loading-proxy\/","author":{"name":"Simon Holywell"},"published":"2010-12-02T17:23:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Quite often when you are working with legacy code you will come across a mess of globals. Every single method will make use of the same global instance of the database class for example. So where do you begin to work with this massive impediment?\nLogging is a great way to see what methods and classes are being used by you application and where. To achieve this you would normally need to add a logging call to each and every method in the code base.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"Set up a new port forward on a Draytek Vigor over the telnet interface","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An Excellent Development Server for a Team of Developers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/redis-under-the-hood\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Redis: under the hood (internals)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/per-tag-rss-feeds-for-tumblr\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Per-tag RSS feeds for Tumblr from notes.husk.org"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/11\/setup-a-new-portforward-on-vigor-over-telnet\/","author":{"name":"Simon Holywell"},"published":"2010-11-20T14:31:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I needed to add a new port forward to a router, but I did not have access to the web interface through a graphical browser. Attempts to get in using Lynx stalled as it seems the router will not serve up the frames in the interface independently of each other and it kept issuing 404 errors.\nEither way I had to use the telnet interface using the following command (replace 192.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"draytek","label":"draytek"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"vigor","label":"vigor"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"telnet","label":"telnet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"command-line","label":"command line"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"port-forward","label":"port forward"}}]},{"title":"An Excellent Development Server for a Team of Developers","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/11\/team-development-server\/","author":{"name":"Simon Holywell"},"published":"2010-11-08T16:04:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Introduction When working in a team it is very useful to have a central web server with multiple environments and a configuration as close to the live server as possible. This can be a bit of a nightmare though if you need to setup a new VirtualHost container in Apache every time a new project is brought on or when a developer wants to work on a version of the site in their own environment.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"Apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"memcached","label":"memcached"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"memcache","label":"memcache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"redis","label":"Redis"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"virtualhosting","label":"virtualhosting"}}]},{"title":"Redis: under the hood (internals)","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/redis-under-the-hood\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/per-tag-rss-feeds-for-tumblr\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Per-tag RSS feeds for Tumblr from notes.husk.org"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/john-resig-tech4africa2010\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"In this video, John Resig presents his 6 Secrets to becoming a j\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/10\/redis-under-the-hood\/","author":{"name":"Simon Holywell"},"published":"2010-10-18T20:02:11+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Redis: under the hood (internals)\nI was curious to learn more about Redis\u2019s internals, so I\u2019ve been familiarizing myself with the source, largely by reading and jumping around in Emacs. After I had peeled back enough of the onion\u2019s layers, I realized I was trying to keep track of too many details in my head, and it wasn\u2019t clear how it all hung together. I decided to write out in narrative form how an instance of the Redis server starts up and initializes itself, and how it handles the request\/response cycle with a client, as a way of explaining it to myself, hopefully in a clear fashion.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"redis","label":"redis"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"PECL Install Issues on Redhat","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/pecl-install-issues-on-redhat\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The PHP ssdeep Extension is Now in PECL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/10\/pecl-install-issues-on-redhat\/","author":{"name":"Simon Holywell"},"published":"2010-10-06T11:03:06+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Installing via the pecl command can be a pain on Redhat. First off all you will need to install the php-devel package:\nyum install php-devel\nThen you will need ensure that the PEAR\/PECL installer is at the latest version so as root run:\npear channel-update pear.php.net pear upgrade pear\nYou may need to force pear to upgrade itself by using:\npear upgrade \u2013force pear\nI had to use the \u2013force option because my version of PEAR was so old that the installer thought my version of Tar_Archive might not have been up to muster.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"redhat","label":"redhat"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"pecl","label":"pecl"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extension","label":"php extension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extensions","label":"php extensions"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php_ssdeep","label":"php_ssdeep"}}]},{"title":"Forcing NetBeans to Use Unix (LF) Line Endings","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/10\/force-netbeans-line-endings\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/netbeans-and-xdebug\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Netbeans and Remote XDebug"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"15 Excellent Resources for PHP Extension Development"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The PHP ssdeep Extension is Now in PECL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/per-tag-rss-feeds-for-tumblr\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Per-tag RSS feeds for Tumblr from notes.husk.org"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/10\/force-netbeans-line-endings\/","author":{"name":"Simon Holywell"},"published":"2010-10-05T17:38:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Forcing NetBeans to Use Unix (LF) Line Endings\nNetBeans usually uses the operating systems default line ending when creating a new file (it establishes this by what the JVM tells it). So for example in Windows it will automatically use CRLF and in Unix it will automatically use LF. This behaviour has its advantages, but sometimes you want to to be specific about the line endings you need.\nTo do this you can add the following switch to your call to the NetBeans binary.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"netbeans","label":"netbeans"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"web-development","label":"web development"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"java","label":"java"}}]},{"title":"15 Excellent Resources for PHP Extension Development","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The PHP ssdeep Extension is Now in PECL"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/09\/15-excellent-resources-for-php-extension-development\/","author":{"name":"Simon Holywell"},"published":"2010-09-20T18:40:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Whilst developing a PHP extension recently I spent quite a bit of time researching exactly how to create an extension, the best practices and the DocBook format of the PHP manual for documenting the extension.\nBy the time I finished writing the extension I had found some very good resources both on the web and in print.\nPrinted books: Sara Golemon\u2019s Extending and Embedding PHP Advanced PHP Programming by George Schlossnagle Building Custom PHP Extensions by Blake Schwendiman Online articles and presentations: The Internals section of the PHP manual Kristina Chodorow\u2019s PHP Extensions Made Eldrich on her blog in 2011: Installing PHP Hello, World!","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extension","label":"php extension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extensions","label":"php extensions"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php_ssdeep","label":"php_ssdeep"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssdeep","label":"ssdeep"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"autoconf","label":"autoconf"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"autotools","label":"autotools"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"automake","label":"automake"}}]},{"title":"The PHP ssdeep Extension is Now in PECL","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"php_ssdeep Fuzzy Hashing PHP Extension"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/09\/php-ssdeep-in-pecl\/","author":{"name":"Simon Holywell"},"published":"2010-09-18T11:46:25+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The PHP ssdeep Extension is Now in PECL\nThis means you can now install it easily by simply running:\nsudo pecl install ssdeep\nThere is also proper documentation in the PHP manual which can be found at\u00a0php.net\/ssdeep.\nFor more information on the extension either see the PECL project page or the ssdeep PHP\/PECL extension\u2019s homepage.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"php_ssdeep","label":"php_ssdeep"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssdeep","label":"ssdeep"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extension","label":"php extension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extensions","label":"php extensions"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}}]},{"title":"Per-tag RSS feeds for Tumblr from notes.husk.org","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/09\/per-tag-rss-feeds-for-tumblr\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Backing up Tumblr blogs with PHP and SQLite"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/john-resig-tech4africa2010\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"In this video, John Resig presents his 6 Secrets to becoming a j\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/09\/per-tag-rss-feeds-for-tumblr\/","author":{"name":"Simon Holywell"},"published":"2010-09-03T12:03:54+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Per-tag RSS feeds for Tumblr from notes.husk.org\nI didn\u2019t think that Tumblr offered per-tag RSS feeds, but after spending some time trying to hack the JSON output from the Tumblr API into my aggregated front page, I tried appending \u201c\/rss\u201d to the URL of one of my tag archive pages, and somewhat to my surprise, it worked.\nOf course, RSS is\u2026\nA nice Tumblr tip.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"tumblr","label":"tumblr"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"rss","label":"rss"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}}]},{"title":"php_ssdeep Fuzzy Hashing PHP Extension","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Batch remove extensions in Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/ubuntu-atd-not-running\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"If you are having problems getting Ubuntu atd running"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-ssdeep-fuzzy-hashing-php-extension\/","author":{"name":"Simon Holywell"},"published":"2010-08-31T21:50:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"php_ssdeep Fuzzy Hashing PHP Extension\n**Updated 16\/9:**php_ssdeep is now in PECL so I have updated this post to reflect that.\nOn a recent project I needed a fast way to compare documents for likeness and return a percentage match. With much research and one unanswered\u00a0Stackoverflow post later I came across Jesse Kornblum\u2019s ssdeep utility intended for computer forensics such as looking for signatures in files when hunting rootkits etc. All the technical details of fuzzy hashing are described in his 2006 journal article Identifying almost identical files using context triggered\u00a0piecewise hashing.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"extension","label":"extension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fuzzy-hashing","label":"fuzzy hashing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php-extension","label":"php extension"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssdeep","label":"ssdeep"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php_ssdeep","label":"php_ssdeep"}}]},{"title":"wombert: Expendables Body Count","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/wombert-expendables-body-count\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A PHP wrapper for the unix at command"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Batch remove extensions in Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/ubuntu-atd-not-running\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"If you are having problems getting Ubuntu atd running"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting gearman to install on Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/john-resig-tech4africa2010\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"In this video, John Resig presents his 6 Secrets to becoming a j\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/wombert-expendables-body-count\/","author":{"name":"Simon Holywell"},"published":"2010-08-25T12:32:09+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"wombert:\nExpendables Body Count - originally from termlifeinsurance.org\/expendables-body-count","content":{"@attributes":{"type":"html"}}},{"title":"A PHP wrapper for the unix at command","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Batch remove extensions in Ubuntu"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Handy Linux Commands"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/php-wrapper-for-linux-at-command\/","author":{"name":"Simon Holywell"},"published":"2010-08-24T21:51:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A project I am working on at the moment requires time delayed job queues and having found nothing yet that can manage it properly so I decided to wrap up `at` into a PHP class. This gives you simple methods to add, list and remove jobs from the `at` queue using object oriented code.\nThe code is very simple and I have documented it reasonably well so along with the examples you should get on your way quickly.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"wrapper","label":"wrapper"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}}]},{"title":"Batch remove extensions in Ubuntu","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/ubuntu-atd-not-running\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"If you are having problems getting Ubuntu atd running"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Handy Linux Commands"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Samba File Share Over SSH Tunnel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/linux-batch-remove-extension\/","author":{"name":"Simon Holywell"},"published":"2010-08-24T16:44:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Batch remove extensions in Ubuntu\nSometimes you will want to batch remove extensions from a load of files:\nfor i in $(ls *.png); do mv $i ${i%.png}; done\nIf you want to remove extensions from files with a .txt extension then you would replace the two instances of .png in the script above with .txt.\nYou can take the extension off of all files using the following:\nfor i in $(ls *.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}}]},{"title":"If you are having problems getting Ubuntu atd running","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/ubuntu-atd-not-running\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Handy Linux Commands"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Samba File Share Over SSH Tunnel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/ubuntu-atd-not-running\/","author":{"name":"Simon Holywell"},"published":"2010-08-23T17:55:57+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"If you just cannot get atd to start running check the permissions on your \/var\/spool\/cron\/atjobs and \/var\/spool\/cron\/atspool directories. The should be `chmod 770` and then `chmod +t`. Also they should be owned by `daemon:daemon`.\nI was getting this error when attempting to set new at jobs:\nCan\u2019t open \/var\/run\/atd.pid to signal atd. No atd running?\nIf I tried to start the daemon through the service management I was getting:\nsudo service atd start start: Job is already running: atd","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"atd","label":"atd"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"at","label":"at"}}]},{"title":"Getting gearman to install on Ubuntu","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Backing up Tumblr blogs with PHP and SQLite"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/john-resig-tech4africa2010\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"In this video, John Resig presents his 6 Secrets to becoming a j\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/get-gearman-to-install-on-ubuntu\/","author":{"name":"Simon Holywell"},"published":"2010-08-23T11:06:22+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Getting gearman to install on Ubuntu\nGetting the gearman PHP PECL package to build on Ubuntu is problematic with many unaccounted for dependency issues.\nI only made a couple changes when following the instructions from JSJoy\u00a0as I am running Karmic rather than Lucid I changed the apt-get sources to:\ndeb http:\/\/ppa.launchpad.net\/gearman-developers\/ppa\/ubuntu karmic main deb-src http:\/\/ppa.launchpad.net\/gearman-developers\/ppa\/ubuntu karmic main\nMy sources file was also located at \/etc\/apt\/sources.list and not \/etc\/sources.list as stated in the original post from JSJoy.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"gearman","label":"gearman"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"memcache","label":"memcache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}}]},{"title":"In this video, John Resig presents his 6 Secrets to becoming a j\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/john-resig-tech4africa2010\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Backing up Tumblr blogs with PHP and SQLite"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/john-resig-tech4africa2010\/","author":{"name":"Simon Holywell"},"published":"2010-08-19T14:01:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":{},"content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"jquery","label":"jquery"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"wombert: The World\u2019s Best Countries","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/wombert-the-worlds-best-countries\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/new-lancia-stratos-by-pininfarina\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A nice modern take on the original Stratos by Pininfarina set to\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":""}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Backing up Tumblr blogs with PHP and SQLite"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/wombert-the-worlds-best-countries\/","author":{"name":"Simon Holywell"},"published":"2010-08-18T10:01:17+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"wombert:\nThe World\u2019s Best Countries","content":{"@attributes":{"type":"html"}}},{"title":"A nice modern take on the original Stratos by Pininfarina set to\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/new-lancia-stratos-by-pininfarina\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gives an amazing sense of speed. missedapex: Norma M20 makes its\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Seven stories up. \u00a0Whoops."}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/new-lancia-stratos-by-pininfarina\/","author":{"name":"Simon Holywell"},"published":"2010-08-15T13:19:28+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A nice modern take on the original Stratos by Pininfarina set to be sent into production. Thankfully they preserved original rear end lights and lip spoiler. Not so sure about the headlights.\nhotvvheels:\nStratos","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"lancia","label":"lancia"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"stratos","label":"stratos"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}}]},{"title":{"@attributes":{"type":"html"}},"link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Drop Cap with PHP Regular Expression"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Backing up Tumblr blogs with PHP and SQLite"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/firefox-radio-buttons\/","author":{"name":"Simon Holywell"},"published":"2010-08-10T10:00:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Firefox with Radio Inputs and it\u2019s Annoying Autocomplete\nI recently had problem with Firefox\u2019s autocomplete when using a jQuery star rating plugin. The linked article explains the problem more in depth and the code snippet below should get you going.\nif ($.browser.mozilla) { $(&#34;form&#34;).attr(&#34;autocomplete&#34;, &#34;off&#34;); }","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"jquery","label":"jquery"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"firefox","label":"firefox"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}}]},{"title":"Drop Cap with PHP Regular Expression","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Updated: Back up Tumblr Blog and\/or Disqus Comments"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Backing up Tumblr blogs with PHP and SQLite"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/07\/julian-assange-at-tedglobal-2010\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Julian Assange: Why the world needs WikiLeaks at TEDGlobal 2010"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/drop-cap-php-regex\/","author":{"name":"Simon Holywell"},"published":"2010-08-09T19:49:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"This is a simple regular expression I wrote to convert the first letter of an article into a drop cap. It will surround the first letter with a span tag containing the class drop-cap. You can then apply any styling you like to the span with CSS. It will skip over any HTML encoded characters or tags at the beginning of the article as well so it always highlights the first letter of the content and not any HTML formatting.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"regex","label":"regex"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"Updated: Back up Tumblr Blog and\/or Disqus Comments","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Backing up Tumblr blogs with PHP and SQLite"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/07\/julian-assange-at-tedglobal-2010\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Julian Assange: Why the world needs WikiLeaks at TEDGlobal 2010"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/updated-tumblr-backup-php-now-disqus\/","author":{"name":"Simon Holywell"},"published":"2010-08-09T01:37:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Updated: Back up Tumblr Blog and\/or Disqus Comments\nA simple and somewhat dirty script for backing up Tumblr and\/or Disqus via its API to an SQLite DB. It now handles backing up Disqus comments to SQLite as well.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"disqus","label":"disqus"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"tumblr","label":"tumblr"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"api","label":"api"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"SQL"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"backup","label":"backup"}}]},{"title":"Backing up Tumblr blogs with PHP and SQLite","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/07\/julian-assange-at-tedglobal-2010\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Julian Assange: Why the world needs WikiLeaks at TEDGlobal 2010"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/electricity-meter\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How to make something impossible for someone to use without a ma\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/08\/tumblr-backup-php\/","author":{"name":"Simon Holywell"},"published":"2010-08-08T20:14:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Backing up Tumblr blogs with PHP and SQLite\nI have knocked together a very simple and somewhat dirty PHP CLI script to download copies of an entire Tumblr blog through their API. I have imaginatively called it Tumblr Backup PHP. I will be adding extra features as and when I can. The first new feature on the list will be ability backup the associated Disqus comments at the same time.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"SQL"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"api","label":"api"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"tumblr","label":"tumblr"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"backup","label":"backup"}}]},{"title":"Julian Assange: Why the world needs WikiLeaks at TEDGlobal 2010","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/07\/julian-assange-at-tedglobal-2010\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"sharonov: 1970 Adenauer Forst crashes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/electricity-meter\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"How to make something impossible for someone to use without a ma\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gives an amazing sense of speed. missedapex: Norma M20 makes its\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/spiriteddrive-stratos-delta-jameslipman\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"spiriteddrive: Stratos \/ Delta (jameslipman)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/07\/julian-assange-at-tedglobal-2010\/","author":{"name":"Simon Holywell"},"published":"2010-07-20T14:46:50+00:00","updated":"2024-11-19T12:47:01+10:00","summary":{},"content":{"@attributes":{"type":"html"}}},{"title":"sharonov: 1970 Adenauer Forst crashes","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gives an amazing sense of speed. missedapex: Norma M20 makes its\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Seven stories up. \u00a0Whoops."}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/lancia-stratos-replica-fast-lap-on-top-gear-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos Replica Fast Lap on Top Gear UK"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/06\/adenauer-forst-70s-crash-compilation\/","author":{"name":"Simon Holywell"},"published":"2010-06-28T13:07:58+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"http:\/\/www.youtube.com\/watch?v=0xwc54G2Ur8","content":"<p><a href=\"http:\/\/www.youtube.com\/watch?v=0xwc54G2Ur8\">http:\/\/www.youtube.com\/watch?v=0xwc54G2Ur8<\/a><\/p>","category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}}]},{"title":"How to make something impossible for someone to use without a ma\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/electricity-meter\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Gives an amazing sense of speed. missedapex: Norma M20 makes its\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/spiriteddrive-stratos-delta-jameslipman\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"spiriteddrive: Stratos \/ Delta (jameslipman)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Seven stories up. \u00a0Whoops."}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/06\/electricity-meter\/","author":{"name":"Simon Holywell"},"published":"2010-06-11T13:37:48+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"How to make something impossible for someone to use without a manual.\nHave dials that rotate clockwise and anti-clockwise Put the final unit (1kWh) before all the other units just to confuse the hell out of \u2019em Make your instructions inaccurate (see below) Here is how you are actually supposed to read this horrendous piece of design (or not-designed as the case maybe):\nDial meter\u00a0Your dial meter comprises of six dials.","content":{"@attributes":{"type":"html"}}},{"title":"Gives an amazing sense of speed. missedapex: Norma M20 makes its\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Seven stories up. \u00a0Whoops."}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/lancia-stratos-replica-fast-lap-on-top-gear-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos Replica Fast Lap on Top Gear UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/carver-carver-one\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Carver Carver One"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/06\/sainte-beaume-hill-norma-m20-climb\/","author":{"name":"Simon Holywell"},"published":"2010-06-10T13:18:34+00:00","updated":"2024-11-19T12:47:01+10:00","summary":{},"content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}}]},{"title":"spiriteddrive: Stratos \/ Delta (jameslipman)","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/spiriteddrive-stratos-delta-jameslipman\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pirelli Diablo Rosso Corsa"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Seven stories up. \u00a0Whoops."}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/05\/spiriteddrive-stratos-delta-jameslipman\/","author":{"name":"Simon Holywell"},"published":"2010-05-26T14:20:51+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"spiriteddrive:\nStratos \/ Delta (jameslipman)","content":{"@attributes":{"type":"html"}}},{"title":"Pirelli Diablo Rosso Corsa","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Seven stories up. \u00a0Whoops."}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/05\/pirelli-diablo-rosso-corsa\/","author":{"name":"Simon Holywell"},"published":"2010-05-26T14:11:33+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Pirelli Diablo Rosso Corsa\nTaking wank factor to a whole new level you can customise your new Diablo Rosso Corsa tyres with special stickers bought through the Pirelli website.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}}]},{"title":"My review of the HealTech GIpro w\/ATRE motorcycle gear position \u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Seven stories up. \u00a0Whoops."}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/twitter-jaiku-rejaw-and-tumblr\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Twitter, Jaiku, Rejaw and Tumblr"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/05\/healtech-gi-pro-gear-indicator\/","author":{"name":"Simon Holywell"},"published":"2010-05-21T10:59:32+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"My review of the HealTech GIpro w\/ATRE motorcycle gear position indicator on webBikeWorld\nI recently wrote a review of the GIpro and it has now been published by webBikeWorld. Follow the link and check it out!","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"reviews","label":"reviews"}}]},{"title":"Seven stories up. \u00a0Whoops.","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery UI Datepicker appearing below Dialog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/the-little-manual-of-api-design\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Little Manual of API Design"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/sun-oracle-deal-closed\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Sun + Oracle Deal Closed"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/04\/driver-misses-wall-death-parking\/","author":{"name":"Simon Holywell"},"published":"2010-04-30T14:51:59+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Seven stories up. Whoops.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"motors","label":"motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"cars"}}]},{"title":"jQuery UI Datepicker appearing below Dialog","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi: Agavi on the Azure Platform"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/the-little-manual-of-api-design\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Little Manual of API Design"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/sun-oracle-deal-closed\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Sun + Oracle Deal Closed"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/lancia-stratos-replica-fast-lap-on-top-gear-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos Replica Fast Lap on Top Gear UK"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/04\/jquery-ui-datepicker-in-dialogue\/","author":{"name":"Simon Holywell"},"published":"2010-04-15T15:43:29+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"When creating a\u00a0dialogue\u00a0with jQuery that contains a Datepicker text input the Datepicker calendar will appear below the\u00a0dialogue\u00a0due to the\u00a0dialogue\u2019s\u00a0z-index being higher. The easiest universal way to work around this is to include a one liner in the open event function of the initial\u00a0dialogue\u00a0call.\n$(&#34;#dialogue&#34;).dialog({ modal: true, open: function () { $(&#34;#ui-datepicker-div&#34;).css( &#34;z-index&#34;, $(this).parents(&#34;.ui-dialog&#34;).css(&#34;z-index&#34;) + 1, ); }, });","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"jquery","label":"jquery"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"javascript"}}]},{"title":"Agavi: Agavi on the Azure Platform","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Plesk and its custom configuration files"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-form-population-filter\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Form Population Filter"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-php-framework-resources\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi PHP Framework Resources"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Samba File Share Over SSH Tunnel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/04\/agavi-on-the-auzre-platform\/","author":{"name":"Simon Holywell"},"published":"2010-04-14T09:50:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Agavi: Agavi on the Azure Platform\nThe next release of Agavi will have initial support for running applications on the Microsoft Windows Azure platform, as well as a database adapter for the new ext\/sqlsrv driver to communicate with Microsoft SQL Server and support for the IIS7 web server, which now finally has a very nice \u2026","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"php"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"azure","label":"azure"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ms","label":"ms"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"windows","label":"windows"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"computing","label":"computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}}]},{"title":"Plesk and its custom configuration files","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/the-little-manual-of-api-design\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Little Manual of API Design"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/sun-oracle-deal-closed\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Sun + Oracle Deal Closed"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/lancia-stratos-replica-fast-lap-on-top-gear-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos Replica Fast Lap on Top Gear UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-form-population-filter\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Form Population Filter"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/netbeans-and-xdebug\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Netbeans and Remote XDebug"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/03\/plesk-custom-config-files\/","author":{"name":"Simon Holywell"},"published":"2010-03-19T11:04:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Plesk allows you to control settings for each domains virtual host container (subdomains are also configured in the same way).\nTo override the default configuration you will need to make the new vhost file, which should appear in the following locations:\ndomain\/conf\/vhost.conf domain\/subdomain\/conf\/vhost.conf The vhost.conf file must not contain the entire vhost container but only its contents. So this means that you cannot make changes to the IP address or port the virtual host container is listening on in this file, but you can override the PHP open_basedir setting and other directory settings.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"plesk","label":"plesk"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"Apache"}}]},{"title":"The Little Manual of API Design","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/the-little-manual-of-api-design\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL Server 2005 Dump to SQL statements"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/08\/iso-3166-country-list\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ISO 3166 Country List"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/02\/the-little-manual-of-api-design\/","author":{"name":"Simon Holywell"},"published":"2010-02-22T09:48:18+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The Little Manual of API Design\nThis manual gathers together the key insights into API design that were discovered through many years of software development on the Qt application development framework at Trolltech (now part of Nokia). When designing and implementing a library, you should also keep other factors in mind, such as efficiency and ease of implementation, in addition to pure API considerations. And although the focus is on public APIs, there is no harm in applying the principles described here when writing application code or internal library code.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"api-design","label":"API Design"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"code","label":"code"}}]},{"title":"Sun + Oracle Deal Closed","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2010\/02\/sun-oracle-deal-closed\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/lancia-stratos-replica-fast-lap-on-top-gear-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos Replica Fast Lap on Top Gear UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-form-population-filter\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Form Population Filter"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/netbeans-and-xdebug\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Netbeans and Remote XDebug"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-php-framework-resources\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi PHP Framework Resources"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/10\/jquery-and-iframes\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery and iFrames"}}],"id":"https:\/\/www.simonholywell.com\/post\/2010\/02\/sun-oracle-deal-closed\/","author":{"name":"Simon Holywell"},"published":"2010-02-04T16:00:05+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"You may have noticed that the Oracle logo has begun to appear across all the Sun websites, which is a visible indication that the Oracle buy out of Sun is now complete. In the spring of last year the deal was announced and many people were very worried about Oracle\u2019s intentions for Sun\u2019s open source projects \u2013 most notably MySQL. Many seemed to consider MySQL a competitor for Oracle\u2019s 11g database software and therefore Oracle would be looking to reduce development investment to stifle the perceived competition.","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"Lancia Stratos Replica Fast Lap on Top Gear UK","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/lancia-stratos-replica-fast-lap-on-top-gear-uk\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/09\/lancia-fulvia-hf\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Fulvia HF"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/carver-carver-one\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Carver Carver One"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/vauxhall-astra-front-brakes\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Vauxhall Astra Front Brakes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/11\/lancia-stratos-replica-fast-lap-on-top-gear-uk\/","author":{"name":"Simon Holywell"},"published":"2009-11-30T16:43:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"During a reasonably long and fitting homage to Lancia (Fulvia, Montecarlo, 037 and Delta) on Top Gear last night \u201cThe Stig\u201d was given a Hawk HF3000 (that is the Alfa V6 based one) replica to drive around the track.\nIt sounds fantastic but the bucking and diving under braking looks really scary! Hawk are not the only maker of replicas as I found out when I did some research a couple years ago.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fulvia","label":"Fulvia"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"lancia","label":"Lancia"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"stratos","label":"Stratos"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}}]},{"title":"Agavi Form Population Filter","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-form-population-filter\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-php-framework-resources\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi PHP Framework Resources"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/agavi-release-candidate-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Release Candidate 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi 1.0 Beta on XAMPP 1.7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/netbeans-and-xdebug\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Netbeans and Remote XDebug"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-form-population-filter\/","author":{"name":"Simon Holywell"},"published":"2009-11-24T14:58:05+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Attaching the population filter without using form IDs (suitable where the current form is on the same page as the URL in forms action parameter)\n&lt;?php \/\/ Like so $this-&gt;getContext()-&gt;getRequest()-&gt;setAttribute(&#39;populate&#39;, new AgaviParameterHolder(array( &#39;question[0]&#39; =&gt; &#39;Can you eat cheese?&#39;, &#39;answer[0]&#39; =&gt; &#39;No&#39; )), &#39;org.agavi.filter.FormPopulationFilter&#39;); \/\/ Or like so... $populate =&amp; $this-&gt;getContext()-&gt;getRequest()-&gt;getAttribute(&#39;populate&#39;, &#39;org.agavi.filter.FormPopulationFilter&#39;); $populate = new AgaviParameterHolder(array( &#39;question[0]&#39; =&gt; &#39;Can you eat cheese?&#39;, &#39;answer[0]&#39; =&gt; &#39;No&#39; )); Use form ids to link the pre-population to a particular form","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}}]},{"title":"Netbeans and Remote XDebug","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/netbeans-and-xdebug\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-php-framework-resources\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi PHP Framework Resources"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/11\/netbeans-and-xdebug\/","author":{"name":"Simon Holywell"},"published":"2009-11-24T14:55:03+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"To get Netbeans to listen for browser initiated debug sessions please consider the following steps:\nGo to Project Properties &gt; Run Configuration &gt; Advanced &gt; Debug URL and choose the Do not open a web browser. Save. (you may like to setup Path Mapping, but it works for me without it) In the projects listing right click on your intended project and choose Debug, which will start Netbeans listening for connections.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"netbeans","label":"netbeans"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"xdebug","label":"xdebug"}}]},{"title":"Agavi PHP Framework Resources","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-php-framework-resources\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/agavi-release-candidate-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Release Candidate 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi 1.0 Beta on XAMPP 1.7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/11\/agavi-php-framework-resources\/","author":{"name":"Simon Holywell"},"published":"2009-11-16T19:48:05+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Bitextender backed\u00a0Agavi is a very secure and helpful open source (LGPL) MVC framework with the core development being headed by David Z\u00fclke (Wombert) and Felix Gilcher (certainly in the IRC channel!). It can take some time to get the hang of the framework so I have put together all the resources I use or have used to help you get started.\nDocumentation Resources:\nOfficial Agavi Tutorial - Incomplete at time of writing API Documentation Agavi Cookbook Official Agavi FAQ Unofficial Agavi FAQ \u2013 Very helpful Package Docs in SVN \u2013 You need to dig around these folders in the SVN source code viewer of Trac (some of it is also old) Veikko M\u00e4kinen\u2019s Blog: http:\/\/blog.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"jQuery and iFrames","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/10\/jquery-and-iframes\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/jquery-using-and-manipulating-select-lists\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery Using and Manipulating Select Lists"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/firefox-3-1-has-web-workers-threading-and-geolocation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Firefox 3.1 has Web Workers (threading) and Geolocation"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/10\/jquery-and-iframes\/","author":{"name":"Simon Holywell"},"published":"2009-10-29T16:17:54+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I worked on a project while ago that required the use of iFrames to create \u201cAJAX\u201d file uploads. It took me a little while but I finally worked out how to get the contents of an iFrame using jQuery. To get the contents of an iFrame we need to wait until the iFramed content has finished loading as well.\nvar iFrameBody = &#34;&#34;; $(&#34;#iframe&#34;).load(function () { iFrameBody = $(this).contents().find(&#34;body&#34;); });","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"Javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"jquery","label":"jQuery"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Opera Mini 5 Beta","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/10\/opera-mini-5-beta\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/jquery-using-and-manipulating-select-lists\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"jQuery Using and Manipulating Select Lists"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Handy Linux Commands"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Samba File Share Over SSH Tunnel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/10\/opera-mini-5-beta\/","author":{"name":"Simon Holywell"},"published":"2009-10-09T14:03:55+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Opera has released a new version of their free mobile browser Mini for beta testing. Head on over to mini.opera.com to download it or if you are reading this from your mobile the direct link to the beta is m.opera.com\/next. The new version is much improved in many areas. The first thing you will notice is a new sleeker user interface and a \u201cSpeed Dial\u201d interface when it first loads up.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"opera","label":"opera"}}]},{"title":"jQuery Using and Manipulating Select Lists","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/jquery-using-and-manipulating-select-lists\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/firefox-3-1-has-web-workers-threading-and-geolocation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Firefox 3.1 has Web Workers (threading) and Geolocation"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moving to git and setting up InDefero as a web frontend"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/installing-apc-and-memcached-for-php-sessions-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Redhat"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/08\/jquery-using-and-manipulating-select-lists\/","author":{"name":"Simon Holywell"},"published":"2009-08-10T13:54:32+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"JQuery is a fantastic tool but sometimes its functionality can be obscure or doing it one way might not work in a certain browser (MSIE6 anybody!). I have often found myself trying to remember the best way to work with HTML select lists so I am compiling this list of hints for future use and I hope that you find it useful. All the examples below are written where this represents the select element of the select list.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"Javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"jquery","label":"jQuery"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Moving to git and setting up InDefero as a web frontend","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Handy Linux Commands"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/08\/moving-to-git-and-setting-up-indefero-as-a-web-frontend\/","author":{"name":"Simon Holywell"},"published":"2009-08-04T14:07:44+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Most of our development is done on Vista desktops (although I also run Ubuntu of course) and we wanted a web interface for easy browsing of code so I needed to use a pervasive and well supported\u00a0VCS. After much hunting around and looking at Bazaar, Mercurial and git I decided to go with the latter due to its support in the community. There are still some reservations I have against git, which work well for Linux kernal development but not our day to day web development \u2013 the major one being that subversion would allow you to commit and update on a file by file basis where as git versions the entire repository at once as far as I am aware.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"git","label":"git"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Handy Linux Commands","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Samba File Share Over SSH Tunnel"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"CrunchBang Linux on the Eee Pc"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/05\/handy-linux-commands\/","author":{"name":"Simon Holywell"},"published":"2009-05-12T17:52:18+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I use most of these commands every day to simplify my terminal interactions with an Ubuntu development box. This is more of a personal reference but thought I would share incase you find it useful.\nTask\nCommand\nGet all users on the system\nfor user in `getent passwd | cut -d: -f1`; do id $user; done\nDelete all .svn or any file name by replacing .svn in the command with your filename","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssh","label":"ssh"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}}]},{"title":"Samba File Share Over SSH Tunnel","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/putty-and-control-s-or-ctrl-s\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PuTTY and Control + S or Ctrl + S"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/04\/samba-file-share-over-ssh-tunnel\/","author":{"name":"Simon Holywell"},"published":"2009-04-30T20:41:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"This is not a post about setting up Samba shares. If that is what you are looking for then I can recommend the following book; Using Samba: A File &amp; Print Server for Linux, Unix &amp; Mac OS X.\nSometimes you need to be able to access a remote Samba server in a secure manner from a Windows machine.\u00a0This is a relatively simple procedure on an XP SP3 machine like mine linking into an Ubuntu server pre setup with Samba file sharing.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"putty","label":"putty"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"samba","label":"samba"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssh","label":"ssh"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"windows","label":"windows"}}]},{"title":"Memcached and APC: Two Simple Techniques to Speed up your PHP Webpages","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/installing-apc-and-memcached-for-php-sessions-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Redhat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"CrunchBang Linux on the Eee Pc"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/04\/memcached-and-apc-two-simple-techniques-to-speed-up-your\/","author":{"name":"Simon Holywell"},"published":"2009-04-23T18:51:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Memcached and\u00a0APC are two tools that you can install on your server and gain almost instant gratification! APC basically caches executions that you send to a PHP process so that the next time you ask the parser to run your script it only has to look for some pre-chewed opcode in memory rather than parsing your PHP from the disk.\u00a0APC also has another feature up its sleeve, memory object caching, which allows you to store objects such as results from a database table in memory.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"memcached","label":"memcached"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Installing APC and Memcached for PHP Sessions on Ubuntu and Debi\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/installing-apc-and-memcached-for-php-sessions-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Redhat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/enabling-sites-and-modules-in-apache-on-ubuntu-or-debian\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Enabling sites and modules in Apache on Ubuntu or Debian"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"CrunchBang Linux on the Eee Pc"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/04\/installing-apc-and-memcached-for-php-sessions-on-ubuntu\/","author":{"name":"Simon Holywell"},"published":"2009-04-10T18:41:11+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Installing APC on Debian or Ubuntu is as simple as:\n**user@server:\/directory\/$** sudo apt-get install php-apc\nNow let us reboot the Apache process to enable our new cache:\n**user@server:\/directory\/$** sudo \/etc\/init.d\/apache2 restart\nAPC should now be ready to run on your server.\u00a0Try running the following command to verify it is setup; you should get something in response like mine:\n**user@server:\/directory\/$** php -r \u2018phpinfo();\u2019 | grep \u2018apc\u2019\napc MMAP File Mask =&gt; \/tmp\/apc.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"memcached","label":"memcached"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"modules","label":"modules"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Haiku OS Progress","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/04\/haiku-os-progress\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/installing-apc-and-memcached-for-php-sessions-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Redhat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/putty-and-control-s-or-ctrl-s\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"PuTTY and Control + S or Ctrl + S"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/firefox-3-1-has-web-workers-threading-and-geolocation\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Firefox 3.1 has Web Workers (threading) and Geolocation"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"CrunchBang Linux on the Eee Pc"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/04\/haiku-os-progress\/","author":{"name":"Simon Holywell"},"published":"2009-04-02T16:29:06+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have previously written about Haiku (formerly OpenBeOs) on my blog and I am pleased to say that I revisited this project last night and had a play with the latest nightly builds.\u00a0It has moved on from the last time I look at it nearly 4 years ago now, but it still has some way to go before it will be a plug and play replacement for the old BeOS 5.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"beos","label":"beos"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"haiku","label":"haiku"}}]},{"title":"Using phing for good - Unfuddle Add Repository and SVN Import Ta\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/installing-apc-and-memcached-for-php-sessions-on-redhat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing APC and Memcached for PHP Sessions on Redhat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"CrunchBang Linux on the Eee Pc"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/agavi-release-candidate-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Release Candidate 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/enabling-sites-and-modules-in-apache-on-ubuntu-or-debian\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Enabling sites and modules in Apache on Ubuntu or Debian"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/03\/using-phing-for-good-unfuddle-add-repository-and-svn-imp\/","author":{"name":"Simon Holywell"},"published":"2009-03-24T20:13:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"As you may be aware I have recently been playing with the excellent Agavi framework and it introduced me to the interesting phing tool.\u00a0Phing can be used to automate tasks with build files that are close to interoperable with Apache Ant, which uses XML files to configure builds.\u00a0The advantage phing has for us PHP users is that it is entirely written in PHP so extending it is as simple as adding a new class.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"git","label":"git"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"phing","label":"phing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"subversion","label":"subversion"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}}]},{"title":"Installing APC and Memcached for PHP Sessions on Redhat","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/installing-apc-and-memcached-for-php-sessions-on-redhat\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/agavi-release-candidate-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Release Candidate 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi 1.0 Beta on XAMPP 1.7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/freelancers-costing-your-work\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Freelancers: Costing your work"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/03\/installing-apc-and-memcached-for-php-sessions-on-redhat\/","author":{"name":"Simon Holywell"},"published":"2009-03-23T17:42:18+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Installing APC on Redhat is as simple as:\n[user@server directory]# yum install php-pecl-apc\nAPC should now be ready to run on your server.\u00a0Try running the following command to verify it is setup; you should get something in response like mine:\n[user@server directory]# php -r \u2018phpinfo();\u2019 | grep \u2018apc\u2019\napc MMAP File Mask =&gt; \/tmp\/apc.s5jA6w apc.cache_by_default =&gt; On =&gt; On apc.coredump_unmap =&gt; Off =&gt; Off apc.enable_cli =&gt; On =&gt; On apc.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"memcached","label":"memcached"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"modules","label":"modules"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"redhat","label":"redhat"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"PuTTY and Control + S or Ctrl + S","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/putty-and-control-s-or-ctrl-s\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"CrunchBang Linux on the Eee Pc"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/securing-ssh-with-key-based-authentication\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Securing SSH with Key Based Authentication"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/suzuki-bandit-carburettor-clean\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Suzuki Bandit Carburettor Clean"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/03\/putty-and-control-s-or-ctrl-s\/","author":{"name":"Simon Holywell"},"published":"2009-03-16T16:05:21+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"As you have found this page I am sure you have accidentally hit the control+s short cut whilst inside a PuTTY shell and following that no keystrokes appear to affect the session. Basically hitting ctrl+s causes PuTTY to stop executing the stream coming in from the keyboard. It does however still listen to your keystrokes and it basically adds them to a queue.\nHitting control+q will re-open the stream execution, but it is worthwhile noting that it will also execute all the queued up commands as well!","content":"<p>As you have found this page I am sure you have accidentally hit the control+s short cut whilst inside a PuTTY shell and following that no keystrokes appear to affect the session. Basically hitting ctrl+s causes PuTTY to stop executing the stream coming in from the keyboard. It does however still listen to your keystrokes and it basically adds them to a queue.<\/p>\n<p>Hitting control+q will re-open the stream execution, but it is worthwhile noting that it will also execute all the queued up commands as well!<\/p>","category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"maintenance","label":"maintenance"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssh","label":"ssh"}}]},{"title":"Firefox 3.1 has Web Workers (threading) and Geolocation","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/firefox-3-1-has-web-workers-threading-and-geolocation\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/agavi-release-candidate-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi Release Candidate 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/securing-ssh-with-key-based-authentication\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Securing SSH with Key Based Authentication"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi 1.0 Beta on XAMPP 1.7.0"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/03\/firefox-3-1-has-web-workers-threading-and-geolocation\/","author":{"name":"Simon Holywell"},"published":"2009-03-11T18:42:27+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The latest beta 2 release includes web workers, which are essentially threads allowing you to farm off Javascript heavy lifting to background processes so that the interface can continue to load without being impacted upon. The Mozilla developer center\u00a0[sic] has an interesting article on implementing them; Using web workers, which includes a couple of worked examples based on the Fibonacci sequence.\nGeolocation is an interesting one for services like Twitter, Jaiku and possibly Facebook\u00a0as it would allow users an easy way of updating all the services with their current location simply by Firefox broadcasting the information.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"firefox","label":"firefox"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"javascript","label":"Javascript"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mozilla","label":"mozilla"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"CrunchBang Linux on the Eee Pc","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"A Good Windows Development Environment and Ubuntu Virtualbox"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/enabling-sites-and-modules-in-apache-on-ubuntu-or-debian\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Enabling sites and modules in Apache on Ubuntu or Debian"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/securing-ssh-with-key-based-authentication\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Securing SSH with Key Based Authentication"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/03\/crunchbang-linux-on-the-eee-pc\/","author":{"name":"Simon Holywell"},"published":"2009-03-10T18:09:51+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"So far I have tried out Ubuntu, eeeBuntu, EasyPeasy Linux and CrunchBang Linux (all of which are Debian based) on the Asus Eee PC.\u00a0Ubuntu was a bit of an annoyance to get setup and it was troublesome trying to get all the buttons or the sound and microphone to work so I then tried EasyPeasy.\u00a0It was easy to install (it already contains the Array.org kernal) and I liked the NBR interface with its easy to use tabbed system not to mention that after using Ubuntu it was nice to be able to see most of the system dialogues on screen (Ubuntu\u2019s dialogues were so long they fell off screen!","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}}]},{"title":"Agavi Release Candidate 1","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/agavi-release-candidate-1\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi 1.0 Beta on XAMPP 1.7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/freelancers-costing-your-work\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Freelancers: Costing your work"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/installing-agavi-on-xampp-windows\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing Agavi on XAMPP Windows"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/02\/agavi-release-candidate-1\/","author":{"name":"Simon Holywell"},"published":"2009-02-22T16:50:22+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A bit slow off the mark with this one but Agavi 1RC1 has been released and it is of course looking very nice. The 1.0 feature set is complete and potential bug fixes are the only things standing between now and 1.0 in earnest.\u00a0Features that I am particularly interested in include the recent refactoring of the configuration\/routing files, the new validation interface and the addition of unit testing to the framework.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"A Good Windows Development Environment and Ubuntu Virtualbox","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/enabling-sites-and-modules-in-apache-on-ubuntu-or-debian\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Enabling sites and modules in Apache on Ubuntu or Debian"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/securing-ssh-with-key-based-authentication\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Securing SSH with Key Based Authentication"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XAMPP VirtualHosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/02\/a-good-windows-development-environment-and-ubuntu-virtua\/","author":{"name":"Simon Holywell"},"published":"2009-02-18T16:07:40+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Often Linux just does it better!\u00a0Often I find myself developing a Windows machine without access to a Linux development server, but I still need to access to some of the Linux binaries and features such as cron jobs, the at command and binaries such as imagemagick, pdftotext, etc.\u00a0Some things can be emulated with ported binaries or through Cygwin, but I feel a lot more comfortable developing on a platform that is representative of the live server the web site will run on.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"modules","label":"modules"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mysql","label":"Mysql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"virtualhosting","label":"virtualhosting"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"windows","label":"windows"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"xampp","label":"xampp"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Enabling sites and modules in Apache on Ubuntu or Debian","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/enabling-sites-and-modules-in-apache-on-ubuntu-or-debian\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/securing-ssh-with-key-based-authentication\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Securing SSH with Key Based Authentication"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XAMPP VirtualHosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/mod-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mod Security"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/01\/enabling-sites-and-modules-in-apache-on-ubuntu-or-debian\/","author":{"name":"Simon Holywell"},"published":"2009-01-24T20:42:09+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I really like the way the Apache modules and virtualhosts are seperated out on Debian into folders containing those, which are available and those which are enabled. There is one small problem with this \u2013 it is more work than before! Luckily there are some helper scripts.\nThe Apache configuration files are layed out in the following way:\nmods-available \u2013 the actual text files containing the modules configuration sites-available \u2013 the vhosts text file for the site","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"modules","label":"modules"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"virtualhosting","label":"virtualhosting"}}]},{"title":"Securing SSH with Key Based Authentication","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/securing-ssh-with-key-based-authentication\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Linux to Windows Server - Migrating and securing your crontab"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi 1.0 Beta on XAMPP 1.7.0"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/01\/securing-ssh-with-key-based-authentication\/","author":{"name":"Simon Holywell"},"published":"2009-01-20T17:16:40+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Certificates are a useful way of restricting access to your SSH server because a user must have three things to log onto the server:\nUsername Password Certificate Normally they would only need to have a password and username, which can be guess at or (potentially) brute forced. Forcing the user to supply a certificate on log on means that they must also have a tangible source of identification (without the key file they cannot log in!","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssh","label":"ssh"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ubuntu","label":"ubuntu"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Linux to Windows Server - Migrating and securing your crontab","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/windows-cron-jobs-using-schtasks-or-at\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows Cron Jobs using Scheduled Tasks"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Agavi 1.0 Beta on XAMPP 1.7.0"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/freelancers-costing-your-work\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Freelancers: Costing your work"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/11\/displaying-syntax-highlighted-code-in-wordpress\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Displaying Syntax Highlighted Code in Wordpress"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XAMPP VirtualHosts"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron\/","author":{"name":"Simon Holywell"},"published":"2009-01-15T04:01:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"In the PHP development arena the LAMP (Linux, Apache, MySQL and PHP) stack is very common, but once in a while a client will come through the door with a Microsoft background. So what do you do if your CMS or framework was built with a Linux base layer in mind? Sounds easy, but what if you have jobs loaded into your Linux crontab for processing mail outs or after hours records processing?","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cron","label":"cron"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"linux","label":"linux"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"windows","label":"windows"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Agavi 1.0 Beta on XAMPP 1.7.0","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/installing-agavi-on-xampp-windows\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing Agavi on XAMPP Windows"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/freelancers-costing-your-work\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Freelancers: Costing your work"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XAMPP VirtualHosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}}],"id":"https:\/\/www.simonholywell.com\/post\/2009\/01\/agavi-1-0-beta-on-xampp-1-7-0\/","author":{"name":"Simon Holywell"},"published":"2009-01-02T03:39:14+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"To install the new XAMPP ensure you firstly uninstall and remove your current XAMPP folder. Upgrades are not supported with this version due to the differences one of which is the removal of PHP4 support from the XAMPP package.\nI like to install agavi via the pear package that is available:\nOpen a command prompt and navigate to your XAMPP directory eg. D:\\xampp\\php\nExecute:\npear channel-discover pear.agavi.org pear config-set auto_discover 1 pear config-set preferred_state beta pear install -a agavi\/agavi Wait for a bit as it installs","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"xampp","label":"xampp"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}}]},{"title":"Twitter, Jaiku, Rejaw and Tumblr","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/twitter-jaiku-rejaw-and-tumblr\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/carver-carver-one\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Carver Carver One"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/my-arrival-back-in-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My arrival back in the UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/freelancers-costing-your-work\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Freelancers: Costing your work"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/11\/displaying-syntax-highlighted-code-in-wordpress\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Displaying Syntax Highlighted Code in Wordpress"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/09\/lancia-fulvia-hf\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Fulvia HF"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/12\/twitter-jaiku-rejaw-and-tumblr\/","author":{"name":"Simon Holywell"},"published":"2008-12-18T14:29:24+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"It is clear from all usage reports that Twitter is definitely used by more people than the other services, but I am still not sure whether any of them are truly must have or useful. Rejaw and Jaiku are more in line with the Twitter model, but they allow users to make comments on posts. Jaiku goes further by allowing channels, which operate much like an IRC Channel. You follow the channel and when users post updates to it they are displayed in your feed.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"reviews","label":"reviews"}}]},{"title":"Carver Carver One","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/carver-carver-one\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/09\/lancia-fulvia-hf\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Fulvia HF"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/vauxhall-astra-front-brakes\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Vauxhall Astra Front Brakes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/my-arrival-back-in-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"My arrival back in the UK"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/12\/carver-carver-one\/","author":{"name":"Simon Holywell"},"published":"2008-12-14T12:47:48+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I never thought I would see one of these little one seater cars running around largely due to their obscene price tag (\u00a327k+), but the other day in Auckland I did. This was a photo I quickly snapped of it on Victoria Street outside the Sky Tower.\nThis little car has been loved by reviewers for its ability to be driven like a car but still give you the fun of banking into turns like a motorcycle.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"photos","label":"photos"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"spotted","label":"spotted"}}]},{"title":"My arrival back in the UK","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/my-arrival-back-in-the-uk\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/09\/absence\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Absence"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/08\/wedding\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wedding"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Engagement"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moves"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"London"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/12\/my-arrival-back-in-the-uk\/","author":{"name":"Simon Holywell"},"published":"2008-12-04T09:38:05+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I am now in a permanent role at Mosaic in Brighton and I am not looking for employment opportunities.\nJust a short note to give you more detail on my return to the United Kingdom in December 2008. I will be landing just before Christmas and be ready for a new role with an exciting company in the new year.\nA quick run down about me follows:\nUK citizen so I can work for anyone Zend Certified PHP Engineer UK and Australian industry experience Worked with clients such as: the Virgin Group of companies Volkswagen (VW) Nickelodeon Merlin Entertainments Group (London Eye, Thorpe Park, etc.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}}]},{"title":"Freelancers: Costing your work","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/12\/freelancers-costing-your-work\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/12\/freelancers-costing-your-work\/","author":{"name":"Simon Holywell"},"published":"2008-12-01T10:18:27+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Recently I have been a fly-on-the-wall in an interesting discussion on the Auckland PHP User Group regarding the process of costing freelance work. So I thought I would toss my hat in the ring and give my opinion and summarise the interesting aspects.\nLet me just say now that I cannot tell you how much you should be charging or what you are worth, but I can help you avoid some pitfalls.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"costing","label":"costing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"freelance","label":"freelance"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}}]},{"title":"Displaying Syntax Highlighted Code in Wordpress","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/11\/displaying-syntax-highlighted-code-in-wordpress\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/switched-to-wordpress\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Switched to WordPress"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XAMPP VirtualHosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/installing-agavi-on-xampp-windows\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing Agavi on XAMPP Windows"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Secondary DNS for Free"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/11\/displaying-syntax-highlighted-code-in-wordpress\/","author":{"name":"Simon Holywell"},"published":"2008-11-14T16:49:23+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"It is difficult to use both the TinyMCE WYSIWYG and post formatted code. TinyMCE will attempt to cleanup your HTML and it will therefore remove any tags it does not recognise so your XML code will be hacked up. To compound the problem further Wordpress has annoying habit of removing all your carefully laid out indentation and line breaks.\nThere are many solutions to the problem out there including plugins that use BBCode to wrap the posted code up in.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"wordpress","label":"Wordpress"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Lancia Fulvia HF","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/09\/lancia-fulvia-hf\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/vauxhall-astra-front-brakes\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Vauxhall Astra Front Brakes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/09\/absence\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Absence"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/08\/wedding\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wedding"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/09\/lancia-fulvia-hf\/","author":{"name":"Simon Holywell"},"published":"2008-09-29T12:56:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I spotted this wonderful Italian rally car whilst I was on our Honeymoon and visiting Amsterdam. I am a big fan of the Lancia rally cars including the Fulvia pictured here, Stratos, 037, Delta S4 and Delta HF Integrale.\nSome interesting reading on the HF in Lancia Fulvia HF and Lancia Fulvia Gold Portfolio, 1963-76 (Gold Portfolio). I am so tempted to get myself a scale model like this though:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"fulvia","label":"Fulvia"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"lancia","label":"Lancia"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"photos","label":"photos"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"spotted","label":"spotted"}}]},{"title":"Absence","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/09\/absence\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/08\/wedding\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wedding"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Engagement"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moves"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"London"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wow, Almost Six Months"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/09\/absence\/","author":{"name":"Simon Holywell"},"published":"2008-09-16T20:30:45+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have been travelling around Europe for the last month or so and I have been completely out of reach. [STRIKEOUT:Unfortunately it looks as though the solution I had implemented for code highlighting has died during this time,][FIXED] [STRIKEOUT:but I have also noticed that it is stripping backslashes which is affecting the code \u2013 especially the MS SQL import script I have supplied on one of my posts][FIXED]. It contains references to newline characters etc (n), which have been destroyed by the Wordpress plug in I am using called Sniplets.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"site-updates","label":"Site Updates"}}]},{"title":"Wedding","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/08\/wedding\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Engagement"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moves"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"London"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/08\/wedding\/","author":{"name":"Simon Holywell"},"published":"2008-08-29T23:28:14+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Marion and I were wed with a lovely ceremony on the 26th of July at the Brighton Pavilion in Brighton, England.\nWe are now travelling around western Europe and enjoying every moment of it even if we had to slum it in a Hilton in Innsbruck! ;-)\nIn other news I have now left my job at Wickedweb in Edenbridge, Kent and I will be moving to Auckland, New Zealand in October.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}}]},{"title":"Switched to WordPress","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/switched-to-wordpress\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wow, Almost Six Months"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/new-design\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New Design"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/server-migration\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Migration"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/windows-cron-jobs-using-schtasks-or-at\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Windows Cron Jobs using Scheduled Tasks"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XAMPP VirtualHosts"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/06\/switched-to-wordpress\/","author":{"name":"Simon Holywell"},"published":"2008-06-29T06:18:16+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Wordpress\nI have now moved my website over to WordPress; it is more widely supported than TextPattern and it has a regular release schedule.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"wordpress","label":"Wordpress"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"site-updates","label":"Site Updates"}}]},{"title":"Windows Cron Jobs using Scheduled Tasks","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/windows-cron-jobs-using-schtasks-or-at\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL Server 2005 Dump to SQL statements"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"XAMPP VirtualHosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/installing-agavi-on-xampp-windows\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing Agavi on XAMPP Windows"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/php-common-mistakes\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Common PHP Mistakes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/suzuki-bandit-carburettor-clean\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Suzuki Bandit Carburettor Clean"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/06\/windows-cron-jobs-using-schtasks-or-at\/","author":{"name":"Simon Holywell"},"published":"2008-06-17T10:49:02+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"UPDATED: I have written a new, more indepth, article on this subject here: &lt;\/post\/2009\/01\/linux-to-windows-server-migrating-and-securing-your-cron.html&gt;\nEvery now and then you end up having to develop on a Windows box. Here are some handy hints for getting your cron jobs up and running.\nThe user interface for the Scheduled Tasks in Windows can be found at Start &gt; Programs &gt; Accessories &gt; System Tools &gt; Scheduled Tasks.\nFor performing cron jobs on webpages I recommend that you get the following binary: WGET for Windows","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cron","label":"cron"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"windows","label":"windows"}}]},{"title":"XAMPP VirtualHosts","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/installing-agavi-on-xampp-windows\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Installing Agavi on XAMPP Windows"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Secondary DNS for Free"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/server-log-spamming\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Log Spamming"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/06\/xampp-virtualhosts\/","author":{"name":"Simon Holywell"},"published":"2008-06-14T17:08:39+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Here are some hints for those of you that use a XAMPP install for testing your developments on your local machine.\nI am using a Windows machine running XP Pro and this is how I setup my VirtualHosts. The conf file you need to amend is located at c:\\xampp\\apache\\conf\\extra\\httpd-vhosts.conf Open it up in your favourite editor and un-comment the following line near the top of the file:\nNameVirtualHost *:80\nThis will enable the creation of VirtualHosts in your XAMMP installation.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"virtualhosting","label":"virtualhosting"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"xampp","label":"xampp"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Installing Agavi on XAMPP Windows","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/installing-agavi-on-xampp-windows\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Secondary DNS for Free"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/server-log-spamming\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Log Spamming"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/05\/installing-agavi-on-xampp-windows\/","author":{"name":"Simon Holywell"},"published":"2008-05-18T16:44:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Having recently heard of the Agavi project from a web framework showdown at a PHP conference in the UK I have decided to trial it. My setup is a WinXP computer with a default install of the latest XAMPP which has thrown up some issues with installing and building Agavi. Please see my hints below to overcome these issues.\nOpen a command prompt (type cmd in the run console) Navigate to your XAMMP PHP directory.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"agavi","label":"agavi"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"xampp","label":"xampp"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Common PHP Mistakes","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/php-common-mistakes\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL Server 2005 Dump to SQL statements"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/05\/php-common-mistakes\/","author":{"name":"Simon Holywell"},"published":"2008-05-18T11:08:11+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A few common PHP mistakes:\nUsing require_once when a simple require would achieve the same result. Using require uses less system resources and therefore executes more quickly. You should engineer your code so you don\u2019t need to use require_once. The same of course applies to include statements. Failing to declare variables before attempting to use them. Don\u2019t use absolute paths and URLs where relative will suffice Not opening code for peer review.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}}]},{"title":"Suzuki Bandit Carburettor Clean","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/suzuki-bandit-carburettor-clean\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/getting-back-on-the-bike\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting Back on the Bike"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/vauxhall-astra-front-brakes\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Vauxhall Astra Front Brakes"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL Server 2005 Dump to SQL statements"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Biking to the UK"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/05\/suzuki-bandit-carburettor-clean\/","author":{"name":"Simon Holywell"},"published":"2008-05-14T17:47:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Suzuki Bandit in the snow\nWhen I went away on holiday the other year I left my Bandit standing for about 3 weeks and it must of had a bad batch of fuel in the tank. The bad fuel turned into jelly in the carburettors and of course the bike started running like a dog. In the back of my mind I had thought I should drain the float bowls before leaving, but it got forgotten in all the excitement of the trip.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bandit","label":"bandit"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"maintenance","label":"maintenance"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"suzuki","label":"suzuki"}}]},{"title":"Vauxhall Astra Front Brakes","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/05\/vauxhall-astra-front-brakes\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/getting-back-on-the-bike\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting Back on the Bike"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/mobile-browsing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mobile Browsing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL Server 2005 Dump to SQL statements"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/05\/vauxhall-astra-front-brakes\/","author":{"name":"Simon Holywell"},"published":"2008-05-14T17:05:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Vauxhall Astra\nFor those you who possess an Astra from 1990-1998 the following hints might prove useful along with the more long winded description provided by the Vauxhall Astra (1991-98) Service and Repair Manual. I bought a set of two vented rotors and four brake pads for about \u00a340 on ebay so they are reasonably cheap.\nRemoving the calliper from the calliper carrier requires a 7mm allen key and to remove the calliper carrier from the hub you will need a 10mm allen key.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"maintenance","label":"maintenance"}}]},{"title":"Mobile Browsing","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/mobile-browsing\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL Server 2005 Dump to SQL statements"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/getting-back-on-the-bike\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting Back on the Bike"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/mysql-to-ms-sql-sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MySQL to MS SQL (SQL Server)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Engagement"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/04\/mobile-browsing\/","author":{"name":"Simon Holywell"},"published":"2008-04-14T17:44:08+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have recently been using the web from my mobile quite a bit. My email is hosted by Google for my domain name so I use their freely available mobile java app (with the blue icon) to view my mail. The best web browser on the mobile is of course Opera Mini. I make no secret of my love of Opera on the desktop. After having downloaded and used Opera Mini I am very impressed with the way it renders pages and the browsing experience it offers on such a small screen.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mobile","label":"mobile"}}]},{"title":"SQL Server 2005 Dump to SQL statements","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"SQL SERVER"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/getting-back-on-the-bike\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting Back on the Bike"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server-2005-dump-to-sql-statements\/","author":{"name":"Simon Holywell"},"published":"2008-04-08T13:36:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Say you have a development environment setup using SQL Server 2005 Express Edition and your customer has a SQL Server 2000 database accessible only via ODBC and you can only run a DB import via a script. How would you do it? Easy you might think just run msdbdump.exe on the command line, well this isn\u2019t MySQL so you are not so fortunate.\nBacking up your DB is easy with SQL Server using the following commands:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"code","label":"code"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mssql","label":"mssql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"windows","label":"windows"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}}]},{"title":"SQL SERVER","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/getting-back-on-the-bike\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Getting Back on the Bike"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Engagement"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moves"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Biking to the UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/triumph-street-triple\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Triumph Street Triple"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/04\/sql-server\/","author":{"name":"Simon Holywell"},"published":"2008-04-07T17:50:26+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Say you have a development environment setup using SQL Server 2005 Express Edition and your customer has a SQL Server 2000 database accessible only via ODBC and you can only run a DB import via a script. How would you do it? Easy you might think just run msdbdump.exe on the command line, well this isn\u2019t MySQL so you are not so fortunate.\nBacking up your DB is easy with SQL Server using the following commands:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}}]},{"title":"Getting Back on the Bike","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/getting-back-on-the-bike\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Biking to the UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/triumph-street-triple\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Triumph Street Triple"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/mysql-to-ms-sql-sql-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MySQL to MS SQL (SQL Server)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Engagement"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moves"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/03\/getting-back-on-the-bike\/","author":{"name":"Simon Holywell"},"published":"2008-03-28T11:02:20+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"If you haven\u2019t been riding through winter like me then take care getting back out there and wear good gear. Check all the essentials:\nOil Water (if applicable) Tyre pressures and wear Chain tension and wear Check all electrics (kill switch and all lights being the main ones) Also have a glance at your sprockets If the bike has been sitting for more than a month then you will probably want to drain the fuel tank as well as the petrol may have gone off.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"maintenance","label":"maintenance"}}]},{"title":"MySQL to MS SQL (SQL Server)","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/03\/mysql-to-ms-sql-sql-server\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Engagement"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moves"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/08\/iso-3166-country-list\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ISO 3166 Country List"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Biking to the UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/triumph-street-triple\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Triumph Street Triple"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/03\/mysql-to-ms-sql-sql-server\/","author":{"name":"Simon Holywell"},"published":"2008-03-27T13:58:33+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Recently I produced a website for hosting on a Linux box running with PHP5 and MySQL5. Well it now needs to move over to a Windows 2003 server with MS SQL as the DB and IIS as opposed to Apache.\nInstall MyODBC Install SQL Server 2005 Express Using MS SQL Server Management create a new database. (right click on databases in the Object Explorer)\nUse the following SQL Server SQL to create a link to your MySQL DB:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mssql","label":"mssql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mysql","label":"Mysql"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"sql","label":"sql"}}]},{"title":"Engagement","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Moves"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"London"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wow, Almost Six Months"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/08\/iso-3166-country-list\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ISO 3166 Country List"}}],"id":"https:\/\/www.simonholywell.com\/post\/2008\/02\/engagement\/","author":{"name":"Simon Holywell"},"published":"2008-02-02T19:52:10+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I recently asked my girlfriend for her hand in marriage; she said yes! We are both very excited and have begun to make arrangements. No date has been set yet but we aim to walk down the aisle before the end of the year. As we are from different countries we have decided to hold a ceremony in each of our countries and England to involve all of our friends and family.","content":"<p>I recently asked my girlfriend for her hand in marriage; she said yes! We are both very excited and have begun to make arrangements. No date has been set yet but we aim to walk down the aisle before the end of the year. As we are from different countries we have decided to hold a ceremony in each of our countries and England to involve all of our friends and family.<\/p>\n<p>I am so pleased and happy and look forward to the good times to come in our shared future.<\/p>","category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}}]},{"title":"Moves","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"London"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wow, Almost Six Months"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/08\/iso-3166-country-list\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ISO 3166 Country List"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Biking to the UK"}}],"id":"https:\/\/www.simonholywell.com\/post\/2007\/12\/moves\/","author":{"name":"Simon Holywell"},"published":"2007-12-18T10:30:44+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have been a little slow to update my website of late due to a change of jobs and having recently moved house.\nI am now working for WickedWeb (and have been since July), which is a web agency in the Kent countryside and with an office in London (Covent Garden). I am based in the Edenbridge office where I am a web developer working mainly in PHP with some ASP maintenance.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}}]},{"title":"ISO 3166 Country List","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/08\/iso-3166-country-list\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Biking to the UK"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/triumph-street-triple\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Triumph Street Triple"}}],"id":"https:\/\/www.simonholywell.com\/post\/2007\/08\/iso-3166-country-list\/","author":{"name":"Simon Holywell"},"published":"2007-08-21T21:26:48+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Here is a small script that I put together to grab the XML list from the ISO website and convert it into an SQL statement. The idea is that the script can be used to just obtain a list for web projects or it can be setup to run periodically to make sure that a list is always kept up to date. Obviously none of the associated checks to make that work have been written into this code so you will need to add it yourself (ie.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"code","label":"code"}}]},{"title":"Biking to the UK","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/triumph-street-triple\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Triumph Street Triple"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"London"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wow, Almost Six Months"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Secondary DNS for Free"}}],"id":"https:\/\/www.simonholywell.com\/post\/2007\/07\/biking-to-the-uk\/","author":{"name":"Simon Holywell"},"published":"2007-07-21T23:43:09+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Just a few tips for fellow bikers who might be considering a move to the UK from Victoria.\nIf you only have your L\u2019s pass you test before you come so you can transfer your licence over. When you have a full licence (ie over 21 with a restricted motorcycle licence) this will be transferred to a full A licence in the UK meaning you can ride any capacity bike you like.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uk","label":"uk"}}]},{"title":"Triumph Street Triple","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/07\/triumph-street-triple\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"London"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wow, Almost Six Months"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Secondary DNS for Free"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/ramones-museum\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Ramones Museum"}}],"id":"https:\/\/www.simonholywell.com\/post\/2007\/07\/triumph-street-triple\/","author":{"name":"Simon Holywell"},"published":"2007-07-20T13:46:19+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Yeah I know I am not that quick off the mark posting this up, but I have been admiring it for days. The new Street Triple is running a slightly retuned version of the Daytona\u2019s 675cc triple cylinder engine. It also shares the same frame and swing arm as its much lauded super sport colleague from what I can tell. I have always loved the styling of the larger Speed Triples, but I am not keen to go to much over a 600cc until I have had more on road experience in this country.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"bikes","label":"Bikes"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"triumph","label":"triumph"}}]},{"title":"London","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Wow, Almost Six Months"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Geographic Calculations in PHP"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Secondary DNS for Free"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/ramones-museum\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Ramones Museum"}}],"id":"https:\/\/www.simonholywell.com\/post\/2007\/06\/london\/","author":{"name":"Simon Holywell"},"published":"2007-06-14T13:13:07+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I am now based in London and I am working for a company called underwired* based near Farringdon train station.\nA few observations:\nThe trains are slow, late, expensive and overcrowded Carrying a skateboard around town appears to be frowned upon The roads are rubbish, but entertaining on a motorbike They speak weirdly and sometimes smell funny ;-)","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}}]},{"title":"Geographic Calculations in PHP","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/12\/geographic-calculations-in-php\/","author":{"name":"Simon Holywell"},"published":"2006-12-10T05:27:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"warning\nThis library is now deprecated in favour of my new Navigator library. Please use it instead - its much better, tested and makes use of newer PHP features!\nRecently I have been involved with a project that maps yachts during an ocean race, which got me thinking about basic calculations and conversions that would be useful to fellow developers. I envisage this being useful in projects leveraging Google or Yahoo maps.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"code","label":"code"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"maps","label":"maps"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Wow, Almost Six Months","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/new-design\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New Design"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/server-migration\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Migration"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Secondary DNS for Free"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/ramones-museum\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Ramones Museum"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/12\/wow-almost-six-months\/","author":{"name":"Simon Holywell"},"published":"2006-12-09T14:26:47+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I did not realise it but it has been almost 6 months since the last update to this website. So I guess I have been busier than I thought of late! Anyway I created a new design for the site and added some features which I felt were lacking.\nI had planned to write my own blogging engine, but when I tried the upgrade to Textpattern 4.0.4 I realised that most of the things that annoyed me about previous releases had been fixed and improved.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"site-updates","label":"Site Updates"}}]},{"title":"Secondary DNS for Free","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/server-log-spamming\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Log Spamming"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Optus Cable + Port 25 (SMTP)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/12\/secondary-dns-for-free\/","author":{"name":"Simon Holywell"},"published":"2006-12-09T14:09:19+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I recently had a server go offline, taking with it the DNS for my main email domain. I had long suspected this would be a major potential problem in the setup. When the server went down the DNS settings where not backed up by the hosting company so all of a sudden people emailing me started to encounter bounce backs and I could not work out why. Then it dawned on me that when the server died something must have gone missing.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"dns","label":"Dns"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Ramones Museum","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/ramones-museum\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/server-log-spamming\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Log Spamming"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/remote\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Canon SLR Remote Controls"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/new-design\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New Design"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/v-for-vendetta\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"V for Vendetta"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/hilarious\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hilarious"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/06\/ramones-museum\/","author":{"name":"Simon Holywell"},"published":"2006-06-28T16:42:02+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"This goes straight onto the list of todos (http:\/\/www.ramonesmuseum.com\/) just as soon as I get those tickets to Berlin! Awesome idea and congratulations to Florian for realising his dream!\nI only wish I had seen this website\/museum before now.","content":{"@attributes":{"type":"html"}}},{"title":"Server Log Spamming","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/server-log-spamming\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Optus Cable + Port 25 (SMTP)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/06\/server-log-spamming\/","author":{"name":"Simon Holywell"},"published":"2006-06-16T10:13:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have been looking through my hosts logs of late and I have noticed an ever increasing amount of referrer spam. Now whilst this is of no real concern to me as I do not use referrer logs or display them anywhere it is however really quite annoying to see this type of thing in your logs.\nApparently its not a new scam even though I have only started see it from the beginning of this year.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Canon SLR Remote Controls","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/06\/remote\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/new-design\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"New Design"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/v-for-vendetta\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"V for Vendetta"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/hilarious\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hilarious"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/lies\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lies"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/06\/remote\/","author":{"name":"Simon Holywell"},"published":"2006-06-07T05:32:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Information below can be used to make remotes for Canon EOS SLR cameras. I built a time delay remote that allows me to take time-delay\/interval photographs.\nCanon wired remote (DIY):\nhttp:\/\/www.chantalcurrid.com\/remoteControl.htm\nhttp:\/\/www.peeters.com\/300d.html\nUsing a Canon TC-80N3 remote on 2.5mm plug cameras (best but expensive):\n[http:\/\/sean.wenzel.net\/lists\/digi\\_astro\/18\/9438.html](http:\/\/sean.wenzel.net\/lists\/digi_astro\/18\/9438.html)\nhttp:\/\/eosdoc.com\/manuals\/other\/TC-80N3\/\nhttp:\/\/www.deep-sky.co.uk\/dslr\/dslr.htm\n[http:\/\/www.licha.de\/astro\\_review\\_canon\\_300d.php](http:\/\/www.licha.de\/astro_review_canon_300d.php)\nTutorials:\nhttp:\/\/www.tpub.com\/neets\/book2\/3d.htm\nhttp:\/\/www.uoguelph.ca\/~antoon\/gadgets\/555\/555.html\nDelay\/Timer circuits (mostly 555 IC based):\nhttp:\/\/www.benlo.com\/kap\/shutter.html\nhttp:\/\/home.cogeco.ca\/~rpaisley4\/LM555.html#4\nhttp:\/\/www.davidbridgen.com\/555.htm\nhttp:\/\/robroy.dyndns.info\/KAP\/rig1.html\nhttp:\/\/www.uoguelph.ca\/~antoon\/gadgets\/555\/555.html\nhttp:\/\/www.ladyada.net\/make\/sudc4kap\/make.html\nhttp:\/\/www.mikmo.dk\/cblfo.html\n[http:\/\/www.siliconchip.com.au\/cms\/A\\_30337\/article.html](http:\/\/www.siliconchip.com.au\/cms\/A_30337\/article.html)\n[http:\/\/www.rocketreviews.com\/reviews\/scratch\/tiny\\_timer.html](http:\/\/www.rocketreviews.com\/reviews\/scratch\/tiny_timer.html)\nhttp:\/\/www.zen22142.zen.co.uk\/Circuits\/Timing\/ivt.htm\n[http:\/\/uk.geocities.com\/ronj\\_1217\/rts.html](http:\/\/uk.geocities.com\/ronj_1217\/rts.html)\nhttp:\/\/circuitos.cl.tripod.com\/schem\/r34.gif\nhttp:\/\/www.aaroncake.net\/circuits\/relaytim.htm","content":{"@attributes":{"type":"html"}}},{"title":"New Design","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/new-design\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/server-migration\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Migration"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/v-for-vendetta\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"V for Vendetta"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/hilarious\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hilarious"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/lies\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lies"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/04\/new-design\/","author":{"name":"Simon Holywell"},"published":"2006-04-29T21:31:07+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have updated the sites backend code. Thought I would change the looks at the same time. So a nice simple new layout. Enjoy.","content":"<p>I have updated the sites backend code. Thought I would change the looks at the same time. So a nice simple new layout. Enjoy.<\/p>","category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"site-updates","label":"Site Updates"}}]},{"title":"V for Vendetta","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/v-for-vendetta\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/lies\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lies"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/mangled\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mangled"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/pop-goes-the-psu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pop Goes the PSU"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/hilarious\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hilarious"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/04\/v-for-vendetta\/","author":{"name":"Simon Holywell"},"published":"2006-04-28T19:00:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"How does this tripe get 75% at rottentomatoes.com\nIt was obvious from the very beginning that this was going to be a very ordinary movie. The references to the actions of Guy Fawkes were over stylised.\nThrough out the movie I felt like I was being treated like an idiot. Natalie Portman\u2019s character (Evie) is rescued, by a masked man, from the local police (line men) and she follows him onto a roof top!","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Tags","term":"rants","label":"Rants"}}},{"title":"Hilarious","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/04\/hilarious\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/lies\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lies"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/pictures-of-walls\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pictures of Walls"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/server-migration\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Migration"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/04\/hilarious\/","author":{"name":"Simon Holywell"},"published":"2006-04-24T03:59:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"These videos are fantastic:\nAverage Homeboy Fight scene from Undefeatable Garbage Day","content":{"@attributes":{"type":"html"}}},{"title":"Lies","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/lies\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/mangled\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mangled"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/pop-goes-the-psu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pop Goes the PSU"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Form SPAM (not \"HAM\") fighting tips"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/03\/lies\/","author":{"name":"Simon Holywell"},"published":"2006-03-20T17:02:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"They lied to us then.\nThey continue to lie to us now.\nThey did not even bother to plan.\nThey will continue to lie to us in the future.\nI need say no more.","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Tags","term":"rants","label":"Rants"}}},{"title":"Form SPAM (not \"HAM\") fighting tips","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Flickering Images"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Optus Cable + Port 25 (SMTP)"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/03\/form-spam-not-ham\/","author":{"name":"Simon Holywell"},"published":"2006-03-18T04:23:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A site that I have up called Alfa Romeo Sprint QV has recently been the target of malicious spammers and\/or their robots. The messages mainly consisted of porn and poker sites.\nNow the script used to generate the Your Sprints section of the site was written a long time ago when spamming forms and blogs was not a common occurrence and my site had a relative small readership and no Google rank or anything like that.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}}]},{"title":"Flickering Images","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Optus Cable + Port 25 (SMTP)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/03\/flickering-images\/","author":{"name":"Simon Holywell"},"published":"2006-03-17T20:06:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have been asked numerous times in the past how I create this effect in some forum signatures so now I am releasing the code so you can see. It could equally be used as a background image in CSS (like the photo of the excavator above) so you could have a circulating series of background or in this case header images. I am sure you can think of many other neat uses for this script.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"code","label":"code"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Pictures of Walls","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/pictures-of-walls\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/server-migration\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Server Migration"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/mangled\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mangled"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Optus Cable + Port 25 (SMTP)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/03\/pictures-of-walls\/","author":{"name":"Simon Holywell"},"published":"2006-03-15T08:23:11+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Pictures of Walls is a great site with some very interesting photos of walls (with graffiti).","content":"<p><a href=\"http:\/\/www.picturesofwalls.com\/\">Pictures of Walls<\/a> is a great site with some very interesting photos of walls (with graffiti).<\/p>"},{"title":"Server Migration","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/server-migration\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/mangled\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mangled"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Optus Cable + Port 25 (SMTP)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/03\/server-migration\/","author":{"name":"Simon Holywell"},"published":"2006-03-04T19:44:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Well I would like to say it went smoothly, but\u2026 At least its all transferred over and backed up now. This new server should be faster as well as more reliable than the old one. I even managed to get something up on FullOctane.com","content":"<p>Well I would like to say it went smoothly, but\u2026 At least its all transferred over and backed up now. This new server should be faster as well as more reliable than the old one. I even managed to get something up on <a href=\"http:\/\/www.fulloctane.com\">FullOctane.com<\/a><\/p>","category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"site-updates","label":"Site Updates"}}]},{"title":"Mangled","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2006\/03\/mangled\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/pop-goes-the-psu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pop Goes the PSU"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Optus Cable + Port 25 (SMTP)"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Downtime\/Housing"}}],"id":"https:\/\/www.simonholywell.com\/post\/2006\/03\/mangled\/","author":{"name":"Simon Holywell"},"published":"2006-03-02T09:10:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I must preface this with a statement: I do not profess to be an expert on the English language. I am, in fact, quite sure you will find errors in this piece and the many others that I have and will post on this site.\nHowever it somewhat irks me that supposedly well educated people cannot adhere to even some of the most basic principles of the language. A quite ridiculous mistake I hear quite often around people who claim to have completed tertiary studies of some kind is the overuse of the word me.","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Tags","term":"rants","label":"Rants"}}},{"title":"Optus Cable + Port 25 (SMTP)","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"ADODB"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/mod-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mod Security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/12\/optus-cable-port-25-smtp\/","author":{"name":"Simon Holywell"},"published":"2005-12-21T08:38:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have been setting up a mail server of which smtp is an integral part. I could access it through my old net connection at home and I can through work but I am currently staying somewhere with Optus Cable. They block port 25! I called their tech support to confirm, he did say it was possible to have to port re-opened for this individual connection. But I am not the account holder.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"ADODB","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/mod-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mod Security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/12\/adodb\/","author":{"name":"Simon Holywell"},"published":"2005-12-19T21:13:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"During a recent project I ended up using ADODB and found it very effective. Especially the wrapper it places around PHPs sessions, it stores them in the DB instead of in the temp directory, which can be less secure. It also handles encryption of the session variables contents, but only using MD5 originally and I prefer to use SHA1. So I hacked the following to allow me to do so and I contributed it to ADODB.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"code","label":"code"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Downtime\/Housing","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Hardening SSH"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/mod-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mod Security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/09\/akg-headphones\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"AKG Headphones"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/11\/downtimehousing\/","author":{"name":"Simon Holywell"},"published":"2005-11-26T11:58:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"As some of you will know I have finished uni and now work as php developer for Go4 Multimedia and as such I am currently between houses and I do not have regular access to the net where I am staying.","content":"<p>As some of you will know I have finished uni and now work as php developer for <a href=\"http:\/\/www.go4.com.au\">Go4 Multimedia<\/a> and as such I am currently between houses and I do not have regular access to the net where I am staying.<\/p>","category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"life","label":"life"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"me","label":"Me"}}]},{"title":"Hardening SSH","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/mod-security\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Mod Security"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/11\/hardening-ssh\/","author":{"name":"Simon Holywell"},"published":"2005-11-12T13:35:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A very nice article: Keeping SSH access secure\nI use the following in \/etc\/ssh\/sshd_config:\nAllowUsers username PermitRootLogin no\nWhich kills root login access to the server meaning you will need to login as the username provided in AllowUsers and then su to root (eg. su root) or sudo the commands if you have sudo setup (apt-get install sudo).\nYou may also wish to change the port through which SSH occurs by adding:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"ssh","label":"ssh"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Mod Security","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/11\/mod-security\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"An interesting PHP site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/11\/mod-security\/","author":{"name":"Simon Holywell"},"published":"2005-11-12T13:16:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A great little addition to all Apache server installations.\nInstall it via:\napt-get install libapache2-mod-security\nThen create a symbolic link so that the mod is enabled:\nln -s \/etc\/apache2\/mods-available\/mod-security.load mod-security.load\nSetup the config for the module in \/etc\/apache2\/httpd.conf\nMine looks like the file attached at the end of the article.\nThen kick over Apache2:\n\/etc\/init.d\/apache2 restart\nYou can now run the tests to see how well mod security is working for you:","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"apache","label":"apache"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"An interesting PHP site","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Developing with CamTech"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/10\/an-interesting-php-site\/","author":{"name":"Simon Holywell"},"published":"2005-10-15T16:14:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Some hints and tips for producing secure PHP code. Some tips are gems others are less so.\nhttp:\/\/securephp.damonkohler.com\/","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Developing with CamTech","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/10\/developing-with-camtech\/","author":{"name":"Simon Holywell"},"published":"2005-10-05T10:42:43+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"For a project I am working on at the moment we are using the CamTech Merchant Gateway. A handy note to all is that it will not function on anything but Java 1.4.x. Java 5 does not work.","content":"<p>For a project I am working on at the moment we are using the CamTech Merchant Gateway. A handy note to all is that it will not function on anything but Java 1.4.x. Java 5 does not work.<\/p>","category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"php","label":"PHP"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"AKG Headphones","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/09\/akg-headphones\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/09\/apple-macintosh-history\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Apple Macintosh History"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/2005-08-21-gmt\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"GMT"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/setting-up-a-debian-sarge-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a Debian Sarge Server"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/09\/akg-headphones\/","author":{"name":"Simon Holywell"},"published":"2005-09-10T07:12:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"When headphones are mentioned I immediately start thinking about Grado, Beyer and AKG. Most people only make it as far as Sennheiser, which in my opinion is a shame. Sure they do make fantastic equipment but the pricing is poor if you want a good set of what are called \u201cmonitor\u201d or reference headphones. To the average user this may be neither here nor there however it makes a big difference to what you actually hear.","content":{"@attributes":{"type":"html"}}},{"title":"Apple Macintosh History","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/09\/apple-macintosh-history\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Virtual Mail Servers"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/2005-08-21-gmt\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"GMT"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/setting-up-a-debian-sarge-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a Debian Sarge Server"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/09\/apple-macintosh-history\/","author":{"name":"Simon Holywell"},"published":"2005-09-03T13:56:05+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A very interesting site created by a Macintosh team member, Andy Hertzfeld, with amusing stories about the hardware, software and people who created the first Macintosh computer.\nhttp:\/\/www.folklore.org","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"Virtual Mail Servers","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Serving Virtual Hosts"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/setting-up-a-debian-sarge-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a Debian Sarge Server"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/08\/virtual-mail-servers\/","author":{"name":"Simon Holywell"},"published":"2005-08-28T17:44:50+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"http:\/\/workaround.org\/articles\/ispmail-sarge\nVPSs are nice but how do you host multiple domain email addresses? Well the above tutorial a fantastic guide on Debian Sarge.\nAn item worthy of note is creation of the Courier SSL certificates. By default there will be a couple automatically created by Courier at install time. This are useless as your email client WILL reject them because localhost is not the same domain as domain1.com etc\u2026\nYou need to edit both \/etc\/courier\/pop3d.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"mail","label":"mail"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Serving Virtual Hosts","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/setting-up-a-debian-sarge-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a Debian Sarge Server"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Save Toby"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/08\/serving-virtual-hosts\/","author":{"name":"Simon Holywell"},"published":"2005-08-22T07:41:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"To begin with I am using Apache2 so this will not apply to Apache1.3. Apache2 uses an interesting technique for setting up Virtual Hosts, they are no longer stored in the huge httpd.conf file. They are stored in two folders, sites-available and sites-enabled.\nI am basing this setup on the following structure:\n\/home\/www\/ -- www.sitename1.com -- htdocs -- stats -- logs -- www.sitename2.com -- htdocs -- stats -- logs To make a new Virtual Host you make a new file in the sites-available directory.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"virtualhosting","label":"virtualhosting"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"GMT","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/2005-08-21-gmt\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/setting-up-a-debian-sarge-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a Debian Sarge Server"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/pop-goes-the-psu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pop Goes the PSU"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/lebedev-optimus-keyboard\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lebedev Optimus Keyboard"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/08\/2005-08-21-gmt\/","author":{"name":"Simon Holywell"},"published":"2005-08-21T16:04:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"A very interesting article written by Richard B. Langley of the University of New Brunswick about GMT and UTC and how they dictate world time. Well worth a read if you have always wondered.\nGMT UTC (TXT file)","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"Setting up a Debian Sarge Server","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/setting-up-a-debian-sarge-server\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"TheBat!"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/pop-goes-the-psu\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Pop Goes the PSU"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/lebedev-optimus-keyboard\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lebedev Optimus Keyboard"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/08\/setting-up-a-debian-sarge-server\/","author":{"name":"Simon Holywell"},"published":"2005-08-19T15:36:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Perfect Debian Setup is a very handy little article.\nOne item of note however is that Debian Sarge doesn\u2019t support PHP5 even in the unstable packages so you will need to use the following technique to get the PHP5 goodies from a Debian developers repository. You can browse his directory and see what is on offer at: http:\/\/people.debian.org\/~dexter There is also another source with less recent and a less complete collection of packages DotDeb, but as it is out of date I would not bother with it.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"debian","label":"debian"}}]},{"title":"TheBat!","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Save Toby"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"neowin"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/08\/thebat\/","author":{"name":"Simon Holywell"},"published":"2005-08-14T14:54:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have reverted back to Ritlabs The Bat email client having previously used Thunderbird. When I left The Bat its HTML support was very limited and this has now been rectified in this release. Given its quicker searching of emails and faster template based email composition I had to move back over. For novice users there will be too many options but it makes life so much easier than any other client I have ever come across.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Pop Goes the PSU","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/pop-goes-the-psu\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"U.S. Military Cannot Operate Adobe Acrobat"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/lebedev-optimus-keyboard\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lebedev Optimus Keyboard"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Save Toby"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/07\/pop-goes-the-psu\/","author":{"name":"Simon Holywell"},"published":"2005-07-26T12:04:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The power supply unit in my Shuttle PC has died, which is really annoying as I need to be getting on with assignments. Ok so I can browse the web and check my email with the Linux box but the assignment is in VisualBasic .NET so I need Windows to run VisualStudio .NET. A really friggin annoying side to this is not being able download images from my camera.\nAnyway my new PSU should arrive soon, which is the new and improved quiet 250W PSU that comes in the new Shuttles.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"rants","label":"Rants"}}]},{"title":"U.S. Military Cannot Operate Adobe Acrobat","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Save Toby"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"neowin"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/lebedev-optimus-keyboard\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lebedev Optimus Keyboard"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/07\/us-military-cannot-operate-adobe-acrobat\/","author":{"name":"Simon Holywell"},"published":"2005-07-16T12:32:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"There have been two recent cases of U.S. Military negligence when operating the Adobe Acrobat suite for creation of PDF files. One such incident ocurred in a report released from Iraq about an Italian agent named Nicola Calipari who was killed by the U.S. Military at checkpoint whilst attempting to rescue an Italian journalist. The PDF document contained both sensitive and unclassified information, the former of which was covered with black boxes.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Lebedev Optimus Keyboard","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/07\/lebedev-optimus-keyboard\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Save Toby"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/the-hoary-hedgehog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Hoary Hedgehog?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"neowin"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/foobar2000\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"foobar2000"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/07\/lebedev-optimus-keyboard\/","author":{"name":"Simon Holywell"},"published":"2005-07-16T11:57:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"The Optimus keyboard is a new idea many have been waiting for; a keyboard with a layout that changes depending upon its use. For example it can display the usual QWERTY keyboard in Word but just as easily switch to a French AZERTY layout if need be. This would also extend into games where you could have a different setup of keys and functions depending on the game being played.","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"Setting up a world visible host with a Netcomm NB1300 ADSL modem\u2026","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Save Toby"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"neowin"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/the-hoary-hedgehog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Hoary Hedgehog?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/foobar2000\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"foobar2000"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/05\/setting-up-a-world-visible-host-with-a-netcomm-nb1300-ad\/","author":{"name":"Simon Holywell"},"published":"2005-05-07T16:40:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Due to the reluctance of many hosts on the internet to update their server software I have decided that I will use my spare computer at home as a small server for testing my PHP5 scripts and so on. But I ran into a few niggling problems along the way. Firstly alot of the modems functions are not properly documented in the user manual, which is pathetic, they assume that you know a lot about ADSL modems and procedures to do with them.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"Save Toby","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"neowin"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/the-hoary-hedgehog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"The Hoary Hedgehog?"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/foobar2000\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"foobar2000"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/amip-song-title-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"AMIP Song title server"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/save-toby\/","author":{"name":"Simon Holywell"},"published":"2005-04-20T16:39:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Toby is a wee rabbit who is going to be eaten unless his site creator is paid $50k USD in the next month. Fantastic little web legend if you ask me, please go and check SaveToby.com out for yourself. The updates page has some hidden gems.","content":"<p>Toby is a wee rabbit who is going to be eaten unless his site creator is paid $50k USD in the next month. Fantastic little web legend if you ask me, please go and check <a href=\"http:\/\/www.savetoby.com\">SaveToby.com<\/a> out for yourself. The updates page has some hidden gems.<\/p>","category":{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}},{"title":"The Hoary Hedgehog?","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/the-hoary-hedgehog\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"neowin"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/foobar2000\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"foobar2000"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/amip-song-title-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"AMIP Song title server"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/konfabulator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Konfabulator"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/the-hoary-hedgehog\/","author":{"name":"Simon Holywell"},"published":"2005-04-20T16:38:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Strange name for the latest incarnation of a linux distribution, but then Ubuntu is a very different beast. First of all the best thing about Ubuntu is that initially you only need to download one iso image from their site and you can get a desktop or server up and running a CD burner later. You can then download binaries for other programs you may need via an inbuilt and remove programs interface.","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"neowin","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/foobar2000\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"foobar2000"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/amip-song-title-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"AMIP Song title server"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/konfabulator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Konfabulator"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/neowin\/","author":{"name":"Simon Holywell"},"published":"2005-04-10T16:37:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"If you don\u2019t already know about this site then you have not been on the web in the last five years. It has become the biggest place to discuss Windows related news and problems. It now has a very large member base and is ever expanding.\nThe news is well worth a look for details about the latest updates to your favourite programs, but the forums are the greatest resource on there.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}}]},{"title":"foobar2000","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/foobar2000\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/amip-song-title-server\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"AMIP Song title server"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/konfabulator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Konfabulator"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/haiku-osopenbeos-an-open-source-beos-clone\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Haiku OS\/OpenBeOS - An open source BeOS clone"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/foobar2000\/","author":{"name":"Simon Holywell"},"published":"2005-04-10T16:36:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Quite simply the best player I have come across. It is lightweight and starts up exceptionally quickly and maintains a minimal footprint. It sounds great and the interface is nice and simple. Skinned players are for losers. I like to listen to my music not look at the player. This player does what it says on the box and it is not bloated. Download it and use it now. Nothing else to say!","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"AMIP Song title server","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/amip-song-title-server\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/konfabulator\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Konfabulator"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/haiku-osopenbeos-an-open-source-beos-clone\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Haiku OS\/OpenBeOS - An open source BeOS clone"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 2"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/amip-song-title-server\/","author":{"name":"Simon Holywell"},"published":"2005-04-10T16:18:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"AMIP is a program that gets the currently playing song title from your music player and broadcasts it to your email client and MSN messenger among others. I now use it for my email signatures and in MSN Messenger7 where it does a very good job.\nIt has many builds and you need to pick the one for the player you currently use. In my case foobar2000, which is quite possibly the best player available.","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"Konfabulator","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/konfabulator\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Lancia Stratos"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/haiku-osopenbeos-an-open-source-beos-clone\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Haiku OS\/OpenBeOS - An open source BeOS clone"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2402-dynamic-flash-web-gallery\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2402: Dynamic Flash Web Gallery"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/konfabulator\/","author":{"name":"Simon Holywell"},"published":"2005-04-10T16:00:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"I have been using Konfabulator on my Windows machine for a little while and I am very impressed with it. I also tried out ObjectDesk but I didn\u2019t feel it was as good. Konfabulator just works and does its job perfectly. ObjectDesk kept falling over which was quite irritating. There are also plenty of Widgets available for Konfabulator and unlike ObjectDesk the news widgets don\u2019t all link to bullshit like CNN!","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"Lancia Stratos","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MSN Messenger"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/haiku-osopenbeos-an-open-source-beos-clone\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Haiku OS\/OpenBeOS - An open source BeOS clone"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2402-dynamic-flash-web-gallery\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2402: Dynamic Flash Web Gallery"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/09\/mms2802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 1"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/lancia-stratos\/","author":{"name":"Simon Holywell"},"published":"2005-04-08T16:28:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Ever since I first saw Phill Eather\u2019s Lancia Stratos at the Targa Tasmania race event when I was a kid I have wanted a one. They have classic styling that has not dated at all, well not much for a car of its age. Most of its competitors are all but forgotten. Yes Bertone did a wonderful job on the coachwork for Lancia\u2019s rally monster. Despite not having any money I have been looking into the Stratos replica options.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"motors","label":"Motors"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"lancia","label":"Lancia"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"stratos","label":"Stratos"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"cars","label":"Cars"}}]},{"title":"MSN Messenger","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/haiku-osopenbeos-an-open-source-beos-clone\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Haiku OS\/OpenBeOS - An open source BeOS clone"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2402-dynamic-flash-web-gallery\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2402: Dynamic Flash Web Gallery"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/09\/mms2802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/06\/mms2801-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 3"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/msn-messenger\/","author":{"name":"Simon Holywell"},"published":"2005-04-08T16:27:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Most people use it as their instant messaging program of choice and it is the most fully featured and frequently updated one out there at the moment, at least of all the main stream programs out there. Microsoft claim to receive 100 million unique connections through their messaging service per day, which is quite phenomenal. So with this in mind I began to wonder why exactly this application was such a piece of shit.","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"internet","label":"Internet"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"rants","label":"Rants"}}]},{"title":"Haiku OS\/OpenBeOS - An open source BeOS clone","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2005\/04\/haiku-osopenbeos-an-open-source-beos-clone\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2402-dynamic-flash-web-gallery\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2402: Dynamic Flash Web Gallery"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/09\/mms2802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/06\/mms2801-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/05\/mms2801-assignment-1-and-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 1 and 2"}}],"id":"https:\/\/www.simonholywell.com\/post\/2005\/04\/haiku-osopenbeos-an-open-source-beos-clone\/","author":{"name":"Simon Holywell"},"published":"2005-04-08T16:25:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Being reminded of my first encounter with the BeOS operating system by a housemate the other I thought I would take a look to see whatever happend to this great little multimedia OS. Whilst doing so I came across the OpenBeOS project that has since been renamed Haiku OS. Although its not a complete replica of BeOS R5 yet it is getting there and should come into its own when the new features are added after Haiku R1 (yet to be released).","content":{"@attributes":{"type":"html"}},"category":{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}}},{"title":"MMS2802: Assignment 2","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2802-assignment-2\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2402-dynamic-flash-web-gallery\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2402: Dynamic Flash Web Gallery"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/09\/mms2802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/06\/mms2801-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/05\/mms2801-assignment-1-and-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 1 and 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/10\/mms1803-assignment-2-and-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 2 and 3"}}],"id":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2802-assignment-2\/","author":{"name":"Simon Holywell"},"published":"2004-10-18T12:27:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 2\nGroup Work: No Mark: 94 A PHP forum with an Oracle backend.\nass2_mms2802.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS2402: Dynamic Flash Web Gallery","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2402-dynamic-flash-web-gallery\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/09\/mms2802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/06\/mms2801-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/05\/mms2801-assignment-1-and-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 1 and 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/10\/mms1803-assignment-2-and-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 2 and 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1803-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 1"}}],"id":"https:\/\/www.simonholywell.com\/post\/2004\/10\/mms2402-dynamic-flash-web-gallery\/","author":{"name":"Simon Holywell"},"published":"2004-10-10T12:16:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 2\nGroup Work: No Mark: 80 A Flash image gallery that gets image data from a MySQL database. This web gallery was produced for the Universities web page. The interface colours and movement are entirely random through ActionScript.\nGallery demo site","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS2802: Assignment 1","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/09\/mms2802-assignment-1\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/06\/mms2801-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/05\/mms2801-assignment-1-and-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 1 and 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/10\/mms1803-assignment-2-and-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 2 and 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1803-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1408-database-driven-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Database Driven Site"}}],"id":"https:\/\/www.simonholywell.com\/post\/2004\/09\/mms2802-assignment-1\/","author":{"name":"Simon Holywell"},"published":"2004-09-14T12:25:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 2\nGroup Work: No Mark: 93 A Perl script for a simple forum providing threaded and unthreaded viewing styles of discussions from an Oracle database.\nass1_mms2802.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS2801: Assignment 3","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/06\/mms2801-assignment-3\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/05\/mms2801-assignment-1-and-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS2801: Assignment 1 and 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/10\/mms1803-assignment-2-and-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 2 and 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1803-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1408-database-driven-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Database Driven Site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/07\/mms1408-weblog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Weblog"}}],"id":"https:\/\/www.simonholywell.com\/post\/2004\/06\/mms2801-assignment-3\/","author":{"name":"Simon Holywell"},"published":"2004-06-03T12:22:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 1\nGroup Work: Yes Mark: 85 ColdFusion is used to connect to an Oracle database. ERD, DDS, schema and script files all included. This a sample traffic offence agency script.\nass3_mms2801.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS2801: Assignment 1 and 2","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2004\/05\/mms2801-assignment-1-and-2\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/10\/mms1803-assignment-2-and-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 2 and 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1803-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1408-database-driven-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Database Driven Site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/07\/mms1408-weblog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Weblog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1402-djfigjam\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1402: DJ.FIGJAM"}}],"id":"https:\/\/www.simonholywell.com\/post\/2004\/05\/mms2801-assignment-1-and-2\/","author":{"name":"Simon Holywell"},"published":"2004-05-12T12:19:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 1\nGroup Work: No Mark: 89 A complete ERD, DSD, schema and Oracle insert files are inlcuded for a sample Auto-Rentals company.\nar.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1803: Assignment 2 and 3","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/10\/mms1803-assignment-2-and-3\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1803-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1803: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1408-database-driven-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Database Driven Site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/07\/mms1408-weblog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Weblog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1402-djfigjam\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1402: DJ.FIGJAM"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1802-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 3"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/10\/mms1803-assignment-2-and-3\/","author":{"name":"Simon Holywell"},"published":"2003-10-21T00:13:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 2\nGroup Work: No Mark: 84 Demonstrates recursion and the use of a TreeMap. GUI menus and custom gridlayout also used. It also uses binary output to write and open the values the user enters to a flatfile database.\nass2_2.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1803: Assignment 1","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1803-assignment-1\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1408-database-driven-site\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Database Driven Site"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/07\/mms1408-weblog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Weblog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1402-djfigjam\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1402: DJ.FIGJAM"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1802-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/05\/mms1802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 2"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1803-assignment-1\/","author":{"name":"Simon Holywell"},"published":"2003-09-07T12:10:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 2\nGroup Work: No Mark: 81 A Java memory test game. It functions much like a card matching game.\nass1_2.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1408: Database Driven Site","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1408-database-driven-site\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/07\/mms1408-weblog\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1408: Weblog"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1402-djfigjam\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1402: DJ.FIGJAM"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1802-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/05\/mms1802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/04\/mms1802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 1"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/09\/mms1408-database-driven-site\/","author":{"name":"Simon Holywell"},"published":"2003-09-04T09:02:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 2\nGroup Work: Yes Mark: 85 This is an html css php mysql website that is aimed at demonstrating the ability to make an ecommerce site.\nOrganics demo site - NO LONGER ONLINE :(","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1408: Weblog","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/07\/mms1408-weblog\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1402-djfigjam\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1402: DJ.FIGJAM"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1802-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/05\/mms1802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/04\/mms1802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/about-me\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"About me"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/07\/mms1408-weblog\/","author":{"name":"Simon Holywell"},"published":"2003-07-29T09:06:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 2\nGroup Work: No Mark: 89 A pretty nice assignment task if you ask me and I coded it all myself in PHP MySQL. It also has entries added frequently.\nBlog demo site - NO LONGER ONLINE :(","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1402: DJ.FIGJAM","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1402-djfigjam\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1802-assignment-3\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 3"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/05\/mms1802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/04\/mms1802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/about-me\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"About me"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/projects\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Projects"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1402-djfigjam\/","author":{"name":"Simon Holywell"},"published":"2003-06-05T08:58:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 1\nGroup Work: No Mark: 79 A Flash website demonstrating mixing sounds and my current Flash skills.\nDJ FIGJAM demo site - NO LONGER ONLINE :(","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1802: Assignment 3","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1802-assignment-3\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/05\/mms1802-assignment-2\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 2"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/04\/mms1802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/about-me\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"About me"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/projects\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Projects"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/unsubscribe-success\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Sorry to see you go"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/06\/mms1802-assignment-3\/","author":{"name":"Simon Holywell"},"published":"2003-06-02T12:06:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 1\nGroup Work: No Mark: 82 This is a Java assignment completed for OOP1.\nass3.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1802: Assignment 2","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/05\/mms1802-assignment-2\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/04\/mms1802-assignment-1\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"MMS1802: Assignment 1"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/about-me\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"About me"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/projects\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Projects"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/unsubscribe-success\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Sorry to see you go"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/subscribe-thank-you\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Thank you for subscribing"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/05\/mms1802-assignment-2\/","author":{"name":"Simon Holywell"},"published":"2003-05-15T12:04:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 1\nGroup Work: No Mark: 76 A Java Applet that reads and writes to a flatfile database.\nass2.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]},{"title":"MMS1802: Assignment 1","link":[{"@attributes":{"href":"https:\/\/www.simonholywell.com\/post\/2003\/04\/mms1802-assignment-1\/?utm_source=atom_feed","rel":"alternate","type":"text\/html"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/about-me\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"About me"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/projects\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Projects"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/unsubscribe-success\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Sorry to see you go"}},{"@attributes":{"href":"https:\/\/www.simonholywell.com\/subscribe-thank-you\/?utm_source=atom_feed","rel":"related","type":"text\/html","title":"Thank you for subscribing"}}],"id":"https:\/\/www.simonholywell.com\/post\/2003\/04\/mms1802-assignment-1\/","author":{"name":"Simon Holywell"},"published":"2003-04-11T11:59:00+00:00","updated":"2024-11-19T12:47:01+10:00","summary":"Semester: 1\nGroup Work: No Mark: 80 A number guessing game. Written as a Java applet.\nass1.zip","content":{"@attributes":{"type":"html"}},"category":[{"@attributes":{"scheme":"taxonomy:Categories","term":"computing","label":"Computing"}},{"@attributes":{"scheme":"taxonomy:Tags","term":"uni","label":"Uni"}}]}]}