HackerTrans
TopNewTrendsCommentsPastAskShowJobs

G4Vi

no profile record

Submissions

Text Handling Challenges in MHFS Development

computoid.com
1 points·by G4Vi·10 miesięcy temu·0 comments

"Hackable" Email: Extending Postfix with WASM

getxtp.com
7 points·by G4Vi·2 lata temu·0 comments

Hermit: Actually Portable WASM

dylibso.com
25 points·by G4Vi·3 lata temu·5 comments

Perl Is Actually Portable

computoid.com
5 points·by G4Vi·4 lata temu·0 comments

comments

G4Vi
·14 dni temu·discuss


  Location: New Hampshire
  Remote: Preferred, 3+ years experience fully remote
  Willing to relocate: Yes
  Technologies: C, C++, Rust, Perl, TS/JS, Go, Python, WASM, Linux, Windows, Embedded, HTTP, and more
  Résumé/CV: https://computoid.com/about/GavinAHayes-Resume.html / https://computoid.com/about/GavinAHayes-Resume.pdf
  Email: gavin [at] computoid dawt com
Hi, I'm Gavin. I have 9+ years experience between application and embedded system development for avionics, building WebAssembly tooling, and full-stack SaaS development including backend identity and security work. At home, I've worked on side projects such as making my own HTTP media server/web interface and porting Perl to the Cosmopolitan Libc (featured on HN: https://news.ycombinator.com/item?id=33966755). For my next role, I'm mostly interested in systems/native development, but can be flexible to work in an interesting domain.
G4Vi
·9 miesięcy temu·discuss


  Location: New Hampshire
  Remote: Only (occasional travel okay), 2+ years experience fully remote
  Willing to relocate: Yes
  Technologies: C, C++, Rust, Perl, TS or JS ES6+, Go, Python, WASM, Linux, Windows, Embedded, HTTP, and more
  Résumé/CV: https://computoid.com/about/GavinAHayes-Resume.html / https://computoid.com/about/GavinAHayes-Resume.pdf
  Email: gavin [at] computoid dawt com
Hi, I'm Gavin. Professionally, I have 8+ years experience between application and embedded system development for avionics, building WebAssembly tooling, full-stack SaaS development, and Rust network programming. At home, I've worked on side projects such as making my own HTTP media server/web interface and porting Perl to the Cosmopolitan Libc (featured on HN: https://news.ycombinator.com/item?id=33966755). For my next role, I'm mostly interested in systems/native development, but can be more flexible to work in an interesting domain.
G4Vi
·11 miesięcy temu·discuss


  Location: New Hampshire
  Remote: Only (occasional travel okay), 2+ years experience fully remote
  Willing to relocate: Yes
  Technologies: C, C++, Perl, TS or JS ES6+, Rust, Go, Python, WASM, Linux, Windows, Embedded, HTTP, and more
  Résumé/CV: https://computoid.com/about/GavinAHayes-Resume.html / https://computoid.com/about/GavinAHayes-Resume.pdf
  Email: gavin [at] computoid dawt com
Hi, I'm Gavin. I have 8+ years experience between application and embedded system development for avionics, building WebAssembly tooling, and full-stack SaaS development. At home, I've worked on side projects such as making my own HTTP media server/web interface and porting Perl to the Cosmopolitan Libc (featured on HN: https://news.ycombinator.com/item?id=33966755). For my next role, I'm mostly interested in systems/native development, but can be flexible to work in an interesting domain.
G4Vi
·12 miesięcy temu·discuss
Location: New Hampshire

Remote: Only (happy to come-in or travel occasionally). Worked remote for the last 2+ years.

Willing to relocate: Maybe

Technologies: C, C++, Perl, TS or JS ES6+, Rust, Go, Python, WASM, Linux, Windows, Embedded, HTTP, and more

Résumé/CV: https://computoid.com/about/GavinAHayes-Resume.html

Email: gavin [at] computoid dawt com

Hello, I'm Gavin. I have 8+ years experience between application and embedded system development for avionics, building WebAssembly tooling, and full-stack SaaS development. At home, I've worked on side projects such as making my own HTTP media server/web interface and porting Perl to the Cosmopolitan Libc (featured on HN: https://news.ycombinator.com/item?id=33966755). I am interested in various systems and backend software engineering from native to web to embedded.
G4Vi
·2 lata temu·discuss
On the devx, there's definitely some rough edges around building and using Wasm. My company has been working on a framework to ease integrating Wasm into existing applications. One area it focuses on is providing easy data passing between the host program and the Wasm and vice versa. https://github.com/extism/extism We do not have WASI preview 2 support yet, but are interested in integrating it.
G4Vi
·3 lata temu·discuss
It would be cool to package Wasm for every platform easily. You could make a hermit runner for android that loads the module and wasi configuration from the hermit, but uses its own runtime instead of the one embedded in the hermit.

Excluding the Wasm runtime, the hermit's runner or hermit base is under 400 LOC: https://github.com/dylibso/hermit/blob/1f6f51d0d6b3941c9616f... . Instead of reading the configuration and module from /zip you would use zip decoder on the hermit you want to run.
G4Vi
·3 lata temu·discuss
Location: Not quite Boston (Southern NH, US)

Remote: Only (happy to come-in or travel occasionally)

Willing to relocate: No

Technologies: C, C++, Perl, WASM, Linux, Windows, Embedded, HTTP, and more

Résumé/CV: https://computoid.com/about/GavinAHayes-Resume.html (link to PDF in /about)

Email: gavin [at] computoid dawt com

Website: https://computoid.com

GitHub: https://github.com/G4Vi

Hi, I'm Gavin. For the last 5+ years, I've designed, built, and maintained the software (application and embedded system) for various test and measurement avionics products. At home, I've worked on side projects such as making my own HTTP media server/web interface and porting Perl to the Cosmopolitan Libc (featured on HN: https://news.ycombinator.com/item?id=33966755). I am interested in various systems and backend software engineering from web to embedded.
G4Vi
·3 lata temu·discuss
Location: Not quite Boston (Southern NH, US)

Remote: Only (happy to come-in or travel occasionally)

Willing to relocate: No

Technologies: C, C++, Perl, WASM, Linux, Windows, Embedded, HTTP, and more

Résumé/CV: https://computoid.com/about/GavinAHayes-Resume.html (link to PDF in /about)

Email: gavin [at] computoid dawt com

Website: https://computoid.com

GitHub: https://github.com/G4Vi

Hi, I'm Gavin. For the last 5+ years, I've designed, built, and maintained the software (application and embedded system) for various test and measurement avionics products. At home, I've worked on side projects such as making my own HTTP media server/web interface and porting Perl to the Cosmopolitan Libc (featured on HN: https://news.ycombinator.com/item?id=33966755). I am interested in various systems and backend software engineering from web to embedded.
G4Vi
·3 lata temu·discuss
Location: Not quite Boston (Southern NH, US)

Remote: Only (happy to come-in or travel occasionally)

Willing to relocate: No

Technologies: C, C++, Perl, WASM, Linux, Windows, Embedded, HTTP, and more

Résumé/CV: https://computoid.com/about/GavinAHayes-Resume.html (link to PDF in /about)

Email: gavin [at] computoid dawt com

Website: https://computoid.com

GitHub: https://github.com/G4Vi

Hi, I'm Gavin. For the last 5+ years, I've designed, built, and maintained the software (application and embedded system) for various avionics products. At home, I've worked on side projects such as making my own HTTP media server/web interface and porting Perl to the Cosmopolitan Libc (featured on HN: https://news.ycombinator.com/item?id=33966755). I am interested in various systems and backend software engineering from web to embedded.
G4Vi
·4 lata temu·discuss
It's mostly likely a false positive, but you're welcome to build from source with apperlm. The polygot binary format including the compressed ZIP archive probably sets off the scanners. The official APPerl binaries are compiled and uploaded by Github Actions: https://github.com/G4Vi/Perl-Dist-APPerl/blob/master/.github...

apperlm does not download perl module dependencies right now, but download_package.pl can be used to download dependencies. apperlm mostly just acts as a glorified front-end to Info-ZIP when doing a build of a "nobuild" config (building off of existing apperl)

download_package.pl example https://github.com/G4Vi/MHFS/blob/6db6ad24886ca0ea335a050228...

Edit: You can see what files were packed into it by renaming with .zip extension and opening with Windows Explorer.

Edit 2: "perl_repo_files" just specifies where to copy files to inside of the perl source tree. It is only used if you are building APPerl from source (it is unused if you are building a "nobuild" config). IPC-Open2 should already be bundled in the full perl.com as it's included in the perl5 repo: https://github.com/G4Vi/perl5/tree/cosmo-apperl/ext/IPC-Open...
G4Vi
·4 lata temu·discuss
> HTTP::Daemon, HTTP::Tiny and HTTP::Server::Simple

I haven't tested any. Pure Perl servers should be the easiest to get working. The Cosmopolitan Libc doesn't support fcntl F_SETFL O_NONBLOCK on Windows yet, and so non-blocking / event loop servers may be a no-go for now.

> I will try to release something similar to redbean but based on perl and DBD::SQLite

I'd like to see this.

> Then I might go with MHFS at first

I wouldn't consider MHFS's HTTP server "production ready" and suffers from the above mentioned O_NONBLOCK issue, but I'm curious how it would go.

If you haven't already, feel free to join the Redbean/Cosmopolitan Libc discord to discuss. (There's a link on the APPerl webpage).
G4Vi
·4 lata temu·discuss
Update on the APE Linux kernel support (for fork/ --assimilate)less APE execution. jart informed me: "It's in the process of being emailed out to the kernel developers. I anticipate it'll be merged within the next three months."
G4Vi
·4 lata temu·discuss
I would first create a script that runs a web server that performs as expected (serving files, and handling dynamic functionality in the script or in a perl module, or by paths to cgi scripts as needed). I rolled by own for packing my personal http media server (MHFS), but there's plenty of HTTP servers on CPAN. I'm not sure which one's are best.

Then, I would create a custom build of APPerl using Perl::Dist::APPerl 's apperlm and modifying the apperl-project.json to pack in the script, CPAN modules, cgi files, and the static resources into a APPerl binary. When bundled into APPerl, the script can read the files embedded in APPerl from the /zip path.

Perl::Dist::APPerl (with tutorial on building apps): https://metacpan.org/pod/Perl::Dist::APPerl

MHFS's APPerl packaging config: https://github.com/G4Vi/MHFS/blob/master/apperl/apperl-proje...
G4Vi
·4 lata temu·discuss
APPerl creator here. I appreciate all the feedback and hope it comes in handy.

It's linked from the page, but thought I'd point out if you're curious what went into making APPerl, check out the blogpost (self-plug): https://computoid.com/posts/Perl-is-Actually-Portable.html
G4Vi
·4 lata temu·discuss
I forgot to mention APPerl and StaticPerl have many overlapping use cases, but APPerl is more tailored to application packaging. APPerl is built with a patch to Perl adding argv[0] script execution, allowing the APPerl binary to turn into a binary for any of the embedded scripts, with a rename or symlink rather then needing to pass flags the Perl executable to load modules.
G4Vi
·4 lata temu·discuss
Author here. Nice comparison. By default (and the released) APPerl binaries do not self-modify (they use the non-self modifying ape loader) however on unix-like they install the APE loader to`$HOME/.ape`and use that ELF executable to run the APE. To skip the fork+exec to the ape loader, they can be assimilated with `--assimilate`, that does turn the APE executable into ELF.

There is a kernel patch to add APE (Actually Portable Executable) support to Linux removing the need for the the apeloader or assimilating. I'm not sure what the status is on that.