Sr. Content Developer at Microsoft, working remotely in PA, TechBash conference organizer, former Microsoft MVP, Husband, Dad and Geek.
162674 stories
·
33 followers

RNR 375 - RNR Explains: EAS Update

1 Share

Robin and Mazen explain how Expo's EAS Update delivers over-the-air updates to React Native apps. They also cover what you can safely ship, how updates reach users, and why runtime versions and rollbacks matter. A practical guide to mobile development, with tips for a smoother app update experience.

 

Connect With Us!

 

This episode is brought to you by Infinite Red!

Infinite Red is a premier mobile app consultancy, especially focused on Expo and React Native, located fully remote in the US. We’re a team of 30 with highly experienced mobile app developers and have been doing this for over a decade. We are also one of the first development teams to adopt agentic coding in a way that keeps high quality standards and aren’t afraid to do things the old school way if we need to. If you’re looking for mobile app or React Native or Expo expertise for your next project, hit us up at infinite.red/radio.





Download audio: https://cdn.simplecast.com/media/audio/transcoded/1208ee61-9c16-43c1-bc4c-ca790717f4a8/2de31959-5831-476e-8c89-02a2a32885ef/episodes/audio/group/969bacff-4b68-4413-b279-fba737ac08e8/group-item/72637bd5-25aa-4a3c-bbd5-c9a28ea353e0/128_default_tc.mp3?aid=rss_feed&feed=hEI_f9Dx
Read the whole story
alvinashcraft
52 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

IoT Coffee Talk: Episode 334 - "Who is Your Industry Death Star?" (Disruption in Hype's Clothing)

1 Share
From: Iot Coffee Talk
Duration: 1:04:29
Views: 10

Welcome to IoT Coffee Talk, where hype comes to die a terrible death. We have a fireside chat about all things #IoT over a cup of coffee or two with some of the industry's leading business minds, thought leaders and technologists in a totally unscripted, non-AI affected and manipulated, organic format.

This week Devin, Alistair, Andreea, Rob and Leonard jump on Web3 for a discussion about:

🎶 🎙️ BAD KARAOKE! 🎸 🥁 "5150", Van Halen
🐣 (01:39) Welcome back, Andreea!
🐣 (03:10) IBM's greatest invention: the ThinkPad Red Nub!
🐣 (06:11) Circular AI branding nonsense and the AGI, ASI, SSI, TSI debate!
🐣 (08:16) How Rob and Andreea met because of Ericsson and IoT.
🐣 (11:57) How Texas markets itself with country music.
🐣 (15:24) How the Forward Deployed Engineers trend started in a submarine.
🐣 (22:04 NTT Data's Physical AI Summit and AI fatigue.
🐣 (25:09) Why agentic AI working "perfectly" 90 percent of the time is not good!
🐣 (28:30) Birthplace of AI and the AI winters and today's transformer magic!
🐣 (29:32) Physical AI leotards and dolphin shorts!
🐣 (30:22) Facebook whistleblower movie and uncommon privacy knowledge.
🐣 (34:10) Is Meta Muse safe AI and social media slop engine.
🐣 (37:40) Could regulations and sovereignty spur European innovation?
🐣 (41:06) Is Europe the sick man of the Western world or an innovation giant in waiting?
🐣 (43:01) Does SpaceX buying 800MHz spectrum make them the telco Death Star?
🐣 (47:12) Starlink's potential indoors solution and the prospect of telco disruption.
🐣 (50:52) Why Sigfox, LoRa and narrowband for IoT struggled. A retrospective.
🐣 (55:40) T-Mobile, Sprint, WiMax, and the three,... no, two-layer 5G cake!
🐣 (01:00:44) Physical AI and the irony of kinetic tokens.

AI-HALLUCINATED EPISODE SUMMARY: We welcome Andrea back to IoT Coffee Talk and discuss how IoT is being rebranded as “physical AI,” why AI needs real-world data, and the importance of governance and security guardrails for non-deterministic agentic systems, especially in manufacturing. We touch on IBM history (5150 PC) and ThinkPad culture, define AGI/ASI debates, and describe a “physical AI summit” focused on ROI and safety. Alistair mentions launching a new autonomy stack for building simulations from historian data to train and deploy agents, while also sharing frustrations with Copilot reliability. The conversation ranges across tech and telco history—Nextel push-to-talk, WiMAX vs LTE, T-Mobile’s rise, and SpaceX acquiring 800 MHz spectrum—considering what it means for connectivity economics, indoor coverage, and narrowband IoT options like LoRa for smart buildings and cities. We also discuss a new film about a Facebook whistleblower and algorithmic radicalization, and close by promoting Elevate Communities and our show’s mission to incubate forward deployed engineers.

It's a great episode. Grab an extraordinarily expensive latte at your local coffee shop and check out the whole thing. You will get all you need to survive another week in the world of IoT and greater tech!

Tune in! Like! Share! Comment and share your thoughts on IoT Coffee Talk, the greatest weekly assembly of Thinkers 360 and CBT tech and IoT influencers on the planet!!

If you are interested in sponsoring an episode, please contact Stephanie Atkinson at Elevate Communities. Just make a minimally required donation to www.elevatecommunities.org and you can jump on and hang with the gang and amplify your brand on one of the top IoT/Tech podcasts in the known metaverse!!!

Take IoT Coffee Talk on the road with you on your favorite podcast platform. Go to IoT Coffee Talk on Buzzsprout, like, subscribe, and share: https://lnkd.in/gyuhNZ62

Read the whole story
alvinashcraft
52 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

From zero to NanoClaw (Interview)

1 Share

Gavriel Cohen, creator of NanoClaw and co-founder of NanoCo, joins Adam to explain how a 40-hour weekend project became a viral open source hit and the foundation of an enterprise AI company. Gavriel describes the security concerns that led him to build a small, container-isolated alternative to OpenClaw, why he released it under the MIT license, and why the project’s community and credibility are more valuable than keeping its code private.

They explore the shift from writing code to architecting the environments in which agents work, NanoClaw’s “skills over features” approach, the approval and governance layers required inside large companies, and a future where every worker manages agents without surrendering human judgment. They close with the technical simplicity behind NanoClaw, containers, TypeScript, SQLite, and a two-database design, and Adam’s case for durable Agent Flow artifacts that keep organizational context from disappearing into chat.

Join the discussion

Changelog++ members save 9 minutes on this episode because they made the ads disappear. Join today!

Sponsors:

  • Coder.com – Secure environments where devs and agents work in parallel. Open by design. Secure by default.
  • WorkOS – Auth for CLI with AuthKit from WorkOS — Bring secure browser-based login to your terminal apps using the OAuth Device Flow, with the same polished AuthKit experience plus SSO, MFA, and passkeys. Learn more at WorkOS.com and AuthKit.com
  • Buildkite – You deserve better CI. Buildkite is engineered for frontier scale and trusted by the teams setting the pace.
  • Fly.io – The home of Changelog.com — Deploy your apps close to your users — global Anycast load-balancing, zero-configuration private networking, hardware isolation, and instant WireGuard VPN connections. Push-button deployments that scale to thousands of instances. Check out the speedrun to get started in minutes.

Featuring:

Show Notes:

NanoClaw and NanoCo

Agent projects and models

Containers and databases

Something missing or broken? PRs welcome!





Download audio: https://op3.dev/e/https://pscrb.fm/rss/p/https://cdn.changelog.com/uploads/podcast/686/the-changelog-686.mp3
Read the whole story
alvinashcraft
52 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

Episode #66: Find Your Voice, Find Your People

1 Share

"Advice for early career women* 

What does it really take to build a meaningful career - especially when the path isn’t linear?


In this episode, Candace Aku shares the experiences, decisions, and lessons that have shaped her journey across technology, public-sector leadership, and entrepreneurship. She reflects on navigating change, stepping into leadership, and building a career that continues to evolve.


Through candid stories and practical insights, Candace explores what she has learned about influence, resilience, and creating opportunities along the way—and what she hopes other women in STEM can take from her journey.





Download audio: https://dts.podtrac.com/redirect.mp3/media.transistor.fm/a5f07899/b9ae1891.mp3
Read the whole story
alvinashcraft
52 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

229: Forget Networking. Build Your Career Crew.

1 Share

I have over 1,600 contacts in my phone.

The number that turned my career around was one.

Most engineering leaders I coach have plenty of people around them. A boss who rates them well. A spouse who believes in them. A list of contacts from past companies and conferences. And they’re still doing the hardest parts of their career alone.

Here’s the picture that explains why.

Your career is a life raft, and somewhere out there is the land you’re rowing toward. How fast you reach it has almost nothing to do with how hard you paddle. It has everything to do with who else is in the boat, and which way they’re rowing.

Most engineering leaders are stuck in one of four rafts. Empty: you know plenty of people, and none of them are in your boat. Riding: people who care about you, sitting there, not rowing. Resisting: people pulling you back out to sea, toward the complaining and the blaming. Rowing: a crew pulling toward your land.

The third one is the dangerous one, because from inside the boat it feels like support. Nobody in it will ever tell you they don’t want you to succeed. They’re just rowing the other way.

I lived the first three, in order. Valedictorian, full ride to Purdue, leadership track at Whirlpool, and the smartest guy in the room doesn’t ask for help, so I didn’t. Then everyone said “network,” so I optimized for volume: coffee chats, more names in the phone, more weight in the boat, nobody rowing. Then my marriage fell apart, and the people around me were the ones saying the company doesn’t care.

Coming out of my divorce, I hired my first coach. I emptied the boat and said, “You and me. Let’s figure this out.” Later I added mentors, then sponsors, and that’s when my career began to turn around.

Your network cheers for you. Your crew rows.

In this episode I draw all four rafts, walk through the five seats every engineering leader needs filled — peers, breadth builders, mentors, sponsors and a coach — and give you the Career Crew Map to put real names in them.

The Happy Engineer Podcast

LISTEN NOW

Back to ALL EPISODES

 

What You’ll Learn

 

The Four Life Rafts

Empty, Riding, Resisting, Rowing. Most engineering leaders recognize themselves in the first two within a minute. The Riding raft is the sneaky one: a boat full of people who care about you can be harder to row than an empty one, because now there are more relationships to maintain and nobody pulling. That’s why so many leaders quietly stop networking. It feels easier to row alone.

 

Why the Resisting Raft Is the Worst

Nobody in your life is likely to say “I don’t want you to succeed.” But look at who you actually go to for career advice. If they keep pulling you toward a culture of complaining and blaming — the economy, the toxic boss, the company that “doesn’t care” — they’re rowing you back out to sea. Every stroke toward your goal takes twice the energy with them in the boat.

 

The Five Seats Every Engineering Leader Needs Filled

Peers at your level, plus or minus one or two, for knowledge from the trenches. Breadth builders outside your function — product, finance, sales, operations — because director and above means understanding the whole business. Mentors who have walked the road you want to walk and can compress decades into days. Sponsors who say your name in the rooms you’re not in and put their reputation on the line for your readiness. And a coach, whose job is to help you maximize your performance on any path, not just the one they walked.

 

Why “I’m an Introvert” and “It’s Lonely at the Top” Don’t Get You Out of This

Being an introvert isn’t the same as being shy, and introverts are often better at this than extroverts, because the life raft is about a few deep relationships, not a thousand shallow ones. And the higher you go, the more you need a crew, not less. One client became CEO of his own company and assumed it was now on him to have all the answers. He reached out to a former leader he was sure would say no. The answer was an immediate yes.

 

The Career Crew Map

Five steps, done on paper: point to land, take a roll call of the five to seven people you’ve actually talked to about your career in the last 90 days, mark each one’s seat and whether they’re rowing, riding or resisting, name the empty seats, then invite one new rower this week — an advice ask, 10 to 15 minutes, no more. And because rafts get re-crewed every time you change companies, go through a reorg or lose a mentor, it’s a practice, not a project.

 

About Zach White

Zach White is the founder of Oasis of Courage and the host of The Happy Engineer podcast, now in its second season with more than 200 episodes published.

He holds mechanical engineering degrees from Purdue and the University of Michigan and spent his corporate career as an engineering leader at Whirlpool before leaving in 2019 to coach full time. Since then he has coached more than 300 engineering leaders at over 200 companies — big tech to rust belt, and everything in between.

His flagship program, the Lifestyle Engineering Blueprint™, is a 12-week coaching program that helps engineering managers and directors get promoted without handing over their nights and weekends to do it. He also runs an invite-only Mastermind for Blueprint graduates and hosts OACO Live Events around the country.

He built all of it around one belief: you shouldn’t have to sacrifice your life to reach your potential at work.

 

Links & Resources

Free download — The Career Crew Map
See who’s rowing, who’s riding, who’s resisting, and which seats in your career are empty. → Download here

Work with Zach
A 15-minute conversation about where you’re stuck and who you need in the boat to get to the next level. Book a free Career Growth Audit

Watch next

-> coming soon – ep 230
-> coming soon – ep 231

Connect
Follow Zach White on LinkedIn

 

FULL EPISODE TRANSCRIPT:

Please note the full transcript is 90-95% accuracy. Reference the podcast audio to confirm exact quotations.

[00:00:00] I have over 1,600 contacts. But the truth is, you probably don’t need a bigger network. You need a better crew. And I learned that the hard way. I was the 4.0 valedictorian. I got a full ride to Purdue. I landed on the leadership track at Whirlpool Corporation, and I still thought I had to figure everything out alone.

Expand to Read Full Transcript

Eventually, I realized the people around you can accelerate your career and your life, but only when they’re actually in the boat With you. I call this your life raft, and there are 4 situations I see engineering leaders stuck in. So let’s figure out which one you are in, and then I’ll show you the 5 seats that you must fill in your boat so you’re not rowing alone. My goal for you today is that you walk away with specific clarity on what action to take next. To make that easy, there’s a worksheet that you can download in the show description so that you can walk away from this conversation. With a plan. Growing up, your life is more like on a cruise ship. You’re going wherever the boat takes you, you know, and you get to run around and play as a kid on the Lido deck and have a great time, hit the pools, go down the slides. It’s really fun. But at some point, you enter the real world, and the real world is like an ocean that you have to navigate on your own. There’s no more first grade, second grade, third grade, all the way through graduation into college, one semester, a set number of courses. Like, all of our life is laid out for us up until we enter our career.

And then you hit this ocean of decisions and you can go anywhere you want to go. And I think about it, a picture kind of like this, you know, here you are on a life raft and okay, my life raft looks Kind of like a donut. It’s not very pretty, and you got kicked off the cruise ship because you don’t get to just ride on your your parents’ ship anymore or the ship of your college anymore. You’re on your own, and you’ve got to row to what I call Vision Island. You know your goal, the vision that you have for your life. Where is it that you want to reach? And so you get in this life raft and you start rowing, right? But the problem is that it doesn’t really matter how hard you paddle.

By yourself with all of the, the waves and the winds and the tossing and turning of being in that ocean. What really matters, it has everything to do with who else is in the boat with you and which way they’re paddling. And so just ask yourself, you know, if I was out at sea, the sea of my career, and I needed to pick who was in that life raft with me, well, who do I want? And once they’re in the boat, what do I want them to do? And the answer is obvious. You want them rowing towards land, the land that you see, Vision Island. You want them rowing in that same direction. And so the reason networking isn’t just about knowing more people is because you’re not going to put 1,000 people on the life raft. The truth is there’s just a few people who matter the most, and that’s what we want to focus on for you. It’s not about filling your cell phone with 1,000 more contacts at the next conference or beefing up your LinkedIn network to 30,000, the maximum connections you can have.

That’s not the point. It’s about curating those critical few who are going to get in the boat and row with you. So, let’s talk about the 4 situations, the 4 kinds of life rafts that I see with engineering leaders Who I coach. So let’s jump back to my fancy drawing here. And by the way, if you’re just listening to the podcast, you may want to go over to YouTube and you can see how beautiful my life raft drawing is. But the first kind of life raft is what I call the empty life raft. Here’s you. And yeah, you’re rowing. Right towards Vision Island, but you’re in the boat alone. You got a lot of people who you know. There’s plenty of people you’re in relationship with at work, outside of work, in your neighborhood, in your church, in your family, but none of them are actually in your boat. You’ve got an empty life raft. You feel isolated, and isolation is the enemy Of excellence.

So that empty life raft, when people are missing from your career, they’re not supporting you, they’re not sponsoring you, they’re not helping you. That’s the first situation that I see a lot— an empty life raft when people are missing. The second kind of boat is when you’ve got people, so you’re no longer alone, There’s some folks in the boat with you, but they’re not rowing. They’re not rowing. They’re just riding. They’re passengers. They’re in the boat. They love you. They care about you. They want to see you succeed, but they’re not actually contributing to your success. And so in a sense, it actually makes it even harder because now the boat is heavier. There’s more relationships for you to maintain, but those people are not contributing to your success? And I hear this from engineering managers who I coach all the time. Yeah, I’ve got mentors, I’ve got peers, I’ve got a lot of folks I’ve met at different events over the years or from a past company that I worked for. So yeah, my life raft is full, Zach.

But then when you ask the deeper question, you know, how are they supporting you? How are they helping you? What’s the way that you leverage that network to your success? Well, it’s like, well, I’m not really doing that. In fact, It actually feels really hard to maintain my network because I’ve got all these people that I’m trying to stay in touch with and it’s hard to stay in touch. And when they’re not contributing to your success, it makes it even harder to want to invest that time. So the second kind of boat, the first is missing, it’s empty. The second kind of boat that I see a lot is where you’ve just got passengers. People are riding. You don’t want that to be you. If you’re gonna row hard, I can see why people stop networking. It’d be easier to row alone than row with a boat full of people. People who aren’t helping you get to Vision Island. Now, this third kind of boat is more common than you think, and it’s actually the worst.

When you have people in your life raft but they are not rowing the same direction that you are, they are Actually pulling in their own direction. They’re rowing back out to sea. You want to get to land. You’ve got a destination in mind, and there’s people in your life raft who are rowing you back out into the open ocean. That is not okay. And you might think, no, Zach, I don’t have anybody in my life who’s actually going against my goals or actively sabotaging my success. And I would challenge you to look more closely. Are there people in your life raft, people who you spend a lot of time with, who you ask for advice from in creating career success, who are pulling you back into a culture of complaining, a culture of blaming? Maybe they’re always looking at the economy and saying that’s the reason they haven’t gotten their promotion. Maybe they’re looking at that boss or that senior leader who’s created a toxic culture or who has got it out for you.

They don’t want to promote you for some reason. Maybe Maybe it’s ageism, maybe it’s sexism, maybe it’s some other ism. Whatever that is, this person is poisoning your mind and pulling you into a fixed mindset instead of a growth mindset. And those kinds of people may not to your face say, I don’t want to see you succeed, but the direction that they’re rowing is certainly not aligned with the direction you want to go. Every step forward, every Paddle, rowing towards what you want. It takes twice the energy to make progress when you have people like that in your boat. Don’t allow your boat to get filled with people who are resisting the direction that you want to go. The 4th, and of course best type of life raft to have is when people stop being just a part of your network, and they become a part of your crew. They are actually rowing in the direction that you want to go.

So here we are in the ocean of our career, rowing towards Vision Island, and now you have a whole crew full of people who are actively aligned and rowing in support of your vision. These are leaders. Mentors, sponsors, peers, folks around you who are actually aligned with helping you create the success that you want. They’re invested in you. They’re committed to you. You want people who are rowing the same direction. And when you have this, oh, it’s like a whole new experience. Those oars in the water. Creating momentum even when your oar is not in the water. That’s the difference of having a life raft that is full, not just full of people, but full of a crew rowing in the same direction as you. So ask yourself, which of these 4 describes you the best? Is your life raft empty and People are missing? Are people just riding along? Are they actively resisting? Or do you have a life raft that’s full and people rowing? I’ll tell you, in my own career, it began with missing. Like I said, I was the 4.0 valedictorian. I had the full academic ride to Purdue, and I prided myself on being the smartest guy in the room. I had it all going for me. The problem is, when you see yourself as the smartest guy in the room, Well, the smartest guy doesn’t ask for help. You see, I gave all of my life to my career.

I wanted to succeed, but I didn’t want to ask for help because the smart guy figures it out on his own. And that’s what I did. I began in this missing category. That was me. Well, as I pushed for success, I started to see the trend that everybody who was talking about career success was talking about networking, networking, networking. And so I Decided well, I better jump on the networking train too. So I moved from missing and I graduated to riding. I just filled my boat with as many people as I could. I started connecting for networking coffee chats and doing all of those things. But that just added even more weight to a career that was already consuming my life. And then my marriage fell apart, and I ended up divorced, and it totally broke me. And I was super embarrassed because I thought I had this perfect life and this. You know, huge potential to step into. But next thing you know, I’m divorced and depressed and really feeling like this just isn’t working for me. And sure enough, when you end up in that kind of a state, you find yourself surrounding by surrounded by people who really aren’t helping. You know, folks who want to pile on to that sense of pessimism, pile on to the fact that yeah, it just doesn’t work no matter how hard you try career success. You know, the man is out to get you. The company doesn’t care about you, and they’ll take these. half-truths, and they’ll resist your vision and your success.

And I experienced all 3 of those states. But coming out of my divorce is when I hired my first coach. I emptied out my boat and I started paying attention to who was rowing with me. And I, for the first time, got into this 4th category of rowing. I put a coach In my boat. I kicked everyone else out and I said, hey, you and me, let’s figure this out. And that’s when my career began to turn around. Then I added better mentors, I added sponsors, I added the folks who I’ll tell you about in just a moment who supported my success. And that’s when I saw the promotions come easily. That’s when I saw my income increase easily. I had more fun at work than I’d ever had before. More success while working less, and that’s what I want for you too. And that’s why this life raft is so, so important. Now, before I give you the five seats that need filled in your life raft and people start rowing towards land, let me remind you of a couple quick things.

Number one, there’s a prerequisite to this supporting your success, and that is that you actually know. what direction land is in. If you don’t have a clear vision to row towards, if you don’t know what you’re asking for support on, then how can people support you? So if you don’t have that, reach out to me. Let’s talk. You need a clear vision. But I also want to warn you about 2 excuses that come up all the time with engineering leaders from IC to VP. It honestly doesn’t matter what level you’re at. I hear it all the time. 2 excuses that we need to get out of the way before you start taking action. The first excuse is that you’re an introvert. Zach, I’m an engineer, I’m an introvert. I just don’t really like networking or reaching out and asking people for help. That’s just not my personality. Well, I want you to understand that being an introvert is not the same as being shy. And being an introvert does not limit you from being able to build really deep, powerful connections that can support your success. In fact, I have seen that many introverts are even better at this than extroverts because a lot of extroverts have lots of connections at a shallow level, and introverts like to go deep with fewer people. And that’s the whole principle of the life raft. It’s not about having 1,600+ contacts in your cell phone. It’s about having a few people rowing the right direction. Don’t let a personality trait become a limited mindset, a fixed mindset to your success. It’s not. The second thing is a bit more subtle.

The excuse that I’ve heard before is that as you move up the ladder, The old phrase, it’s lonely at the top, will come in. And for some reason, we believe this story that because we’ve been promoted to a high level, now we’re the ones expected to have all the answers. And we stop filling our life raft with the right people who are supporting us because we have this belief that we’re supposed to do it on our own. I have an amazing client named Andy who started his own company. And when Andy was CEO of that organization, he caught himself in this exact pattern of thinking that, well, now I’m CEO, it’s up to me to figure out all the answers. And I challenged him on this, said, Andy, who’s in your life raft? It’s even more important now than ever before as you’re growing your company that we put the right people in the boat. And he found someone who he had worked with in the past, was a leader of his in the past, who he would have loved to have supporting his success in his company. But he was really concerned. He said, Zach, I, I left the company where this leader worked. I left them to go start my own business. And there’s no way that this leader will want to support me because in many ways, like, I made his life difficult by leaving that company. And I said, hey, have you had the conversation?

Have you used the tools and the scripts and the things that I’ve shown you in order to go reach out? And so Andy had the courage to go ask that person, will you mentor us in our company? And guess what happened? This leader said absolutely yes. And any of that perceived bad blood from Andy leaving the prior organization was water under the bridge. Water in the ocean, and Andy was able to fill his life raft with somebody to support him. The same is possible for you. It doesn’t matter if you’re junior or if you are the CEO. Putting the right people in your life raft is non-negotiable. So let’s get clear on who the 5 seats that we need to fill are. Let’s go out and look at our life raft. You are in the life raft, of course, and there are 5 seats we want to fill. The first, I just think of as your peers. Peers. Now, each of these seats, by the way, you can put more than one person in these categories, but let’s at least start with one. Peers are people who are at the same level of the organization as you. So if you’re an engineering manager, these are other peer-level engineering managers.

It could also be people who report To your same leader, even if they’re not at your same level. I like to think of this as same level plus or minus 1 or 2, because we’re looking for knowledge from the trenches, people who have done the job, who know what living this week in your shoes actually feels like, that you can get support from, and of course give support as they’re rowing their own life raft. So the first category is peers, but the second seat is one that I call breadth builders. A breadth builder is a little bit different than a peer to me. And to be fair, you might have a breadth builder reporting to your same leader, so don’t stress about the org chart. But generally, a breadth builder is someone outside your immediate function in the business outside your department, including functions far away from engineering like finance or sales. But for certain, if you are in the deep technical engineering work, getting people on the product side, getting people in project management and operations, understanding what it takes to collaborate across the whole system of the company. Because if you aspire to leading at director, vice president, a C-level role, That means understanding the whole business. That means understanding how your function contributes to the success of the organization.

And so breadth builders are helpful to have in your life raft so that you are not only getting the help you need now to succeed in your existing objectives, but to prepare you for the longer-term future. Now, the next one you’ve all heard of, but you may not be activating The way that you need to, and that’s mentors. Do you have a great mentor? I think of a mentor this way: it’s a person who has walked the road you want to walk. They have the results that you would like to have, and they’re able to now compress decades into days by sharing with you what worked on their path. And what did not work on their path so that you can model and repeat many of the successes that they have accomplished. A mentor has the results that you want. Another key seat that can be shared with mentors, but it’s really important that you distinguish this, is a sponsor. Sponsors, you can have more than one. Most people will have one at a time.

A sponsor is that level of relationship where the person isn’t just sharing with you how they succeeded. They’re not just giving you insights and actions to take to accomplish your goals and reach Vision Island. A sponsor is someone who actually says your name in the room that you’re not in. They go to bat for you. When you’re not there to defend yourself, they will put you in front of the decision-making body, whoever that is, and say, this leader, they’re ready for the next level. I will put my reputation on the line in staking their readiness. I will sponsor them for this role, and I believe they’re the right decision for the hire. If you’ve never had that talk about Wind in the sails of your life raft. It’s like turning your, you know, hand-oared life raft into a sailboat. It is amazing. So building sponsorship, and let me just tell you this, mentorship and sponsorship, these are such important roles for your life raft. I’m going to go ahead and dedicate 2 more episodes of the podcast, one specifically on how to get mentors. And how to leverage that relationship, and another on how to promote somebody in your life to the level of sponsor, how to make that ask, and what do you need to do to be sponsor-worthy.

We’ll talk about that in a future episode, so look forward to it. But who’s the 5th and final? It is your coaches. A coach or multiple coaches. I have multiple coaches. I would encourage you to think about any area of life that you want to reach your full potential, achieve excellence, accelerate results. Get a coach. The best players in every sport have the best coaches and the best career professionals, the best engineering leaders have the best coaches. Now I get asked a lot, what’s the difference between a mentor And a coach? What’s the difference between a great boss who’s supporting your success and a coach? Well, a coach’s role is to help you maximize your performance. They’re there for accountability. They’re there to provide you with systems and strategies and tools. But it’s not about the coach having the same result that you want and giving you the exact advice of how they got it. A great coach can help you walk Any path that you need to walk, but a mentor can only share from their own experience.

Could a mentor be a coach? Of course. Are mentors in your career typically good at coaching? The truth is, in engineering, unfortunately not. There are very few clients I’ve ever worked with who say, yeah, this mentor that I’ve had also serves as a great coach for me. And if for no other reason, it’s that the coach is far more committed in terms of their time and energy to your success because you’ve invested in that relationship heavily to make sure that they do. So make sure that you have all 5 of these seats filled. Who is the peer that’s supporting your success? Who do you have building breadth across the organization and across the industry? What about outside of your company? Breadth builders. Who’s mentoring you? from their success to support yours? Who is sponsoring you for that next step in your career journey? And who is coaching you along the way to ensure that your success hits the peak and the pinnacle of your potential?

These 5 seats are critical. So let’s talk through what you need to do if they’re empty. How do we get them rowing the right direction and the next steps to ensure that your life raft is a huge, asset to your success going forward. And let me remind you, you’ve seen the 5 people you need in your life raft. So now map yours, because it’s really easy to hear this and think, yeah, I’ve, I’ve got people. But it’s different when you have to put the actual names in the seats specifically. So I made you a simple career crew map. It’s a download that will help you see who’s rowing with you, maybe who’s just riding along, who’s even actively resisting you, and which seats are completely empty. So don’t leave this as a good idea. Grab the map from the link in the show description and write in who is in your crew. And If it’s a mentor seat that’s empty, that’s going to be the next episode that I launch in this series. So go check that out. If you’re watching this right as this releases, it’s coming soon. If you’re watching it in the future, don’t worry. I’m going to put the link to that video at the end.

Okay. Back to your career crew map. First thing that you’ll do is point to land. Write in your destination in one sentence. What is the role, the scope, the vision that you’re moving towards? Just put something that captures it for you. By the way, if you don’t have a complete, full written vision for your career and for your life, like I said before, that’s a big gap. But I want you to write that in so we know where we’re rowing to. The second step is for us to count, do a roll call on who’s actually in the boat right now. Again, this is not who’s on your team or who’s in your contacts on your phone or your LinkedIn network. I want you to specifically list the 5 to 7 people who you’ve talked to about your career in the last 90 days. All right, not a casual chit-chat at happy hour, people you’ve actually talked to about your career.

Okay, write those names down. And for those names, mark in which seat do they occupy. Is it a peer, breath builder, mentor, sponsor, or coach? And perhaps more importantly, are they rowing? Are they riding? Or are they resisting? Right? Are they actively supporting your success? Are they helping you get to land? Are they just in the boat, but the truth is it’s more like a venting session every time you’re together and they’re not really adding any value to you getting where you want to go? Or are they actively resisting? You know what? Being around this person actually makes it worse. Be honest and mark the truth about that person. Then step 4, name the empty seats. When you looked at that roster, that roll call of who’s on the boat today, Are any of the seats empty? Are any of these missing completely? You don’t have a coach. You don’t have peers who you could talk to. You don’t have a sponsor. Make a note of which seats are empty. And then step 5, I would encourage you to make a move this week. Don’t delay. Download the Career Crew map, and I’m going to give you some tips on how to do this, but we want to invite— One new rower to join your boat this week. Pick an empty seat, send the message. Let’s begin asking for advice, 10 to 15 minutes, no more, so that we can begin to advance that relationship and get them in our boat. I’ll give you full scripts and more detail in future episodes around mentorship and sponsorship in particular, but whichever seat on the boat is empty for you, I want you to take an action on that this week.

If you’ve got people in your network who are just sitting on the beach watching you row, now’s the time to invite them into the boat with you. I walk through all 5 of these steps in that download, so go grab a copy for yourself and put pen to paper to bring this into an action plan for you. One final thought before you go. This is a practice, not a project. Filling your life raft is a practice. It’s something that you’re going to continue to do as you move through your career, because the waves of the ocean of life are gonna knock some people out, and the direction that you want to row is going to change who you need in. So for example, if you change companies, you’re going to need to put new people in your life raft. For example, if you go through a reorg, you may find yourself needing new people in your life raft. I’ve got a client right now whose mentor just left their organization and now they don’t have access to that person anymore. She needs to put someone new in her life raft. This is a constant practice. It’s not something that you do once and you’re done. So turn this into part of your career building toolkit. And if you Need more than just a life raft. You know, this is one of many things that it takes, especially if you want to succeed at a high level in your engineering career. It’s not a game that you play by yourself, and it’s not a game that only involves your life raft.

There’s more to the story. And if you want to see that complete picture, I will also put a link to our Director Promotion Roadmap, how to begin driving your career into those executive levels. And what it takes as an engineering leader to do that. So if that’s something that you aspire to, then go check out that video. We’ll give you the complete picture of what it takes to succeed at those levels. Let’s get into action. Fill your life raft, row hard towards Vision Island, and I’ll see you there. Let’s do this.

 

Back to ALL EPISODES

The post 229: Forget Networking. Build Your Career Crew. appeared first on OACO.

Read the whole story
alvinashcraft
52 minutes ago
reply
Pennsylvania, USA
Share this story
Delete

From a ZIP Archive to an AI Ingestion Document with C# and MarkItDotNet

1 Share

⚠ This blog post was created with the help of AI tools. Yes, I used a bit of magic from language models to organize my thoughts and automate the boring parts, but the geeky fun and the 🤖 in C# are 100% mine.

Draft for future publication and promotion. The DataIngestion adapter is available as 0.9.3-preview.1. The Markdown and ZIP examples use the current repository source, without assuming those features are already available in a stable release.

Hi!

Converting a PDF to Markdown is great. But when you are preparing documents for an AI pipeline, the next question is: what do I do with that Markdown afterward?

A document is more than a string. It has titles, sections, tables, lists, code examples, and references to its source. Flatten everything too early, and you lose information that could help you decide how to split it, enrich it, or display a citation.

I added three pieces to ElBruno.MarkItDotNet to support that next step: structured Markdown import with Markdig, a ZIP connector that does not extract files to disk, and an optional adapter for Microsoft.Extensions.DataIngestion.

The goal is not to implement an entire AI pipeline in one library. It is to connect its stages well.

First: What Is Available and How to Try It

The ElBruno.MarkItDotNet.DataIngestion adapter targets .NET 8 and .NET 10. Its Microsoft dependency is in preview and stays isolated from CoreModel.

To try the published adapter in a new application:

dotnet new console -n AdapterDemo -f net10.0
Set-Location AdapterDemo
dotnet add package ElBruno.MarkItDotNet.DataIngestion --version 0.9.3-preview.1

This command uses the .NET 10 SDK. The adapter also includes a .NET 8 target. CoreModel comes in as a dependency of the adapter. You do not need to install Microsoft’s full pipeline package to call ToIngestionDocument().

To try all three pieces together, the repository includes a runnable demo that uses project references:

git clone https://github.com/elbruno/ElBruno.MarkItDotNet.git
Set-Location ElBruno.MarkItDotNet
dotnet run --project src\samples\MarkdownIngestionDemo\MarkdownIngestionDemo.csproj --framework net8.0

The demo creates its own test ZIP containing Markdown, JSON, and text, processes the entries, and deletes the temporary archive when it finishes. It does not need AI services, API keys, or private documents.

1. A Minimal Adapter Example Using Only NuGet

Let’s start small: build a document and adapt it.

This complete program can replace Program.cs in AdapterDemo:

using ElBruno.MarkItDotNet.CoreModel;
using ElBruno.MarkItDotNet.DataIngestion;
var model = new Document
{
Id = "release-notes",
Metadata = new DocumentMetadata
{
Title = "Release notes",
SourceFormat = "generated"
},
Sections =
[
new DocumentSection
{
Id = "changes",
Heading = new HeadingBlock
{
Id = "changes-heading",
Text = "Changes",
Level = 2
},
Blocks =
[
new ParagraphBlock
{
Id = "intro",
Text = "Documents now have structure."
}
]
}
]
};
var ingestion = model.ToIngestionDocument();
Console.WriteLine($"Identifier: {ingestion.Identifier}");
foreach (var element in ingestion.EnumerateContent())
{
Console.WriteLine($"{element.GetType().Name}: {element.GetMarkdown()}");
}

The result keeps the document identifier. The title becomes a level 1 header, while the section heading and paragraph become native Microsoft ingestion elements.

There is no hidden LLM call here. No embeddings or automatic indexing. This is a change of representation so that other components can consume the document.

2. Markdown Becomes More Than a String

In the repository demo, this Markdown is our input:

# Deployment guide
## Configuration
Use **environment variables** for configuration.
| Setting | Value |
| --- | --- |
| Mode | Preview |
## Checklist
- [x] Build the application
- [ ] Review the deployment
```csharp
Console.WriteLine("Ready!");
```
> Review before deploying.

The new import API is intentionally small:

using ElBruno.MarkItDotNet.Markdown;
var model = MarkdownDocumentParser.Parse(markdown, "docs/deployment.md");
Console.WriteLine($"Title: {model.Metadata.Title}");
Console.WriteLine($"Format: {model.Metadata.SourceFormat}");
Console.WriteLine($"Document ID: {model.Id}");

Markdig parses CommonMark and its advanced extensions. The parser maps the result to Document, DocumentSection, and CoreModel blocks.

An initial H1 becomes the document title. Other headings form the section hierarchy. Paragraphs, tables, lists, code, and block quotes have their own representations; unsupported block content is retained as raw Markdown.

The existing Markdown converter keeps its behavior: structured import is optional, not a mandatory replacement for Markdown pass-through.

Walk Sections Without Losing Their Hierarchy

Reading only model.Sections is not enough: sections can contain subsections. This helper walks both:

using ElBruno.MarkItDotNet.CoreModel;
static void PrintSections(
IReadOnlyList<DocumentSection> sections,
int depth = 0)
{
foreach (var section in sections)
{
var indent = new string(' ', depth * 2);
Console.WriteLine($"{indent}Section: {section.Heading?.Text ?? "(root)"}");
foreach (var block in section.Blocks)
{
Console.WriteLine($"{indent} {block.GetType().Name}, ID: {block.Id}");
}
PrintSections(section.SubSections, depth + 1);
}
}
// Inside your program:
// PrintSections(model.Sections);

The example input produces ParagraphBlock, TableBlock, ListBlock, CodeBlock, and QuoteBlock instances.

Inspect a Checklist

In our example document, Checklist is a top-level section:

var checklist = model.Sections.Single(
section => section.Heading?.Text == "Checklist");
var tasks = checklist.Blocks.OfType<ListBlock>().Single();
foreach (var item in tasks.Items)
{
Console.WriteLine($"{item.Text}: checked={item.IsChecked}");
}

IsChecked is nullable: true and false represent task items; null identifies an ordinary list item.

3. Save the Structure and Render Markdown Again

Serializing the model to JSON is a useful way to inspect its full structure:

using System.Text.Json;
var json = JsonSerializer.Serialize(
model,
new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);

Blocks use polymorphic discriminators such as $type. The JSON shows which content is a paragraph, a table, or a code block, along with its IDs and source references.

We can also render Markdown again:

using ElBruno.MarkItDotNet.CoreModel;
var rendered = MarkdownRenderer.Render(model);
Console.WriteLine(rendered);

There is an important distinction: OriginalMarkdown retains the syntax of the block, including bold text, links, or code fences. The renderer prioritizes that value when it is present.

This is not a promise of byte-for-byte reproduction of the entire file: spacing between blocks, line endings, and the title may be normalized. Editing Text also does not automatically invalidate OriginalMarkdown.

If I want to replace a parsed paragraph, I make that decision explicit:

var paragraph = model.Sections
.SelectMany(section => section.Blocks)
.OfType<ParagraphBlock>()
.First();
var edited = paragraph with
{
Text = "Use managed configuration for production.",
OriginalMarkdown = null
};
Console.WriteLine(edited.Text);

with creates a new block. To render the updated document, you must include that block in a new section or document. The original block does not change.

4. ZIP as a Document Source, Not a Temporary Folder

A ZIP often arrives as a documentation bundle: guides, notes, JSON files, or reports. The connector exposes its files as SourceDocument instances through IDocumentSource.

using ElBruno.MarkItDotNet.Connectors;
using Microsoft.Extensions.Logging.Abstractions;
var source = new ZipArchiveConnector(
new ZipArchiveConnectorOptions
{
ArchivePath = "documents.zip",
MaxArchiveSizeBytes = 10 * 1024 * 1024,
MaxEntrySizeBytes = 2 * 1024 * 1024,
MaxTotalUncompressedBytes = 20 * 1024 * 1024,
MaxEntries = 100
},
NullLogger<ZipArchiveConnector>.Instance);
using var timeout = new CancellationTokenSource(TimeSpan.FromSeconds(30));
await foreach (var document in source.GetDocumentsAsync(timeout.Token))
{
Console.WriteLine(document.Name);
Console.WriteLine(document.Source);
Console.WriteLine(document.Metadata[SourceMetadataKeys.ArchiveEntryPath]);
await using var content = await document.OpenReadAsync(timeout.Token);
// Consume the stream here, before leaving this iteration.
}

Enumeration discovers the files. OpenReadAsync() opens their content on demand. The returned stream keeps the ZIP archive open until the stream is disposed.

Directory entries are not returned as documents. Entry names serve as references and are not turned into extraction paths.

For applications that use dependency injection:

using ElBruno.MarkItDotNet.Connectors;
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection();
services.AddZipArchiveConnector(options =>
{
options.ArchivePath = "documents.zip";
options.MaxEntries = 100;
options.MaxEntrySizeBytes = 2 * 1024 * 1024;
});
using var provider = services.BuildServiceProvider();
var source = provider.GetRequiredService<IDocumentSource>();

This DI example also requires Microsoft.Extensions.DependencyInjection, the concrete container. The connectors package provides registration extensions and abstractions, not that container.

Limits Matter

OptionDefaultWhat It Controls
MaxArchiveSizeBytes100 MiBCompressed archive size during discovery
MaxEntrySizeBytes25 MiBDeclared entry size and the cap applied during reads
MaxTotalUncompressedBytes250 MiBSum of declared sizes of eligible entries
MaxEntries10,000Entry count, including directories

Entries exceeding the per-entry limit are skipped with a warning. If the archive size, entry count, or eligible total exceeds its limit, the connector rejects the operation.

Reads have an additional per-entry cap. The total limit is not a shared counter across concurrent or repeated reads; it is a discovery-time check based on declared sizes.

This should not be presented as universal protection against malicious ZIP archives. There is no recursive extraction of nested ZIPs, decompression CPU budget, or configurable compression-ratio limit. In production, I would still use concurrency limits, isolation, and application-specific policies for untrusted files.

5. ZIP, Conversion, Parsing, and Adaptation: The Complete Flow

The four stages can be connected without writing intermediate files:

using ElBruno.MarkItDotNet;
using ElBruno.MarkItDotNet.DataIngestion;
using ElBruno.MarkItDotNet.Markdown;
var converter = new MarkdownConverter();
var allowedExtensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
".md", ".txt", ".json"
};
await foreach (var document in source.GetDocumentsAsync(timeout.Token))
{
var extension = Path.GetExtension(document.Name);
if (!allowedExtensions.Contains(extension))
{
Console.WriteLine($"Skipped unsupported document: {document.Name}");
continue;
}
await using var content = await document.OpenReadAsync(timeout.Token);
var convertedMarkdown = await converter.ConvertAsync(
content, extension, timeout.Token);
var structured = MarkdownDocumentParser.Parse(
convertedMarkdown, document.Source);
var ingestionDocument = structured.ToIngestionDocument();
Console.WriteLine(
$"{document.Name}: {ingestionDocument.EnumerateContent().Count()} elements");
}

This snippet reuses source and timeout from the earlier example. The complete program is in the demo.

The allowlist is an application decision. We can extend it to formats supported by registered converters, but a ZIP does not magically make every file inside it compatible.

There is also a traceability detail: sourcePath includes the ZIP archive and entry, but the parser’s offsets refer to the converted Markdown, not equivalent positions in the original PDF or DOCX.

One more distinction: no intermediate files does not mean constant memory usage. The converter produces a string and the parser builds a tree; the ZIP connector avoids extracting every entry to disk.

6. Native Tables, Not Just Text with Pipes

The adapter maps a table to IngestionDocumentTable with a cell matrix:

using Microsoft.Extensions.DataIngestion;
var ingestion = model.ToIngestionDocument();
var table = ingestion.EnumerateContent()
.OfType<IngestionDocumentTable>()
.Single();
Console.WriteLine($"Rows: {table.Cells.GetLength(0)}");
Console.WriteLine($"Columns: {table.Cells.GetLength(1)}");
Console.WriteLine($"Header: {table.Cells[0, 0]?.Text}");
Console.WriteLine($"Value: {table.Cells[1, 1]?.Text}");

For our input, the first row contains Setting and Value; the second contains Mode and Preview.

This makes the structure available to downstream components that need to handle tables differently from paragraphs.

7. IDs and Source References Travel Too

The adapter’s metadata uses the markitdotnet. prefix:

var root = ingestion.Sections.Single();
Console.WriteLine(root.Metadata["markitdotnet.documentId"]);
Console.WriteLine(root.Metadata["markitdotnet.sourceFormat"]);
foreach (var element in ingestion.EnumerateContent())
{
if (element.Metadata.TryGetValue("markitdotnet.blockId", out var blockId))
{
Console.WriteLine($"Block: {blockId}");
}
if (element.Metadata.TryGetValue("markitdotnet.sourceOffset", out var offset))
{
Console.WriteLine($"Markdown offset: {offset}");
}
if (element.Metadata.TryGetValue("markitdotnet.sourcePath", out var path))
{
Console.WriteLine($"Source: {path}");
}
}

Document metadata is stored on the root section. Block references are stored on the corresponding element; PageNumber is also copied when present.

The parser generates a deterministic ID for the same content and source path. That does not mean the ID stays the same after editing the file, moving it, or changing the converted Markdown.

Lists, block quotes, and code blocks do not all have dedicated native equivalents in this adapter: they are represented as paragraphs with Markdown and block-type metadata. The internal hierarchy of a list or quote is not mapped to a hierarchy of Microsoft ingestion elements.

Why an Optional Package?

Because not every consumer needs the same thing.

If I want to convert a file to Markdown, I keep using the main package. If I want to inspect Markdown structure, I use the optional parser. If I want to integrate CoreModel with Microsoft components, I add DataIngestion.

The adapter references Microsoft.Extensions.DataIngestion.Abstractions. It does not parse Markdown again with Microsoft’s reader or force the base library to depend on a preview API.

That gives us a clear boundary of responsibility: MarkItDotNet prepares and represents documents; your application decides how to use them.

Try It and Follow the Project

The complete example for this article is in MarkdownIngestionDemo. You can run it on .NET 8 or .NET 10 by changing --framework.

The Markdown import guide, ZIP connector guide, and adapter guide cover each API separately.

Find the source and packages here:

If you are preparing documents for AI with C#, give the demo a try. Sometimes the most useful next step is not another model call: it is preserving more of the structure your documents already have.

Cheers!

Bruno

Materials for Future Promotion

Short title: Markdown + ZIP + DataIngestion: Structured Documents with C#.

Excerpt: ElBruno.MarkItDotNet adds structured Markdown import, ZIP reading without extraction, and an optional adapter for Microsoft.Extensions.DataIngestion. A runnable C# demo connects all three pieces.

Social post: A document is more than a string. With ElBruno.MarkItDotNet, you can preserve sections, tables, and source references, read ZIP entries without extracting them to disk, and adapt CoreModel to IngestionDocument. The adapter is in preview, and the repo includes a complete demo. Code: https://github.com/elbruno/ElBruno.MarkItDotNet

Images: Original hero and pipeline diagram in PNG, with editable SVG sources in images/. When publishing outside GitHub, upload both images and replace this draft’s relative paths with the blog’s image URLs.

Editorial note: This article was prepared with AI assistance; examples were checked against the repository APIs. Verify the published Markdown and Connectors versions before replacing the source-based setup with NuGet installation instructions.

Happy coding!

Greetings

El Bruno

More posts in my blog ElBruno.com.

More info in https://beacons.ai/elbruno




Read the whole story
alvinashcraft
54 minutes ago
reply
Pennsylvania, USA
Share this story
Delete
Next Page of Stories