I want to teach some Elixir. Any volunteers to be taught?

Do you want to start a new project or do you have any existing project in mind? For any existing one, it’s best to ask project owners for review.

Interested in both, but don’t have any specific ideas, hence why I want to team up with someone.

For now, I don’t have ideas worth spending lots of time.
But anyway, if you have anything, send me your code for review.

1 Like

Thanks, appreciate it.

Hey there, is this still something you’re doing?

@artimath, this topic was on pause for two years. I can return to it if I see someone who is interested.

:raising_hand_man::raising_hand_man::raising_hand_man::raising_hand_man::raising_hand_man::raising_hand_man:

Last time we did it, it was in a form of pair programming sessions once a week.
To continue that, we’d need an idea of what to build and some of my free time.
I suggest you give an idea, and I’ll find some free time next week.
Also, if we’d build some project on Github, let us both be involved there, not just me (as it was before).
If you have any other ideas, please share.

Would you prefer something open source?

I have a project I’m planning to build these next few months and I’m in the mapping phase. It’s a tool to help adhd-type minds, like mine, to focus throughout the day. And I’d love insight on how to approach a larger project in an intelligent way.

But that likely won’t be open source.

I can develop a few more ideas.

Are any areas of interest to you at the moment?

I’d also love to contribute to something on GitHub with you, that sounds fun!

Since this “teaching” project is free of charge, I’d like it to be open source. And, I don’t have any areas of interest at the moment, so suggest yours.

As any other: by putting it on paper (Google docs, Notion, etc) and modeling the data first. Or at least, this is how I approach them.

Was passing by and saw this thread for the fist time - this is an awesome initiative here! :clap:

I worked closely with Denis for several years, and can recommend him as an expert software engineer with deep knowledge of Elixir & PostgreSQL, as well as desire to share & mentor others :bowing_man:

Thanks, Ievgen :heart_eyes:

Okay. I jotted a few ideas down during my morning coffee.

I think it would be great if whatever we built could be helpful to others in the future. Whether as a tool or as a good demonstration of code.

If we build something, we’d have the source code. I’d be happy to do code walkthroughs of each part. Then we can put it on YouTube as a free series for elixir beginners. Would be cool to give back to the community in some way. I’m also happy to pay for hosting whatever we build if it’s something useful or fun for others once built.

Ideas:

I am fascinated by AI (ML, also classical) and cryptography. I’m also excited to contribute to an open source project but don’t know what projects to choose at the moment.

  • an idle-style game that focuses on speed of light space travel (incorporates relativity equations into gamified idle system). (Liveview) [The Math of Idle Games, Part I]
  • Build a visual maze environment, then choose different path-finding algorithms in a radio list and watch the entity find its way while visualizing the path. [Pathfinding Visualizer]
  • Any kind of game that incorporates some type of AI. Even a chess game.
  • A multiplayer snake game. Left, right, up, down. Eat the food and grow. Try to get others to run into you, grow bigger. Could also code some AI opponents.
  • A basic, concurrent crypoanalytic library? Find a way to use distributed processes to crack basic codes. Maybe over-engineering but sounds interesting.
  • A theory of constraints production simulator (using GenStage?) (Theory of Constraints and Simulations: A framework for process optimization - HASH)
  • We could build something with edgedb, a graph database on top of postgresql. (I’m currently exploring if it’s worth using edgedb for a new project or getting comfy with ecto first.)
  • We could find an open source project to contribute to. We could also ask the forum for ideas of what projects they think would be good to contribute to!

Happy to tweak, change and remix any of the ideas. Let me know if any of those spark some interest in you.

Thank you @denispeplin !!

Edit:

Few more ideas:

Edit 2:

I’d also be very interested in building a library for visualizing/manipulating Directed Acyclic Graphs in Liveview. I find DAGs to be a extremely helpful modality especially with planning.

1 Like

It depends on what you want to achieve. I would want to refresh my Phoenix Live View knowledge and do some pair programming at the same time.
So the app has to be Elixir-focused, not frontend-heavy and not algorithm heavy (unless some external native library could be used).
The project also has to be achievable in a short amount of time (at least some POC).
Given all that, I’d choose a minimal blogging CMS framework from the list you’ve suggested.

2 Likes

Works for me! I agree with your constraints.

I’m also planning to start a blog to “build in public” on, so I can dogfood what we create!

Let me know the next steps and anything I can do at this stage.

This will be fun!

You can start from planning a POC: describe what you want to see there.
For instance:

  • List of posts
  • A form to create new/update posts
  • Some JS-based editor for markup
  • Should it be mutli-user and how to log in
  • Do we want to have “publish later” feature
  • Likes?
  • Subscriptions?
  • Integrations

After putting all your wishes on paper, you may want to extract only what’s necessary and move the rest to some TODO.

Once all necessary features are there, plan DB tables and fields in some tool such as dbdiagram.io - Database Relationship Diagrams Design Tool

3 Likes

Here’s a large list of potential features:

- SEO
- Multi-user
- View list of posts
- View individual posts
- Create new posts
- Schedule posts
- Login/Auth
- Edit Posts
- Editor (markdown first? Visual later?)
- RSS feed.
- Create multiple tiers of access
	- Integrate with Stripe for payment
- People can susbcribe to get notified on new posts (emails thru Mailgun)
- Easy Google Analytics/Plausible integration
- Clean typography/styling
- Can change styling/css
- Easy navigation and cross-post linking
	- perhaps fuzzy autocomplete when selecting a word to turn into a link to other post?
- Commenting options
- Admin dashboard with tracking/stats
- Searchable archive
- RSS feed
- Contact form
- Revision history on edits
- Markdown live-preview

Here’s the baseline features for a POC:

- View list of posts
- View individual posts
- Create new posts
- Edit Posts
- Simple post editor (markdown)
- Preview post
- Clean typography/styling
- Single user auth/login

And here’s a basic mock-up of the MVP db schema:

Elixir Blog

table Users {
  id int [PK]
  email varchar
  name varchar
}

table Posts {
  id int [PK]
  title varchar
  content varchar
  user_id int [ref: > Users.id]
}

I may have missed some tables or fields, but I think that covers the main tables! For auth, we could just start with google to keep it simple? Or setup basic password auth.

Edit: Should probably add in fields for creation-time/date and edit time/date, I’ll wait until you provide feedback to update the db image/schema above.

Edit2: Will need fields for auth-related data.

Edit3: Would it be more useful for people if this could be a “drop-in” library for an existing phoenix app? Or should it be modeled as a standalone phoenix-based app that people fork?

2 Likes

It’s easier to create a standalone Phoenix app than a library if a web interface is involved. Auth can be done using Ueberauth Elixir lib, but for starters it could be skipped.
For Markdown, we’d need some JS editor that would support saving into Markdown. And some JS lib to render the results.
For starters, I’d suggest we just do a Live View app, so new posts would appear on the index page live as we add them and also live updated as we edit them (might be not that useful in a non-tutorial app, but could be fun to learn).

PM me when you are ready, I just yesterday resolved my most urgent task, can share some time.

1 Like