All blogs / DevOps / SRE / infrastructure
Shine Solutions Group
Technology consultants and developers specialising in Digital Platforms & Apps, AWS Cloud Solutions, Cloud Managed Services, and more.
DevOps / SRE / infrastructureAI / MLTesting / QAJavaScript / TypeScript
- Posts
- 400 from 4 May 2007 to 14 Sep 2026
- Posting
- monthly (10 in the last year)
- Kind
- company blog
- Feed
- https://shinesolutions.com/feed/
2026 7
- How We Keep our AWS Sandpit from Becoming a Permanent Bill
- S3 Tables: What are they, what problem do they solve, and when do you need them?
- Building a Lightweight RAG System with the AWS S3 Vector Buckets
- Wiring AI with JIRA for effective testing workflows – An Experiment
- Moving Bedrock Solutions to Production with Defence in Depth Beyond Standard Guardrails
- Ten tips for designing a useful REST service API
- Building MCP: Your LLM’s New Backend-For-Frontend
2025 10
- Shine Solutions Achieves AWS Premier Tier Partner Status
- Blue/Green ECS Deployments with CloudFormation
- Securing LLMs with Bedrock Guardrails for PII
- How to Set Realistic GenAI Expectations and Measure Real Impact in Your Engineering Team
- NewRelic Workflows Migration via Terraform
- Snowflake World Tour 2025 – “Enterprise AI”
- Engineering GenAI Inference Pipelines: Transforming Prototypes into Production Systems
- Level Up Your Impact: Building Trust and Influence as an Engineer
- Leveraging Unique Identifiers in S3 bucket policies
- Test Automation Summit Melbourne 2024: Future of QA and AI Testing
2024 17
- AWS re:Invent 2024: The Age of Data and AI
- Testing BFF APIs with Supertest and MSW
- Generate Allure Reports from sharding in Playwright using GitHub Actions
- Uncovering the True Value of GenAI Coding Assistants
- Transforming Automated Testing with Generative AI – Part 1
- ApiDays Melbourne 2024
- Deployment Alerting using AWS Services
- Snowflake World Tour – Sydney 2024
- AWS Firewall Manager Operational Insights
- Automating Developer Environments with Dev Containers
- Managing Recurring Batch Tasks with Spring Scheduler
- Figma and Storybook in Harmony
- Detecting Unused Secrets in AWS Secrets Manager
- Analysing Slow Query Performance on Aurora PostgreSQL
- Replicating Oracle to Aurora PostgreSQL using DMS
- Allure report hosting using S3
- A serverless solution for integrating test automation framework with Test Management tool
2023 15
- Code, Cloud, and Casinos: Surviving AWS re:Invent 2023
- A Year in Review as a Principal Quality Engineer at Shine
- Simplify API Test Automation with Playwright, Jest and allure
- Insights from Web Directions Summit 2023
- My experience attending CyberCon 2023
- All Aboard!: Tips for effective IT onboarding and handover
- AWS CloudFormation Software Development Practices
- YOW! 2022 – YOWZA! or MEH?
- Mastering AWS CloudFormation
- Elevate Your Email Testing with MailSlurp & Cypress
- Web Directions Code 2023 Recap
- Unlocking Opportunities: Reliving Testing Talks 2022 and Gearing Up for 2023!
- Real-world experiences with AWS RDS blue/green deployments
- Is the data ingested in your data lake correct?
- Accelerating DevOps delivery velocity by testing smarter with a Quality Engineering approach
2022 4
2021 14
- Embracing the Beauty of Concurrency in Golang
- Who’s had this problem before?
- NewRelic deployment with Terraform
- Working With Core Bluetooth
- Improving cold start times of Java AWS Lambda functions using GraalVM and native images
- SwiftUI Navigation and Routing
- Introducing the TGRS stack for web interfaces
- Salesforce Deployments using Jenkins
- Learning to Use Semantic-Release the Hard Way
- Automatically handling Apollo Client errors in your React UI
- Configuring Validation with an Ansible Role
- Optimizing your CDN cache with Cloudflare and Nginx
- A Pragmatic Approach to Removing Known Vulnerabilities in Software
- Exploring Graph Databases with Amazon Neptune
2020 7
2019 21
- Five things I learnt at YOW! Conference 2019
- TEL Newsletter – December 2019
- AWS re:Invent 2019 – from the comfort of your own home
- OWASP AppSec Day 2019
- GraphQL: Thinking Beyond the Technology
- Black Holes and Revelations
- Canary deployments with Spinnaker and Kubernetes – Part 2
- Canary deployments with Spinnaker and Kubernetes – Part 1
- ComponentsConf 2019
- Burn Baby Burn!
- Java: Past, Present, Distant Past and Future
- In-Place Repository Upgrade Automation In AEM OpenClouduse the config profile
- Kafka to the Rescue
- Deploying a Static Web Application with Serverless and CodeBuild
- Angular 7+ and A/B Testing
- My Refactoring Style Is Unstoppable
- Regulatory Reporting in the Cloud
- Old man shouts at cloud
- AWS Summit Sydney 2019
- Serverless GraphQL AppSync API with RDS
- Efficient AppSync backend API development for mobile/Web app with AWS Amplify
2018 29
- TEL Newsletter – December 2018
- Doing The Simplest Thing That Can Possibly Work (When You’re Not Sure What To Do Next)
- AWS re:Invent 2018 – Event Wrap
- SSO with SAML Authentication Using Shibboleth IDP
- This (and why it’s so weird in JavaScript)
- Shearwater Capture The Flag 2018
- Drift detection in Cloudformation: A first look
- Using Webpack to Unleash Your Drupal 8 Project with Modern JavaScript
- DDD Melbourne Conference 2018
- Road to InSpec(t) AEM (OpenCloud)
- OWASP AppSec Day 2018 – Melbourne
- TEL Newsletter – October 2018
- Managing User Permissions in AEM
- Running a Web Crawler in a Docker Container
- Wrangling CloudFormation with Sceptre
- Upgrading Code Reviews With JetBrains’ Upsource
- TEL Newsletter – July 2018
- Angular Conf Melbourne 2018: Conference Recap
- An Introduction to Angular Progressive Web Applications
- What the heck is {N}ativescript?
- Exploring creativity at Semi Permanent 2018
- TEL Newsletter – June 2018
- Implementing A/B Tests with Adobe Target & AngularJS Decorators
- Getting ya music recommendation groove on, this time on Amazon Web Services
- Thoughts on the ‘AWS Certified SysOps Administrator – Associate’ exam
- TEL Newsletter – February 2018
- Tips and tricks for building an Alexa skill
- Shine Solutions builds EnergyAustralia “skill” featured on Amazon Alexa Australian launch
- Falsehoods Programmers Believe About Names – With Examples
2017 29
- Putting together the pieces: Server-side rendering with React Router v4 and Redux
- TEL Newsletter – December 2017
- My favourite talks from YOW! 2017 Melbourne
- re:Invent 2017: Day 2
- re:Invent 2017: Day 1
- What nobody at Uni will tell you about being a Software Developer
- TEL Newsletter – October 2017
- TEL monthly newsletter – July 2017
- Java 9 – Project Jigsaw
- TEL monthly newsletter – June 2017
- DevOps Talks Conference, 2017
- Universal Links – A Few Things to be Prepared for
- Extending React’s container/presentation pattern to share business logic between apps
- TEL monthly newsletter – May 2017
- Ampersand.js
- An intro to Virtual Reality
- TEL monthly newsletter – April 2017
- AWS Sydney Partner Day and Summit Roundup
- It’s not you, it’s your form
- AEM 6.3: First Impressions
- TEL monthly newsletter – March 2017
- Cloud Next 2017 – Shifting to the Cloud
- TEL monthly newsletter – February 2017
- Adobe Innovation Session: Customer Journey Management
- My Big Fat UX Wedding
- Writing safer code with TypeScript strict null checks & type guards
- TypeScript, Flow and the importance of toolchains over tools
- Demystifying shortened and extension-less URLs in AEM
- Highly concurrent applications with Java and Akka
2016 17
- Generating high-res maps with Mapnik and Docker
- TEL highlights for 2016
- 10 amazing secrets university never taught you about how to become a truly professional software developer
- A Framework for Better Emails
- Shiners submit entries to the AWS Serverless Chatbot Hackathon
- YOW! Connected 2016: The typed-functional future of UI platforms
- Shine’s Michael Leroy to speak at Adobe Source event
- Shiner to present at very first YOW!Data conference
- Shiner to present at YOW! Connected 2016 – Mobile & IOT
- A Deep Dive into DynamoDB Partitions
- The most important thing when picking HTTP status codes
- Orchestrating Tasks Using AWS SWF
- The Emergence of The 3 Towers: DevSecOps
- Shine hosts a successful Digital Leaders Breakfast
- NoSQL in the cloud: A scalable alternative to Relational Databases
- Will Swift be the next king of server side development?
- Style Guides and AEM: Fitting a Square Peg in a Round Hole
2015 34
- YOW! 2015 Melbourne: A Conference Report
- Tips for AEM Beginners
- Shiner Ben Teese to speak at YOW! Conference 2015
- re:Invent 2015 the vibe of the thing
- Messages in the sky
- Development & Design: Bridging the Gap
- re:Invent 2015 Conference report: Welcome to the Starship Enterprise
- YOW! Connected 2015: Conference Report
- Faster, Higher, Stronger! Go Go Go!
- Shiner Ben Teese to speak at YOW! Connected
- Adobe Innovation Session (June 2015)
- Video of ‘Big Data the Cloud Way’ presentation now available
- ES6 with Babel.js
- Shine proud to support CoderDojo for kids
- Customer Experience 2015: Conference Report
- Web Directions Code 2015: Conference Report
- Biometric authentication with Touch ID
- Shine’s Ben Teese to speak at Web Directions Code
- AWS Summit Sydney 2015: Conference Report, Part 2
- Building a file explorer on top of Amazon S3
- ES6 Promises are here!
- AWS Partner Summit Sydney 2015: Conference Report, Part 1
- Securing your Spring App using 2FA
- Agile UX 2015: Conference Report
- Playing with Play Framework 2.3.x: REST, pipelines, and Scala
- Spring Data REST and Projections
- Hooking up to the real world with microcontrollers
- Scurvy, A/B Testing, and Barack Obama
- Future of the Internet
- Shiner Ben Teese published in latest DZone Guide
- Battling it out for glory at Battlehack
- Integrating Single-Page Apps with Oracle Access Manager
- Java 8 – on the path to improving developer sanity
- Git Flow and Immutable Build Artifacts
2014 29
- License to Queue
- New screencast on Koa and Javascript Generators
- Confessions of a Documenter
- UX Australia 2014 – Melbourne Redux
- Getting New Relic and RDS to play nice
- Getting Started with Angular and Accessibility
- Working With D3.js
- Running Geospatial Queries with GeoTools
- Shine excellence recognised as Innovation Finalist in NAB Supplier Awards 2014
- Shine wins Computerworld Data+ Award!
- Shiner Ben Teese to speak at YOW! Connected on Mobile Web Development
- Using ‘HugeCollections’ To Manage Big Data
- Put On Your Streaming Shoes
- SSH through a Raspberry Pi Railway Signal
- Swift from an Objective-C developer’s perspective
- Think a Bit, Code a Bit, Test a Bit
- Shiners to speak at Agile Australia 2014 on Big-Data Analytics
- Concordion Integration With Jenkins
- Not Just About The Technology
- JavaScript Webapps with Gradle
- Rich Object Models & Angular.js: Memoization
- Rich Object Models and Angular.js: Getter Methods
- Android Phones and Janky Accordions
- Rich Object Models and Angular.js: Identity Maps
- The Beacon Experiments: Low-Energy Bluetooth Devices in Action
- Unit Testing PHP and Silex using PHPUnit
- Rich Object Models and Angular.js
- Video of Ben Teese’s ng-conf presentation now online
- Ben Teese to speak at Angular.js conference
2013 31
- YOW Conference – A first-timer’s experiences
- Shine Technologies selected for Telstra Professional Services Panel
- Shine becomes an AWS Advanced Consulting Partner
- Faking Interactive Video on Mobile
- YOW Conference – Melbourne highlights
- Backbone Antipatterns
- OSDC2013 and WDS2013 back to back
- Respect The Javascript
- Performance Comparison Between Node.js and Java EE For Reading JSON Data from CouchDB
- Shine wins two awards at 2013 Australian Mobile Awards
- JavaOne 2013 Day 4 – Wrap-up and final thoughts
- JavaOne Day 3
- JavaOne 2013 Day Two – Polyglot Gauntlet
- JavaOne 2013 Day One
- JavaOne 2013 Day Zero
- Shine selected as finalist in two categories in the Australian Mobile Awards 2013!
- JavaOne Shanghai
- Backbone Is Not Enough
- The Joys of Redis
- Video of Marc Fasel’s Presentation at Web Directions Code 2013
- TEL: Shine’s Technical Excellence and Leadership Group
- Accessors vs Dirty-checking in Javascript Frameworks
- Senior Consultant Marc Fasel to speak at JavaOne Shanghai
- Testing Backbone Views with QUnit and Sinon
- MelbJS June 2013 Summary
- Web Directions Code 2013
- Integrating SpringMVC with OpenCms
- Backbone Boilerplate Vs. Rails Asset Pipeline
- A Chatty Atmosphere
- Supporting Fast-Moving Business Requirements Using Approval Branching
- Simple Session-Sharing in Tomcat Cluster Using the Session-in-Cookie Pattern Part 2: Security
2012 22
- An Identity Map for Backbone.js
- The Java Specialists Symposium: Unconference + Retreat = Mad fun
- YOW! 2012 Melbourne: A Conference Report
- Simple Session-Sharing in Tomcat Cluster Using the Session-in-Cookie Pattern Part 1: The Basics
- Amazon Web Services Publish a Case Study on Shine in the Cloud
- Learning About Risk Management at YOW! Conference 2012
- Shine @ AWS re: Invent 2012
- JSConf Down Under: A Conference Report
- Shine Technologies website on AWS Asia-Pacific Region on Day One
- Shine Technologies sponsors Amazon Web Services Customer Appreciation Day
- Efficient Stateful Views With Backbone, Part 2: Collections & Animations
- Efficient Stateful Views with Backbone.js, Part 1
- Shine selected as Finalist in Coles IT Vendor Awards 2012
- Provisioned IOPS on AWS RDS
- Javascript Module Loading + Shared Namespaces = Badness
- Testing for Android with Robotium
- Unit Testing with Groovy
- On Pair Programming
- Halo Vert.x – Building a Chatbot With Vert.x
- Easing the Pain of Android Software Fragmentation
- How to Stop Cucumber Becoming Technology Roadkill
- Bootstrap makes me look good
2011 26
- Processing Huge JSON Files with Jackson
- Yow! Developer Conference Brisbane.
- CouchDb on Android
- A Good Look at Android Location Data
- Swipe Conference Highlights: Gamification
- iOS Developers and Designers: Stickin’ together is what good waffles do!
- Swipe Conference Highlights: Using gestures as shortcuts within iOS apps
- Me Want Cookie: Session Handling with NetBiscuits Mobile Web Apps
- JavaScript from Nose to Tail
- Automatic Data Migration Testing: Empowering Testers with Hudson
- Asynchronous Code Design with Node.js
- Building a shared calendar with Backbone.js and FullCalendar: A step-by-step tutorial
- OSCON 2011: A Retrospective
- Cascading Select Boxes with Backbone.js: A Step-by-Step Tutorial
- State of the DevOps Union: A report on DevOps Down Under
- New iOS Developers Shouldn’t Use Interface Builder
- Into the Cloud: Moving Large-Scale Java EE Apps onto EC2 & RDS
- Lessons Learnt with iOS In-App Purchasing
- TLS/SSL tunneling with Node.js
- Couchtato – A CouchDB Document Utility Tool Written In Node.js
- Continuous Deployment of iOS Apps with Jenkins and TestFlight
- Location, Location, Location: Simulating iOS Location Data
- When to use Delegation, Notification, or Observation in iOS
- Node.js From the Enterprise Java Perspective
- New Continuous Delivery Thought Article
- A Continuous Delivery of Business Value.
2010 8
- jazz: node.js templates for humans
- CITCON Australia/New Zealand 2010 – Day 2 (Part 2)
- CITCON Australia/New Zealand 2010 – Day 2 (Part 1)
- CITCON Australia/New Zealand 2010 – Day 1
- So how much slower are instantiated fixtures?
- CouchDB: The Good Bits
- Hudson SiteMonitor Plugin and JSLint Violations Support
- A Challenging but Rewarding Experience with SCWCD
2009 5
2008 17
- Nesting URLs in RESTful resources
- Rich clients – Welcome back old friend
- Sun Developer Day 2008
- Ganymede MkII
- Be Lazy: Automate Everything
- New Release – Shine Reference Project
- Eclipse Ganymede…
- Using Git for Local Version Control
- Providing User Feedback on Ajax calls in Rails
- New screencast online: Flex and Rails
- Clearing the SCJP Hurdle
- Handling AJAX Errors using Prototype & Rails
- Rails and Windows – the love affair continues…
- The Three Amigos – Maven, Spring and GWT
- But I want to make an omelette … !
- Iterations, increments or Sprints ?
- Beauty and the Beast…
2007 58
- The Nokia Test – Are you doing Scrum ?
- CSS Layout Sucks for Panel-Based Web Apps
- Tiger + Rails + Leopard = Ouch
- Rails Development Sucks on Windows
- Spring Batch gets an airing (or flaming?)
- In Praise of Synergy
- YAML in YAML Fixtures
- Book Review: Domain-Driven Design
- Is the Java application server dead ?
- Does quality assurance need more attention?
- Has Rails lost its shine?
- Agile Development with CMMI … ?
- Unit Testing and The Way of Testivus
- How to Close JDBC Resources Properly – Every Time
- Video killed the Idiot’s Guide
- Mocking Classes, Not Interfaces
- Test-Driven Development Presentation Now Online
- Eclipse Web Tools Platform: Bringing Joy Into The Lives Of Others…
- Plugins n Wrappers…
- Fixed Price or Agile ?
- Java Real-Time System: Separating Performance from Scalability
- JRuby goes 1.0 (really, it has)
- Does Sun make money out of Java?
- Java ME Mobile Phone Applications – The Good, the Bad and the Ugly
- Change is good
- Key Exchange using Noise
- NetBeans 6.0 doesn’t play well with the SCM kiddies
- Mashups and potatoes
- Check out the Java Posse
- JavaOne: JRuby & DSLs
- ‘Free advice for the Litigious’ article
- The Software Patent Cold War hots up
- Agile Software Development – Back to First Principles
- JavaOne: Cameron Purdy & ‘The Top 10 Ways to Botch Enterprise Java Scalability and Reliability’
- Viva la JavaOne!
- JavaOne – Spring Batch
- JavaOne – AJAX performance tuning
- JavaOne – JRubyME
- JavaOne – Ruby Tooling
- JavaOne – AJAX Push
- JavaOne – Advanced Groovy
- JavaOne – Java Web Apps Vs Ruby on Rails: This Time With Tools
- JavaOne – Ruby on Rails Vs. JSF and jMaki
- JavaOne – Rails, Sails, Trails, Grails, Snails (ok, not Snails)
- JavaOne – Fast, Easy or Beautiful – pick 3 when building with GWT
- JavaOne – User Interfaces
- AIIA Industry Analyst Forum, Future Trends
- JavaOne – jPDL for workflow
- JavaOne – DSLs and Dynamic Languages
- JavaOne – The Java ME platform going forward
- JavaOne 2007 – Keynote
- Netbeans Ruby Support: Check It Out
- Warming up to JavaOne
- The Differences Between Linux Distros
- RHEL 5 – Xen & GFS
- J2ME Bluetooth
- Mobile Development
- And so it starts…