Vongo
It's not everyday that the project you've been working on gets announced all over the news (even locally!).
It's been a fun project to work on - with some pretty cool technology powering it all.
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.
Happy New Year everyone! 2006 should be a fun year. My goals? Happiness, Health - both driven from skiing, riding, playing with the kids and enjoying my job. I still can't believe they pay us to do this stuff.
Here's this site's stats for 2005:
Summary by Month | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Month | Daily Avg | Monthly Totals | ||||||||
Hits | Files | Pages | Visits | Sites | KBytes | Visits | Pages | Files | Hits | |
Dec 2005 | 119264 | 74610 | 55759 | 15309 | 79374 | 31394669 | 459273 | 1672794 | 2238313 | 3577920 |
Nov 2005 | 129880 | 84543 | 49704 | 16179 | 83835 | 32018723 | 485388 | 1491145 | 2536299 | 3896414 |
Oct 2005 | 131901 | 82994 | 40667 | 15612 | 83189 | 31356652 | 484000 | 1260688 | 2572831 | 4088935 |
Sep 2005 | 172824 | 76604 | 39068 | 15540 | 78205 | 28408092 | 466208 | 1172056 | 2298141 | 5184735 |
Aug 2005 | 103628 | 70134 | 35565 | 13409 | 78966 | 28851892 | 415689 | 1102523 | 2174160 | 3212489 |
Jul 2005 | 99795 | 68139 | 40701 | 12741 | 76861 | 65666780 | 394998 | 1261744 | 2112311 | 3093646 |
Jun 2005 | 109682 | 74020 | 34614 | 12625 | 81955 | 29010554 | 378757 | 1038422 | 2220610 | 3290466 |
May 2005 | 109034 | 79885 | 38253 | 12285 | 105956 | 31142486 | 380848 | 1185869 | 2476438 | 3380075 |
Apr 2005 | 107043 | 70599 | 32273 | 12408 | 65138 | 21990095 | 372247 | 968207 | 2117997 | 3211297 |
Mar 2005 | 94572 | 71213 | 30085 | 11532 | 66829 | 22698368 | 357509 | 932640 | 2207624 | 2931733 |
Feb 2005 | 78524 | 57674 | 27428 | 9649 | 51844 | 15375733 | 270194 | 767992 | 1614896 | 2198686 |
Jan 2005 | 82797 | 58338 | 29049 | 10299 | 55016 | 18645468 | 319269 | 900548 | 1808480 | 2566734 |
Totals | 356559512 | 4784380 | 13754628 | 26378100 | 40633130 |
2005 was quite a year for me. I found my dream job, after contemplating what's next in my career only a few months earlier. I attended TheServerSide Symposium in March and created some great memories with James Goodwill. There's nothing like losing all your money and then winning it all back at 6 in the mornin'.
Other March highlights include:
April was a fun month, and started off with a me heading to work for Microsoft. The joke worked so well it was picked up by news.com. DU repeated as NCAA Champions (again). The MySQL Conference and wine-tasting with Julie (for our 5th anniversary) rounded out the month.
May was a whirlwind month, where I headed to Norway after barely renewing my expired passport on time. My PowerBook died on the way over, but I still had a great time. I was featured on TheServerSide and started planning AppFuse 2.0.
The summer flew by: I got biled by Hani, toured with the "Bomb Squad" at JavaOne, drove through Yellowstone, bought a new bike, learned more about Ruby and Rails at OSCON (and learned how much fun a smackdown can be), and watched Jack turn 1.
Then things got busy: I had a great time at Java in Action, started The Bus Project, and enjoyed the beauty of Keystone with Bender and Snyder at the Colorado Software Summit.
To round out the year, I traveled and attended conferences like I was possessed (New Jersey, NFJS, San Francisco and Florida). Abbie turned 3, Roller 2.0 was released and the WebWork joined Struts after a multi-year rivalry.
Phew, it's been quite a year folks. Here's to 2006 being even better! My goals for the year? Happiness, health and more car bombs with family and friends.
The current plan for AppFuse 1.9 is to cram quite a bit of stuff into
a single release. For example, the big "features" I'm planning on
implementing are dependency downloading and the ability to use AppFuse
as a single appfuse.jar.
However, there's still quite a bit of stuff on the roadmap.
After talking with the mailing list, the following seems like the best plan.
If I can convince Virtuas to let me work on AppFuse in February and March, we might be able to release 2.0 in early April. If not, we probably won't finish it until sometime next summer.
I've noticed the number of AppFuse users using JSF starting to pick up lately. This is probably mostly because Sanjiv Jivan and Thomas Gaudin (both committers) have started to use it on their projects. Thomas has been nice enough to write a couple of interesting blog entries on JSF and AppFuse. Click on the links below to read more.
One of the issues that AppFuse has is it's not that IDE-friendly. When I first started creating AppFuse (December 2002), Eclipse had already been released. However, I only used it as a fancy text editor, and didn't structure AppFuse to be Eclipse-friendly. Most of the unfriendliness is caused by XDoclet, but there's a way to fix that. Rather than using the default "Java Builder" to auto-build your Eclipse project, you can use Ant. Below is a set of instructions that show how to configure Eclipse 3.1 to use Ant as the builder for an AppFuse project.
Step 1: Right-click on your project and go to Properties. Select the Builder menu on the left and click the "New" button.
Step 2: Select "Ant Build" in the Configuration Type dialog.
Step 3: In the Properties window, select the appropriate locations for Buildfile and Base Directory (in the Main tab). In the Targets tab, set everything to the default target. Finally, in the Classpath tag set Ant Home to where you have Ant installed.
Personally, I haven't used this setup to work on an AppFuse project yet, but it seems quite useful. Hat tip to Erik Weibust to showing me how to do this while at The Spring Experience.
From the displaytag-devel mailing list:
I am sorry if I am asking a stupid question but is there any activity going on in the project? There are no new releases for almost a year... Neither are there any news on the project page. In our project we have modified the 1.0 version a bit and would like to share these changes with the community.
Fabrizio's response:
See http://displaytag.sourceforge.net now
the website was frozen to the last 1.0 release, also due an extensive
refactoring to the build/documentation system (migration to maven 2,
splitting of optional modules and examples, ...) but activity on the
project never stopped.
1.1 is now near, and I switched the default homepage to the 1.1
documentation. Warning: it's not released yet, but nightly builds are
up.
The biggest feature of 1.1 has to be the ability to do external sorting and paging.
If you're looking for Ajax support in the displaytag, look no further than AjaxTags. I haven't been able to get ajax:displayTag working in my projects because I'm using a newer version of Prototype. However, it looks like the next version of AjaxTags supports the latest version of Prototype.
In addition to AjaxTags, you can also use AjaxAnywhere. Here's the code you'll need to do that (after adding AjaxAnywhere to your project):
<aa:zone name="userTable"> <display:table name="users" class="list" requestURI="" id="userList" export="true" excludedParams="*" pagesize="5" sort="list"> <display:column property="id" sort="true" href="editUser.html" paramId="id" paramProperty="id" titleKey="user.id"/> <display:column property="firstName" sort="true" titleKey="user.firstName"/> <display:column property="lastName" sort="true" titleKey="user.lastName"/> <display:column titleKey="user.birthday" sort="true" sortProperty="birthday"> <fmt:formatDate value="${userList.birthday}" pattern="${datePattern}"/> </display:column> </display:table> </aa:zone> <script type="text/javascript"> ajaxAnywhere.getZonesToReaload = function() { return "userTable" } ajaxAnywhere.onAfterResponseProcessing = function() { replaceLinks() } function replaceLinks() { // replace all the links in <thead> with onclick's that call AjaxAnywhere var sortLinks = $('userList').getElementsByTagName('thead')[0] .getElementsByTagName('a'); ajaxifyLinks(sortLinks); if (document.getElementsByClassName('pagelinks').length > 0) { var pagelinks = document.getElementsByClassName('pagelinks')[0] .getElementsByTagName('a'); ajaxifyLinks(pagelinks); } } function ajaxifyLinks(links) { for (i=0; i < links.length; i++) { links[i].onclick = function() { ajaxAnywhere.getAJAX(this.href); return false; } } } replaceLinks(); </script>
Libraries used in above code: AjaxAnywhere 1.0.2, DisplayTag 1.0 and Prototype 1.4.0_pre4. You can also see a demo online or download the code.
The past week has been great. Not only did I stay off the computer for most of the week, but I had a ton of fun with my Mom, Dad, sister, Julie and the kids. My parents flew in last Tuesday, and that marked the beginning of my Christmas Break. On Wednesday and Thursday, my dad and I pulled the engine on the Bus. Ironically, the first day we couldn't figure out how to get it out, but w/in 5 minutes of consulting How To Keep your Volkswagen Alive, we had the solution. The bus is a bit different from a bug - there's only 3 bolts (instead of 4) and one of them is on the inside of the engine compartment. Daddy's Bus should be ready for the shop sometime in January.
The weekend was awesome - complete with mimosas on Christmas morning while unwrapping presents. Abbie and Jack are at a terribly cute age - and it was a blast to see their eyes light up when opening presents. It was tough to get them to open the next present b/c they were so enthralled with the one they just opened. After all was said and done, Abbie is now riding a "big girl" bike and we have a trampoline in our back yard. That should work out nicely when we get our first surprise snow storm. Fortunately, the weather has been gorgeous (almost 70!) for the past week.
Yesterday was an epic powder-day at Copper Mountain. My sister and I headed up in the morning and skied (she snowboarded) all day in 10" of fresh powder. We're heading up again this weekend for the New Year (Breckenridge this time) and it's supposed to snow in the hills for the next 3 days. Yeeeeeeeeaaaaaa hhhhhhhhhaaaaaaawwww!! Two days at my client this week and then back up to the wonderful pow-pow. Next week, the contract with my client finishes up and I get to return to our office in downtown Denver. I'm pumped because that means I get to start riding my bike to work again. I took it in for a tuneup today and should get it back in a couple days.
2006 is going to be a good year. I get about 2-3 e-mails a week about mentoring and consulting and it looks like I'll be quite busy. I hope to squeeze in some time for Spring Live and AppFuse in January and hope to have AppFuse 1.9 released in the next few weeks. My Dad's 60th birthday is in mid-January, so my family is heading to Cancun for a week. Should be a good time for sure.
This release's major new feature is dependency downloading using Maven 2's Ant tasks. The main reason I used Maven 2 over Ivy is
because I've heard rumors that Ant 1.7 will include dependency downloading - and they're planning on integrating the work that
Maven has already done.
One of the nice things about using Maven 2's Ant Tasks, is you
can download Maven 2 and generate your Eclipse or IDEA (possibly even Netbeans)
project files using "mvn eclipse:eclipse" or "mvn idea:idea". You can also use Maven 2 to build and test things if you like.
The only thing that doesn't currently when using Maven to test Equinox is the web tests with Cargo. I can try to get those working
if there's enough demand. For now, you'll have to use Ant if you want to test the UI.
All of the frameworks used in Equinox, as well as its build/test system is
explained in Spring Live. A summary
of the changes are below (detailed release notes can be found in JIRA):
Download. For more information about installing the various options, see the README.txt file.
Demos:
The basic Equinox download contains all the various web and persistence framework options in the "extras" folder. If you have issues replacing the web framework or persistence engine, please enter an issue in JIRA and I'll build and upload a customized version for you.
This weekend, I upgraded AppFuse from Struts 1.2.4 to 1.2.8. After failing to upgrade to 1.2.7, I was a little leary of this release - for good reason. It turns out, the 1.2.8 release has the same client-side validation issue as 1.2.7. The good news is it's a Commons Validator issue this time, and you can fix it by upgrading to Commons Validator 1.2.0 (it ships with 1.1.4).
If you're using custom client-side validators, you might have to patch your functions. Here's what I did to mine:
- oTwoFields = eval('new ' + formName.value + '_twofields()'); + oTwoFields = eval('new ' + retrieveFormName(form) + '_twofields()');
Also, if you'd like to use Spring MVC with Commons Validator 1.2.0, you'll need to patch springmodules-validator. Or you can just download the one from AppFuse's CVS.