Hacker News new | past | comments | ask | show | jobs | submit | maxmcd's comments login

This project has a pattern just like that to handle the inbound USPS information:

https://www.val.town/x/geoffreylitt/stevensDemo/code/importe...

I think it would be pretty easy to extend to support other types of inbound email.

Also I work for Val Town, happy to answer any questions.


yeah i actually do handle inbound email! just forgot to include that code in the shared version. the telegram inbound handler shows the rough pattern.

is there a reason you went with telegram and not slack or discord? i was thinking that it could open up a broader channel for communicating with your assistant. i understand you're also just building more of a poc, but curious if you'd thought about that. great work btw :)

Anyone want to hazard a guess about the likelihood of us ever getting high quality versions of these commercials? Are many of these likely lost to time, or is it possible that high quality copies exist somewhere?


In short, it depends on how it was shot. If using analog film, then it's likely a higher quality scan can be made (assuming you can find the footage), but if it's digital sensors that were used, then the quality is what it is.

So for 35mm film which a lot of movies and high-end commercials use, then you can most likely get a good 4K version from that. So if you know how it was shot, you could try to figure out how likely it is :)



It does not seem to speak SQL:

    $ git clone git@github.com:Sahilb315/AtomixDB.git
    Cloning into 'AtomixDB'...
    $ cd AtomixDB/
    $ go run .
    Welcome to AtomixDB
    Available Commands:
      CREATE       - Create a new table
      INSERT       - Add a record to a table
      DELETE       - Delete a record from a table
      GET          - Retrieve a record from a table
      UPDATE       - Update a record in a table
      BEGIN        - Begin new transaction
      COMMIT       - Commit transaction
      ABORT        - Rollback transaction
      EXIT         - Exit the program
    
    > create
    Enter table name: foo
    Enter column names (comma-separated): bar,baz
    Enter column types (comma-separated as numbers): 1,2
    Enter indexes (format: col1+col2,col3, ... or leave empty):
    Table 'foo' created successfully.
    > get
    Enter table name: foo
    
    Select query type:
    1. Index lookup (primary/secondary key)
    2. Range query
    3. Column filter
    Enter choice (1, 2 or 3):

It looks like records are stored in rows: https://github.com/Sahilb315/AtomixDB/blob/64c95afa8e574595c...

I do find the source to be well organized and quite readable. Especially if you runs the commands in the cli and then trace how they are each implemented.


yes man it is currently a sql db, have to work on adding query language thanks for checking it out


There seem to be errors connecting to peers


the real blunder was the networks we relied on along the way


Do you know if it's possible to get this working on macos? I believe Tailscale uses gvisor's tcp/ip lib (as their netstack lib) on macos for certain things.


Does Darwin have network namespaces like the Linux kernel does? I get the impression that's an important component of this approach


Yes, good point, maybe that is the blocker.


No network namespaces, but the various Network Extension APIs might be able to do this, though it's difficult. RocketSim (I'm unaffiliated, just an example) recently added a simulator-specific network throttle (to replace the system-wide Network Link Conditioner Apple ships) using a content filter extension. Even though this is a system-wide API, it seems you can limit its impact to a single app. And it seemed to properly compose with Proxyman and Cloudflare's Warp VPN at the same time, so perhaps it could be a general solution.


Woah, this is super helpful info. Thanks. That sounds like a real possibility for a macOS port actually.


Amazing, such a great use of the gvisor userspace tcp/ip stack!


Yeah learning about gVisor was one of the most fun parts of this project. The gVisor devs are incredibly helpful. If you look through the gvisor-users mailing list you'll see me asking them various questions about this and they really helped out a bunch with some incredibly thorough answers.


Outstanding! Congratulations on writing such a wonderful project!

I have a suggestion regarding the "How It Works" section. When reading it, I initially thought you had implemented your TCP/IP stack from scratch. Later, I discovered through the comments that you're using gVisor. Perhaps you might consider mentioning this explicitly in the documentation?

As an interesting side note, gVisor's netstack is also used in the Tailscale client, enabling features like connecting a machine to multiple tailnets without requiring special privileges.


Only "x/sys/unix" outside of tests/benchmarks

      ~/go/src/github.com/voidDB/voidDB  git:(master)
      $ go run github.com/tailscale/depaware@latest
      github.com/voidDB/voidDB dependencies: (generated by github.com/tailscale/depaware)

            github.com/voidDB/voidDB/common                              from github.com/voidDB/voidDB+
            github.com/voidDB/voidDB/cursor                              from github.com/voidDB/voidDB
            github.com/voidDB/voidDB/free                                from github.com/voidDB/voidDB
            github.com/voidDB/voidDB/node                                from github.com/voidDB/voidDB+
            github.com/voidDB/voidDB/reader                              from github.com/voidDB/voidDB
            golang.org/x/sys/unix                                        from github.com/voidDB/voidDB+
            bytes                                                        from github.com/voidDB/voidDB+
            cmp                                                          from internal/fmtsort+
            encoding/binary                                              from github.com/voidDB/voidDB/common+
            errors                                                       from bytes+
      D    fmt                                                          from golang.org/x/sys/unix
            hash                                                         from github.com/voidDB/voidDB+
            hash/fnv                                                     from github.com/voidDB/voidDB
            io                                                           from bytes+
            io/fs                                                        from internal/filepathlite+
            iter                                                         from reflect+
            math                                                         from encoding/binary+
            math/bits                                                    from golang.org/x/sys/unix+
            os                                                           from fmt+
            path                                                         from io/fs
            reflect                                                      from encoding/binary+
            slices                                                       from encoding/binary+
      LD    sort                                                         from golang.org/x/sys/unix
            strconv                                                      from fmt+
      LD    strings                                                      from golang.org/x/sys/unix
            sync                                                         from encoding/binary+
            sync/atomic                                                  from internal/bisect+
            syscall                                                      from github.com/voidDB/voidDB/cursor+
            time                                                         from github.com/voidDB/voidDB+
            unicode                                                      from bytes+
      W    unicode/utf16                                                from internal/poll+
            unicode/utf8                                                 from bytes+


Thank you for showing substantive evidence in defence of voidDB; it is very vindicating.


It doesn't take much to split your go.mod file require blocks into needed dependencies, and test dependencies, with a few comments explaining the why of each dependency.

Go tooling will preserve your go.mod comments and structure.

You can also consider moving integration tests and benchmarks to another module in the same repo.


Great ideas. I have broken out the tests into their own modules within the same repository. Thanks!


Hey, I worked on this. I am the person who advocated for us not to use git and build our own thing instead. Happy to answer any questions or expound on my hopes and regrets!


Git has the advantage for the user, that there is no lock in effect, how about your approach :)?


Yes we do not have that. Hopefully if you're using Val Town you're getting a lot of out the interface and platform and this is just another api surface. If you want to pull your code and files and run them elsewhere that should be easy. Git sync to and from projects should be straightforward enough to implement (once we ship the public API) and our runtime is easy enough to replicate by running things with Deno directly.

This was definitely an "easier for us to run, good for the product experience" decision. Freedom comes elsewhere :)


This is so awesome. I've wanted something like this where you could visit all scales of the universe from tiny atoms, to the galaxy, to the broader universe. Does something like that exist in some form?


I think https://spaceengine.org/ fills part of your request. I haven't played it but I've watched videos about it and it looks like you can jump anywhere around the observable universe and look at any object you want.


This looks terrific. But it's Windows-only.


I think it's available on Steam which would mean you could theoretically use it on Linux with Steam's Proton compatibility layer.


Can that be tested before purchase?


Steam has a generous return/refund policy [0], so you could buy it, test it, and if it doesn't work request a refund.

[0]: https://store.steampowered.com/steam_refunds/


It worked for me last year, and entertained a few of us for a good while. Been meaning to revisit.

Side note: Elite Dangerous is on offer at the moment and that has been the only thing to give me that unnerving sense of scale you get when travelling between systems.


Tests are usually embarrassingly parallel. Instead of creating one test db (app_test) create many (app_test_0, app_test_1, ...). Run tests in many threads/processes, db per thread.

This works in a lot of cases. In some cases this might not address your bottleneck.

Also someone should write a real, performant, in-memory postgres storage driver. Then we can all be happy (with pg at least).


Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: