top | item 20231328

Show HN: A star map creation tool with Common Lisp

138 points| juanre | 6 years ago |thestarmaps.com | reply

63 comments

order
[+] nabla9|6 years ago|reply
This is a specialized market if anything is.

I can see that it could work beautifully if you can develop a customer base 100-200 customers who sell products based on these maps.

Incidentally this is where I think Common Lisp will win big. Small companies or research groups who keep developing special products and expertise over long time.

[+] tsuru|6 years ago|reply
Are you able to speak a little to the Lisp engineering without giving away "secret sauce"? Is Lisp serving the web pages too or only generating the star maps? Did you use CLOS heavily? MOP? FFI? Anything else "exotic" that I've failed to ask and you can speak about?
[+] juanre|6 years ago|reply
I use some CLOS, but most of it is plain old Lisp trying to avoid side-effects. Deploying is just dumping an SBCL core with the right functionality in it. It lives in a private server inside a VPN, listening to a port. Nothing fancy, really. I did consider at some point serving the web with Lisp as well (https://edicl.github.io/hunchentoot/, because I trust Edi Weitz's code) but I ended up doing it in python.
[+] skosch|6 years ago|reply
I had no idea what this did until I watched the video.

Suggestion: let people play with the map customization tool directly on the landing page, then charge them for changing the date/location and for hi-res exports.

[+] juanre|6 years ago|reply
Hmm, I may explore this idea. Thank you for the feedback. And I am glad I have the video!
[+] juanre|6 years ago|reply
Reading PG's ANSI Common Lisp was a pivotal event on my career as a programmer. I wrote a high-resolution star map generation tool in CL about 14 years ago, and have been working on it and selling the maps it produces for many years.

Now I am moving away from the things I don't do well (ranking in Google and promoting) to what I think I do best (making beautiful maps) with this new site, where I open the engine to people who want to add custom star maps to their own products.

[+] nnq|6 years ago|reply
> PG's ANSI Common Lisp

Would you say PG's ANSI Common Lisp is better or worse (as a zero-to-hero intro to CL for an "experienced" programmer in other languages) than Peter Seibel's Practical Common Lisp?

I'm curious because I'm currently teaching myself CL (slowly, as a leisurely hobby), mainly because I realized that I need a hyper-flexible un-opinionated language in my toolkit for some types of experiments I want to try on and CL seems to fit the job. But I found the "practical" part missing from Practical Common Lisp with the non-plausible problems/examples and also missing stuff about packaging/ecosystem and little on modern concurrency patterns...

[+] vallode|6 years ago|reply
I was slightly confused at first due to the simplified map svgs on the right hand side thinking: "is this all that it generates?"

Looking at your gallery had me very impressed, this is a very cool project and I hope that you get many more people taking a look at it :)

[+] dig1|6 years ago|reply
The site and overall feeling looks clean, focused and built with a lot of love and passion. Kudos! I'd be happy to see more products like this, instead of frequent mishmash where visitor has no idea what it is looking at.

Are you able to sustain yourself with this app and selling maps?

[+] halter73|6 years ago|reply
I have no idea what a free account gets me, but the fact that the lowest "Explorer" tier costs $39/month for 1 map per month causes me to lose interest immediately.

I have two suggestions:

1. Show a bunch of prominent examples of star maps on giftable items like mugs and shirts memorializing various events like a birth or a wedding. The more explicit you are about the stars matching the night sky on the day and place of the event, the better. I could see these making for cool party favors, but I think the concept will go over a lot of people's heads (pun intended) unless it's spelled out for them.

2. Offer a la carte pricing. The couple planning their wedding on a shoestring budget might buy a star map for $40, but starting and cancelling a $40 subscription could be too much of a hassle.

Longer term, I might look into partnering with a company like zazzle.com and integrating into their create-your-own-shirt-or-mug-or-whatever pipeline for a royalty.

[+] juanre|6 years ago|reply
Thank you for the feedback. The key addition that you get with the Explorer is access to bulk prices and bigger maps, but I probably don't say that clearly enough... you can actually buy and make maps with a free account.
[+] juanre|6 years ago|reply
I have just updated the Plans page. I hope with the new changes the pricing is more clear, and also the benefits of subscribing. The rest will take a bit longer...

Thank you again.

[+] tosh|6 years ago|reply
Great feedback. Had similar thoughts.
[+] throwanem|6 years ago|reply
I'd drop the tattoo example on the gallery page. You would have a very difficult time finding an artist who'd even attempt that, much less one who'd do it well - and you'd be wanting to have it covered up inside a decade, most likely, in any case, given the way ink gradually migrates under the skin.
[+] juanre|6 years ago|reply
Point taken, example removed. Thank you for the feedback.
[+] cossatot|6 years ago|reply
This is really cool, and I'm heartened that you've formed a business around this. What kind of projection do you use? DO you select the displayed stars from the zillions in that azimuth by their distance to Earth, or brightness on earth?
[+] juanre|6 years ago|reply
Thanks! It has been an amazing experience, if a bit exhausting (I am a single founder and the only developer). I did it because it was cool, started giving them to friends, and then it became obvious that they were making a very large impact in some people's lives. So I decided to try to reach a larger audience, which had the nice side effect that now I can make a living from it.

I am using the stereographic projection, and I display up to magnitude 7. The conversion from magnitude to diameter is one of the key elements of getting a beautiful result.

[+] umvi|6 years ago|reply
I keep hearing about Common Lisp, but I just don't "get it". Is it really as mind-blowing as people say when you "get it"?
[+] Grue3|6 years ago|reply
It's just fun to program in. You write something, see that your code is getting repetitive, write an elaborate macro that generates the repetitive parts, suddenly your program is 50% shorter. CLOS is ridiculously powerful. I love that I can connect to my live server's REPL and hotswap any code or basically do anything.

Speaking of REPL, it's basically your new shell: you almost never have to restart it and you can load all your projects into it, and get access to all sorts of tools that you wrote specifically to be used from REPL.

[+] edejong|6 years ago|reply
For me the Eureka moment with Common Lisp came when I read 'The Art of the Meta Object Protocol' (Kiczales) [1], which made me rethink OOP, the power of macro's and the power of Lisp.

Lisp is an extremely fundamental and deep language, but although it is conceptually interesting, I find it rather unpractical. A language needs some syntactic structure to help in pattern matching.

We read code more like a map than a book: scanning, skipping between files, functions and expressions. And, like a good map, it should guide our eyes: highways and byways are differently coloured and a quick glance tells us whether we are seeing a forest or a city. Code should be similar and due to the syntax of LISP, we have little to no guidance on what we are scanning, except by manually reading the code.

I don't think Lisp is the only language suffering from this. There are similar problems at the deeper end of the functional programming scene: we have to read map, flatMap, fold, apply, etc. in order to make sense of the code. We cannot 'scan' the code to understand its structure. It does not help that, for a syntax highlighter, these methods all get the same formatting.

The solution? Personally, I think we should seriously consider enhancing our editors to project our code based on the type-classes it participates in to enhance guidance.

[1] https://en.wikipedia.org/wiki/The_Art_of_the_Metaobject_Prot...

[+] ivan4th|6 years ago|reply
If you want to have a thriving community around your software and have bazaar-style development process, you better go with mainstream languages (C, C++, Go, Rust, Python, Java, etc.) The community is a great thing as projects like Linux and Kubernetes can show us. Yet there can be situations where you're the single developer on the project, or there are just 2-3 devoted hackers doing all the coding and for a variety of reasons there are little chances of inviting more people to join (niche projects ... closed projects w/o too much funding ... or maybe you're just not a good community builder). From my experience, Common Lisp with all its power is a perfect language for the latter situation. For me, it's also "thinking" language, as you can do exploratory programming easily compared to other modern languages. Source: I've built a control system for industrial electron accelerators using Common Lisp.
[+] Insanity|6 years ago|reply
I held off learning LISP for many years, always thinking "one day I'll get to it". Because the syntax looked funky (even though I used other languages such as Haskell which has a "non-traditional" syntax).

Eventually I just dove in, and grew to appreciate the language. The homoiconicity (the code is data, and thus data can be used as code) is something that did excite me.

Unfortunately, I never got good with LISP. Whenever I wanted to do a 'real-world' thing, I ended up fighting with the package manager. Having outdated dependencies, not managing my deps correctly or just not finding deps for things that I wanted to use.

Which also deepened my believe that programming is more about the ecosystem than the language. I love functional programming, I really enjoy Haskell and I'll solve small things (Advent of Code) in LISP. But once I need a library I'll use Go, Python or Java, or _any_ other common lang.

I'd recommend learning it though!

EDIT: I just said LISP here, but I always used the CL (Common Lisp) implementation. And I run it with SBCL (Steel Bank Common Lisp)

[+] jarjarbinks455|6 years ago|reply
The secret of lisp is it's an abstract syntax tree (AST). When you compile a C or Java program it is first converted to an AST. With lisp you are already there. It's kind of a big deal and amazing it was invented in the 1950's. It's hard to "get it" without guided hand holding and a lot of deep thinking.

The structured nature of the code allows structured edits. Via tools like lispy. These ideas are floated for other languages but never get implemented due to difficulty and it's not an itch most people have.

Coding is against a live image. This allows really nice workflows. Other language users consider it an anti feature or incorrectly assume that means you can't use source control or do a full rebuild.

There tons of little niceties with lisp that add up to a sum greater than the parts. But the AST is the big one that no one understands.

[+] jim-jim-jim|6 years ago|reply
It's usually the homoiconic syntax that you "get." Your mind is usually blown once you start taking advantage of that.

Keep in mind that this applies to all Lisps--not just Common Lisp. I never even bother with CL myself because I find it ugly and full of cruft. Most Scheme implementations will blow your mind just fine.

[+] varjag|6 years ago|reply
It's a really smooth language with no obvious rough corners in day-to-day use.
[+] aerique|6 years ago|reply
That depends on what other languages you have programmed in. The "get it" and "mind-blowing" hyperbole comes from a time when people had perhaps only programmed in Basic or C. Especially people the latter group would have issues with how easy Lisp makes programming.

Nowadays the hyperbole does Lisp a disservice.

[+] z3phyr|6 years ago|reply
What does "get it" mean? Do you use it?
[+] flavio81|6 years ago|reply
>Is it really as mind-blowing as people say when you "get it"?

Yes!