Hi Chris, two questions about phoenix and liveview.
I would like the web app to have good offline support and use localstorage for backing when the connection goes down (re-upload when connection is back up). It it in anyway feasible to add some middleware to the client connection handling of liveview so that it still plays well with it's features?
I've read that it is possible to drop in some bits of JS here and there into the liveview powered page. Is it also possible to do it the other way around and go to drop in liveview "components" into an existing SPA? Throwing away my existing SPA code is quite a loss, but the liveview appeal is certainly there for other parts of the website.
Thanks for the great work on phoenix, it looks quite attractive.
"as we all know hibernation isn't possible when you have your whole disk encrypted" -- this should be stated during the installation procedure of ubuntu
HEADLINE: Have first class support for hibernate
DESCRIPTION: There are a few problems i noticed with hibernate
- During installation you don't get notified that you need a swap partition of the size of your ram if you want to hibernate (moving partitions around is a PITA)
- There is no menu to set close lid to hibernate, the go to option seems to be edit /etc/systemd/logind.conf and if that doesn't work the internet has various other solutions that might work
- During upgrade form 15.10 to 16.04 this broke and i never got the hibernate functionality to work again
HEADLINE: Improve battery life
DESCRIPTION: The difference with windows is SIGNIFICANT. Watch the barchart at [1]
HEADLINE: Fix tracker-store and tracker-miner-fs eating CPU.
DESCRIPTION: Seems that this is also a quite common issue [2], why doesn't this just work out of the box?
HEADLINE: Help support some 3rd parties get their software packaged and put in the distro.
DESCRIPTION: I haven't been able to use f.lux and i think a small utility like that would enhance the overal desktop experience, so would be nice if ubuntu team supports this a little bit. (The alternative apps which should do the same didn't work for me). The point is that the OS should offer at least 1 package that just works. Now this seems to be only done with packages that are like "gnome official", where 3rd party packages sometimes fill a gap.
HEADLINE: Inventing a new desktop experience is great, but keep the options that people are used to.
DESCRIPTION: I do really appreciate the thought that went into designing a new desktop experience. But please don't force it onto the user if it has not been "proven" yet. The user should have an option to go back to the old way of doing things. After some years if the % that uses the old option is very small it can be removed from the standard distribution. I think there should be more policy on this. The policy should also focus on what features people really want. For example i had to install another terminal (Terminator) just to be able to rename tabs, it was not possible or i didn't know how to do it in Gnome Terminal. It just seems that the dev team is a bit out of touch with the users need. Also this story [3]
Refactoring haskell like that would be a lot easier when you implement a function you're familiar with. Take for example parsing CSV. What i noticed, what haskell feels to me, is that for a different kind of problem you seem to be using a different part of the language. In a simple OO-kind of language you just have classes, objects, methods, and so on. And you build patterns on top of that to express certain idioms (see GoF and what not). In haskell you have to enable a language extension or use a slight variation of a language construct (like "data .. where" could be such a variation to just "data") [1]. Do you really need all those design patterns? For good software practises .. likely. But just to get it to work you can do without a lot of "features", at the cost of boilerplate, maintainability, performance and so on.
I found it easier to just start using certain language constructs and libraries, even though i didn't really have the feeling that i understood them. When you know what to use for your problem, open the documentation on it and look at the types. Then play a bit of "fit the type"-game with the compiler. You can already get a long way with that. To figure out which language features or library to use for your particular problem take a look at a book like real world haskell. After reading through a bunch of stuff and asking around a bit you will have a clue whether to use monad X, Y or Z for what you are trying to solve. The knowledge of how to do nice refactering will come over time. This is muscle memory you will train automatically. So maybe you will ask the wrong question when you are focused on refactering code rather than solving your problem. The way the author refactors his own code seems to be new to him also. A lot of people prefer to start out with expressing their problem in the types first, before writing functions.
I would like the web app to have good offline support and use localstorage for backing when the connection goes down (re-upload when connection is back up). It it in anyway feasible to add some middleware to the client connection handling of liveview so that it still plays well with it's features?
I've read that it is possible to drop in some bits of JS here and there into the liveview powered page. Is it also possible to do it the other way around and go to drop in liveview "components" into an existing SPA? Throwing away my existing SPA code is quite a loss, but the liveview appeal is certainly there for other parts of the website.
Thanks for the great work on phoenix, it looks quite attractive.