[HN Gopher] Build a PinePhone App with Zig and Zgt ___________________________________________________________________ Build a PinePhone App with Zig and Zgt Author : lupyuen Score : 103 points Date : 2022-06-24 15:03 UTC (7 hours ago) (HTM) web link (lupyuen.github.io) (TXT) w3m dump (lupyuen.github.io) | Stampo00 wrote: | Obligatory disclaimer that I'm not trolling or trying to start a | flame war. | | I have dismissed Zig in the past in favor of Rust. But I've since | found Rust difficult to keep up with since it's developing so | rapidly and I don't use it daily. | | Zig seems like it has similar goals to Rust, but with a gentler | learning curve. I know the Zig community isn't as big as Rust's, | but maybe I wrote off Zig too soon. | | Anyone know of any objective comparisons out there? Is Zig | gaining traction in a similar space to Rust? | melony wrote: | Zig has direct C FFI on the source code level, in some ways it | has access to a much bigger community. | zamadatix wrote: | It's faaaar too early to try to get answers to those kinds of | questions. What Zig's first stable release looks like still | isn't fully defined, what is defined is not expected to be | implemented, and what is implemented is not expected to | necessarily work correctly. Zig is a really interesting project | with a small community trying to make Zig happen but Zig is | not, at this time, something one should be looking to compare | daily usability on. | | I love Zig myself but for these questions I'd say you'd need to | hold off a minimum of 3 more years before you get really | meaningful answers or come to any conclusions. In the meantime | if language development/languages for fun doesn't interest you | I'd probably not bother with Zig in that time. | Stampo00 wrote: | Good analysis! Thanks. | | For context, I was using Rust for hobbyist stuff because I | value provable correctness and I love tools to yell at me if | I try doing something stupid. But Rust moved too fast for me. | Every time I sat down to use it, I spent more time catching | up on the developments I'd missed than actually being | productive. | | I'm choosing instead to learn how to write C in a modern, | sustainable way since at least the ecosystem won't shift from | under me any time soon. | | To be completely clear, I don't hate Rust. I'm not ragging on | it. If I used it in my day job, the experience of keeping up | with it would be a totally different story. But for hobby and | personal stuff, I need something where I can be productive | whenever I find the time to devote to it. | kitd wrote: | There does seem to have been a lot of Zig coverage recently on | HN, and that's by no means a complaint. But I'm not sure that | it quite goes for the same space as Rust. | | I have only really kick the tyres, but it seems to me that Zig | is to C what Rust is to C++, ie they both try to be the next- | gen with better safety and features, but Rust's type modeling | is more extensive than, and can contain complexity better than | Zig, in the same way that C++ OOP is better than raw C. | | Zig has a good future though, and the metaprogramming | facilities are superior to most languages IMO. | chongli wrote: | Complexity and expressivity have a complicated (sorry) | relationship. There are tradeoffs all around. On the one | hand, a more complicated language allows you to express | complicated ideas in a more compact fashion with more help | from the compiler to check that what you're doing is correct. | | On the other hand, a complicated language also encourages you | to use those complicated features to express yourself in more | complicated ways. And this sort of thing, exercised without | restraint, can lead to unreadable code. There is a lot to be | said for a simple language that encourages you to write | simple code and puts an emphasis on readability and | maintainability over sheer power. Is Zig that language? I | don't know, but it seems like it's aiming to be. Only time | will tell whether its big statement, that we should prefer | _comptime_ code over fancy new language features or powerful | macros that let us extend the language in a million ways the | way we did with Lisp. I am interested to see how things | develop! | Schroedingersat wrote: | I'd say power of expression is more closely correlated to | the ability to make the code complicated. Making a large | language is onoy one way to get that power. | | Zig's metaprogramming is not far off being as powerful as | lisp. Of rust and zig, I'd expect zig code to be more | capable of turning into a hot mess more quickly. | | Hopefully its simplicity and the niche it is targetting | will help the community keep it somewhat in check. | avgcorrection wrote: | How funny that you write this comment as if "comptime" is | the thing that is the "simple code" alternative in this | context: most static languages go with the usual angle- | brackets thing for generics, which is fairly declarative | and somewhat limited. Zig however has gone with a more | general approach: use "comptime" functions which take types | as arguments in order to specialize functions. That is way | more fancy. | | You can get away with not writing macros in most languages | that have them. But a lot of static languages makes you use | generics (parametric polymorphism) pretty frequently. And | this two-stage evaluation (something like `funny(@comptime | T: Type, a: T, ...)`) is the simple-code flagship feature, | in your book? | Comevius wrote: | Some people think Rust is the best programming language for | everything from embedded to web browsers, it's sweet spot | however really is replacing C++. | | Zig's sweet spot is C, and it really helps that it was made | to extend C, not completely replace it. | nyberg wrote: | That's just Zig flavoured EEE. | Comevius wrote: | I don't really think that Andrew Kelley and his tiny non- | profit have those kind of ambitions, or really if it | would matter if they would. C is the lingua franca, there | is no extinguishing it. | | These guys genuinely just want to make a practical, | simple, common sense system programming language that | let's you talk to the hardware, the operating system, and | shovel bits around conveniently. | avgcorrection wrote: | Trolling? Language-specific submissions invariably end up as | either metadiscussions about the language or as PL comparison | discussions. You're as on-topic as anyone else here. | lostgame wrote: | Isn't Zig...not really production-ready? I was under the | impression it was still a bit of an experiment. I'm aware of | people using Rust in production on large-scale systems, but not | Zig. | danielEM wrote: | My biggest issue with zig is that it is immature programming | language. Breaking changes can occur at any point and bugs can | be introduced at compilation step. So with a bit of unlucky | your coding experience might end up a hell. | | Not a fan of Rust too though and like the zig idea in general. | Stampo00 wrote: | That's what scared me off from learning Elm. It's mostly a | one-person project. Naturally, it moves really slowly. | Breaking changes can happen with any given release. And the | community of developers is very small. | | It's a shame, too, because there are a lot of really exciting | ideas in the language. But unless you're working at NoRedInk | with the lead developer, you might be better off sticking | with tech that's a little more boring and less cutting edge, | especially if the thing you're using it for is supposed to be | making you money. | A4ET8a8uTh0 wrote: | I feel I should ask and I apologize in advance since its | technically not on subject. I have an older PinePhone community | edition. At the time I received, it was not ready for prime time | ( not very usable as a daily driver ). That was ~2 years now? | | Have things improved? | 3np wrote: | Things have improved a lot. It's night and day compared to 2 | years ago. I have not tried Mobian, but otherwise I found | postmarketOS has been the most robust, reliable, and | unsurprising compared to Manjaro and Arch. | | I say it's at the point where it's worth a reassessment - if | you're the kind of person who gets nostalgic about the first | years of Gentoo, as desktop. It can be worth it to try Plasma, | Phosh and SXMO (Wayland unless you already have an opinion). | | While it lasts multiple days in idle now, I'd get at least one | spare battery for longer outings. | kop316 wrote: | Here is one person's experience with it over the past two | years: | | https://news.ycombinator.com/item?id=31806639 | | I have been using a Librem5 for the past six months full time, | here is my comment on usage from ~week ago: | https://news.ycombinator.com/item?id=31727098 | Arnavion wrote: | https://news.ycombinator.com/item?id=31238398 | aliswe wrote: | I am just thinking can't we use web technologies for this | instead? | opencl wrote: | You can use any technology you want that runs on ARM Linux for | the Pinephone. | | But the hardware is _very_ slow compared to pretty much any | other modern phone, you will struggle to get decent performance | from web technology. | jhgb wrote: | Sciter? | | Of course you can run UIs for Zig programs in Sciter, just | like you can do it for C or C++ programs... | jeroenhd wrote: | You can, the PinePhone is just a Linux device after all. | However, on a slow phone like the PinePhone you'll really | notice the bloat and overhead the web stack adds to your | programs and native tooling is a breath of fresh air. | | I don't understand why you'd want to drag the web into a phone | GUI. | UncleEntity wrote: | > I am just thinking can't we use web technologies for this | instead? | | Please don't... | | Assuming you want to have people download a massive electron | app to look at cat videos. | nim_user2 wrote: | Why not Nim? | kop316 wrote: | Looking through this, I don't see anything that is Pinephone | specific. Building Pinephone apps is just like building for a | Linux distro with a small screen and a modem. | | So I am curious, what about the process was Pinephone specific? | fartcannon wrote: | Isn't that amazing though? | | Turns out those computers in our hands are actually just | regular computers and all those dinks at Apple/Google are | trying to nefariously lock us in! | kop316 wrote: | I'm not disagreeing, I think it is awesome! | | I built several apps that are aimed for Mobile linux, and the | only reason I build them specifically on the Pinephone is | because I need to test it with the modem. | fartcannon wrote: | Awesome! Anything you wanna share? | kop316 wrote: | If you are using a Pinephone and are in the USA, chances | are you are already using (some of) them: | | I wrote mmsd-tng, the backend to giving MMS on the | Pinephone: https://gitlab.com/kop316/mmsd/ | | vvmd/vvmplayer, which enables Visual Voicemail: | https://gitlab.com/kop316/vvmd | https://gitlab.com/kop316/vvmplayer | | And phosh-antispam, which hooks into calls to hang up on | Spammers: https://gitlab.com/kop316/phosh-antispam | fartcannon wrote: | Wow, as a pinephone user, let me just say thanks! | kop316 wrote: | You're welcome! I hope they are useful. | runjake wrote: | The parts about deploying to the PinePhone and VSCode | Remote/debugging to the PinePhone. | | This article is obviously a beginner's tutorial to deploying a | Zig app to the PinePhone. | kop316 wrote: | > The parts about deploying to the PinePhone | | ??? What does "deploy to the Pinephone" mean? Ctrl+F "deploy" | returns nothing. | | AFAIK, It looks like all of the development/coding/compiling | is all done on the Pinephone over SSH, so I am not sure what | makes it Pinephone specific. | | > VSCode Remote/debugging to the PinePhone | | That's just how to use SSH with VSCode? That's not Pinephone | specific. | | > This article is obviously a beginner's tutorial to | deploying a Zig app | | I get that, my point is aside from a small screen and a modem | that can Call/send SMS, there isn't anything special about | developing for the Pinephone vs. an ARM linux distribution. | That's why I was curious. | runjake wrote: | Again, RTFA. | | But I don't think you're actually curious, I think you're | just angry about something, when you should be moving onto | the next post. | kop316 wrote: | No, I was geniunely curious? Not sure why you are | hostile.....but it isn't worth my time to figure out. | UncleEntity wrote: | My guess is they are showing how easy it is to make an | app on the PinePhone. | | Not sure how useful it is to compile on the phone instead | of doing a cross-compile on a "proper" dev box but I | guess to just get up and running it works. | | Makes me want a PinePhone because I have an idea or two | and have no idea how to program a simple app for my | iPhone. I'd probably just use C though because I _gasp_ | like programming in C /simple C++. | kop316 wrote: | > My guess is they are showing how easy it is to make an | app on the PinePhone. | | True, that just isn't specific to Zig, which is why I was | confused. It is neat that building the GUI isn't too | hard, building a GUI in C/GTK involved a lot of | boilerplate and isn't easy to start. | | For GTK: I just end up using this: | https://gitlab.com/sadiq/my-gtemplate/ As my start point. | | > Not sure how useful it is to compile on the phone | instead of doing a cross-compile on a "proper" dev box | but I guess to just get up and running it works. | | That depends. I tend to develop on the phone so I am | aware of the screen size limitation, but you can emulate | that. I also develop on the phone because the apps I make | need access to the Modem (calls/SMS/MMS/VVM) for me test. | I have thought about putting an EG-25 into my laptop to | develop on my laptop, but that's been a low priority | since using the Pinephone is easy enough. | | > Makes me want a PinePhone because I have an idea or two | and have no idea how to program a simple app for my | iPhone. I'd probably just use C though because I gasp | like programming in C/simple C++. | | You should! The community is very friendly and helpful. | All of the programs I developed are in C, so you aren't | alone. | jeroenhd wrote: | I wonder how Zig stacks up against Vala as a GTK programming | language. Both seem to try to be "better C", but the approaches | are completely different. ___________________________________________________________________ (page generated 2022-06-24 23:00 UTC)