Show HN: A star map creation tool with Common Lisp
thestarmaps.com
thestarmaps.com
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.
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.
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.
Are you able to sustain yourself with this app and selling maps?
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 :)
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...
But mostly because Appendix D gives a really succinct description of the language, key functions, all the different parameters to FORMAT and LOOP, and all the different read macros. Never underestimate the value of a good appendix!
Seibel's Practical Common Lisp is a good book, worth reading, but quite lacking in the "practical" aspect, which tends to be implementation-dependent.
I would highly recommend On Lisp once you have gotten the syntax down. I ordered a printed copy of the PDF (legal since PG released it) and have been working through it. On Lisp won’t show you things that are easily done in other languages; its goal is to teach the power of CL. Certainly by the time you’re done you’d be comfortable with many types of macros, closures, the REPL-based workflow, and other strengths if CL, able to find more about how one uses it in practice without much trouble.
Practical Common Lisp teaches the language a bit more by example tasks...
https://lispcookbook.github.io/cl-cookbook/ is of varying quality but might have more of what you are looking for.
Out of curiosity, what do you mean by "modern concurrency"?
Google "Common Lisp Cookbook", it has a chapter that will give you something of a "big picture".
[edit]
CL is in a slightly uncomfortable position here; scheme has first-class continuations, which makes implementing actors and async the sort of thing that could be an undergrad assignment, most other languages have a single source of truth (either with a language committee like C++ or with a one-true-implementation like Python).
cl-async is perfectly good for async.
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.
My recommendation: make it as stupidly easily possible to buy a single map whenever you want, with the option for no account at all (and make it clear you can do that through your website).
I could conceivably see myself using this, the output looks really nice. But as soon as I need to sign up for an account, even if it's free..... ugh :-/
Make it easy for people like me who might be on the fence to give you my money :)
This is common with e-commerce sites. Many don't require you to make an account to add items to your shopping cart or even to check out. But if you want to make an account, they make it super easy prefilling info they already have, and they certainly won't make you lose what's in your cart.
Thank you again.
I think you'll be able to improve your conversion if all your sample images included text describing what the star map is commemorating. Ideally there should be at least one such image on the homepage.
I know this may sound dumb, but before I saw the video, I hadn't considered why I'd want to generate my own star map over just using an existing one someone else had already generated.
Once I saw https://i.imgur.com/IAQUyuN_d.jpg?maxwidth=640&fidelity=medi..., it clicked. Your website has a lot of prose telling me I can pick a star map for a specific place and time, but I skimmed right over that.
Most of your customers are probably going to put commemorative text on the poster/shirt/mug anyway, because star maps don't really stand well on their own IMHO. I doubt many people other than astronomers and star geeks would be able to remember the difference between two night skies commemorating different events particularly if there in the same hemisphere and season.
You might think your customers won't be as thick headed as me, but now that I understand it, I'm seriously considering becoming a customer someday.
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.
You will see the magic when you actually try it. No other language family that I know of (except forth or prolog maybe) can do this. Lisp still has the best macro system of all.
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.
Nowadays the hyperbole does Lisp a disservice.
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)
If you have to work in a large company, you have to deal with other technologies and people you'd normally avoid. That usually necessitates a larger ecosystem.
Also, Quicklisp can be completed with http://ultralisp.org/, a distribution that builds every 5 minutes and to which it is trivial to add a library. There's also Qlot for local dependencies, and more.
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...
I’m not sure what you’re missing about syntax. Indentation by default gives an excellent view of what’s going on, and most editors color important symbols as needed.
I find the lack of syntactic noise makes you focus on the important aspects of the program in the big picture.
It's a bit like bicycle riding or learning to drive a car: while you are starting out and still thinking too much, it feels difficult. Once one has trained enough, one can read Lisp code quite fluently.
But there are pitfalls: the code might need to stay in the typical standard conventions for style. One CAN go in Lisp way be beyond standard code, reprogram the language -> it can get arbitrarily difficult to understand the code and may require learning new ways to program... but there are some expressive languages which have the same problem.
Will you please add this info to the https://github.com/azzamsa/awesome-lisp-companies
?
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.
This is the correct answer.
https://mitpress.mit.edu/sites/default/files/sicp/full-text/...
Yes!
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.