Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Caster – Screencasts Manager in Elixir, Phoenix and Vue (github.com/patrickdavey)
121 points by patrickdavey on March 25, 2017 | hide | past | favorite | 18 comments



The first app I made with Rails, was a simple little video watching app. It allowed me to subscribe to RailsCasts, VimCasts etc. download them, and open up in vlc. Nothing special, but quite handy.

Anyway, I wanted an excuse to play with Elixir & Phoenix, and to play around with Vue, so I remade the app. It also allows you to pull in a youtube video / playlist.

All video's are downloaded locally, and then just shells out to vlc to actually play the videos.

Anyway, it's pretty basic, but I find it useful to have all my videos (for learning) in one place, maybe you'll find it handy.

PRs welcome for any RSS feeds :)


Link? :)


My bad - didn't catch you were the poster


That one never quite made it anywhere public ;) probably for the best!


how'd you like Phoenix and Elixir?

I just did a hello world this week.


I really enjoyed it. It's quite a different way of doing things, but I just completely love the |> operator...

Also, the first time you completely replace a process and things just keep running perfectly - well, it's amazing!


Good job. Thanks


I know this is more about the code than the end product, but it's not clear to me what I would actually do with this. Who is this for and in what way should they use it? If/when you get around to refining the README, this would be something I recommend adding.


Thanks for the feedback, I'll update the README.

It is used for having a CRUD app for managing feeds of videos (like vimcasts.org, rubytapas etc) so that you can have them all in one place, take notes on them. It's also a very simple interface to youtube-dl, so when you come across a useful looking video on HN or whatever, you can just add it to Caster and watch it later.

I like the way the videos are all downloaded offline, it was useful when ravelling in South America last year and not having a heap of bandwidth.

But honestly, it was as much about playing around with Elixir Phoenix & Vue ;)


Hey cool project OP - how do you feel about the inclusion of Vue. Just curious about your general thoughts because I'm thinking of incorporating either React or Vue into my own website


Well, I'd read enough about Vue on HN that I wanted to have a play with it. I'd call myself "full stackish", but I'm certainly no pro at JS. I'd played a little with React (about a year ago) and found it somewhat more finickety to work with, and more heavyweight.

Vue on the other hand I found _very_ straightforward to use and really enjoyable. I did make the effort to use the .vue components, so most of the logic is in nice self contained units. That said, React certainly has a huge user base & is probably a safer bet long term. I just found Vue easier to understand and use & for me that's important (esp on a toy side project which is supposed to be _fun_ ;)


Thanks!

I was looking at both and Vue was definitely a lot easier to work with and less finicky. Love the fact that you can just link a script and play - it's also supposedly more performant than React although I haven't verified that.

React took me a fairly long time to 'get' (to the extent that I do) but I can see why it's gotten so popular. IMO it really forces you to be more organized and nudges you toward a more FP-centric approach.

I'm curious about integrating React/Vue with Elixir/Phoenix at some point as I'm really interested in Elixir/Phoenix as a possible future stack.


How long did it take you the first time, and how long did it take you to remake? If you break down by part it's helpful too, like how long the rails portion took, how long it took to convert to Elixir and then implement Vue, etc.


That's a great question, and one I'm going to struggle to answer. Like I said, it was my first Rails project, and I wasn't even attempting to have any sort of tests. The project was developed piecemeal, and then reworked a few times (e.g. adding polymorphism for the different video types, tiny bit of meta programming etc.)

Converting to Phoenix I found pretty straightforward, however, that was _after_ I had spent 3ish weeks going through the Programming Elixir & Phoenix books, so you'd want to factor in time to get up to speed with the language. I found working with Vue very straightforward, I found setting up the browserify development environment with Phoenix & Vue _hard_. Well, tricky anyway. For example, starting up the node processes to watch & rebuild the assets, reload the code in the browser, and getting that to start & stop automatically when you run `mix phoenix.server`, things like that took ages for me to work out, but it'd be way quicker now.

I also found Ecto a bit of a mind-bender to begin with. I'm certainly not holding up my code as a paragon of "the right way to do things" ;) Working out a neat way to do polymorphism in Elixir took me a little time. It's my first functional language so that all took time to get up to speed with (and even then I'm no expert)

Finally, using a client-side framework is total overkill for what is essentially a bog standard client-side app. But I wanted to get to grips a bit with Vue, websockets, and I really wanted to play with Elixir (I'd love to get work in it someday).

You can see the entire git-history if you want to see _roughly_ how long I was spending. I'd still be quicker to build in Rails I'm sure, but, I'd say once I was practiced at Elixir it'd be roughly the same amount of time building in either, and the websocket & ease of integration of JavaScript tooling (pre Rails 5) is definitely better with Phoenix. Converting the Vue was easy though, that just ported as-is (definitely a benefit of only talking JSON)

Anyway, sorry not to be able to give a proper answer.


  Videos are downloaded locally, and then viewed using vlc.
Hmm, this is going to take tonnes of space. Any chance it could be optimized? I like how Kodi and similar streaming players works.


Not to invalidate your needs, but this is actually what i need.

P.S I am on a metered connection. I'm a little frustrated by this new age of streaming everything. I would like my movies in my hdd, my music in my hdd, my videos locally. I don't mind buying an external storage device if i run out of space.


Well, it's by design that the videos are downloaded. That said, I haven't done any work with streaming, so I'm not sure how to go about that. I did play (a long while back) with attempting to embed the videos in html5 player, but I didn't get far.

You can easily delete the video once it's downloaded and viewed though. I wanted a way to download a bunch of videos, and then just copy them where I wanted (so, if I was going on a plane ride or whatever I could have a bunch of content easy to look at)

That said, PRs are welcome, just make sure that whatever functionality you add it's easy to configure (and remove, if streaming isn't what's wanted)

But yes, it does take heaps of space ;)


I have been working with Elixir and the notation is incredible, like pipelines and string matching. It took a while to get used to. Now I am trying get the mongoDB driver to handle replica sets.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: