
Show HN: Caster – Screencasts Manager in Elixir, Phoenix and Vue - patrickdavey
https://github.com/patrickdavey/caster
======
patrickdavey
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 :)

~~~
nift
Link? :)

~~~
nift
My bad - didn't catch you were the poster

------
memco
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.

~~~
patrickdavey
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 ;)

------
SamBoogieNYC
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

~~~
patrickdavey
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_ ;)

~~~
SamBoogieNYC
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.

------
KaoruAoiShiho
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.

~~~
patrickdavey
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.

------
kostarelo

      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.

~~~
passenger
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.

------
mutdmour
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.

