I'm an amateur hobby programmer, and I'd like to make a library for some Steam APIs like Steamworks or Steam Input. To do that, I'd need to be able to test Steam APIs, but the problem is I do not have the $100 needed to publish a game (where I live it's really a lot of money). In fact, I'm not even planning to publish a game there yet, I just need some way to test Steam APIs to be able to develop for it.
Is there any way to do that? Either officially or unofficially (alternative Steam API-compat
I'm an amateur hobby programmer, and I'd like to make a library for some Steam APIs like Steamworks or Steam Input. To do that, I'd need to be able to test Steam APIs, but the problem is I do not have the $100 needed to publish a game (where I live it's really a lot of money). In fact, I'm not even planning to publish a game there yet, I just need some way to test Steam APIs to be able to develop for it.
Is there any way to do that? Either officially or unofficially (alternative Steam API-compatible servers, for example)
The original version of this post by Benjie Holson was published on Substack here, and includes Benjie’s original comics as part of his series on robots and startups.
I worked on this idea for months before I decided it was a mistake. The second time I heard someone mention it, I thought, “That’s strange, these two groups had the same idea. Maybe I should tell them it didn’t work for us.” The third and fourth time I rolled my eyes and ignored it. The fifth time I heard about a group strugglin
I worked on this idea for months before I decided it was a mistake. The second time I heard someone mention it, I thought, “That’s strange, these two groups had the same idea. Maybe I should tell them it didn’t work for us.” The third and fourth time I rolled my eyes and ignored it. The fifth time I heard about a group struggling with this mistake, I decided it was worth a blog post all on its own. I call this idea “The Mythical Non-Roboticist.”
The Mistake
The idea goes something like this: Programming robots is hard. And there are some people with really arcane skills and PhDs who are really expensive and seem to be required for some reason. Wouldn’t it be nice if we could do robotics without them?
1 What if everyone could do robotics? That would be great, right? We should make a software framework so that non-roboticists can program robots.
This idea is so close to a correct idea that it’s hard to tell why it doesn’t work out. On the surface, it’s not
wrong: All else being equal, it would be good if programming robots was more accessible. The problem is that we don’t have a good recipe for making working robots. So we don’t know how to make that recipe easier to follow. In order to make things simple, people end up removing things that folks might need, because no one knows for sure what’s absolutely required. It’s like saying you want to invent an invisibility cloak and want to be able to make it from materials you can buy from Home Depot. Sure, that would be nice, but if you invented an invisibility cloak that required some mercury and neodymium to manufacture would you toss the recipe?
In robotics, this mistake is based on a very true and very real observation: Programming robots
is super hard. Famously hard. It would be super great if programming robots was easier. The issue is this: Programming robots has two different kinds of hard parts.
Robots are hard because the world is complicated
Moor Studio/Getty Images
The first kind of hard part is that robots deal with the real world, imperfectly sensed and imperfectly actuated. Global mutable state is bad programming style because it’s really hard to deal with, but to robot software the entire physical world is global mutable state, and you only get to unreliably observe it and hope your actions approximate what you wanted to achieve. Getting robotics to work at all is often at the very limit of what a person can reason about, and requires the flexibility to employ whatever heuristic might work for your special problem. This is the
intrinsic complexity of the problem: Robots live in complex worlds, and for every working solution there are millions of solutions that don’t work, and finding the right one is hard, and often very dependent on the task, robot, sensors, and environment.
Folks look at that challenge, see that it is super hard, and decide that, sure, maybe some fancy roboticist could solve it in one particular scenario, but what about “normal” people? “We should make this possible for non-roboticists” they say. I call these users “Mythical Non-Roboticists” because once they are programming a robot, I feel they
become roboticists. Isn’t anyone programming a robot for a purpose a roboticist? Stop gatekeeping, people.
Don’t design for amorphous groups
I call also them “mythical” because usually the “non-roboticist” implied is a vague, amorphous group. Don’t design for amorphous groups. If you can’t name three real people (that you have talked to) that your API is for, then you are designing for an amorphous group and only amorphous people will like your API.
And with this hazy group of users in mind (and seeing how difficult everything is), folks think, “Surely we could make this easier for everyone else by papering over these things with simple APIs?”
No. No you can’t. Stop it.
You can’t paper over intrinsic complexity with simple APIs because
if your APIs are simple they can’t cover the complexity of the problem. You will inevitably end up with a beautiful looking API, with calls like “grasp_object” and “approach_person” which demo nicely in a hackathon kickoff but last about 15 minutes of someone actually trying to get some work done. It will turn out that, for their particular application, “grasp_object()” makes 3 or 4 wrong assumptions about “grasp” and “object” and doesn’t work for them at all.
Your users are just as smart as you
This is made worse by the pervasive assumption that these people are less savvy (read: less intelligent) than the creators of this magical framework.
2 That feeling of superiority will cause the designers to cling desperately to their beautiful, simple “grasp_object()”s and resist adding the knobs and arguments needed to cover more use cases and allow the users to customize what they get.
Ironically this foists a bunch of complexity on to the poor users of the API who have to come up with clever workarounds to get it to work at all.
Moor Studio/Getty Images
The sad, salty, bitter icing on this cake-of-frustration is that, even if done really well, the goal of this kind of framework would be to expand the group of people who can do the work. And to achieve that, it would sacrifice some performance you can only get by super-specializing your solution to your problem. If we lived in a world where expert roboticists could program robots that worked really well, but there was so much demand for robots that there just wasn’t enough time for those folks to do all the programming, this would be a great solution.
3
The obvious truth is that (outside of really constrained environments like manufacturing cells) even the very best collection of real bone-fide, card-carrying roboticists working at the best of their ability struggle to get close to a level of performance that makes the robots commercially viable, even with long timelines and mountains of funding.
4 We don’t have any headroom to sacrifice power and effectiveness for ease.
What problem are we solving?
So should we give up making it easier? Is robotic development available only to a small group of elites with fancy PhDs?
5 No to both! I have worked with tons of undergrad interns who have been completely able to do robotics.6 I myself am mostly self-taught in robot programming.7 While there is a lot of intrinsic complexity in making robots work, I don’t think there is any more than, say, video game development.
In robotics, like in all things, experience helps, some things are teachable, and as you master many areas you can see things start to connect together. These skills are not magical or unique to robotics. We are not as special as we like to think we are.
But what about making programming robots easier? Remember way back at the beginning of the post when I said that there were two different kinds of hard parts? One is the intrinsic complexity of the problem, and that one will be hard no matter what.
8 But the second is the incidental complexity, or as I like to call it, the stupid BS complexity.
Stupid BS Complexity
Robots are asynchronous, distributed, real-time systems with weird hardware. All of that will be hard to configure for stupid BS reasons. Those drivers need to work in the weird flavor of Linux you want for hard real-time for your controls and getting that all set up will be hard for stupid BS reasons. You are abusing Wi-Fi so you can roam seamlessly without interruption but Linux’s Wi-Fi will not want to do that. Your log files are huge and you have to upload them somewhere so they don’t fill up your robot. You’ll need to integrate with some cloud something or other and deal with its stupid BS.
9
Moor Studio/Getty Images
There is a ton of crap to deal with before you even get to complexity of dealing with 3D rotation, moving reference frames, time synchronization, messaging protocols. Those things have intrinsic complexity (you have to think about when something was observed and how to reason about it as other things have moved) and stupid BS complexity (There’s a weird bug because someone multiplied two transform matrices in the wrong order and now you’re getting an error message that deep in some protocol a quaternion is not normalized. WTF does that mean?)
10
One of the biggest challenges of robot programming is wading through the sea of stupid BS you need to wrangle in order to
start working on your interesting and challenging robotics problem.
So a simple heuristic to make good APIs is:
Design your APIs for someone as smart as you, but less tolerant of stupid BS.
That feels universal enough that I’m tempted to call it
Holson’s Law of Tolerable API Design.
When you are using tools you’ve made, you know them well enough to know the rough edges and how to avoid them.
But rough edges are things that have to be held in a programmer’s memory while they are using your system. If you insist on making a robotics framework
11, you should strive to make it as powerful as you can with the least amount of stupid BS. Eradicate incidental complexity everywhere you can. You want to make APIs that have maximum flexibility but good defaults. I like python’s default-argument syntax for this because it means you can write APIs that can be used like:
It is possible to have easy things be simple
and allow complex things. And please, please, please don’t make condescending APIs. Thanks!
1. Ironically it is very often the expensive arcane-knowledge-having PhDs who are proposing this.
3. The exception that might prove the rule is things like traditional manufacturing-cell automation. That is a place where the solutions exist, but the limit to expanding is set up cost. I’m not an expert in this domain, but I’d worry that physical installation and safety compliance might still dwarf the software programming cost, though.
4. As I well know from personal experience.
5. Or non-fancy PhDs for that matter?
6. I suspect that many bright highschoolers would also be able to do the work. Though, as Google tends not to hire them, I don’t have good examples.
7. My schooling was in Mechanical Engineering and I never got a PhD, though my ME classwork did include some programming fundamentals.
8. Unless we create effective general purpose AI. It feels weird that I have to add that caveat, but the possibility that it’s actually coming for robotics in my lifetime feels much more possible than it did two years ago.
9. And if you are unlucky, its API was designed by someone who thought they were smarter than their customers.
10. This particular flavor of BS complexity is why I wrote
posetree.py. If you do robotics, you should check it out.
11. Which, judging by the trail of dead robot-framework-companies, is a fraught thing to do.
Category: AnnouncementsMay 1, 2024 Xbox Empowers Asian and Pacific Islander Communities with GameTan and NEEL
Team Xbox
SummaryLearn how Xbox is partnering with GameTan and NEEL.Explore games curated by the Asian and Pacific Islander communities.Discover how the Ramayana inspired the Xbox logo redesign.
The Asian and Pacific Islander commu
Xbox Empowers Asian and Pacific Islander Communities with GameTan and NEEL
Team Xbox
Summary
Learn how Xbox is partnering with GameTan and NEEL.
Explore games curated by the Asian and Pacific Islander communities.
Discover how the Ramayana inspired the Xbox logo redesign.
The Asian and Pacific Islander communities have long been a vibrant and integral part of the global gaming ecosystem. Building upon the foundations laid in the early days of video game development, Xbox is proud to innovate in gaming spaces and champion beloved game titles thanks to the incredible work of developers and artists who identify as part of the Asian and Pacific Islander communities. The rich storytelling traditions, innovative technology, and unique artistic perspectives from these regions continue to enrich the gaming world, offering players a wide array of experiences that challenge, entertain, and inspire.
Developers often draw upon their lived experiences to help inform elements of their games. This is also true for many developers within the Asian and Pacific community, who will sometimes feature traditional folklore, art, and philosophy in games. This not only introduces gamers to new narratives and aesthetics but also promotes a greater understanding and appreciation of these cultures. Moreover, the rise of competitive gaming, or esports, has seen players from these communities rise to the top, showcasing their skills on the world stage and inspiring a new generation of gamers. We are also partnering with two nonprofits who live these values. They share our goal of sharing the joy of play and community across the globe and providing opportunities to students and those interested in the industry to learn and gain experience in the world of esports, technology, and game design.
The contributions of the Asian and Pacific Islander communities are not just limited to content creation. The community is also full of avid gamers, forming a significant portion of the player base and actively participating in online communities. Their feedback and engagement are crucial in shaping the development of games, ensuring they remain relevant and enjoyable for a global audience. Xbox is committed to supporting and celebrating the diversity within our community, recognizing that it is the blend of different cultures and ideas that drives innovation and makes the gaming world so dynamic and exciting. After all, games allow players to feel seen, and can also be a tool for empathy and provide insights into underrepresented communities’ experiences. Here’s how we are supporting Asian and Pacific Islander communities this year:
GIVE
Xbox is Partnering with GameTan and Nevada Esports Education League
This year, Xbox is excited to announce our collaboration with two exceptional nonprofit organizations dedicated to enriching their communities through the power of gaming and esports education. These partnerships are a testament to our commitment to increasing representation and building empathy through the power of play. By working closely with these nonprofits, we aim to create inclusive spaces where the thrill of competition and the spirit of teamwork can thrive through the lens of Asian and Pacific Islander communities.
These nonprofits embody our core mission: to spread the joy of gaming far and wide, and to build strong, supportive networks of gamers within the Asian and Pacific Islander communities. This work is pivotal in unlocking new possibilities, as they expand gaming from mere entertainment into a pathway for educational and professional opportunities. Through these partnerships, we are opening doors to new experiences, empowering individuals with the skills and confidence to explore the dynamic world of esports and gaming, and fostering a community that celebrates underrepresented communities and inclusion. Read more about each organization below:
GameTan (Within HauTutū) – Based in New Zealand, and working within the nonprofit HauTutu, GameTan provides kids the opportunity to learn and step into the world of gaming, esports, and technology. Through various events, and projects, they allow students to step into leadership roles and gain experience at a young age. They also host game clubs where they provide a space for the community to come together through food and video games. These game clubs also allow GameTan to help homeless children get a meal, build community, and also learn about opportunities within the gaming, esports, and tech industries. This year, Xbox will be providing a donation to support GameTan in furthering their mission and programs.
GameTan’s mission has 4 main pillars:
“In order for our kids to change the future, we as teachers must change our approach.”
Me aro ngā kaiako i ngā wawata o ngā tauira, kia mārama ngā tauira i te anamata
Game-Led Learning: Where Fun Meets Future Skills
Ako Ātea : Te tūtakitanga a tākaro me pūkenga ki te anamata
Whānau-Centered Innovation: Tech for All
Te auahatanga o te whānau: Mō te ao katoa te hangarau.
Creating Career Pathways: From Local Talent to Global Leaders
Whaohia te ara ki tua o paerangi: Ngā rangatira o te kainga, Ngā rangatira o te ao
GameTan, where culture meets technology, and innovation knows no bounds. Together, we’re not just playing games; we’re changing the game.
Nevada Esports Education League (NEEL) – The Nevada Esports Education League (NEEL), Nevada’s sole nonprofit dedicated to Esports, pioneers programs for youth focusing on career development, STEM outreach, and community engagement. From organizing charity Twitch streams to volunteering at Esports conventions, and hosting community tournaments and boot camps, NEEL actively engages youth and cultivates inclusive communities, particularly among Asian American Pacific Islander and Native Hawaiian Pacific Islander (AAPINHPI) groups. This year Xbox will be providing a donation that NEEL will leverage to prioritize mental health awareness initiatives tailored for AAPINHPI gamers, champion diversity and inclusion in esports, and celebrate cultural heritage through gaming events. Collaborating with Xbox, NEEL is committed to empowering AAPINHPI youth and fostering positive change within the esports industry, highlighting gaming’s potential as a platform for social impact and community involvement.
Gaming and Impact with Microsoft Rewards
Rewards members in the United States can earn and donate points to organizations supporting Asian and Pacific Islander communities with Xbox. The organizations below will be available on the Rewards hub:
Asian Americans Advancing Justice | AAJC – AAJC works through strategic policy advocacy, active community education, and impactful litigation to advance the civil and human rights of Asian Americans and to build and promote a fair and equitable society for all.
AAPI Equity Alliance– AAPI Equity Alliance (AAPI Equity) is dedicated to improving the lives of Asian Americans and Pacific Islanders through civic engagement, capacity building, and policy advocacy.
Stop AAPI Hate– Stop AAPI Hate advances equity & justice by dismantling systemic racism & building a multiracial movement to end anti-Asian American & Pacific Islander hate through community empowerment, solidarity & advocacy for comprehensive solutions.
Xbox players can earn Rewards points in various ways, such as playing games, completing Game Pass Quests, and purchasing games and other eligible items at the Microsoft Store (exclusions apply). Start earning today and redeem your points for great rewards. Donate your points on the Rewards hub or on the Microsoft Rewards redeem page.
PLAY
Explore Games Curated by Asian and Pacific Islander Communities at Microsoft
Pacific Islander Heritage month featuring water, fire, and two characters from the Ramayana, Sukhrip and Madchanu on a stage with embroidered curtains.
Gaming would not be what it is today without the contributions, perspectives, and influence from Asian and Pacific Islander communities. Here at Xbox, we want to honor this richly diverse set of communities by providing engaging gaming experiences that represent a myriad of histories and heritage.
During May and beyond, check out a variety of game collections that reflect the vast diversity of East Asia, South Asia, Southeast Asia, and the Pacific Islands. These collections showcase creators, lead characters, and games inspired by these cultures. Available on the Microsoft Stores on Xbox and Windows, check out the collections of East, South, and Southeast Asian Community Games and Pacific Islander and Indigenous Community Games. These collections will exist year-round as part of our ongoing work to create more inclusive gaming ecosystems and elevate content that resonates with communities.
Eiyuden Chronicle: Hundred Heroes (Available with Xbox Game Pass on Console, PC, and Cloud) – Japanese creators Yoshitaka Murayama and Junko Kawano designed this game to bring players a modern take on a classic JRPG experience. Lead up to 100+ playable characters through a war-torn world with diverse cultures and values that only you can save.
Mineko’s Night Market (Available with Xbox Game Pass on Console, PC, and Cloud) – Play this cozy game as Mineko, a curious girl who has just arrived at her new home on a struggling Japanese-inspired island at the base of Mount Fugu. Mineko’s Night Market celebrates Japanese culture while introducing a heartwarming story about friendship, tradition, and many, many cats. The husband-and-wife team of Meowza Games, Brent and Brandi Kobayashi, incorporated inspiration from Studio Ghibli and the real-life cat island in Aoshima, Japan.
Sword and Fairy: Together Forever (Available with Xbox Game Pass on Console, PC, and Cloud) – Enter a realm based on ancient Chinese mythology and aesthetics in a real-time role-playing adventure from Taiwanese director, Yao Zhuangxian. Command a memorable party of characters, tame spirit creatures, play mini-games, and explore a vast world full of side quests to discover.
Thirsty Suitors (Available with Xbox Game Pass on Console, PC, and Cloud) – A celebration of South Asian identity, Thirsty Suitors is a game about culture, intergenerational trauma, and expressing oneself. Follow Jala Jayaratne, a bisexual daughter of immigrants from India and Sri Lanka, in this story-driven adventure that unfolds through skateboarding, cooking, and turn-based battles against exes. Created by Outerloop Games, a minority–led indie game studio that aims to create accessible games with depth about underrepresented cultures and themes.
Venba (Available with Xbox Game Pass on Console, PC, and Cloud) – Cook delicious South Indian cuisine and experience the journey of an immigrant Tamil family, from lead developer Abhi Swaminathan. Take on the role of a loving mother and restore lost recipes in this narrative cooking simulator about family, love, loss, and exploring new challenges that arise in day-to-day life.
DISCOVER
Discover the Inspiration Behind the Xbox Logo Design
For Asian and Pacific Islander Heritage Month, Xbox commissioned an artist from Thailand to redesign the Xbox logo. The artist was inspired by the Ramayana, an epic tale originally from India and has also influenced other Asian peoples, including those in Thailand, Cambodia, Indonesia, and Laos. In Thailand, the story of the Ramayana is told through Kohn, a traditional Thai dance. Just as players create avatars to assume an identity in a game, Kohn performers wear masks to portray different characters.
The Xbox design features Sukhrip (Sugriva), the son of the sun, and Madchanu, the son of a mermaid. The stage scene focuses on Songkran, the Thai New Year, which is celebrated in April. Traditionally, this celebration includes splashing with water to cool down from the hot sun. In this scene, Madchanu playfully splashes Sukhrip with water, while the Xbox logo represents the vibrant sun, capturing the festive spirit of Songkran.
The stage curtains include embroidered wild orchid flowers in the traditional style of Northern Thailand. The pattern also includes fog and rivers, embodying the beautiful, mountainous landscape of the region.
Xbox Ambassadors Celebrate Asian and Pacific Islander Heritage Month 2024
As part of Xbox’s celebration of Asian and Pacific Islander Heritage Month, we connected with Xbox Ambassadors of Asian and Pacific Islander heritage about their favorite gaming experiences. They shared ways video games can highlight their heritage in positive and authentic ways. Hear more from Xbox Ambassadors in this Asian and Pacific Islander Heritage Month blog.
APIHM Dynamic Background and Wallpaper Available Now
The Asian and Pacific Islander Heritage Month Xbox design is available today as an Xbox wallpaper and dynamic background on console – follow these steps to apply the dynamic background:
Press the Xbox button on your controller to open the guide.
Select Profile & system > Settings > General > Personalization > My background > Dynamic backgrounds.
You can choose between Games, Xbox, or Abstract dynamic backgrounds. Choose the background art that you want with the A button.
While Google actively advocates for the adoption of Rich Communication Services (RCS) messaging as the future of mobile communication, recent reports highlight a seemingly contradictory ...
The post Google Messages App Blocks RCS on Rooted Android Devices appeared first on Gizchina.com.
While Google actively advocates for the adoption of Rich Communication Services (RCS) messaging as the future of mobile communication, recent reports highlight a seemingly contradictory ...
Enlarge (credit: Benj Edwards / Getty Images)
On Tuesday, ChatGPT users began reporting unexpected outputs from OpenAI's AI assistant, flooding the r/ChatGPT Reddit sub with reports of the AI assistant "having a stroke," "going insane," "rambling," and "losing it." OpenAI has acknowledged the problem and is working on a fix, but the experience serves as a high-profile example of how some people perceive malfunctioning large language models, which are designed to mimic humanli
On Tuesday, ChatGPT users began reporting unexpected outputs from OpenAI's AI assistant, flooding the r/ChatGPT Reddit sub with reports of the AI assistant "having a stroke," "going insane," "rambling," and "losing it." OpenAI has acknowledged the problem and is working on a fix, but the experience serves as a high-profile example of how some people perceive malfunctioning large language models, which are designed to mimic humanlike output.
ChatGPT is not alive and does not have a mind to lose, but tugging on human metaphors (called "anthropomorphization") seems to be the easiest way for most people to describe the unexpected outputs they have been seeing from the AI model. They're forced to use those terms because OpenAI doesn't share exactly how ChatGPT works under the hood; the underlying large language models function like a black box.
"It gave me the exact same feeling—like watching someone slowly lose their mind either from psychosis or dementia," wrote a Reddit user named z3ldafitzgerald in response to a post about ChatGPT bugging out. "It’s the first time anything AI related sincerely gave me the creeps."