Matt RaibleMatt Raible is a Web Developer and Java Champion. 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.

One year ago

I missed it by a couple of days. As of Friday, I have been blogging for one year. Happy birthday to the blogging version of this site.

Posted in Roller at Aug 03 2003, 12:50:23 PM MDT 4 Comments

New Load Testing Tool for Roller

After reading Hani's comments about Freeroller's abysmal performance (which I agree does suck), I sent the following e-mail to Novosoft:

Any chance you'd like to donate a copy of your software to the Roller 
Weblogger open-source project (http://rollerweblogger.org).  We could
really use a stress-test tool like yours.  We're using it at my day 
job and it works great.

Their software is a load and stress testing tool that a co-worker discovered and it works awesome. At my day job, we know that if 17 users click on the same button at the precise same time, then Hibernate (or maybe it's Oracle) will throw a deadlocking error. We doubt that we'll ever get 17 concurrent users, so it's not an issue for us, but it's nice to know.

Anyway, their software is $250, which is a little steep for any open source project. However, I was delighted to find that they obliged my e-mail and sent me a license this morning!

Dear Matt, 

Thank you for your feedback and your warm words regarding our product!
We have decided to grant you registration key for our product WAPT 2.0. 

Sweet! Now I just have to find time to create these tests, or maybe one of the other Roller Developers has time?

Posted in Roller at Jul 31 2003, 07:21:57 AM MDT 6 Comments

New Theme for Roller?

I found Rowell Sotto's blog today via David Czarnecki. I immediately fell in love with Rowell's Moveable Type theme, and decided to implement in Roller. It was actually pretty easy. Check it out on my test site at http://raibledesigns.com/page/test. Things to do:

  • Get Rowell's permission to use it, and include it in Roller's default themes
  • Figure out what font the top logo uses and come up with an HTML-friendly equivalent

Good stuff - awesome theme Rowell!

Posted in Roller at Jul 24 2003, 05:16:47 PM MDT 10 Comments

Now sporting valid XHTML

Thanks to Will Gayther (no blog that I know of), this site now validates as XHTML 1.0 Transitional. You might recall that I had issues with the onload attribute of an iframe, but it was easily solved. Will suggested I put the onload into the <body> of my iframe's "src" document, but that seemed impossible, as the iframe doesn't have a source document - it's just submitted to. But he did turn me onto the solution. There is a function called when the form is submitted (onSubmitComments()), so I just called the function from there (instead of in the onload):

function onSubmitComments(aEntryId)
{
  gSubmittingComment = aEntryId;
  setTimeout("onCommentSubmitted()", 500); // wait 1/2 second
}

I don't expect you to care about any of this, just wanted to let you know I'm compliant again - or at least right now I am. Oh yeah, and I added this theme (sunsets) to Roller's CVS yesterday.

Posted in Roller at Jul 15 2003, 02:22:13 PM MDT Add a Comment

Added "Comment" link to RSS Feed

Thanks to Lance, my RSS feed validates once again. [Details]. Also, I added a "Comment" link to the bottom of my posts (in the RSS feed). I got the idea from Russ and I think it's a good one. In my rss.vm file, I changed:

<content:encoded><![CDATA[#showEntryText($entry)</content:encoded>

To:

<content:encoded><![CDATA[#showEntryText($entry)
#if( $website.AllowComments )
   <p align="right"> 
   <a href="$absBaseURL/page/$entry.website.user.userName?
               anchor=$entry.anchor">Add a Comment</a>
   </p>   
#end]]>
</content:encoded>

In the code above, the href should all be one one line, but in order to get NetNewsWire to render my full post, I had to split it up. Is this a bug? It seems if I have a <pre> with too many characters (>80?), then it just ends the post.

If Roller users dig this enhancement, I'll commit it to CVS.

Posted in Roller at Jul 11 2003, 10:25:19 AM MDT 1 Comment

GoogleAds

Reading Russ mentioning GoogleAds in his blog got me thinking ... i get a lot of referers from google searches so i was thinking let's see if i can get this site to be accepted. Since the rules to get accepted are not disclosed it is a bit of a gamble. [Werner Ramaekers Weblog]

Hmmm, I wonder if I could qualify? I wonder if it's possible (in Roller) to only display these ads when a user is coming from Google. I don't want to spam all my readers with GoogleAds, but if someone is coming from Google - I don't mind. Ideas appreciated.

Posted in Roller at Jul 02 2003, 07:39:28 AM MDT Add a Comment

Search improvements and HowTo set your title

I did some re-factoring to the Google search box for this theme, and also figured out a slick trick to set your weblog's title to be == $lastPost.title. Basically, I refactored my _day template to add the search box when building the page, rather than after the fact.

You ask "why, I thought you loved the DOM?" I do, but it was giving me some strange behavior: in IE, a "entry" bar would show up in the middle of the last post (fixed by scrolling) and in Mozilla Firebird, I was getting a slight "shift-left 10px" behavior of the whole page. So I built it with Velocity, here's how. In my _day template, I changed this:

<div class="entry">
   #showDayPermalink( $day )
   #showEntryDate( $day )
</div>

To this:


<div class="entry">
#if ($velocityCount == 1) 
  <div id="search" style="float: right; margin-top: -2px">
    <form id="searchForm" method="get" onsubmit="return search()"
        action="http://www.google.com/search"
        style="margin: 0; padding: 0">  
        <input type="text" id="q" name="q" size="20" 
            maxlength="255" value="search this site" 
            style="font-size: 11px; border: 1px inset silver; 
                   font-weight: normal; padding-left: 2px"
            onclick="this.value=''" /> 
    </form>
  <script type="text/javascript">
    function search() {
        form = document.getElementById("searchForm");
        if (form.q.value == "search this site" || form.q.value == "") {
            alert("Please enter a search term to continue.");
            form.q.focus();
            return false;
        } else {
            form.q.value = form.q.value + " site:www.raibledesigns.com";
            form.submit();
        }
    }
    document.title="Raible Designs ~ $entries.get(0).title";
  </script>
  </div>
#end
   #showDayPermalink( $day )
   #showEntryDate( $day )
</div>

There's also a hint in there to set your weblog's title to match the title of your last post. Enjoy!

Posted in Roller at Jul 01 2003, 02:46:22 PM MDT Add a Comment

Added Google search to this theme

The idea hit me like a cold beer pouring down my throat on a hot summer day. Crisp, clean and exciting. I've been wanting to add a search form to this theme, but I didn't want to add another tab, and putting it anywhere in the header would conflict with the background image. And then I spotted the perfect spot. Right under the categories, in the banner of the first entry on this page. With a little love from the DOM, you can now search this site using this theme and Google. Here's the relevant code that I added to the bottom of this theme.

<div id="search" style="display:none; margin-top: -17px; text-align: right">
    <form id="searchForm" method="get" action="http://www.google.com/search"
        onsubmit="return search()" style="margin: 0; padding: 0">  
        <input type="text" id="q" name="q" size="20" maxlength="255"
            value="search this site" onclick="this.value=''" /> 
</div>
<script type="text/javascript">
    // get the first entry shown in the page and append the
    // hidden 'search' div from above
    document.getElementById("entries")
            .getElementsByTagName("div")[0]
            .appendChild(document.getElementById("search"));
    toggle("search");
    function search() {
        form = document.getElementById("searchForm");
        if (form.q.value == "search this site" || form.q.value == "") {
            alert("Please enter a search term to continue.");
            form.q.focus();
            return false;
        } else {
            form.q.value = form.q.value + " site:www.raibledesigns.com";
            form.submit();
        }
    }
</script>

Boy oh boy does the DOM make it easy to do web sites! Seems to work in all the browsers I use regularly (IE/Moz on Win, Camino/Safari on Mac). It doesn't work in Opera 6, but does in Opera 7. Now back to that cold beer - I'm gettin' thirsty...

Posted in Roller at Jun 27 2003, 04:57:58 PM MDT 8 Comments

Wicked DHTML Roller themes spotted in the wild

I spotted some cool DHTML-enhanced themes on FreeRoller today: My own confusion and A Corporate Eejit. Nice work gents - maybe we should add these suckers to the stock list of themes. These themes are a great example of how customizable Roller is and how it's just HTML, so pretty much anything is possible (that is possible on a web page). I'd be willing to bet you could even use Flash and use the RSS Feed for your XML input.

I'm thinking about adding a small DHTML enhancement to Roller. Basically, I'd like to show users a small picture of the theme (using these pictures) when signing up. Let me know if you think this is worth the effort and if so, I'll create a JIRA issue (uh oh, looks like we lost our bug database!).

Posted in Roller at Jun 25 2003, 10:58:02 AM MDT 7 Comments

Roller and GZIP Compression

Roller has a couple of gzip compression filters built into its codebase thanks to Lance. I haven't been using them because, according to Dave, they didn't work on Tomcat. I'm not one to doubt Dave, so I'm guessing he was running on an old version of Tomcat when this happened - because I was able to get them running lickedly split today! All I had to do was uncomment the filter mappings for the PageGzipFilter and the RssGzipFilter and voila - you're getting gzipped content (if your browser supports it). I've verified it's working using Firebird's Live HTTP Headers extension (thanks for the tip Lance). Cool beans - now help me name this new theme before I commit it. Here's some ideas I've come up with:

  • Minimal
  • Sunsets
  • LowB (for Low Bandwidth)
  • Simplicity

All suggestions are welcome.

Posted in Roller at Jun 23 2003, 09:10:27 PM MDT 9 Comments