New Lift Book Available

384 views
Skip to first unread message

AGYNAMIX Torsten Uhlmann

unread,
Feb 1, 2013, 4:54:52 AM2/1/13
to lif...@googlegroups.com
I'm delighted to announce the immediate availability of another Lift book, 

"Lift Web Applications How-to".

It is available from PACKT Publishing (http://www.packtpub.com/lift-web-applications/book) and retailers (http://amzn.to/XXpx8M) in electronic and paper format.

The book is targeted towards developers keen on getting started with Lift development. It's a collection of tutorials that explain different aspects of Lift development, from setting up your (Eclipse) environment, to working with templates, snippets and selectors, to integrating with Bootstrap, MongoDB or Rogue.

I want to thank Diego, Richard and Marius for reviewing the book! There was another reviewer who's name I don't know- thank you for your valuable feedback. 
Come forth and show yourself :)

Thank you,
Torsten.


-- 
AGYNAMIX(R). Passionate Software.
Inh. Torsten Uhlmann | Buchenweg 5 | 09380 Thalheim
Phone:       +49 3721 273445
Fax:             +49 3721 273446
Mobile:       +49 151 12412427
Web:           http://www.agynamix.de

Andreas Joseph Krogh

unread,
Feb 1, 2013, 4:56:10 AM2/1/13
to lif...@googlegroups.com
På fredag 01. februar 2013 kl. 10:54:52, skrev AGYNAMIX Torsten Uhlmann <T.Uh...@agynamix.de>:
I'm delighted to announce the immediate availability of another Lift book, 
 
"Lift Web Applications How-to".
 
It is available from PACKT Publishing (http://www.packtpub.com/lift-web-applications/book) and retailers (http://amzn.to/XXpx8M) in electronic and paper format.
 
The book is targeted towards developers keen on getting started with Lift development. It's a collection of tutorials that explain different aspects of Lift development, from setting up your (Eclipse) environment, to working with templates, snippets and selectors, to integrating with Bootstrap, MongoDB or Rogue.
 
I want to thank Diego, Richard and Marius for reviewing the book! There was another reviewer who's name I don't know- thank you for your valuable feedback. 
Come forth and show yourself :)
 
Awesome!
 
--
Andreas Joseph Krogh <and...@officenet.no>      mob: +47 909 56 963
Senior Software Developer / CTO - OfficeNet AS - http://www.officenet.no
Public key: http://home.officenet.no/~andreak/public_key.asc
 

Richard Dallaway

unread,
Feb 1, 2013, 5:53:16 AM2/1/13
to lif...@googlegroups.com
Congratulations!

From the drafts I saw I think of this as the Lift book we've been missing: short (100 pages?), gets you in, hacks away at the learning curve, and you can probably work through it in a week and be in a happy place.


--
--
Lift, the simply functional web framework: http://liftweb.net
Code: http://github.com/lift
Discussion: http://groups.google.com/group/liftweb
Stuck? Help us help you: https://www.assembla.com/wiki/show/liftweb/Posting_example_code
 
---
You received this message because you are subscribed to the Google Groups "Lift" group.
To unsubscribe from this group and stop receiving emails from it, send an email to liftweb+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Naftoli Gugenheim

unread,
Feb 1, 2013, 6:12:18 AM2/1/13
to liftweb
Wow, nice job Torsten!

Maarten Koopmans

unread,
Feb 1, 2013, 6:20:44 AM2/1/13
to lif...@googlegroups.com
Very nice! Congratulations!

Kristof Jozsa

unread,
Feb 1, 2013, 6:59:57 AM2/1/13
to lif...@googlegroups.com
I bought it the minute I've seen the announcement on Twitter. Congrats on the book, it's a welcome addition to get started with Lift!

A few comments where maybe improvements can be made for future releases:
- a more layered TOC could help with content navigation
- code examples could use some more formatting (code highlight, wider margins, maybe some frame with background color)
- generally, I find eg. Manning's book templates a bit more easy to read aesthetically
- content could maybe a bit more organized - eg. where basic templating is first explained around page 25, it's a bit strange to read advanced suggestions on how to reuse templates from code for sending emails

I'll definetely read it through, I like the content a lot. Thanks for your hard work!

ps. do I feel right that the `data-lift` attribute is preferred over using the class attribute? Is this a general approach now?

K



AGYNAMIX Torsten Uhlmann

unread,
Feb 1, 2013, 7:45:10 AM2/1/13
to lif...@googlegroups.com
Thank you for the kind words, I mightily appreciate it!

As for the "data-lift" attribute:

These days I actually tend to use just the "lift" attribute. It's not HTML5 standard, but shorter. I think for me the important thing is to keep the Lift commands and also the selectors separated from the class attribute.

In a previous project we used the layout class names to bind functionality, and that soon blows into your face if you don't keep track on what your binding at.
We then introduced special semantic classes that we prefixed (f-something) and bound on that. These days, if I have a chance, I try to use the "name" attribute to bind at. There's visual separation in the markup and there can only be one name for any one element, compared to a number of classes within the class attribute.

Torsten.

-- 
AGYNAMIX(R). Passionate Software.
Inh. Torsten Uhlmann | Buchenweg 5 | 09380 Thalheim
Phone:       +49 3721 273445
Fax:             +49 3721 273446
Mobile:       +49 151 12412427
Web:           http://www.agynamix.de

Diego Medina

unread,
Feb 1, 2013, 8:38:17 AM2/1/13
to Lift

Congratulations!

Diego
Sent from my android cell

Chris Gaudreau

unread,
Feb 1, 2013, 8:54:53 AM2/1/13
to lif...@googlegroups.com
Cool, I'll definitely buy it. :-)

Lukasz Kuczera

unread,
Feb 1, 2013, 9:54:45 AM2/1/13
to lif...@googlegroups.com
Congrats mate.

Tyler Weir

unread,
Feb 1, 2013, 11:02:53 AM2/1/13
to lif...@googlegroups.com
Awesome!

Peter Petersson

unread,
Feb 1, 2013, 11:05:06 AM2/1/13
to liftweb
Great stuff Torsten!


2013/2/1 Lukasz Kuczera <kuk...@gmail.com>
Congrats mate.

Damian Helme

unread,
Feb 1, 2013, 11:22:21 AM2/1/13
to lif...@googlegroups.com
neat - congrats!

David Pollak

unread,
Feb 1, 2013, 12:48:55 PM2/1/13
to lif...@googlegroups.com
Awesome! Congratulations!

--
--
Lift, the simply functional web framework: http://liftweb.net
Code: http://github.com/lift
Discussion: http://groups.google.com/group/liftweb
Stuck? Help us help you: https://www.assembla.com/wiki/show/liftweb/Posting_example_code
 
---
You received this message because you are subscribed to the Google Groups "Lift" group.
To unsubscribe from this group and stop receiving emails from it, send an email to liftweb+u...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 



--
Telegram, Simply Beautiful CMS https://telegr.am
Lift, the simply functional web framework http://liftweb.net

Florian Heinisch

unread,
Feb 1, 2013, 1:58:45 PM2/1/13
to lif...@googlegroups.com
Awesome! Congratulations!
Just ordered it :)

Chenguang He

unread,
Feb 1, 2013, 2:06:09 PM2/1/13
to lif...@googlegroups.com
Congratulations!
What is the version of Lift, your book use?
Chenguang He



AGYNAMIX Torsten Uhlmann

unread,
Feb 1, 2013, 2:12:00 PM2/1/13
to lif...@googlegroups.com
Thank you all for the kind words!

@Chenguang He: The book is using Scala 2.9.1 and Lift 2.5-SNAPSHOT

Torsten.

jose farfan

unread,
Feb 1, 2013, 2:46:37 PM2/1/13
to lif...@googlegroups.com
I have one.

Congratulations.

Chenguang He

unread,
Feb 1, 2013, 10:04:29 PM2/1/13
to lif...@googlegroups.com
I am glad to see this book with such new version of Scala/Lift.
BTW, when will a paper book release? I am a paper book reader.

Chenguang He




Chenguang He

unread,
Feb 1, 2013, 10:07:34 PM2/1/13
to lif...@googlegroups.com
nvm, i just found it. I have no idea why there is only one link with Kindle version in Amazon, when i search Instant Lift Web Applications [Instant] as keyword. XD

Chenguang He




On Feb 1, 2013, at 3:54 AM, AGYNAMIX Torsten Uhlmann wrote:

Michael Larsson

unread,
Feb 3, 2013, 3:35:54 PM2/3/13
to lif...@googlegroups.com
Great book. Just finished it! Thanks

Ivan Schuetz

unread,
Feb 3, 2013, 6:03:03 PM2/3/13
to lif...@googlegroups.com
I bought it! I hope it helps me out of my noobishness. At least a bit.

Alexandre Russel

unread,
Feb 12, 2013, 7:39:20 AM2/12/13
to lif...@googlegroups.com
just finish reading it, nicely written and very useful and great to
have it on safari.

Alex

AGYNAMIX Torsten Uhlmann

unread,
Feb 12, 2013, 7:59:04 AM2/12/13
to lif...@googlegroups.com
Thank you for the kind words!

Richard actually got me thinking about producing screencasts alined with the book's tasks.

What do you (all reading thing) think, would that be something you'd be interested in?

Thanks,
Torsten.

-- 
AGYNAMIX(R). Passionate Software.
Inh. Torsten Uhlmann | Buchenweg 5 | 09380 Thalheim
Phone:       +49 3721 273445
Fax:             +49 3721 273446
Mobile:       +49 151 12412427
Web:           http://www.agynamix.de

Victor Kane

unread,
Feb 12, 2013, 9:03:27 AM2/12/13
to lif...@googlegroups.com
The REST chapter is very interesting: a very simple Backbone.js front end which can talk to GET, PUT and POST endpoints would be an exotic luxury!

Tobias Pfeiffer

unread,
Feb 12, 2013, 10:28:53 AM2/12/13
to lif...@googlegroups.com
Hi,

Am Dienstag, 12. Februar 2013, 13:59:04 schrieb AGYNAMIX Torsten Uhlmann:
> Richard actually got me thinking about producing screencasts alined with
> the book's tasks.
>
> What do you (all reading thing) think, would that be something you'd be
> interested in?

From my point of view (haven't read the book, though), screencasts are not a
very good form of teaching material:
* The user can hardly adapt the video to his own learning speed.
* It's not easy to jump to a certain point if you already know *something*,
because you can't easily see where that point might be.
* You can't copy & paste.

Screencasts may be well suited for "click here, then there, then enter this
text and then click there"-style tutorials, but I think they are not the
best medium to teach programming languages/frameworks/etc.

Just my 2 cent,
Tobias

Diego Medina

unread,
Feb 12, 2013, 11:41:18 AM2/12/13
to Lift

I think it's a great idea, specially if you keep them short (so we can skip thru some of them)

Diego
Sent from my android cell

Ivan Schuetz

unread,
Feb 12, 2013, 12:56:38 PM2/12/13
to lif...@googlegroups.com
I like screencasts, I see them at lunch, or early in the morning, when I don't want to go out of the bed :D

For me it would be cool to have some. There are almost no videos about Lift yet (or I haven't found them).

Diego Medina

unread,
Feb 12, 2013, 3:23:27 PM2/12/13
to Lift
> For me it would be cool to have some. There are almost no videos about Lift
> yet (or I haven't found them).

You are right, there are very few videos about Lift, some of them are here
http://liftweb.net/getting_started
and it would be great to have a list of screencast added :)

Diego
Diego Medina
Lift/Scala Developer
di...@fmpwizard.com
http://fmpwizard.telegr.am

AGYNAMIX Torsten Uhlmann

unread,
Feb 14, 2013, 5:35:41 AM2/14/13
to lif...@googlegroups.com
Hi Gregory,

it looks all fine to me. 
The warnings are about using deprecated API, which may be because Lift 2.5-SNAPSHOT is used and something changed in the mean time or because I was sloppy and used old API, sorry for that :)

Just click on "Sign Up" and create an account (which is stored in the local H2 database) and login with that account. You should then see the different menu entries as described in the book.

If that is not what you would expect- what exactly is different to the book?

Thanks for your interest,
Torsten.

-- 
AGYNAMIX(R). Passionate Software.
Inh. Torsten Uhlmann | Buchenweg 5 | 09380 Thalheim
Phone:       +49 3721 273445
Fax:             +49 3721 273446
Mobile:       +49 151 12412427
Web:           http://www.agynamix.de

Am 14.02.2013 um 07:30 schrieb Gregory Tucker <fallp...@gmail.com>:

I have finished Odersky's Functional Programming in Scala course a couple months ago, and I am a newbie to Lift. I want to apologize in advance for my newbie questions. 

Thanks for writing this book, I picked up the Kindle version 2 days ago on Amazon. 

There may be a better place to discuss book, but I will start here for lack of a better place. 

For now just for starters, I cannot get my application to look anything like yours in the book. I installed scala using Homebrew. I figured out how to remove 3.10 and install 2.9.1 as spec'd in the book. 


./sbt seems to run. container:start gives me some warnings: 

> container:start
[info] Compiling 23 Scala sources to /Users/tucker/develop/packt-lift-howto/lift_howto_9786_sql_tpl/target/scala-2.9.1/classes...
[warn] there were 3 deprecation warnings; re-run with -deprecation for details
[warn] there were 2 unchecked warnings; re-run with -unchecked for details
[warn] two warnings found
[info] jetty-7.6.0.v20120127
[info] NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
[info] started o.e.j.w.WebAppContext{/,[file:/Users/tucker/develop/packt-lift-howto/lift_howto_9786_sql_tpl/src/main/webapp/]}
968 [pool-6-thread-3] INFO net.liftweb.mapper.Schemifier - CREATE TABLE users (id BIGINT NOT NULL AUTO_INCREMENT , firstname VARCHAR(32) , lastname VARCHAR(32) , email VARCHAR(48) , locale VARCHAR(16) , timezone VARCHAR(32) , password_pw VARCHAR(48) , password_slt VARCHAR(20) , textarea VARCHAR(2048) , validated BOOLEAN , uniqueid VARCHAR(32) , superuser BOOLEAN) 
974 [pool-6-thread-3] INFO net.liftweb.mapper.Schemifier - ALTER TABLE users ADD CONSTRAINT users_PK PRIMARY KEY(id)
980 [pool-6-thread-3] INFO net.liftweb.mapper.Schemifier - CREATE TABLE userpost (contents_c LONGVARCHAR , id BIGINT NOT NULL AUTO_INCREMENT , title VARCHAR(140) , userid BIGINT) 
981 [pool-6-thread-3] INFO net.liftweb.mapper.Schemifier - ALTER TABLE userpost ADD CONSTRAINT userpost_PK PRIMARY KEY(id)
1100 [pool-6-thread-3] INFO net.liftweb.mapper.Schemifier - CREATE INDEX users_email ON users ( email )
1105 [pool-6-thread-3] INFO net.liftweb.mapper.Schemifier - CREATE INDEX users_uniqueid ON users ( uniqueid )
1108 [pool-6-thread-3] INFO net.liftweb.mapper.Schemifier - CREATE INDEX userpost_userid ON userpost ( userid )
[info] Started SelectChann...@0.0.0.0:8080
[success] Total time: 19 s, completed Feb 14, 2013 3:09:07 PM

Any help would be appreciated. 

Greg

Gregory Tucker

unread,
Feb 14, 2013, 11:02:03 AM2/14/13
to lif...@googlegroups.com
I wondered that and tried to sign up. Apparently my password was too short, but I wasn't getting a proper error message. All is well, and thanks for the feedback.

Greg

olek

unread,
Mar 1, 2013, 9:47:52 AM3/1/13
to lif...@googlegroups.com
Just finished reading. Very nice book, concise and packed with useful tips. thx!

Gregory Tucker

unread,
Mar 6, 2013, 9:00:44 AM3/6/13
to lif...@googlegroups.com
Using your AJAX example:

    def process(): JsCmd = {
      val id = nextFuncName
      val result = "%s lives in %s".format(name, city)
      val html = <li id={id} style="display:none">{result}</li>
      AppendHtml("ajax_example2_list", html) & FadeIn(id, 0 second, 1 second)
    }

      <div style="clear:both"></div>
      <p>&nbsp;</p>
      <div class="box">
        <p>The result List:</p>
        <ul id="ajax_example2_list"></ul>

Is it possible to perform multiple AppendHtml's inside process() or JsCmd?

Basically I want to create several <ul> bullet points on a single button click.

Greg

Torsten Uhlmann

unread,
Mar 6, 2013, 9:14:53 AM3/6/13
to lif...@googlegroups.com
Hi Gregory,

AppendHtml just creates a JsCmd instance. You can chain them with '&':

AppendHtml("ajax_example2_list", html) & AppendHtml("ajax_example2_list", someOtherContent)  & FadeIn(id, 0 second, 1 second)

So yes, it's possible.
However, if you want to append content to the same DOM element it might be better to create a larger NodeSeq that basically contains all the content and then append this one and not calling multiple appends on the same element. But of course it depends on your use case…

Does that help?
Torsten.

-- 
AGYNAMIX(R). Passionate Software.
Inh. Torsten Uhlmann | Buchenweg 5 | 09380 Thalheim
Phone:       +49 3721 273445
Fax:             +49 3721 273446
Mobile:       +49 151 12412427
Web:           http://www.agynamix.de

Gregory Tucker

unread,
Mar 8, 2013, 2:07:59 AM3/8/13
to lif...@googlegroups.com
Yes, that's exactly what I needed! I ended up creating a list of strings then converting with map. I did have to put FaceIn inside the ahtmlfi function as well. 

      def ahtmlfi(s: String) = {
        val id = nextFuncName
        val html = <li id={ id } style="display:none">{ s }</li>
        AppendHtml("ajax_output_list", html) & FadeIn(id, 0 second, 1 second)
      }
      
      li.reverse.map(ahtmlfi(_)) 

I have uploaded a simple app to Github. 


I have to admit I am impressed how little code is required to write a web app using the Lift Framework. I wish there was a little more tutorial or howto information on Lift. I ended up creating a new Lift project from the latest release, then pulling code from the published samples in the book, just to make sure I could mentally separate what you did versus what's provided by Lift. 

Now on to my next project. Something for a client that is a little more substantive in a couple areas. 

Greg

Torsten Uhlmann

unread,
Mar 8, 2013, 2:58:31 AM3/8/13
to lif...@googlegroups.com
I'm glad the book was helpful!

Torsten.

-- 
AGYNAMIX(R). Passionate Software.
Inh. Torsten Uhlmann | Buchenweg 5 | 09380 Thalheim
Phone:       +49 3721 273445
Fax:             +49 3721 273446
Mobile:       +49 151 12412427
Web:           http://www.agynamix.de

Reply all
Reply to author
Forward
0 new messages