Here’s what we got up to this month in Tech Develops…

Ed Holloway-George
ASOS Tech Blog
Published in
7 min readOct 19, 2023

--

Photo by Marvin Meyer on Unsplash

This month, the tech team have been hard at work improving their skills and getting their hands dirty through our ‘Tech Develops’ initiative. In this post, Ed Holloway-George highlights some examples of what the team has been doing in their own words!

Working at ASOS certainly has its benefits. In one of our recent blog posts by Leah Wolstenholme, we showcased some of the perks that any ASOS employee can expect when they join. However, on top of these, there are also some unique perks for our tech team members!

“Tech Develops” is our monthly self-learning day for the tech team. Whether it’s joining teammates to create something innovative to present back to the team, or using the time to learn something completely new, Tech Develops is a time when the tech team down-tools, clears their diaries and focuses on developing their skills in a way of their own choosing.

This month was slightly different in that Tech Develops, which usually happens on the last Friday of every month, was moved to coincide with ASOS Develops over a two-day period (For more on ASOS Develops, see Leah’s previous post!).

With double the fun this time around, here are some highlights of what some of our teams got up to!

Native Apps

The Native Apps team at ASOS consists of engineers working on our Android and iOS mobile applications. When they aren’t arguing about which platform is better (Editors note: It’s Android by the way 😉), they spend their Tech Develops looking into all sorts of tech to make our apps and processes better.

Joshua Cotterell recently joined ASOS’ Android team for the second time, after taking a brief break of a few months to travel around Asia. For his Tech Develops, he created a web-based tool to help modify internal JSON config files.

For Tech Develops, I decided to build a JSON editor website. I wanted a quicker way to edit JSON, rather than using Find & Replace in a text editor.

To tackle this problem, I decided to load all text/number values into text/number fields, all bool values into switches, and display the keys as headers with the text size determined by the depth. I also created a simple filtering system using a search bar, so when you enter some text into the search bar, the JSON is filtered to display only the JSON that matches the search term.

I originally wrote this in JavaScript, but have since rewritten the app using Flutter — not only to learn a cross-platform framework, but because it allows direct persisting of any changes to the opened file, whereas a web solution only allows the changes to be saved as a new file.

Two days was a great amount of time to get stuck into a problem and really flush out a small working prototype. As with most POCs, testing and refactoring were left out of the building process as I wanted to focus on the features and the UI. Overall, I was happy with the project and found it to be the perfect learning experience for the two-day tech develops here at ASOS.

Joshua’s JSON editor in action ✨

Notifications

It’s certainly frustrating to miss out on a new drop or not know when your latest ASOS order is on the way, but thanks to the smart cookies in the Notifications tech team this is a problem of the past!

Joe Conway is a Lead Engineer within the Notifications team and this month used Tech Develops to explore the increasingly more relevant topic of AI.

For this month’s Tech Develops, I decided to immerse myself in the world of generative AI, an area I find fascinating. 2023 has been awash with AI related developments and news, a fair proportion of which has centred around the ability that LLMs like OpenAI’s ChatGPT have to write code.

Alongside the rise of LLMs, there has been a rise in systems to orchestrate the LLMs into groups of interoperable agents. These systems allow different agents to be defined and converse with one another to reach a final goal. One such system is Autogen, from the labs of Microsoft Research.

I decided to run an experiment to expose the kinds of results that could be achieved and get a feel for the technology. As with many things, it started with a Pip install of the autogen library and a prompt 😊

I followed one of the more simplistic examples from the Autogen documentation and created an example involving an AssistantAgent and a UserProxyAgent.

The assistant would represent our friendly engineer, the user proxy would run the output from the assistant and delegate back to me in case of any further queries. My initial prompt was as follows (Note: The JSON ‘searchresponse’ input contained the raw search response from the ASOS Search API when searching for “red dress”).

“Write a program to find the first product image in the list of products in the searchresponse.json file that contains the text ‘PETITE’, use the ‘imageUrl’ field to download the image, use easyocr for the ocr reader.”

The resulting conversation resulted in a back and forth between the two agents The assistant began:

“Sure, I can help with that. Here’s the plan:

1. Read the JSON file and parse it.
2. Iterate over the list of products and find the first product that contains the text ‘PETITE’.
3. Extract the ‘imageUrl’ field from the product.
4. Download the image from the URL.
5. Use easyocr to read the text from the image.”

The user agent would follow on to execute the script and respond with any errors, this back and forth continued for a couple of iterations, until the model stumbled on one of the requirements. My intention was for the code to read the text content from the images themselves, and not the step that the assistant outlined in step 2. The assistant asked for help.

“Please provide a new keyword or a new JSON file if available. If not, we may need to terminate the task here.”

The user agent (in this instance, me) responded

“Do not search for text in the json file, search for images that contain the text as part of the image itself”

The agent and user proxy continued to write code, test the code, iterate (sound familiar?) before finally the user agent (Python interpreter and LLM combined!) responded with the code below

It even printed the final image to the same directory!

The final image 🔥

Commercial Tech

Kishor Achtani is a Platform Lead for our Commercial Integrations team, a critical area of the Commercial Technology platform. This month, Kishor’s Tech Develops was far from ordinary!

This Tech Develops I managed to muster some courage and made my second attempt to learn a foreign language by learning some Italian. My first attempt was German when I was teen and I was kicked out of the class within 15 mins 😂

However, this time I managed to survive for 60 mins and learnt some basics of this wonderful language. Now I can confidently walk in to any Italian restaurant and say “Ciao, come stai, tavlo per 2.” or perhaps if I am stranded in middle of nowhere in Naples with no access to internet “Mi Scusi, Ciao, dove la stazione piu vicina 🚈

The second half of Tech Develops was much more fun and thrilling than the first, as a colleague and I attended a MIRO innovational event located at Level 39 of the iconic Gherkin building in London!

Not only did we receive a hearty welcome, we also witnessed some mesmerizing views and got to munch on some lip smacking food. 🥞☕

We learnt how a culture of psychological safety is a vital part of successful innovation. We also heard about a ton of new features (Talk Tracks + Miro AI Assists + Integration with DevOps etc).

We were feeling as proud as a peacock when ASOS featured in one of their slides during the keynote session.🦚

The evening concluded with a champagne networking reception, where we got an opportunity to learn from likeminded leaders from the world’s most interesting brands over champagne and canapes.🥂

‘Buon appetito’ from Kishor @ the Miro event!

That’s all for now!

What would you bring to Tech Develops? Why not check out our open positions within the Tech team and come find out?

Ed is a Lead Android Developer at ASOS and a member of the Tech Blog team.
In his spare time, you can find him
talking about mobile security at conferences or posting pictures of his dog!

--

--

Ed Holloway-George
ASOS Tech Blog

Lead Android Developer @ ASOS | Google Developer Expert for Android