Matt RaibleMatt Raible is a writer with a passion for software. Connect with him on LinkedIn.

The Angular Mini-Book 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 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.

10+ YEARS


Over 10 years ago, I wrote my first blog post. Since then, I've authored books, had kids, traveled the world, found Trish and blogged about it all.
You searched this site for "form". 326 entries found.

You can also try this same search on Google.

The back-to-work blahs

Last week I had a really good time at the MySQL Conference. I hung out with some extremely smart folks and learned a lot about various things, such as the Dvorak Keyboard Layout, why James Duncan Davidson hates Ant and why we have Session and Entity Beans (two companies couldn't agree). I spent way too much time working on AppFuse and trying to get the 1.8 release out (it's close, hopefully this week). I also did a 1/2 day seminar on Spring, AppFuse and Comparing Web Frameworks for a company in San Francisco - which was fun.

All of this techno-fun was quickly forgotten when Julie flew in on Friday and we headed down to Cambria, CA for a fun weekend of wine-tasting. Now I'm back at work with many-a-deadline and 81 starred messages in my GMail account. Last week, I realized that doing the open-source and Spring Live stuff is easily a full-time job. The best solution I can think of at the moment is to View Starred Messages » Select All » Delete, followed by ignoring all the e-mails I receive for the rest of the week. I'll try not to do this, but it sure is tempting. ;-)

Someone asked me last week how I manage my time effectively and get everything done. The truth is I don't. I simply stay up late, sleep little, or steal weekends away from my family. Tonight, I expect to spend 4+ hours answering e-mail and doing edits for Spring Live. Hopefully I can catch up and get AppFuse 1.8 released before my parents show up on Thursday night.

Posted in General at Apr 25 2005, 02:19:00 PM MDT 4 Comments

Why Wicket looks cool

I like the looks of Wicket for a couple of reasons - without even using the framework yet.

  • Its project homepage looks good. If you're using a Java web framework, chances are you're developing UIs too. If you don't know how to make sites look good - it's time to find a new line of work IMO. Of course, learning how to make good-looking UIs is another option. ;-)
  • Its Wicket Stuff project. It provides Hibernate, fValidate and Spring integration. It also appears to provide an option to use Velocity for your templates. I'm not sure what the Velocity integration provides - since HTML templates (ala Tapestry) should do everything that's needed.

What I don't like about the project:

  • The Buzz page has a quote that's (apparently) from this site. Unfortunately, it looks like I said it - which I didn't.
  • There's no books being written about it. If it's really that good - where's the books? Ruby on Rails will have 3 by the end of this year. Any good framework should inspire books to be written about it.
  • The Wicket Stuff project has no documentation. Javadocs don't cut it. Tutorials are king.

I hope this project succeeds - Tapestry needs some competition and I don't think JSF is providing it. If JSF adds HTML Templates (or I figure out how to use Java Studio Creator to manage an AppFuse+JSF project), that's a different story.

Posted in Java at Apr 14 2005, 08:37:03 AM MDT 12 Comments

No More Kids

I've only ever wanted two kids. However, Julie has been playing with the idea of 4 ever since we had Jack. Her thought is "they're so damn perfect, let's have more!" I've always wanted 2, and so did she when we first met - but she grew up with a sister and they've always been best friends. Abbie doesn't have a sister, and Julie doesn't want an odd number of kids - hence her slight desire for four.

This Friday, all this talk of possibly having 4 kids will come to an end. I'm heading into the doctor's office for the Big V and will lose my ability to reproduce. I'm terrified, but hopefully the drugs will be good enough to ease my fears (and pain afterwards).

I'm supposed to "take it easy" for a week afterwards and not lift anything more than 10 pounds. This means I can't pick up Abbie or Jack, and I can barely pick up my backpack (w/ laptop) to go to work. No riding to work either. With all the "you can't dos", it almost seems like a mini-vacation. However, the thought of getting my nuts cut still sends chills down my spine.

Posted in General at Mar 30 2005, 12:45:58 PM MST 29 Comments

[Microsoft] Day 1 Afternoon

At lunch, I got to meet Scoble, which was pretty cool. He was wearing a blue Firefox shirt for those that are interested. During lunch, he and his co-worker talked about Channel 9 and what they're doing with it. Channel 9 is named "Channel 9" because this is the channel that United (the airline) uses to allow passengers to listen in on the pilot's conversations. It's supposed to be an avenue for folks to listen in on what's going on at Microsoft.

Now we're sitting in a talk titled Developer Community Outreach Efforts. The speaker is named Sanjay. He's the VP of Worldwide Developer Evangelists, of which there are around 1000. Sanjay believes that MSDN is way too large. It does have a lots of interop and migration content for those that are interested.

Sanjay's trying to get ideas from us on what they can do better. The general feeling from the room seems to be "why should we help you", "what's in it for us" and "why do you care now, but not before". It's a tough room for sure. I don't seem much point in this whole talk. A lot of folks are telling this guy what he (and Microsoft) can do to become better to be better citizens to the programmer community at large. A lot of the conversation is centered on accepting open-source and providing a clearer message about the platform (should be inclusive, not exclusive).

SQL 2005 and the Developer

Now we have a guy (missed his name) that's talking about how SQL Server 2005 will allow you to expose web services directly from your database, without IIS involved. Apparently, it exposes queries and stored procedures as web services using a native Windows DLL.

Ben asked about benchmarks for SQL 2005, specifically against MySQL and PostgreSQL. The MS guy says that these vendors will need to do the "standard" TCP benchmarks, and do the comparisons there. We all know that SQL Server would get their asses kicked, and that's why they don't do any direct comparisons. While we're on the subject of SQL Server, why are most SQL Server databases so screwed up? In my experience, SQL Server DBAs tend to be over-optimization freaks that are stored-procedure happy and don't know much about making a database application-friendly. Maybe it's because all you need is a SQL Server DBA Certification to get the job - and your knowledge is based on a book, not experience.

Next topic: Access. Access is not going away. "SQL Express" is supposedly the target replacement for Access. It's throttled to prevent users from using it for a full-blown database. "You can never write a bad query for SQL Server." This is a direct quote, and the guy's reasoning is because the optimizer will change the query to be performant. Sounds like a bunch of hoo-ey to me.

Today, you can write extended stored procedures in C++ with SQL Server. This code is not sandboxed, and can pretty much to whatever it wants. In SQL 2005, you can do this with C# and use VS.NET to write the code and debug it. Apparently, they have a whitepaper on SQL CLR vs. ADO.NET and when to use one over the other.

Product Development Process with Iain McDonald (Director, Windows Server)

Iain is from Australia, which naturally makes him fun to listen to, just because of his accent. The purpose of this talk is to explain how they do things. Cross-org at Microsoft means that that development is spread across 7 businesses, each organized under own leadership with individuals p&ls.

  • Business Solutions
  • Home & Entertainment
  • Information Worker
  • Mobile & Embedded Devices
  • MSN
  • Server & Tools
  • Windows Client

Each group has a lifecycle model that they try to follow. Microsoft has thee different stages: Product Definition, Product Development and then Product Servicing. I'm willing to bet their product development cycle follows the waterfall approach (confirmed: "How agile are we? We suck."). Actually, this brings up something I heard last night from one of the Microsoft Evengelists. Apparently, each developer has two QA folks that write tests (read: code) against their code.

Suite of Project Tools

  • Feature Inventory Tool: an inventory of features and their dependencies, tracks when the features will merge into the main branch.
  • Checkpoint Express: tracks all compliance throughout the project, requires sign-off prior to product being shipped.
  • Basics: list of fundamentals that product is expected/required to meet, examples include performance and manageability.
  • Change Management: uses an infopath form with links to the feature inventory tool and bug tracking database (product studio).

Iain admits that security in 2000 was an afterthought and the security guys were seen as some mangy dogs over in the corner. Bad RAM causes 20% of Windows crashes - who knew?! Bad RAM on OS X has certainly affected me in the past. I couldn't upgrade to Panther b/c I had 3rd party RAM in my PowerBook.

Microsoft is in a competitive battle against other companies, not the free world. No corporation in their right mind is going to download and install a free version of Linux - most are going to buy a distribution from companies like Red Hat or Novell. Iain claims that there's no way you can install Linux (at a corporation) for less money than Windows Server. It sounds to me like MSFT is willing to give you some discounts on Windows Server if you're thinking of buying Linux.

Break time. I'm definitely bored, but happy to have some time to work on AppFuse. Some guy asked me in the hall why I haven't asked more questions. I told him because I don't develop for Windows. For the most part, none of this stuff matters to me.

Windows Architecture

Now we're listening to two guys talk about Windows and how it's developed. Windows XP and Windows 2003 Server are two separate code bases. It's a nightmare to maintain b/c they have to patch one code base and the other one as well. Longhorn is componentized, so it should be easier to build client, embedded and server products. Someone asked about legal vs. technical reasons behind the componentization. Apparently, it's all for technical reasons, and they have to separate Windows Media Player for the EU, but that's about it. 40% of blue screens are from device drivers, and Longhorn has done a lot to handle this and reduce crashes.

This talk centered on XAML, WinFX and Longhorn - what they are, what they do and when they're scheduled for release. <Yawn/> While it has been a boring day (for me) technically, I do have to admit that the speakers have been great. They're dynamic and enthusiastic, which is more important IMO than good technical content. They also seem to be very open (as a whole) to ideas and criticisms. I think I'm just a bad audience member.

OK - here's something that's interesting. We're talking about IE 7 and its features. The top priorities are to stop spyware, fishing and any other security issues. #2 is tabs and #3 is CSS compliance. These priorities are based on user feedback and sound like good choices to me.

Posted in Java at Mar 17 2005, 12:40:56 AM MST 4 Comments

Simple Web Framework

You gotta admit, the Simple Web Framework does look interesting with all of the recent Ajax talk:

The Simple Web Framework (SWF) is an event based framework targeting Struts developers who want to build rich Web applications but do not want to migrate to JSF. The SWF is built upon the same Jakarta commons basis as Struts, but uses a different request processor (front controller.) The SWF event model supports form/submit style event posting, similar to VB.NET or JSF, as well as XmlHttpRequest based event posting with In place Page Updating (IPU) rather than page reloading, similar to the techniques underlying gMail. Read the SWF Overview for additional information.

My hope is that all web frameworks have some support for IPU by the end of the year. Then I won't have to build it into AppFuse. ;-)

Posted in Java at Mar 07 2005, 07:57:56 AM MST 3 Comments

Ajax webapps are cool, but non-javascript versions still needed

I think we can all probably learn a lesson from Google. I've heard that GMail is the "gold standard" for Ajax applications. If that's the case, then you should note that they've recently added a "basic HTML" link to the bottom of their pages. With this link, you can view your e-mail using the old way: Yahoo-style, no-JavaScript-needed. My guess is they added it because of demand, or simply to compete with other providers who have this feature. I think it's a good lesson though: use Ajax features in webapps where appropriate, but don't make JavaScript necessary to use your app.

A couple of Ajax features I've been thinking of developing:

  • Saving forms with XMLHttpRequest: just display a success message at the top, and switch the "Cancel" button to "Done". Since the form's content doesn't change, this seems like a reasonable use of the technology.
  • Switching out entire "content" <div> elements. Most of my apps have a <div id="content">, so it'd probably pretty easy to just replace that in response to button and link clicks. Of course, the hard part is having the requested server-side object load the view template, process it, and send back the content. This is probably more trouble than it's worth.

Posted in Java at Mar 07 2005, 07:42:18 AM MST 13 Comments

[TSSS] BOFs, Booze and Benitar

On Friday night, I attended all three of the 7:30 Birds of a Feather sessions. The first one I went to was Spring, where Rod talked about what's coming in Spring 1.3. Rod did a 25 minute presentation on the new stuff and then opened the floor up to Q and A. The session was well attended and I skipped over to the Tapestry/Trails BOF when the Q and A started.

I was surprised to find that very few folks where at the other BOFs. While the Spring BOF had 50+ attendees, the Tapestry one only had around 15-20 and JSF had around 8. I quickly left the Tapestry/Trails BOF when Chris started walking through his Trails Video. He was doing a live version of it, and since I'd already seen it, I figured I wasn't going to learn anything new. I've also been following Trails since it first started, and was more interested in talking about Tapestry.

I walked into the JSF BOF as Ed was talking about JSF 1.2 and what's next for JSF 2.0. This was good timing as I had a few suggestions for 2.0: HTML Templates like Tapestry, bookmarkability (don't make everything a post) and thinking about tools like Tiles and SiteMesh. While neither tools is part of the spec, I think they should be remembered in case there's an opportunity to make integrating with them easier. Ed did mention that JSF 1.2 has pretty much solved the content-interweaving problem, so putting HTML in your JSF JSPs should be better supported.

The very interesting part of this BOF is that Ajax capabilities are very much on the radar for JSF 2.0. They plan on providing native XMLHttpRequest capabilities. My suggestion for this was to provide the setup and registration of requestable class methods as part of the framework, and leave writing the JavaScript to the developer. This was a good BOF and I'm pumped to see that JSF is embracing the next-gen way of developing webapps. Let's just hope JSF 2.0 is released this year and not 2 years from now.

After the BOFs, I joined Matt and Jim to wait for one of Matt's buddies (Scott) to come into town. After he arrived, we headed over to the OpenSymphony open bar at the Bellagio. There, I got to meet Patrick Lightbody and enjoyed several beers and good conversation with the likes of Seth Ladd, Thomas Risberg, Mike, Dion and Christian.

After the open bar closed, Jim, Matt, Scott and I headed just off the strip to the Gold Coast Casino. Matt and Scott wanted to find some poker (tables had a 2-hour wait on the strip) and Jim and I wanted cheap Blackjack. We were pleased to find $5 tables and stayed there for several hours. I don't know what time we headed back to our hotel, but I'm guessing 1 or 2. The rest of the night was pretty funny. Jim and I gambled until 7 in the morning at several blackjack tables. Our hotel had this "celebrity theme", so we had dealers like Pat Benitar and Stevie Wonder throughout the morning. Both of these dealers were great and I got "hooked up" on several occasions. There were at least 10 times where I asked for a card and they didn't give it to me (after which I won b/c they busted). We ended the night at 7:00-7:30 with 5 crisp $100 bills in my pocket. Total cost of the whole trip: $100. Not bad eh?

Getting home yesterday was quite an adventure. After going to bed at 7:30, I woke up by some miracle at 11:00. I don't know if I had a wake up call or what, but my buzz was still in full swing. I caught a cab and headed to the airport. I paid the cabbie with a $25 chip, which he didn't like, but after I told him to keep the change (it was a $6 cab ride) - he happily obliged. At the airport, I took a nap while waiting for my flight to board and almost missed it. They called my name over the intercom b/c I was the only passenger left to board. Luckily, I was awake and made the flight. Upon arriving in Denver, I walked to my car and promptly locked my keys in the trunk. The airport officials got them out for free and I made it home to a very happy family around 6:00 p.m. It's good to be home.

Posted in Java at Mar 05 2005, 06:09:32 PM MST 3 Comments

Rails is 8 times slower than Spring+Hibernate

Might as well start off this week by getting people's blood boiling. ;-) According to a comment on Dion's blog:

Having done extensive performance (scalability means different things to different people) testing on both Rails and a comparable Spring/Hibernate/JSP2 webapp (no one seems have have done any sort of benchmarking on Rails, or they simply don't care, I don't really know, but since benchmarking is what I do... :-)) I can say that Apache2/FastCGI/Rails is about... 8x slower than the comparable Tomcat/Spring/Hibernate/JSP2 solution. And that is with caching turned on in Rails (using Rails 0.9.5...)

Quite frankly, 62 req/s on a Dual Opteron with 4GB of RAM rendering a simple view with no DB access is too... damn slow.

Personally, I still think Rails looks like a great (and easy) way to develop webapps. I just wonder if there's some truth to the "can't scale" argument. I guess the best way to find out is for me to develop an application like AppFuse with Rails, and then hammer it (and AppFuse) with JMeter to see what kind of results I get.

On a sidenote, I wonder when Rails will hit the illustrious version 1.0? They released 0.1 last week - which is a bad version number for marketing. If it's as mature as folks claim, why not make the next release 1.0? That version number alone will likely allow developers to use it more in big companies.

Posted in Java at Feb 28 2005, 06:25:27 AM MST 15 Comments

[ANN] Equinox 1.3 Released

This release is mainly a bug fix release, but it also adds support for Maven. All of the frameworks used in Equinox, as well as its build/test system is explained in Spring Live. Detailed release notes are below:

- Added missing "validator" property to "userFormController" bean in Spring MVC version.
- Added "redirect" element to success mapping to user list to prevent duplicate post problem.
- Moved "ctx" variable declaration from decorators/default.jsp to taglibs.jsp so it's available to all JSPs.
- Changed any references to UserDAO in UserWebTest.java instances to use UserManager instead (to prevent problems when transactions aren't used).
- Fixed install scripts in extras so they'd work on Windows from the command prompt. Added "fixcrlf" target for users that encounter issues.
- Added installer for Maven in "extras/maven". This can be used to replace the Ant build system.
- Dependent packages upgraded:

  • Display Tag 1.0
  • Hibernate 2.1.8
  • iBATIS 2.0.9b.550
  • JPOX 1.1.0-beta-1
  • Spring 1.1.4
  • Tapestry 3.0.2

Download. For more information about installing the various options, see the README.txt file.

Demos:

Rather than uploading the different combinations that are possible with Equinox, I figured I'd just wait for requests. So if you'd like things like Tapestry+Spring+JDO, or JSF+Spring+JDBC, let me know and I'll upload a pre-built version of 1.3.

Posted in Java at Feb 27 2005, 05:55:21 PM MST 17 Comments

Table-less forms for your webapp

The Man in Blue has some nice form layouts using fieldsets, labels and CSS. I think I'll integrate one of these styles for the forms in AppFuse. I've always stuck with tables for layout because it seemed easy, but I really like the look and flexibility that CSS provides.

Posted in Java at Feb 26 2005, 03:53:01 PM MST 6 Comments