Increasing Productivity
I have a new plan for increasing my productivity. With any luck, she'll be writing Java by the time she's 3.
The Angular Mini-Book is a
guide to getting started with Angular. You'll learn how to develop a bare-bones application, test it, and
deploy it. Then you'll move on to adding Bootstrap, Angular Material, continuous integration, and authentication.
Spring Boot is a popular framework for building REST APIs. You'll learn how to integrate Angular with Spring Boot and use security best practices like HTTPS and a content security policy.
For book updates, follow @angular_book on Twitter.
The JHipster Mini-Book is a
guide to getting started with hip technologies today: Angular, Bootstrap, and Spring
Boot. All of these frameworks are wrapped up in an easy-to-use project called JHipster.
This book shows you how to build an app with JHipster, and guides you through the plethora of tools, techniques and options you can use. Furthermore, it explains the UI and API building blocks so you understand the underpinnings of your great application.
For book updates, follow @jhipster-book on Twitter.
I have a new plan for increasing my productivity. With any luck, she'll be writing Java by the time she's 3.
My PowerBook seems to be dying a slow death. When I put it into hibernate mode (by closing it), often it won't startup again. I open the lid and nothing happens. I often have to hold down the power button, power it off, and then restart it.
What's this mean? It means I'm rebooting the damn thing once or twice a day. It's especially frustrating when I'm about to give a talk at JUG meetings or conferences. I get everything setup (IDEs open, Keynote open, etc.), close it as I walk to the front, and then after I plug it in and open it - nothing happens!. This leads to me spending the next 5 minutes rebooting and opening everything again. It's extremely frustrating - especially since it's such a slow-ass machine. This week, I've headed to the coffee shop (3 blocks away) several times to write, and it seems to happen every time I open it. Each time I think, "Did I save before I closed it?" Luckily, I have Word set to save every minute, so it hasn't been a problem yet.
I believe this happened when I first I bought the machine. However, it was only a couple of times per month. Now that it's become a daily event, and I think it's time to take it in. Has anyone else had similar issues?
The good news is I'm back in love with my PowerBook after using it so much this week. It's really an excellent laptop - especially for writing. I hooked it up to my 23" for the first time in a few months today and I thought, "I really need to get a G5." In reality, I don't want a G5 - my Windows box suites me just fine. What I want is a faster PowerBook - when's the next revision?
It would've been nice if the Spread Firefox team had let folks know before the Firefox Ad was published. But oh well, shit happens. At least I made the list (PDF).
There's a possibility that I'll be looking for new gig starting in January. If you're looking for some help, let me know.
If you could add another web framework option to AppFuse, which one would it be and why? Please keep in mind it already includes Struts, Spring, WebWork, JSF and Tapestry.
One of the nice things about having DbUnit integrated into AppFuse is you can easily import and export data. I've often used this feature to export a test database (or even production) into my development environment to try and reproduce data-related errors. Here's how to do it:
I've used the db-export task for other things too - like populating the database through the UI and then updating the test data. All you have to do for this is to copy the db-export.xml file to metadata/sql/sample-data.xml.
NOTES:
I'll admit, I have very little experience working with a profiler - but I think I need one. Someone e-mailed me about testing all of AppFuse on a super-beafy box, and he got OOM errors after 17 minutes. For a dual CPU, 2Ghz Opterons, with 2GB RAM running RHEL3 workstation, it only made it to the Spring/AppGen test, which is #8 of 21. On my PowerBook, it makes it to #12, but my Linux box only make it to #8 too. My guess is there's some sort of memory leak in one of the testing tools - Tomcat, Cargo, WebTest or AppFuse itself.
Anyone have experience attaching a profiler to their Ant build or testing process to look for memory leaks?
Dave quotes it, Charles writes it. XmlHttpRequest is the topic at hand and how it will help us build the next generation of web UIs. I've used Brent Ashley's JSRS Library to do some fancy UI work (one drop-down populates another) last year. It worked well in combination with Erik Hatcher's articles: Remote scripting using a servlet and Sending rich messages between client and server using asynchronous messaging. The project was AppFuse based, so I have the code if someone really wants it.
An example of XmlHttpRequest is in Roller itself - in the twisty comments you see on this site. For those who have used them, you probably know they're somewhat buggy. With all this talk of XmlHttpRequest, maybe it's high-time to revisit Roller's implemenentation and see if the technology has gotten any better. In reality, I know it hasn't - it's the browsers that are the problem and there hasn't been an update to IE in quite some time. My code could probably use some work though. If you want to dig in and check it out, here's the xmlextras.js that does the heavy lifting and comment-specific JavaScript.
After looking at this code this morning, it looks like there's different methods being used for the different browsers.
///////////////////////////////////////////////////////////////////// //// XML Document loading function loadXMLDocument(aURL, aCallback) { gMediaCallback = aCallback; if (window.ActiveXObject) { // Internet Explorer XML loading syntax gMediaDoc = new ActiveXObject(getControlPrefix() + ".XmlDom"); gMediaDoc.onreadystatechange = onMediaReadyStateChange; gMediaDoc.async = true; gMediaDoc.load(aURL); } else { // Mozilla XML loading syntax gMediaDoc = document.implementation.createDocument("", "", null); var xmlHttp = new XMLHttpRequest(); xmlHttp.overrideMimeType("text/xml"); xmlHttp.open("GET", aURL, false); xmlHttp.send(null); gMediaDoc.loadXML(xmlHttp.responseXML.xml); onMediaLoaded(); } }
I wonder if there's a common way that can be used for both browsers? BTW, 99% of the code for these comments was borrowed from Joe Hewitt.
Later: Another article covering this technology: Using the XML HTTP Request object. Hat tip to Carl.
I'll admit, it's time for me to get a G5. I can no longer test everything in AppFuse in one fell swoop. When I try to run this Ant build file (which I'd like to use with CruiseControl) on my Mac and Linux machines, I get OutOfMemory errors. My PowerBook has ANT_OPTS set to "-Xmx768m" and my Fedora Core 3 box has it set to "-Xms1024M -Xmx1024M". Both machines have 1 GB of RAM. The build dies a lot sooner on Linux (15 minutes), and the PowerBook gets really close to finishing (42 minutes). I'm guessing all the tests would take about 50 minutes on the PowerBook. There are currently 21 AppFuse combinations tested by this script. Spring is used in all of these, so I've eliminated that as a listed option.
NOTE: If you're trying this on Windows, remove the "fixcrlf" call at the beginning of the "test" target.
So, the question is - can your machine run all the tests for AppFuse? If so, let me know your specs. I'd love to get this setup for CruiseControl, but if I can't even run it with Ant, I doubt CruiseControl will be any better. I realize I could split things up, but I prefer to have one build file.
Ever since I started adding additional web frameworks into AppFuse, people have asked me "which framework should I use?" I've often told them "use what you know." If you have in-house knowledge of Struts, use it. I thought this was good advice because I believed that existing knowledge leads to greater productivity.
Lately, I've started to change my philosophy. I'm starting to think it's more important to use the web framework you're passionate about. The one you want to learn more about. After reading Kathy Sierra's "Does it really matter if your tool is cool?", it seems this is a good idea. She writes:
Coolness (or just perceived coolness, it really doesn't matter) is linked to passion. The cooler you perceive your tools to be, the more passionate you are about those tools. And passion, while it might lead to the "everything is a nail" syndrome, has an extraordinary amount of value!
Obviously there's quality of life... a life with passion is certainly more fun than one without. And the more passion, the greater the chances that a person has what psychologists label optimal experiences. And the more optimal experiences one has, the more likely one is to describe life as being "happy". So, passion = optimal experiences = happiness. And research says happy people are generally more productive. Certainly they're more spirited and fun to be around...
So I guess passion leads to greater productivity, not existing knowledge. So which web framework do you think is cool? Which one are you passionate about?
If I had to choose based on my passionate choice, and the one that I think is the coolest, I'd have to go with Tapestry or possibly JSF (JSF would be a lot cooler if it let me put my JSPs in the WEB-INF directory instead of in the root). These are the frameworks I want to learn more about. 6 months from now? Maybe Laszlo or JDNC.