[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)