AtomVM Documentation Review

Hi folks,

We have been working on some documentation for AtomVM, and we’d be interested in any feedback (positive, negative, constructive). Parts of the documentation are still a work in progress, but I think we have marked them where they are with TODOS.

https://www.atomvm.net/doc/master/index.html

Anyway, if you are interested, please give us a shout on this forum or off-line with suggestions for improvement.

Thanks!

-Fred

14 Likes

It’s nice that you have .pdf and .epub Fred - have you thought about adding .mobi too? When I read the Rails Guides I read them on my Kindle :003: (I’m sure I couldn’t have been the only one!)

2 Likes

I am not really familiar with MOBI or the Amazon ecosystem (though I think of it more as a hegemony).

I looked into using Sphinx to generate .MOBI files, but that research lead me to kindlegen, which appears to be no longer supported by Amazon:

https://www.amazon.com/gp/feature.html?docId=1000765211.

The do have a program called Kindle Previewer, which has a CLI, but it is not supported on Linux or FreeBSD (Windows/Mac only).

They also say:

We recommend using EPUB format for publishing new reflowable titles and updating previously published titles. MOBI should only be used when testing on older devices that do not support Enhanced Typesetting.

Does anyone know much about MOBI, and the best way to generate MOBI files from a Sphinx project without using Amazon tooling?

3 Likes

I just tried ebook.online-convert.com/convert-to-mobi and it seems to have worked… but you never with those services they might do things like insert ads :confused:

I am not familiar with Sphinx, but is this any use?

I am not sure why they are saying that a I tried to send the AtomVM docs to my Kindle and the email was returned saying:

Dear Customer,

The following document, sent at 06:06 PM on Mon, Nov 22, 2021 GMT could not be delivered to the Kindle you specified:

  • AtomVM.epub

The Kindle Personal Document Service can convert and deliver the following types of documents:
Microsoft Word (.doc, .docx)
Rich Text Format (.rtf)
HTML (.htm, .html)
Text (.txt) documents
Archived documents (zip , x-zip) and compressed archived documents
Mobi book

Learn About Sending Documents to Your Kindle Library - Amazon Customer Service

1 Like

I’ve started reading and I’m stuck here: atomvm-features

I’d like to try AtomVM with some exisiting Elixir-code.
And without having a deep insight into Elixir/Erlang its not possible for me to know what parts of Elixir I can use.

I’ve copied Elixir’s hexdocs-menu below.
How can I determine which parts I can use?
Can this always be decided for a whole module or would I have to be more detailed (list all functions also)?
Would it be possible (in finite time) to write a tool, that checks a mix project for non-Atom-features?

Kernel 
Kernel.SpecialForms 

BASIC TYPES
	Atom 
	Base 
	Bitwise 
	Date 
	DateTime 
	Exception 
	Float 
	Function 
	Integer 
	Module 
	NaiveDateTime 
	Record 
	Regex 
	String 
	Time 
	Tuple 
	URI 
	Version 
	Version.Requirement 

COLLECTIONS & ENUMERABLES
	Access 
	Date.Range 
	Enum 
	Keyword 
	List 
	Map 
	MapSet 
	Range 
	Stream 

IO & SYSTEM
	File 
	File.Stat 
	File.Stream 
	IO 
	IO.ANSI 
	IO.Stream 
	OptionParser 
	Path 
	Port 
	StringIO 
	System 

CALENDAR
	Calendar 
	Calendar.ISO 
	Calendar.TimeZoneDatabase 
	Calendar.UTCOnlyTimeZoneDatabase 

PROCESSES & APPLICATIONS
	Agent 
	Application 
	Config 
	Config.Provider 
	Config.Reader 
	DynamicSupervisor 
	GenServer 
	Node 
	Process 
	Registry 
	Supervisor 
	Task 
	Task.Supervisor 

PROTOCOLS
	Collectable 
	Enumerable 
	Inspect 
	Inspect.Algebra 
	Inspect.Opts 
	List.Chars 
	Protocol 
	String.Chars 
	CODE & MACROS
	Code 
	Kernel.ParallelCompiler 
	Macro 
	Macro.Env 
2 Likes

Hi Sebastian,

Thanks for the input. That is very valuable, and we will be sure to highlight specific comments about the difficulty of porting existing code to AtomVM. We do say that it is highly unlikely that existing code will port readily, but perhaps it is not as front and center as it should be.

As far as the specific Elixir support and the modules you mention, I am afraid the news is even worse, and I think it is incumbent on us to point out that large swaths of existing libraries are simply unavailable at present, and that indeed AtomVM is very much a work in progress. For example, you can check here to see the list of current Elixir modules in the system, which of course you can see is quite sparse.

So thanks for raising that.

As far as tooling, yes, I think some of that is do-able, but probably pretty low on the list of priorities.

If you are interested in a more complete implementation of Erlang and Elixir for microcontrollers, I would recommend you look at Peer Stritzinger’s (@peerst) very impressive GriSP project. There is a forum dedicated to it on this web forum, in fact!

4 Likes

OK, I thought with so much already done in Erlang, Elixir would “just work”. :roll_eyes:

I know Grisp. Waiting for the new board.

1 Like

I’m sure I have an STM32 under my desk at work (and even if not, someone will have, or as @AstonJ pointed out elsewhere, dev kits are now ridiculously cheap). I shall add trying AtomVM on it to my TODO list for '22!

2 Likes