AI Jobs, News, Events & Memes
Your weekly dose of AI & startup news on our path to 1,000 Aussie startups.
Featured: Team Windows or Team Linux?
Let’s start with the question that refuses to die.
You’re building software that actually runs on machines. Not just cloud theatre. Real hardware. Real users. Real chances for something to brick itself five minutes before a client demo.
So which team are you on?
Team Windows or Team Linux?
Instead of pretending there’s one clean answer, we went to the comments. Specifically, a Reddit thread from about a year ago where someone asked for an “unbiased” Linux vs Windows take in r/computers. Which is a bit like asking a pub full of mates for an unbiased ranking of Melbourne suburbs.
As one commenter immediately put it:
“he said unbiased.”
Wait.. before that do join our Slack for more updates! [CLICK HERE]
This Week’s Line-Up
🔍 Linux vs Windows: The Battle for the Edge
👀 Get out of the comments and into the room
🕵️ Update to OpenClaw event: it just got more useful
🤖 Techies Weekly Update
🌱 We Survived!
🚧 Work Opportunity?
🔮 Coming Next Week: The Harness Gossip
Claude just made switching less annoying
🦘 Memes of the Week
Written by: Jun Kai Chang (Luc), Julia Ponder, Dr Sam Donegan, Shivang Shekhar
What the Windows crowd is saying
The Windows case is still annoyingly strong.
The big theme on Reddit was compatibility. More native apps. Better support for mainstream software. Better odds that your printer, headset, random USB dongle, or Adobe workflow will just work without dragging you into forum archaeology.
A few comments summed it up perfectly:
“I want to switch to linux so bad but i need adobe for my job”
“If you’re a gamer, then use windows.”
“People who use Windows don’t want to fight with the OS. They just want to download their game, click install and play.”
That is why Windows keeps sounding like the sensible older sibling. Less tinkering. Less fiddling. More getting on with it.
Although, because this is Reddit, someone still had to throw a chair:
“easier is probably true but i hope you mean slower”
There is also a funny little twist here. Windows has spent years borrowing Linux’s cool jacket. WSL2 lets you run Linux inside Windows, which is Microsoft’s quiet way of admitting developers still want Linux tools even when they stay on Windows.
One commenter put it like this:
“If the guy is a developer, I will recommend Linux. But if you’re a regular user, I’ll definitely recommend Windows. With WSL today, you can even run Linux GUI software on Windows.”
And because no Windows thread is complete without emotional damage, there was also this:
“windows 11 has been hot garbage. one drive has fucked so many things.”
What the Linux crowd is muttering into their black coffee
Now for Team Linux, who showed up carrying three things: performance charts, ancient ThinkPads, and a deep personal grudge against forced updates.
The Linux case on Reddit was not just abstract freedom talk. It was practical. Faster on the same hardware. Less memory use. More control. Better privacy. Fewer forced updates.
The strongest lines were these:
“Linux is significantly faster than Windows on the same hardware. It also consumes less memory.”
“Linux doesn’t force you to update.”
“The beauty of linux for me is the ability to keep using something that windows stopped supporting years ago”
That is the real Linux romance. It is not pretty. It is not polished. But it keeps old machines alive, stays out of your way, and lets you actually control the thing you paid for.
One comment nailed it:
“You will have problems if you try to make everything that did work on windows work on Linux.”
What Reddit is actually saying
This is the juicy bit.
The thread is not really “Windows good” versus “Linux good.” It is convenience versus control.
The rough consensus is:
Windows is easier and more compatible.
Linux is faster, lighter, and more customisable.
And the least dramatic answer was also the most realistic:
Use both.
Windows for gaming, Adobe, VR, and mainstream apps. Linux for development, servers, tinkering, and keeping old hardware alive out of pure spite.
One of the better summary comments was:
“I mostly use Windows but I install Linux for programming.”
And then the perfect dry closer from someone clearly exhausted by the entire species:
“Very helpful, thank you!”
So who wins?
Honestly?
Reddit’s answer is “it depends,” which is not sexy, but is probably the most honest thing on the internet.
Windows is the polished one with better compatibility and a habit of being a bit controlling. Linux is the scrappy one with fewer frills, stronger principles, and a suspicious number of loyal devotees running decade old laptops out of spite.
Team Windows or Team Linux?
Worth your 8 minutes
Length: 8:16mins
About: If you’re building actual hardware – like robots or smart cameras – and you haven’t heard of the Yocto-based Avocado OS, well This is a deep dive into immutable, security-hardened Linux images that don’t need a babysitter. It’s the unglamorous, non-Valley way to actually ship a fleet that doesn’t brick itself.
👀 Get out of the comments and into the room
Kill Your Idea Challenge
March 23 - March 27 | 10:00 AM | Zoom | Join the Club (Click Here)
Shh… Special Discount for you only use code (MLAISPECIAL) for 50% off!
Over 5 days, you’ll:
Use product thinking to stress-test your startup idea
Learn how customers actually think about competition (it’s not what you think).
Design a real willingness-to-pay test.
Run it with actual potential buyers.
Reach a verdict: GO, PIVOT, or STOP
If your idea survives, you’ll know it’s worth building.
Is MLAI getting paid to promote this? Nope. We’ve just worked with Scotty a LOT and know he runs a tight ship and tells founders what they need to hear.
Start-Up Tank x Stone & Chalk #2
March 24 | 5:30 PM | Stone & Chalk Melbourne | Join the Club (Click Here)
This is the one with actual public sweating.
Six startups. Four VCs. Ten minutes to negotiate a deal.
If you’ve ever wanted to watch founders hold it together while investors do the whole “interesting…” face, this is your event. If you’re pitching, best of luck. If you’re watching, bring your strongest opinions.
Is MLAI getting paid to promote this? Nope. We just like what Sara and HOA are doing and she does a lot of pro bono work for NFPs
The 21st x Australia!
March 19 | 6:00 PM | Stone & Chalk Melbourne | Meet investors
We’ve partnered with Ryan from the 21st to bring together a room of early-stage founders, investors, and operators for a casual evening of drinks, snacks, and genuine conversation.
The 21st is a global founder community. Ryan also manages a pre-seed fund and is actively looking to meet exceptional founders while he’s in town. Whether you’re building, raising, or investing - this is your room.
This event is for: • Early-stage founders looking to raise or connect • Investors and operators in the Melbourne ecosystem
“I want an AI event so advanced the content goes over my head”
April 9 | 5:30 PM | Melbourne CBD | Register by flicking us an email (hi@mlai.au)
The massive AI Engineer conference is being held in Fed Square this year. In anticipation we’re holding a few events for senior engineers and leaders. We’re aiming to have the content quite advanced and presented by senior leaders and researchers, and spots are very limited, so please send us an email with your linkedin profile if you’ve got a few years experience in AI. » hi@mlai.au
How to get to page #1 on search engines and chatGPT
April 18 | 10:30 AM | Melbourne CBD | Only 12 spots available each month
This is vibe marketing! If you’ve got an idea or product cooking or just want more traffic, you can get an AI to draft and publish (actually good and not sloppy) articles to your site every day to literally get thousands more people on you site every month. Shout out to the absolute smoke-shows that attended last month: cosive.com, reclaimcreatives.com, cardilog.app, skedy.io, borderlinequiz.com, woofya.com.au & freshwaterfutures.com. Is the workshop actually useful? Ask them :)
Update to OpenClaw event: it just got more useful
April 2 | 5:30 PM | Stone & Chalk Melbourne | https://luma.com/learnOPENCLAW
Quick update on the OpenClaw session: this is no longer just a talk for people vaguely trying to figure out what OpenClaw does.
It has turned into something much better.
If you’ve been seeing OpenClaw everywhere and quietly collecting questions, this is your chance to get them answered live by someone who’s building it. Vincent Koc, has spent more than two decades leading data and engineering work across Qantas, Telstra, Expedia, and the Australian Federal Government.
But wait, isn’t OpenClaw like super risky?
There will now also be a 30-minute session on OpenClaw vulnerabilities, plus a live hacking demo from David Gilmore. Which means you will not just see the polished version. You will get a look at the sharp edges too.
Then eight builders will show how they are using OpenClaw in startups and daily life: Kasey Robinson, Chitrang Thakkar, Juan Bernal, Faisal Taibi, Michael Brown, Josh Gillies, Edward Yang, and Dhruv Gore.
Also worth knowing: question submissions are first come, first served, so the earlier you sign up, the earlier you can get your question in.
This has officially gone from “what is OpenClaw?” to “show me how it works, where it breaks, and what I can actually do with it.”
👉 [LIMITED ACCESS TO UNLIMITED KNOWLEDGE HERE]
🤖 AI Bits for Techies
This week: AI Productivity Reality
AI is moving SO FAST! So we moved the heavy lifting to a dedicated weekly report. If you want the deep dive, including weekly research paper summaries, new open-source tools, and model architecture updates, this is for you. This week will be all about Proton: a compatibility layer developed by Valve (in cooperation with CodeWeavers) based on Wine, specifically designed to run Windows games on Linux operating systems.
View the Techies Report: Click Here
🌱 We Survived! Come Join Us the Next Round!
Sure Looks Fun Right? Guess What… MLAI fresh air hike happens each month! Lookout for new hiking events through our newsletter, slack and luma!
🚧 Work Opportunity?
Product Engineer Intern at Shikii Labs
Shikii Labs is hiring one Product Engineer Intern in Melbourne. They hit $600k annualised revenue in under 3 months and are aiming for $1M ARR in the next 3 months.
They want people with real signs of agency: ex-founders, active builders, strong open source or hobby project history, or people who are genuinely cracked at something competitive. There is also a point for being the eldest sibling, which is either a joke or disturbingly accurate.
Top-tier tech pay from day one, plus equity if they extend a full-time offer.
Apply: CV + best AI-enabled project + 1-minute Loom to lee@shikiilabs.com
Starts: rolling from Monday 16 March
[SPICY PREVIEW]: THE HARNESS GOSSIP
Everyone wants a long-running agent until it forgets what it was doing, half-builds a feature, and then proudly calls the job done like the worst person in a group project.
Next week, we’re digging into how to build a harness. Got thoughts about this? Let us know
Claude just made switching less annoying
Anthropic has rolled out Import Memory, which is a pretty clever way of saying: if you already spent months teaching another AI how you think, write, and work, why start from scratch?
The flow is simple. You paste Anthropic’s prompt into another AI, get back a summary of your preferences and context, then drop that into Claude’s memory settings.
Builder note
Of course, people are already hacking together ways to move that context over.
One workaround floating around is a browser bookmarklet that exports your ChatGPT conversations into Markdown using your logged-in browser session. You can then go through it, pull out the useful bits, and paste those into Claude’s memory import flow.
Not an official migration tool. Could break at any time. Also maybe do not blindly shovel sensitive chat history into anything without reading it first.
Still, for builders who want a quick bridge, it is a pretty handy little hack.
javascript:void(async()=>{
// === CONFIG ===
const LIMIT = 28;
const DELAY_MS = 1200; // delay between API calls to avoid rate limiting
const DOWNLOAD_INDIVIDUALLY = true; // true = one .md file per conversation, false = one big file
// === HELPERS ===
const sleep = ms => new Promise(r => setTimeout(r, ms));
const log = msg => console.log(`[GPT-Export] ${msg}`);
const sanitize = name => name.replace(/[<>:"/\\|?*]/g, '_').substring(0, 100);
// Get bearer token from session
async function getAccessToken() {
const res = await fetch('https://chatgpt.com/api/auth/session', { credentials: 'include' });
if (!res.ok) throw new Error('Failed to get session — are you logged in to chatgpt.com?');
const data = await res.json();
if (!data.accessToken) throw new Error('No accessToken in session response');
return data.accessToken;
}
let TOKEN = null;
async function apiFetch(url) {
const res = await fetch(url, {
credentials: 'include',
headers: { 'Authorization': `Bearer ${TOKEN}` }
});
if (res.status === 401 || res.status === 403) {
log('Token may have expired, refreshing...');
TOKEN = await getAccessToken();
const retry = await fetch(url, {
credentials: 'include',
headers: { 'Authorization': `Bearer ${TOKEN}` }
});
if (!retry.ok) throw new Error(`HTTP ${retry.status} for ${url}`);
return retry.json();
}
if (!res.ok) throw new Error(`HTTP ${res.status} for ${url}`);
return res.json();
}
// Walk the conversation tree and extract messages in order
function extractMessages(mapping) {
let rootId = Object.keys(mapping).find(id => mapping[id].parent === null);
if (!rootId) return [];
const messages = [];
const queue = [rootId];
while (queue.length > 0) {
const nodeId = queue.shift();
const node = mapping[nodeId];
if (!node) continue;
const msg = node.message;
if (msg && msg.content) {
const role = msg.author?.role;
const contentType = msg.content.content_type;
if (msg.metadata?.is_visually_hidden_from_conversation) {
// still traverse children
} else if (contentType === 'text' && msg.content.parts?.length > 0) {
const text = msg.content.parts.join('\n').trim();
if (text) {
let label;
if (role === 'user') label = 'USER';
else if (role === 'assistant') label = 'ASSISTANT';
else if (role === 'tool') label = 'TOOL';
else label = role?.toUpperCase() || 'UNKNOWN';
messages.push({ role: label, text });
}
} else if (contentType === 'user_editable_context') {
const profile = msg.content.user_profile;
const instructions = msg.content.user_instructions;
if (profile || instructions) {
messages.push({
role: 'SYSTEM (Custom Instructions)',
text: [profile, instructions].filter(Boolean).join('\n\n')
});
}
}
}
if (node.children?.length > 0) {
for (const childId of node.children) {
queue.push(childId);
}
}
}
return messages;
}
function conversationToMarkdown(title, messages, metadata = {}) {
let md = `# ${title}\n\n`;
if (metadata.create_time) {
md += `**Created:** ${new Date(metadata.create_time).toISOString()}\n`;
}
if (metadata.model) {
md += `**Model:** ${metadata.model}\n`;
}
md += `\n---\n\n`;
for (const msg of messages) {
md += `## ${msg.role}\n\n${msg.text}\n\n---\n\n`;
}
return md;
}
function downloadFile(filename, content) {
const blob = new Blob([content], { type: 'text/markdown' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = filename;
a.style.display = 'none';
document.body.appendChild(a);
a.click();
setTimeout(() => { URL.revokeObjectURL(url); a.remove(); }, 1000);
}
// === MAIN ===
try {
log('Getting access token...');
TOKEN = await getAccessToken();
log('Token acquired');
log('Fetching conversation list...');
let allConversations = [];
let offset = 0;
let total = Infinity;
while (offset < total) {
const url = `https://chatgpt.com/backend-api/conversations?offset=${offset}&limit=${LIMIT}&order=updated&is_archived=false`;
const data = await apiFetch(url);
total = data.total;
allConversations = allConversations.concat(data.items);
log(`Fetched ${allConversations.length} / ${total} conversation headers`);
offset += LIMIT;
if (offset < total) await sleep(DELAY_MS);
}
log(`Total conversations to export: ${allConversations.length}`);
let allMarkdown = '';
let successCount = 0;
let failCount = 0;
for (let i = 0; i < allConversations.length; i++) {
const conv = allConversations[i];
const title = conv.title || 'Untitled';
log(`[${i + 1}/${allConversations.length}] Fetching: ${title}`);
try {
const detail = await apiFetch(`https://chatgpt.com/backend-api/conversation/${conv.id}`);
const messages = extractMessages(detail.mapping || {});
if (messages.length === 0) {
log(` ⚠ No visible messages, skipping`);
failCount++;
continue;
}
const md = conversationToMarkdown(title, messages, {
create_time: conv.create_time,
model: detail.default_model_slug
});
if (DOWNLOAD_INDIVIDUALLY) {
const filename = `${sanitize(title)}.md`;
downloadFile(filename, md);
log(` ✓ Downloaded ${filename} (${messages.length} messages)`);
} else {
allMarkdown += md + '\n\n---\n\n---\n\n';
}
successCount++;
} catch (err) {
log(` ✗ Failed: ${err.message}`);
failCount++;
}
await sleep(DELAY_MS);
}
if (!DOWNLOAD_INDIVIDUALLY && allMarkdown) {
downloadFile('chatgpt-export-all.md', allMarkdown);
}
log(`Done! Exported ${successCount} conversations, ${failCount} failed.`);
alert(`Export complete!\n${successCount} exported, ${failCount} failed.\nCheck your downloads folder.`);
} catch (err) {
log(`Fatal error: ${err.message}`);
console.error(err);
alert(`Export failed: ${err.message}`);
}
})();
🦘 AI & Startup Memes
Share your memes in #random-and-memes and if they’re funny we’ll give you free stuff.
By Ty Coon:















