Podchaser Logo
Home
One Hundred Percent Colombian

One Hundred Percent Colombian

Released Tuesday, 17th October 2023
Good episode? Give it some love!
One Hundred Percent Colombian

One Hundred Percent Colombian

One Hundred Percent Colombian

One Hundred Percent Colombian

Tuesday, 17th October 2023
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:03

I'd like to tell you a little story about

0:05

packaging OBS Studio. And

0:08

if you're a very close friend of mine, this

0:10

is not the story where I did some contract

0:12

work where I was paid in one kilo

0:15

of 100% Colombian and

0:17

took it round to Popey's house for processing.

0:19

Are we allowed to talk about that? This

0:24

is an entirely different story. This

0:26

is a story about running OBS

0:29

Studio for Ubuntu on

0:31

NixOS and why this is

0:33

a pretty

0:33

fabulous experience. Right.

0:36

I don't fully understand what you mean by that. So I

0:39

expect I'm about to learn quite a lot. Yes,

0:41

I've learned quite a lot in the last few months

0:43

as well. So we'll start the story here.

0:46

A little background. I used

0:48

to maintain the snap of OBS

0:51

Studio, which is

0:53

still very popular. Some 70,000 people

0:56

are still using it, despite the fact it

0:58

hasn't been updated for over two years.

1:00

I did responsibly step down

1:02

from that, but nobody

1:03

stepped up to take over

1:06

the maintenance of that snap. But

1:09

it was a snap of OBS Studio,

1:11

including a whole plethora

1:13

of plugins that made it a very

1:17

comprehensive tool for doing any kind

1:19

of live streaming

1:20

or screen capture. I

1:23

inherited this from Popey, because Popey

1:26

did the initial hard work of adding

1:28

the OBS browser support

1:30

into the snap of OBS

1:32

Studio, which basically made

1:34

it an extremely usable tool.

1:38

Long story short, due

1:40

to the stupid stuff I do

1:42

in my live streams, the confined

1:45

nature of the snap wasn't working for me

1:47

anymore. So I needed to seek out other options.

1:50

I tried a number of different things, and whilst

1:52

I was still running Ubuntu, I

1:54

started a project called OBS Studio

1:57

Portable, which was an entirely

1:59

new project.

1:59

highly built from source version of OBS

2:03

with all of the plugins

2:05

built in clean containers and

2:07

distributed as a tarball but it was

2:09

enabled in what's called OBS portable

2:12

mode which means you could have multiple versions

2:15

of OBS studio installed

2:17

and running at the same time each with their

2:19

own discrete configuration which

2:22

was useful for me because I often needed

2:24

multiple versions of OBS running. I have

2:26

to say when you said installed you're

2:29

using the little bunny ears because

2:31

it's not installed as

2:33

such it's a tarball you unpack and dump in a folder.

2:35

Yes it's just a folder of all

2:38

of the things that make up OBS studio

2:40

in a directory and it keeps the

2:42

configuration directly adjacent

2:45

to the binary that's in that folder

2:47

so you can have multiple versions with different

2:49

configurations and scenes and all

2:51

the rest of it. Does that mean plunking multiple

2:54

copies of that in different places on your hard

2:56

drive and then whichever one you run it picks up its

2:58

own config right okay I'm

3:00

with you so far. Yep and it's quite

3:03

a niche use case but for example

3:05

sometimes I did like tutorials

3:07

on a live stream of how to configure

3:10

complex things in OBS studio and

3:12

that meant I could stream from one

3:14

copy of OBS and have a

3:17

separate copy which was a blank canvas

3:19

which I could actually use on stream

3:21

to do things with. Anyway

3:24

I now use NixOS so

3:27

some months ago I embarked

3:29

on a journey of bringing

3:32

all of these plugins and what-have-you

3:34

to NixOS which I have

3:36

done I have packaged some two dozen

3:38

OBS studio plugins for NixOS

3:41

and they have landed in Nix packages

3:43

and I've acquired my Nix

3:46

packages maintainer badges as a

3:48

result of that work but there

3:51

are some drawbacks with running OBS

3:53

studio on NixOS which

3:56

means it's not actually ideal

3:58

for what I want to do at the moment. And

4:00

it's one of these situations where if you're like

4:02

a subject matter expert in something,

4:05

you can then see the flaws in where it's

4:07

been maintained by somebody who is

4:09

not or a group of people who are not. So

4:12

some of the issues are OBS

4:15

Studio for this browser

4:17

source integration uses a technology

4:19

called SETH, which is in this

4:22

case the Chromium Embedded Framework,

4:24

which is in simple terms a

4:27

version of the Chromium browser that

4:29

enables you to use web technologies

4:31

inside of OBS Studio.

4:34

But OBS has a very specific ABI

4:37

requirement for the version of SETH it

4:39

supports. Now in Nix packages,

4:41

some clever people have patched OBS

4:45

in order to work with newer versions of SETH,

4:47

but just because it compiles doesn't mean

4:49

that it actually works correctly. So

4:52

a whole bunch of stuff that you need to do

4:54

just doesn't work and in fact will cause OBS

4:57

Studio to segfault. And similarly,

5:00

the higher quality audio

5:02

codecs which are technically linked

5:05

in the Nix packages aren't exposed correctly.

5:08

And there's a bunch of plugins which simply

5:10

do not work or cause OBS

5:12

Studio to segfault. I would hasten to add

5:15

none of the plugins I've added to Nix packages. Of

5:17

course, of course we wouldn't dare to add any of them.

5:20

So I've been on a streaming hiatus

5:23

since about May this year. Is

5:25

that because the package is broken? I've

5:27

been trying to get OBS Studio

5:30

in Nix packages up to where

5:32

I need it to be to support all of the stuff I

5:34

do. And I've upheld

5:36

my end of that, but I've still run into

5:38

a bunch of incompatibilities. And

5:41

the other issue is this, there's new plugins

5:43

coming out for OBS Studio all the time.

5:46

Almost in the last month, there's like four

5:49

or five really interesting plugins being

5:51

released that I'm already using.

5:54

And I'll get on to that in a moment that

5:56

I haven't had time to package in Nix

5:58

packages yet. And also the

6:00

speed of getting my PRs

6:03

merged in Nix packages has been

6:06

quite slow. I'm in a rather privileged

6:08

position that I can speak

6:10

to colleagues at work who have got

6:12

commit access to Nix packages and

6:15

sort of fast track my stuff. But

6:18

I don't like to do that. It's a bit like what

6:20

Mark was talking about a couple of episodes

6:22

ago in Moodle, where there's a whole

6:24

bunch of people that are Nix packages

6:27

maintainers and anyone

6:29

could do this. But because anyone could

6:31

do it, nobody does. It's

6:33

sort of that weird deadlock that happens.

6:36

Reminds me of the patch pilot thing

6:39

that used to happen in Ubuntu where you'd nominate someone

6:41

to do it on a rotor because otherwise

6:44

it falls through the cracks. Absolutely.

6:47

Maybe you need that. Absolutely. And

6:49

so Nix packages doesn't

6:51

have like a traditional maintainer

6:53

ship model over like a

6:56

package or group of packages

6:58

or like a domain like you would find in

7:00

sort of Debian where you've got things broadly

7:03

broken up to special interest

7:05

groups and then within that particular packages

7:08

within that special interest group. So

7:11

enter George Castro, friend of the

7:13

show, and his project

7:16

Universal Blue and the

7:18

ever amazing distro box.

7:21

So what I did is I dusted off the

7:24

OBS studio portable project

7:26

that I have been maintaining for a year

7:29

or so, which is this build of

7:31

OBS built against the Ubuntu.

7:34

And I said to George, hey, George, I've got this

7:36

working inside distro box on Nix

7:38

OS. This is pretty great. I've got access

7:40

to all of the stuff I want. Wait, wait, wait, wait,

7:43

wait.

7:43

You mentioned a bunch of things here. So you're on Nix

7:46

OS

7:47

and then you're running distro box on top of Nix

7:49

OS, which is probably a Nix package for distro

7:51

box. And inside that is

7:54

Ubuntu and inside that is a tarball

7:56

containing OBS

7:59

unpacked. and you just run it in there, right?

8:01

Is that what you're saying? Yes. You

8:03

have unraveled the inception perfectly.

8:06

When we say inside that

8:08

is Ubuntu, how much Ubuntu

8:11

is it? All of Ubuntu. All of

8:13

Ubuntu. So it's running an Ubuntu kernel

8:15

on top of Nix or is it a

8:18

container with some

8:20

Ubuntu packages or how much

8:22

is it? Right, yes indeed. So for

8:24

the uninitiated distro box

8:27

sits on top of either Docker

8:29

or Podman. So it's an

8:31

OCI container that's running

8:34

within distro box. So

8:36

for my initial proof of concept,

8:39

I had just a regular Ubuntu

8:41

container that I stood up inside

8:44

distro box. And then I downloaded

8:47

my tarball, Ovia

8:50

Studio portable, extracted

8:52

it, ran my little script

8:54

which satisfies all of the dependencies.

8:58

And then I ran my Ovia Studio

9:00

portable launcher and

9:03

it appeared and it worked and it was

9:05

all running at full speed. And in fact, you

9:08

can see me in this conversation

9:10

we're happening, not you dear listener, but my

9:13

co-hosts by way of Ovia

9:16

Studio portable running inside Nix OS,

9:18

this composited version of me that you see

9:21

is all running inside that container

9:23

right now. So in

9:25

simple terms, it's a Docker container

9:28

with Ovia Studio inside

9:31

it built for Ubuntu that

9:33

I can run on OBS. But the

9:36

real magic is I've got all

9:38

of the Nvidia hardware acceleration

9:40

working and the AMD

9:42

hardware acceleration working and Intel

9:45

and all of the other bits. Does

9:47

that hardware acceleration get passed through

9:49

from distro box through to the underlying

9:52

OS? Yes, it does. Yeah.

9:55

So Universal Blue has another

9:57

project called I think it's pronounced Bayes.

10:00

which is basically SteamOS

10:03

in a container. So it doesn't

10:05

matter what Linux distro

10:07

you're using, you can use

10:09

their container of Bayesite and

10:12

get this comprehensive

10:15

full SteamOS experience

10:17

entirely isolated inside this

10:19

container, which also updates

10:22

using the traditional sort of container

10:24

primitives. And what I've been able to

10:26

do with George and Kyle,

10:28

who is also instrumental in the Universal

10:31

Blues project, is do the

10:33

same for ABS. So

10:35

they've created inside

10:38

the UBlue OS GitHub organization,

10:41

a whole bunch of CI that ingests

10:44

my Ubuntu build and

10:46

creates this 1.6 gigabyte

10:49

container, which is Ubuntu

10:51

plus ABS studio and all of the gubbins.

10:55

And I can now run ABS studio

10:57

anywhere and so can you. So

11:00

it doesn't matter what Linux distribution

11:02

you're using now, if you're using Debian

11:04

stable and you want a current version

11:07

of ABS studio, you can

11:09

access it this way. If you're running

11:11

Ubuntu 2204 LTS,

11:14

which doesn't have the required libraries

11:17

to unlock some of the new features of ABS

11:19

studio, you can now run

11:21

ABS studio portable from this container,

11:24

because that's built against current Ubuntu

11:26

interim releases with all of the library

11:28

support for all of the current features. It

11:31

also runs on immutable distributions

11:34

such as Nix OS and Fedora Silver

11:36

Blue. So it really doesn't matter where you

11:38

want to run ABS studio

11:40

or SteamOS for that matter, and the whole

11:42

host of other stuff that Universal Blue provides,

11:45

you can run these things anywhere isolated,

11:48

and forever safe. I

11:51

feel like this should have been fixed with Flatback

11:53

and Snap, but it isn't, clearly.

11:56

So I have used the Flatback of OBS

11:58

studio and that's terrific and

12:01

it's the officially endorsed way to

12:03

get OBS Studio for Linux

12:06

from the upstream project. But

12:08

where I struggled is adding

12:10

support for the 50 or so plugins

12:13

that I require to that flat

12:15

pack is hard, read impossible.

12:18

So that

12:20

fell short for me and also these confined

12:23

technologies don't work so

12:25

great for how I would need to use OBS

12:28

Studio because I have all of these integrations

12:30

executing all sorts of arbitrary things

12:32

to control lighting and various

12:35

other peripherals. And

12:37

distrobox, although in a container, runs

12:40

as if it's natively running in your host

12:43

operating system. It opens up all the

12:45

access you need to get to everything.

12:47

So it's a pretty robust solution.

12:50

So I will have links in

12:53

the show notes to Universal

12:55

Blue, Bazeite because they may be interested

12:57

people wanting to play with SteamOS

13:00

in a container and also my

13:03

OBS Studio portable projects.

13:07

Linux Matters is part of the Late Night Linux

13:10

family. If you enjoy the show, please

13:12

consider supporting us and the rest of the Late Night

13:14

Linux team using the PayPal or Patreon

13:16

links at linuxmatters.sh slash

13:19

support. For five dollars a month on Patreon,

13:21

you can enjoy an ad-free feed of our show or for

13:24

ten dollars get access to all the Late Night

13:26

Linux shows ad-free. You can

13:28

get in touch with us via email show

13:31

at linuxmatters.sh or chat

13:33

with other listeners in our Telegram group. All

13:35

the details are at linuxmatters.sh slash

13:37

contact.

13:42

I have been updating Snaps for fun

13:44

and no profit. And how

13:46

much fun exactly? Yeah,

13:49

we'll get to that. It turns out

13:51

I currently have 62 Snaps registered to

13:54

my name in the Snap Store. Is that all

13:56

the Snaps in the Snap Store now? Oh,

13:58

me.

13:59

out there are over 5,000 snaps

14:03

in the snap store. Minus a bunch of test

14:05

snaps, minus some that don't work, and minus

14:07

a few others. So I

14:10

acquired a bunch

14:12

of snaps basically because

14:14

I thought, oh that would be good, I should snap that

14:16

and I snapped it and then I thought, oh that'd

14:18

be good, I'll snap that

14:20

and I've

14:21

eventually got lots of them.

14:23

When I left Canonical I'd kind

14:25

of been burned out by this, especially as I was

14:28

maintaining a whole bunch of my own ones, plus

14:31

some snap crafters ones as well, like

14:33

OBS and Discord and a whole bunch of others.

14:36

So I got a little bit burnt out and I didn't

14:39

rage quit, I stepped down gracefully I think

14:41

because I started a post on the forum and

14:44

saying could I please hand these over to someone and

14:47

basically nobody stood up for

14:49

most of them. I think about half a dozen

14:51

people took them but some

14:54

of them just weren't people interested

14:56

in maintaining them and I kind of

14:58

gave up on them a little bit, I can say I was a bit burnt out

15:00

by the whole thing. So some

15:02

of them I flipped to being private and

15:05

so nobody could install them and

15:07

over time a few people have nudged me and said,

15:09

hey could you update this or could you update that and

15:11

I've I've updated a few and then made

15:13

them public again because nobody else is going to maintain

15:16

them and sometimes I've been contacted

15:18

by upstream developers either

15:20

to say please could you update that or in

15:23

some cases please could you remove it because

15:26

either it doesn't work or it's outdated or

15:29

yeah for whatever reason and obviously I'm going to respect

15:31

the upstream developer when they say could you please remove

15:33

it so I just make it unlisted and stop it building

15:35

and remove all reference to it right.

15:38

But I had a spare weekend

15:40

recently where I thought I'll have a go

15:42

at attacking some of these and see

15:45

if I can get them to the point where they work, are

15:47

up to date and I can make them public so people

15:49

can enjoy these applications. What

15:52

was your turnaround in attitude

15:55

and motivation for doing that? That is a great

15:57

question. A lack

15:59

of hobbies. I'm

16:04

not sure. I think maybe taking

16:06

some time out from it, because there were so many

16:08

of them, and having the

16:11

Snapcrafters ones offloaded back to canonical

16:13

law, the community, meant I didn't have

16:15

to worry about those. And I was reduced

16:17

down to a much smaller subset of the ones I was

16:19

maintaining. So I think, and

16:22

the fact I could just pick them off one at a time, I haven't

16:24

made all of them public, there's a fair number of them

16:26

that are still broken or outdated. But

16:29

I thought I'd mention a few of them. And I wanted to mention

16:31

some of the challenges, and a

16:33

few specific things that made it challenging

16:36

and were part of the reason why I got

16:38

burnt out with it. And I'll come

16:40

to a conclusion at the end. So one of them,

16:43

Bomb Squad, which I

16:45

snapped because that was a game

16:47

that me and my son used to play

16:50

on the oo-ya when that first came

16:52

out. That's where I first saw that game.

16:55

And it was such a good sofa multiplayer

16:58

game. When there was

17:00

a desktop version, I thought I have to snap it. And

17:02

so snapped that, but it was

17:04

broken. So recently, I tried to update

17:07

it, and I had some challenges because

17:09

Bomb Squad packages its own Python

17:12

debug mode runtime thing so you

17:15

can poke at the system with a Python

17:17

command line. And none

17:20

of the versions of Python within the Ubuntu

17:22

repository were compatible

17:24

with it. And so it was a bit difficult to juggle

17:27

getting all the Python libraries running right. And

17:29

then I had a weird challenge in that the audio

17:31

stopped working. And then I had

17:34

a weird problem where the audio wouldn't

17:37

work the first time you launch the game. But

17:40

it would work the second time you launch the game.

17:42

And it was infuriating. If you remove

17:44

the snap, and then reinstall it, and

17:47

then run it, you get no audio, you

17:49

run it again, and it works fine. And

17:51

from that point onwards, it works fine. I

17:53

could not find out why that did not work. So

17:56

I replaced a whole bunch of code. I asked on the forum and

17:58

I got a solution, which was... was replace

18:01

that piece of code with this piece of code and it will work.

18:04

And it was very much like cargo

18:06

cult, copy, paste, pieces

18:08

of code from, you know, another

18:10

thing that works. I don't

18:13

fully understand why the old one didn't work and this

18:15

one does work. And that is a story that happens a

18:17

lot in SnapCraft, I find is

18:19

that there's a snippet of a yaml that

18:22

you see works for someone. And

18:24

so, right, well, I'll use that. And

18:26

I don't know if that's just me. I'm pretty sure

18:28

other people do that as well. Marcy, tell me something

18:31

else, does that. Yeah, yeah, I'm not, yeah,

18:33

for the benefit of the listener, I'm nodding along. Definitely,

18:36

SnapCraft was really born out

18:38

of cargo cult in good reference examples,

18:41

a lot of which Popi and I created when we

18:43

were at Canonical. And some of them don't

18:45

work anymore, yes. I

18:48

also found recently a relatively

18:50

new game. Well, I say

18:53

new, it's called Classic Cube. And

18:55

it's actually a whole cloth implementation

18:57

of Minecraft Classic. And

19:00

so I snapped that or I tried snapping it

19:02

a while ago and I couldn't get it working. And

19:05

I started on this back in June and I gave up. Is

19:07

this actually Minecraft re-implemented

19:10

or just a way to launch

19:12

Classic Minecraft? It's

19:14

a re-implementation. Wow. Yeah.

19:17

And it's fast and

19:19

designed to run on low-end hardware as well.

19:21

And I moved that, I updated

19:23

it to build on Ubuntu 2204, so

19:26

Core 22. And I

19:29

had to throw away the i386 builds because we don't

19:31

support that anymore, which is a bit of a shame. And

19:33

I had to do some real nonsense with the graphics

19:36

card because it worked

19:38

on my machine here, which is an Nvidia

19:40

card. And you would think that Snap

19:43

should just work on any machine. What it works on one

19:45

machine, it should work on any machine because they're all isolated,

19:47

right? Well, that's wrong. So it works

19:50

on my Nvidia. Perversely, it worked

19:52

on the proprietary driver but wouldn't work on

19:54

an Intel or AMD machine, which

19:56

was infuriating. And the

19:59

solution, I think, found in the Ubuntu

20:01

discourse. Now on the Snapcraft Forum there

20:03

was a document, a thread that was started by

20:05

one of the Snap developers, one of the maintainers,

20:08

that was documentation. But it was in the Ubuntu

20:10

Forum which I found really super weird. Why is it

20:13

there? Why are they not putting it in the Snapcraft Forum

20:15

or in the documentation? I don't understand.

20:17

But I found it and Cargo

20:20

Cult copy pasted it into my Snap

20:23

and it worked. So now I've got

20:25

Classic Cube works. So

20:27

that's another one that's now public and that works fine.

20:30

Another one that I've got is called B2 which

20:33

is a BBC Micro emulator. And

20:36

I was motivated to update that one because

20:39

I recently wrote a blog post about when

20:41

I wrote a virus for the BBC Micro many

20:44

years ago. So I was motivated to get the emulator

20:46

running so I could get screenshots and

20:49

I updated the Snap so that I could

20:51

take a screenshot for a blog post. And

20:54

so that Snap is now public. That's great.

20:56

That had similar problems as Classic Cube. It works on

20:58

some GPUs but not others. So I

21:00

copied and pasted the code from Classic Cube

21:03

to B2. Now it works.

21:05

I remember when we were working

21:07

on Snaps way back, that

21:10

multi GPU support

21:12

thing. It's very familiar

21:14

to me. It's nice to see that the

21:16

solution these days is a bit more

21:18

elegant in that Canonical

21:20

have now created what are called content

21:22

Snaps of the different graphical

21:25

driver stacks that

21:27

you can pull in as a sort

21:29

of a framework that you sit

21:31

on top of which once you

21:34

know that this is the new pattern makes

21:36

all of these problems go away. Yes. But

21:38

the problem is if you built your Snap on

21:41

Core 18, so up until 1804 and then you move it to 2004,

21:44

you have to update some libraries and

21:46

bits and bobs. And then when you update to

21:48

Core 22, it's

21:50

not just a bunch of libraries that change like the version

21:53

of, I don't know, libpango

21:55

or lib whatever changes.

21:59

There's also... Entire structural changes

22:01

to your YAML that make it quite

22:03

different. And I think what's missing

22:05

is these migration guides from

22:08

core 18 to core 20 and from core 20 to core 22. That's

22:10

what was missing in this whole process for

22:13

me anyway. And another one

22:15

was Session Desktop. Have you ever

22:18

heard of Session Desktop? Yes, no. It's

22:20

a crypto nonsense chat client

22:23

and it's built upon

22:25

the code for Signal Desktop. It's

22:28

called Session Desktop and it's crypto chat stuff.

22:31

I'm hand waving that away. And

22:33

I bumped that to core 20 because

22:35

it just stopped building one

22:37

day and I couldn't figure out what it was. And

22:40

it turns out that the upstream was

22:42

building one of their components using

22:44

GitHub Actions and GitHub

22:46

had moved their GitHub Actions bots

22:49

from Ubuntu 18.04 to Ubuntu 20.04. Oh

22:52

yes, I remember that happening. So

22:54

one of their components was building

22:57

now in 2004 and thus

22:59

wouldn't work in my 18.04 snap.

23:02

And so all I did was bump that to core 20 and then suddenly

23:04

Session Desktop started working again. So

23:07

I've got that published in public as well. So there's

23:09

still a few slightly broken

23:11

ones. I'm getting there though and I'm

23:13

spending a bit of time in the weekends and sometimes

23:15

in the evenings to try and fix these and update

23:18

them. And the conclusion I've come

23:20

to is I over

23:22

committed myself and I have all

23:24

these snaps that it's kind

23:26

of painful to maintain. And I've

23:29

learned from Martin the joy that

23:32

is GitHub Actions. So I want to automate

23:34

a lot more of this so I don't have to do stuff

23:36

manually. But what I'd also like to

23:38

see is when you go to the

23:41

Ubuntu Summit, Martin, can you bring up the idea

23:43

of maybe having migration guides and better documentation

23:46

for Snapcraft? Because stumbling

23:48

upon documentation in the wrong

23:50

forum is not the right

23:52

way for us to be documenting,

23:55

I say us, for them to be

23:57

documenting the product.

25:59

I'm going to carry on doing it, but I'm

26:02

probably not going to try and package

26:05

the whole world like I used to.

26:10

Alan, you wrote a blog post not on

26:12

Go about some old phones, didn't you? Yes,

26:16

I did. That got me thinking about

26:18

mobile gaming, because my

26:21

experience of mobile gaming these days is

26:23

that you install a game on Android,

26:26

and it's either some

26:28

sort of malware trying to sniff all of

26:30

the data off your phone, or some

26:32

sort of pay-to-win micro-payment

26:34

scheme. Or both. Or both. And

26:37

they're generally not that fun. But there were gamers

26:39

before this on mobiles, weren't there? There was

26:41

this thing called J2ME. Oh my

26:43

gosh. Which was a mobile, well,

26:46

it wasn't specifically for mobile, but it was the embedded

26:48

version of Java, which before

26:51

we had smartphones, was basically how

26:54

you got apps on a phone. And

26:57

so I thought,

26:58

well, I wonder, I never really played any

27:00

games on my phone back then. I remember

27:03

I installed my first Twitter client that

27:05

I installed back when sort of

27:07

the way to use Twitter on your phone was via SMS,

27:10

was a J2ME app. So I definitely had phones

27:12

that did it. But I don't remember ever playing

27:14

any games. So I went searching

27:17

for whether, firstly, whether

27:19

you could play J2ME games

27:21

on a modern phone. And secondly, if

27:24

there are any decent J2ME games out there.

27:28

And surprisingly, I found the answer to both was

27:30

yes. Oh wow. Yeah.

27:33

So

27:34

on Android, I was looking in the FDroid

27:37

open source app store, and

27:39

there is an app in there called J2ME Loader, which

27:42

you basically give it a JAR file of

27:44

a J2ME app and it launches it and gives

27:46

you a virtual dumb phone

27:49

number pad to control it with. And

27:51

works surprisingly well. You can

27:54

give it different, like, tweet the screen resolution,

27:57

so not all apps expect to run on

27:59

J2ME.

29:59

of all, here's all of the games that were

30:02

written for this platform, whatever, and some

30:04

of them have good information about what resolution

30:06

particular J2ME games were designed to run

30:09

at. So that's useful in configuring

30:11

J2ME Loader. But

30:13

yeah, once I was disappointed with all these Elder Scrolls games,

30:16

I just sort of started having a look around

30:18

for what else was available. And did

30:21

you know that

30:22

there were two Doom RPG games?

30:25

I was not aware of that. No,

30:27

just two. I'm shocked. They

30:29

were released shortly after Doom 3

30:32

was released for the PC. And

30:34

they are sort of the old style graphics

30:37

of Doom in a turn-based

30:40

dungeon crawler style RPG. Wait,

30:43

the contemporary time of Doom 3

30:45

was J2ME phones. Yes.

30:48

Wow. Mad, isn't it? I

30:50

think we would chalk up episode 14 as

30:54

the timeline for

30:56

Mark is old. This

30:58

is retro gaming for me. These

31:01

weren't actually really good playable games. I

31:03

think they are actually really good playable games. Doom

31:06

RPG, the first one, is a bit on

31:08

the cheesy side, very

31:10

sort of fourth-wall breaking, like nudging

31:13

a wink from the developer that you're playing a game

31:15

kind of thing. But at the same time,

31:17

it's a decent Doom game. You're running around

31:19

picking up weapons, and the combat

31:21

is obviously very different because it's turn-based.

31:23

But there's a decent amount of tactics because

31:26

the closer you are to an enemy, the

31:29

more damage you do, the more likely you are to hit.

31:31

And so it's worth getting close to them, but

31:34

then they're more likely to attack you.

31:36

So you might want to wait in a certain

31:38

position and draw them to you and things like that.

31:41

And yeah, plenty of exploration and finding

31:43

secret rooms, just like in normal Doom. And

31:46

that's really good. But then Doom 2 RPG,

31:48

actually, I was kind of blown away to think

31:51

about that it would run on the kind of devices

31:53

it was meant to because the animation is really

31:55

smooth and you've got sort of pseudo 3D

31:57

effects of it, like warping as you look.

32:00

down at the floor and it's actually

32:03

mightily impressive for the time I have to say.

32:05

Are they colour? Oh, yeah. I've just

32:07

got like Game Boy graphics in

32:10

my mind here at the moment. If

32:12

you just saw a screenshot of it you would say that's

32:15

Doom 2. Right. Java wasn't

32:17

the era of black and white televisions Martin.

32:20

No, but the phones of that era were not

32:22

great. I don't know. Yeah, but they had

32:25

colour screens. We're not talking about the Nokia 3310.

32:28

We're talking about the 6680 and the 6610, that kind of era. Yeah.

32:33

I think just slightly better though. I'll

32:35

tell you what though, some nice additions to the Doom

32:37

universe I have to say are the fire extinguisher

32:40

and the pet dog. I've no idea what that's

32:42

about. So yeah, new weapons you can use.

32:45

You can now wield a fire extinguisher and

32:47

you can capture the demon dogs

32:50

and walk around with them on a leash. Brilliant.

32:54

Have you considered installing any of these on

32:57

your Steam Deck? Ha ha ha ha. Funny

32:59

you should mention that. So yes,

33:01

following our previous discussion about Retro Deck I installed

33:03

Retro Deck and I found there was in fact

33:06

in the ROMS directory a J2ME

33:08

folder. No. No. So

33:10

I thought, ah, excellent. I'll give this a go. So

33:13

I plonked one of the jars in there and launched it.

33:15

It came up in the Retro Deck launcher and I selected

33:18

my game and I got a nice red

33:20

text on grey screen message saying,

33:23

J2ME supported in progress. Please

33:25

try again later. I

33:28

hear that Retro Deck 0.72

33:30

was released just a few days ago. So

33:33

maybe it'll work now. Oh my gosh.

33:35

Watch this space.

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features