Deprecated: Return type of Pimple\Container::offsetExists($id) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 133

Deprecated: Return type of Pimple\Container::offsetGet($id) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 98

Deprecated: Return type of Pimple\Container::offsetSet($id, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 79

Deprecated: Return type of Pimple\Container::offsetUnset($id) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/vendor-prod/pimple/pimple/src/Pimple/Container.php on line 143

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/lockout/execute-lock/abstract-context.php on line 60

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/lockout/execute-lock/abstract-context.php on line 66

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/lockout/execute-lock/abstract-context.php on line 72

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/lockout/execute-lock/abstract-context.php on line 76

Deprecated: Return type of iThemesSecurity\Lib\Lockout\Execute_Lock\Context::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/lockout/execute-lock/abstract-context.php on line 56

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/class-itsec-lib-distributed-storage.php on line 578

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/class-itsec-lib-distributed-storage.php on line 585

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/class-itsec-lib-distributed-storage.php on line 606

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/class-itsec-lib-distributed-storage.php on line 613

Deprecated: Return type of ITSEC_Lib_Distributed_Storage_Cursor::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /data01/virt126885/domeenid/www.saksadogi.com/codegurus.eu/wp-content/plugins/ithemes-security-pro/core/lib/class-itsec-lib-distributed-storage.php on line 620
Show HN: Host a planet-scale geocoder for $10/mo - CodeGurus

Show HN: Host a planet-scale geocoder for $10/mo

For the uninitiated, a geocoder is maps-tech jargon for a search engine for addresses and points of interest.

Geocoders are expensive to run. Like, really expensive. Like, $100+/month per instance expensive unless you go for a budget provider. I’ve been poking at this problem for about a month now and I think I’ve come up with something kind of cool. I’m calling it Airmail. Airmail’s unique feature is that it can query against a remote index, e.g. on object storage or on a static site somewhere. This, along with low memory requirements mean it’s about 10x cheaper to run an Airmail instance than anything else in this space that I’m aware of. It does great on 512MB of RAM and doesn’t require any storage other than the root disk and remote index. So storage costs stay fixed as you scale horizontally. Pretty neat.

Demo here: https://airmail.rs/#demo-section

Writeup: https://blog.ellenhp.me/host-a-planet-scale-geocoder-for-10-…

Repository: https://github.com/ellenhp/airmail

Comments URL: https://news.ycombinator.com/item?id=39399064

Points: 1

# Comments: 0


Posted

in

by

Tags:

Comments

Leave a Reply