41554 blogs · [ { "id": "01a08791-346a-722f-b83f-a744d1e55190", "title": "Good media of 2025", "url": "https://joshsharp.com.au/blog/good-media-2025.html", "published_at": "2025-12-31T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d2b65e96", "title": "Making a game called Bird Island", "url": "https://joshsharp.com.au/blog/making-bird-island.html", "published_at": "2025-12-01T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d37db4cb", "title": "How to think about \"AI\" (and why not to call it that)", "url": "https://joshsharp.com.au/blog/how-to-think-about-ai.html", "published_at": "2025-07-28T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d38e3837", "title": "I bought a GPD Pocket 4", "url": "https://joshsharp.com.au/blog/i-bought-gpd-pocket-4.html", "published_at": "2025-05-08T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d3ed13cd", "title": "What I've learned building an indie SaaS business", "url": "https://joshsharp.com.au/blog/what-ive-learned-indie-saas.html", "published_at": "2020-06-30T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d4e40cad", "title": "Switching from Kindle to Kobo", "url": "https://joshsharp.com.au/blog/kindle-to-kobo.html", "published_at": "2019-12-15T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d537f959", "title": "Thought experiment: could people run their own home email server?", "url": "https://joshsharp.com.au/blog/thought-experiment-home-email-server.html", "published_at": "2019-08-08T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d550bd45", "title": "2018 personal review", "url": "https://joshsharp.com.au/blog/2018-personal-review.html", "published_at": "2019-01-02T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d5d82dd3", "title": "Fewer startups, more indies", "url": "https://joshsharp.com.au/blog/fewer-startups-more-indies.html", "published_at": "2018-08-20T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d63416ae", "title": "2017 personal review", "url": "https://joshsharp.com.au/blog/2017-personal-review.html", "published_at": "2018-01-09T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d68f1dea", "title": "Braid, a programming language that compiles to Go", "url": "https://joshsharp.com.au/blog/braid-programming-language.html", "published_at": "2017-07-28T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d70b6adc", "title": "Against work", "url": "https://joshsharp.com.au/blog/against-work.html", "published_at": "2017-03-19T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d7e15ed4", "title": "I own a phone with a hardware keyboard in 2017", "url": "https://joshsharp.com.au/blog/i-own-phone-hardware-keyboard-2017.html", "published_at": "2017-02-01T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d82ba848", "title": "2016 personal review", "url": "https://joshsharp.com.au/blog/2016-personal-review.html", "published_at": "2017-01-06T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d864385c", "title": "There's never been an easier time to write your own language", "url": "https://joshsharp.com.au/blog/never-been-an-easier-time-to-write-a-language.html", "published_at": "2016-06-18T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d8fd95c3", "title": "2015 personal review", "url": "https://joshsharp.com.au/blog/2015-personal-review.html", "published_at": "2016-01-05T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d94d7a24", "title": "Using RPython and RPly to build a language interpreter, part 1", "url": "https://joshsharp.com.au/blog/rpython-rply-interpreter-1.html", "published_at": "2015-10-09T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d9ce80b6", "title": "Sharing your inbox for fun and profit", "url": "https://joshsharp.com.au/blog/sharing-inboxes.html", "published_at": "2014-04-20T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744d9ffc70d", "title": "I sold my side project", "url": "https://joshsharp.com.au/blog/i-sold-my-side-project.html", "published_at": "2013-05-20T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744da70ddcc", "title": "Shutting down blaster.fm, my side project of two years", "url": "https://joshsharp.com.au/blog/shutting-down-blasterfm.html", "published_at": "2013-02-24T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744da87ac59", "title": "A little update", "url": "https://joshsharp.com.au/blog/a-little-update.html", "published_at": "2012-08-23T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744daed11f1", "title": "Twitter user streams with python", "url": "https://joshsharp.com.au/blog/twitter-user-streams-with-python.html", "published_at": "2011-12-04T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744db046bac", "title": "Fix Firefox 5+ font rendering in Windows", "url": "https://joshsharp.com.au/blog/firefox-font-rendering-windows.html", "published_at": "2011-11-29T13:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744db36a89e", "title": "A bit of icon work", "url": "https://joshsharp.com.au/blog/a-bit-of-icon-work.html", "published_at": "2010-08-30T14:00:00+00:00" }, { "id": "01a08791-346a-722f-b83f-a744dc00ac0d", "title": "Your mobile OS can't really multitask...", "url": "https://joshsharp.com.au/blog/your-mobile-os-cant-really-multitask.html", "published_at": "2010-06-23T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac64df3a7d6", "title": "Thoughts on Android and the HTC Dream", "url": "https://joshsharp.com.au/blog/thoughts-on-android-and-the-htc-dream.html", "published_at": "2009-04-26T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac64ee34de5", "title": "Announcing Twitterscribe: archive your tweets", "url": "https://joshsharp.com.au/blog/announcing-twitterscribe-archive-your-tweets.html", "published_at": "2009-02-25T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac64fb0487f", "title": "Adventures in PHP interfaces", "url": "https://joshsharp.com.au/blog/adventures-in-php-interfaces.html", "published_at": "2008-12-31T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65026d018", "title": "How do you mockup websites?", "url": "https://joshsharp.com.au/blog/how-do-you-mockup-websites.html", "published_at": "2008-10-16T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac6502b3287", "title": "Something's not right with Android's UI", "url": "https://joshsharp.com.au/blog/somethings-not-right-with-androids-ui.html", "published_at": "2008-10-08T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65046c323", "title": "My lance is free", "url": "https://joshsharp.com.au/blog/my-lance-is-free.html", "published_at": "2008-10-05T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65048818b", "title": "A short story about usability", "url": "https://joshsharp.com.au/blog/a_short_story_about_usability.html", "published_at": "2008-05-17T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac650e114f5", "title": "Twitter as social computer", "url": "https://joshsharp.com.au/blog/twitter_as_social_computer.html", "published_at": "2008-04-19T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac6516e678b", "title": "techAU troubles - techAU.tv complains, new domain is born", "url": "https://joshsharp.com.au/blog/techau_troubles_techau_tv_complains_new_domain_is_born.html", "published_at": "2008-04-02T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65235c2e0", "title": "Announcing the launch of techAU.com.au", "url": "https://joshsharp.com.au/blog/announcing_the_launch_of_techAU_com_au.html", "published_at": "2008-03-29T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac6528772d0", "title": "TechAU repurposed as Aussie tech blogger aggregator", "url": "https://joshsharp.com.au/blog/techau_repurposed_as_aussie_tech_blogger_aggregator.html", "published_at": "2008-03-26T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac653029095", "title": "Are aggregator sites getting a free ride?", "url": "https://joshsharp.com.au/blog/are_aggregator_sites_getting_a_free_ride.html", "published_at": "2008-03-19T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65333cabb", "title": "Managers vs developers: coding long term solutions", "url": "https://joshsharp.com.au/blog/managers_vs_developers_coding_long_term_solutions.html", "published_at": "2008-03-12T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac653d37e06", "title": "Android idea: Real estate", "url": "https://joshsharp.com.au/blog/android_idea_real_estate.html", "published_at": "2008-02-24T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65430bcd2", "title": "What I've been up to", "url": "https://joshsharp.com.au/blog/what_ive_been_up_to.html", "published_at": "2008-02-23T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac654bd7c0e", "title": "Windows 7: Josh Edition", "url": "https://joshsharp.com.au/blog/windows_7_josh_edition.html", "published_at": "2008-02-10T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac654f27752", "title": "Internet Expletive", "url": "https://joshsharp.com.au/blog/internet_expletive_1.html", "published_at": "2008-01-28T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac655cc10dd", "title": "Usability, accessibility and design consulting for bloggers", "url": "https://joshsharp.com.au/blog/usability_accessibility_and_design_consulting_for_bloggers.html", "published_at": "2008-01-25T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac656078726", "title": "A lack of ideas is not the killer", "url": "https://joshsharp.com.au/blog/a_lack_of_ideas_is_not_the_killer.html", "published_at": "2008-01-20T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac656400b3c", "title": "An open call for tech bloggers", "url": "https://joshsharp.com.au/blog/an_open_call_for_tech_bloggers.html", "published_at": "2008-01-12T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac6568d1abc", "title": "The humble magnifying glass", "url": "https://joshsharp.com.au/blog/the_humble_magnifying_glass.html", "published_at": "2007-12-31T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac656b9c934", "title": "Whole minutes of fun: Web App Generator", "url": "https://joshsharp.com.au/blog/whole_minutes_of_fun_web_app_generator.html", "published_at": "2007-12-28T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac657363edf", "title": "Be average, then do it again", "url": "https://joshsharp.com.au/blog/be_average_then_do_it_again.html", "published_at": "2007-12-18T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac6582803bc", "title": "Removing barriers to adoption", "url": "https://joshsharp.com.au/blog/removing_barriers_to_adoption.html", "published_at": "2007-12-15T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac6588872e1", "title": "All work and no play makes Josh a dull boy", "url": "https://joshsharp.com.au/blog/all_work_and_no_play_makes_josh_a_dull_boy.html", "published_at": "2007-12-09T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac658af6e37", "title": "Five easy things that make you a better web developer", "url": "https://joshsharp.com.au/blog/5_easy_things_that_make_you_a_better_web_developer.html", "published_at": "2007-11-25T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac658cca314", "title": "Where's the Android hype?", "url": "https://joshsharp.com.au/blog/wheres_the_android_hype.html", "published_at": "2007-11-16T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac658f427ca", "title": "Turning PHP errors into Exceptions", "url": "https://joshsharp.com.au/blog/turning_php_errors_into_exceptions.html", "published_at": "2007-11-10T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65939f6a1", "title": "Startups need more than an idea (unfortunately)", "url": "https://joshsharp.com.au/blog/startups_need_more_than_an_idea_unfortunately.html", "published_at": "2007-11-04T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac6598d04a8", "title": "How to add extensions to PHP 5 running as an Apache 2 module", "url": "https://joshsharp.com.au/blog/how_to_add_extensions_to_php_5_running_as_an_apache2_module.html", "published_at": "2007-11-03T13:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65a28f047", "title": "Quick Poll: Do you abstract your DB functions?", "url": "https://joshsharp.com.au/blog/quick_poll_do_you_abstract_your_db_functions.html", "published_at": "2007-10-27T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65a2eb9a0", "title": "Rewriting URLs with Apache's mod_rewrite and PHP", "url": "https://joshsharp.com.au/blog/rewriting_urls_with_apaches_mod_rewrite_and_php.html", "published_at": "2007-10-27T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65a9132c7", "title": "Perhaps the world doesn't need another framework", "url": "https://joshsharp.com.au/blog/perhaps_the_world_doesnt_need_another_framework.html", "published_at": "2007-10-24T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65b0b22de", "title": "Paging MSSQL results through ODBC: an epic tale", "url": "https://joshsharp.com.au/blog/paging_mssql_results_through_odbc.html", "published_at": "2007-10-22T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65bde4223", "title": "Why you should be using a framework", "url": "https://joshsharp.com.au/blog/why_you_should_be_using_a_framework.html", "published_at": "2007-10-12T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65c3b6ed6", "title": "JavaScript and screen readers", "url": "https://joshsharp.com.au/blog/javascript_and_screen_readers.html", "published_at": "2007-09-29T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65cdc8bdc", "title": "Web Directions South 2007: A Review", "url": "https://joshsharp.com.au/blog/web_directions_south_2007_a_review.html", "published_at": "2007-09-28T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65d100535", "title": "Tutorial: Super-quick shiny button CSS backgrounds", "url": "https://joshsharp.com.au/blog/tutorial_super-quick_shiny_button_css_backgrounds.html", "published_at": "2007-09-08T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65dd91cb7", "title": "Why choose a web application?", "url": "https://joshsharp.com.au/blog/why_choose_a_web_application.html", "published_at": "2007-09-01T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65e9df953", "title": "5 Web Design Tips for Programmers", "url": "https://joshsharp.com.au/blog/5_web_design_tips_for_programmers.html", "published_at": "2007-08-26T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65f89cfa4", "title": "Dynamic methods in PHP", "url": "https://joshsharp.com.au/blog/dynamic_methods_in_php.html", "published_at": "2007-08-18T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac65fd1a086", "title": "Facebook – Making it easier", "url": "https://joshsharp.com.au/blog/facebook_making_it_easier.html", "published_at": "2007-08-15T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac66071f44a", "title": "Web Directions South 2007", "url": "https://joshsharp.com.au/blog/web_directions_south_2007.html", "published_at": "2007-08-12T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac660bd63f3", "title": "There's No M in Zend", "url": "https://joshsharp.com.au/blog/there_s_no_m_in_zend.html", "published_at": "2007-08-04T14:00:00+00:00" }, { "id": "01a08791-346b-70c3-bd96-8ac660c40d99", "title": "Welcome", "url": "https://joshsharp.com.au/blog/welcome.html", "published_at": "2007-08-04T14:00:00+00:00" } ] posts Claim your blog
Back to joshsharp.com.au
Blog · corpus.blog/blogs/joshsharp.com.au/posts

joshsharp.com.au

joshsharp.com.au

2025

2020

2019

2018

2017

2016

2015

2014

2013

2012

2011

2010

2009

2008

2007