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