RSS Toggle Comment Threads | Keyboard Shortcuts

  • Mike 12:09 pm on January 7, 2009 Permalink | Reply  

    If DZone were down where would you spend your day? 

    Dzone just moved to new servers and changed their DNS yesterday. My local DNS has not updated yet so for me, Dzone is down still. I usually check the font page and upcoming links many times a day. While its been down I have had to look elsewhere. Mostly I have just been at javablogs.com.

    Where would you go to read about code if DZone were down?

    This post is meaningless without your comments. Please share your links with me in the comments section.

    Thanks!

     
    • Matthew Schmidt 4:18 pm on January 7, 2009 Permalink

      Hi Mike. I just saw your note on JavaBlogs : ) We recently moved to a better and faster datacenter and one of the side effects was that some DNS servers held onto our old addresses. We hope that this won’t continue to be an issue for very long : )

      -Matt

    • Mike 5:12 pm on January 7, 2009 Permalink

      Hi Matt. Thanks for the update. Rick hit me up too. I am just curious as to where people get their software news other than dzone so that I and others can get all the good news out there. I’m not looking to replace dzone.

    • Michael Easter 5:23 pm on January 7, 2009 Permalink

      DZone and JavaBlogs are great but I use Google Reader to snare those blogs that are especially compelling. Also, StackOverflow is an interesting new site.

      Naturally, I tell my teammates to simply make CodeToJoy their home page. At CtJ, we aren’t above shameless plugs.

    • Rich LaMarche 12:21 am on January 8, 2009 Permalink

      Give popurls, DeveloperURLs, or Hacker News a shot. I currently have the same issue. Dzone shows down at work still but is working from home.

  • Mike 11:13 pm on November 13, 2008 Permalink | Reply  

    Favorite Software Patterns Books 

    I really enjoy reading books about java and software development. My favorite type of book is the patterns books. Patterns books are great because the chapters are usually short and very focused. So you can read a chapter over lunch, or before you hit the pillow and usually not put the book down in the middle of a 30 page chapter.

    I am in the midst of reading and reviewing Pro Java™ EE Spring Patterns: Best Practices and Design Strategies Implementing Java EE Patterns with the Spring Framework. Reading this book got me thinking about all of the other patterns books that I have read and really enjoyed. Here are my favorite software patterns books.

    Core J2EE Patterns: Best Practices and Design Strategies

    I think this was my first patterns-based book. I got a free copy when I was enrolled in a week long java patterns and architecture class in 2002 or so. I now have two copies on my bookshelf. One for me and one to lend out to friends and colleuges.

    Core Patterns starts by introducing the concept of software patterns, then takes a unique approach by describing common J2EE anti patterns and then discussing the refactored solutions. This allows a straight-through reading for those unfamiliar with patterns or use as a reference guide for experienced pattern users.



    The Manager Pool: Patterns for Radical Leadership

    image

    Of all the patterns books that I have read, I think this book has the most chapters at a whopping 61. Its also my favorite. I think its my favorite because it sort of on the fringe of software development, so I don’t feel like I know as much about management. I also like it because I could relate to most every pattern either as a subordinate or as a manager.

    This fun book identifies patterns such as Tribal Language, Leviathan, and Unique Place. The chapters are short and quick to read. This book will help you communicate more effectively, understand your subordinates, and make you a stronger software manager.



    Pro Java™ EE Spring Patterns: Best Practices and Design Strategies Implementing Java EE Patterns with the Spring Framework

    image

    I am currently reading this book. The author has a poorly written java web application that uses no model-view-controller. He takes you through the refactoring of the project. He explains a pattern, and then discussues how the Spring MVC implements the pattern. It is common for the next pattern to build on the previous, so this book is a little harder to jump to an arbritrary chapter and start reading, unless ofcourse you know the patterns aready.

    This book takes you though the presentation layer, business layer, and integration layer and discusses how Spring uses and implements patterns throughout each layer of the software. A great Spring reference or a great MVC reference. I am glad I got this one for my bookshelf.




    Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML

    image

    This book opens with background on pattern research, including the groundbreaking design patterns. It goes further, with 41 software patterns, all illustrated with UML diagrams and sample Java code. Early patterns, such as Delegation and Proxy, show how classes can work together without relying on inheritance. Next come creational patterns, such as the Factory and Builder patterns and the newer Object Pool pattern.

    These pages turn out to be a great resource not only for patterns, but also for Java and UML. If you read this one and enjoy it, there is also a second volume.



    Design Patterns: Elements of Reusable Object-Oriented Software

    image

    This book was a little more difficult to read. Its much more academic-oriented, rather than written to be a casual read. It also goes deeper into the pattern than most other books do. I guess that makes it a good reference. This is one of the only patterns books that I have read that delves into the user interface.

    The downside with this book, in my opinion, is that its geared towards C++ software development, so as a java developer, I spent more time trying to understand the code examples than I did reading and understand the patterns.

    Check out the table of contents.



    Software Architecture Design Patterns in Java

    image

    Covering 35 patterns, a long introduction to UML, and a web hosting company case study, this book weighs in at almost 500 pages. This one is practially a design pattern encyclopedia, so if you can only have one design pattern book on your shelf make it this one.

    This book relys big on examples and has become a fundamental book for newer and older developers alike. After reading this one I think you’ll find yourself using patterns names more often in discussing your software.


    Anti-Patterns and Patterns in Software Configuration Management

    image

    To end, an anti-patterns book. And to be honest, This one I have not read, but its next on my book list becuase it is on a topic that so few developers are experts in or sometimes even carry a conversation in. This book is coming up on 10 years old

    As I understand, most readers of this book can really relate to most every pattern because their organizations are so bad at configuration management. This could give you the leg up to show off you knowledge and help your organization become more successful in the art of software development. At least thats what I hope it can do for me.

    UPDATE: I just ordered this from amazon.

    Thanks for reading my list. Now I have to ask, have you read any of these? Do you have any comments on them? Have you read any great patterns-based books that you would recommend?

     
    • Jonas 4:08 am on November 14, 2008 Permalink

      Interesting! Some books of those books I have never heard of.

      For enterprise development Martin Fowlers “Pattern of Enterprise Application Architecture” is a MUST!

      The Pattern Catalog can also be found on Fowlers homepage:
      http://www.martinfowler.com/eaaCatalog/

    • Javier 3:24 pm on November 14, 2008 Permalink

      Hi Mike, what about head first design patterns?

    • Mike 12:09 am on November 16, 2008 Permalink

      @Jonas – Thanks Jonas. The catalog on Fowler’s page is a great resource.

      @Javier – Yes. I had a copy of that in my office a few years ago. We got it along with about 20 other books. A lot of the other books were more interesting to me at the time, so I never quite got around to head first. I think I flipped through and and didn’t like it for some reason.

      Thanks for the comments, fellas.

    • Jonas 9:39 am on November 16, 2008 Permalink

      I think the “Head First…” series are very good books for learning, but they are no reference books.
      To people who are learning for a certification I always suggest first to look if there is a “Head First…” title around.
      But you don’t want a “Head First…” book on your shelf to quickly look something up.

      … just my opinion…

  • Mike 10:11 pm on September 11, 2008 Permalink | Reply  

    “Pro Java EE Spring Patterns” Table Of Contents Preview 

    A great way to determine if you want to buy a book or not is to review the books table to contents.

    Pro Java™ EE Spring Patterns: Best Practices and Design Strategies Implementing Java EE Patterns with the Spring Framework

    Pro Java™ EE Spring Patterns: Best Practices and Design Strategies Implementing Java EE Patterns with the Spring Framework by Dhrubojyoti Kayal

    • Describes a catalog of patterns used across the three tiers of a typical JEE application
    • Provides implementation details and analysis of each pattern with benefits and concerns
    • Describes the application of these patterns in a practical application scenario


















    And finally, an overview of each of the patterns that are reviewed.



     
  • Mike 9:13 pm on September 1, 2008 Permalink | Reply
    Tags: api, book, book review, review   

    “Practical API Design: Confessions of a Java Framework Architect” Book Review 

    Search This Book

    • Published by Apress, August 2008
    • 416 pages
    • ISBN 1430209739

    The Good

    • Numerous practical examples from the Netbeans API and the JDK.
    • Each chapter introduces a concept that could profoundly change your code.
    • Practical situations with concrete examples.
    • Explanations for novices and experts.

    The Bad

    • System.out
      .println
    • Have to read Theory before getting to the practical exapmles.
    • Subtitled “Confessions” ?

    About the Author

    Jaroslav Tulach is the founder and initial architect of NetBeans, later acquired by Sun. As creator of the technology behind NetBeans, he is still with the project to find ways to improve the design skills among all the programmers who contribute to the success of NetBeans open source project.

    Intended Audience

    Apress.com, the publishers, describe this book as being recommended to every API architect who prefers a bit more engineering design over a purely artistic one. but this book is really much more for anyone who writes code that anyone else consumes – and who doesn’t do that? This book is for any developer who is not brand new to software development.

    Selected Chapter Highlights

    There are 19 chapters. There are a couple of dull chapters, but by far the majority are very interesting, applicable, and well laid out with introductions and examples of most every concept.

    Chapter 1: The Art of Building Modern Software

    The first chapter was tough to get through, but it does introduce a key concept of API design and a focus of many discussions throughout the book: cluelessness. Jaroslav suggests that cluelessness supports “the most promising development style.” The pragmatic use of the bulldozer approach: reuse components that are already available, compose applications form big chunks of premade libraries, glue them together, and make sure it works even without fully understanding how it works.

    Chapter 2: The Motivation to Create an API

    Chapter 2 is important in that it lays out, as the titles states, “The Motivation to Create an API.” This chapter is interesting and fun to read because it lays out exactly why you are reading the book. The biggest point that I took away from this chapter is that APIs are for human beings – for other software developers like yourself – not for computers. And also that not all projects need an API, or at least not a high quality API.

    Chapter 5: Do Not Expose More Than You Want

    This chapter is the first of many that represent the reason that you bought the book. This chapter starts Part 2 of the book titled, “Practical Design.” Here, Jaroslav begins describing some practical API designs and even some design patterns. We get into applicable sections like “A method is better than a field”, “A factory is better than a constructor”, and “Do not expose deep hierarchies”. This is one of those chapters that you will come back to and read a few times and will refer to in conversation.

    Chapter 8: Separate APIs for Clients and Providers

    Chapter 8 was one of my favorites. I lead an open source project with both an internal and external API under development and this chapter was right on point for our efforts. This chapter explains the differences between, and how to package APIs for clients and APIs for providers. Jaroslav explains how if you mix your API and SPI together within a single class, then you can never modify the class, stating that adding a method is forbidden because of the contract for SPIs and removing a method is forbidden because the contract for the APIs.

    Chapter 10: Cooperating with Other APIs

    Chapter 10 discusses how to work with third parties in your application. The key concept that I took away was never to export third party classes through your API. When you do this, you lose control. If the third party changes their API, then your API has changed without you doing anything. A change in a third party could even break your software, or your end-user’s implementation of your software.

    Chapter 15: Evolving the API Universe

    Chapter 15 introduces methods for changing an API without breaking backwards compatibility. This chapter also describes some tools and techniques that you can use to break compatibility, but to still provide your users with support for the old API by using libraries that provide bridges. Being able to provide new APIs that break backwards compatibility can be very powerful.

    Comments

    First, my complaints. They are pretty trivial for the most part.

    I have to complain about the subtitle, “Confessions of a Java Framework Architect”. Confessions? A confession is “an admission of misdeeds or faults.” The author does describe a few mishaps from the NetBeans API, but I would hardly consider this a book of naughty confessions.

    I also have to complain about some of the code examples, but I think this complaint is pretty common among software books with code. Sometimes, commonly accepted software development practices are ignored or left out for the sake of brevity and keeping the example small enough to fit on the page. One of the very first code examples comes on page 47 and in it (and throughout the book), Jaroslav hits us with a System.out.println. Wouldn’t this be like reading a web design book where all the examples used table-based layouts? Doesn’t everyone use some form of logging abstraction. I hate when books don’t follow best practices.

    My last complaint is the first four chapters that make up Part 1 “Theory and Justification.” They are all theory are pretty boring. They are tough to get through when you know that if you just skipped a couple chapters you could be reading practical examples with code. There are a few good points and a few things that are good to know before you get to the practical part of the book, but I wish Jaroslav would just make the points and move on the Part 2 “Practical Design”.

    I had a few complaints but they are mostly trivial. This truly was a good book. The best part is that the author, Jaroslav Tulach, is the founder of Netbeans and the leader of its API. He has dozens of great examples of good and bad API design from his experience with Netbeans. He describes situations where their API got out of control and how they dealt with it, methods for monitoring your API as a community or team with an API review, and how to avoid API mishaps. Jaroslav has also been around long enough and is so intimate with the evolution of the JDK that he is able to site specific examples in the JDK where changes to the API broke software around the world. Jaroslav is very knowledgeable on the topic and his writing shows it.

    The book is full of practical examples. After reading many chapters, I went right to my open source project, Architecture Rules, and either changed code or emailed developer mailing list to suggest changes to code to encourage a better, more malleable and extensible API. I now realize how not only are my interfaces and methods part our API, but so are our file outputs and inputs. Even our exceptions messages are part of our API.

    This is without a doubt a book that you need to put on your bookshelf. This is the first book of its kind and the tips and tricks that it provides is timeless – a key attribute of any pragmatic software development book. I encourage you to flip though this book at your local bookstore or just download Chapter 1:

    Download the Excerpt

    Bookpool.com offers this excerpt: Chapter 1: The Art of Building Modern Software.

    Resources

     
  • Mike 7:29 pm on September 1, 2008 Permalink | Reply  

    “Practical API Design: Confessions of a Java Framework Architect” Table Of Contents Preview 

    A great way to determine if you want to buy a book or not is to review the books table to contents.

    Practical API Design: Confessions of a Java Framework Architect by Jaroslav Tulach

    • Teaches you how to write an API that will stand the test of Time
    • Written by the designer of the NetBeans API at Sun
    • Based on best practices, scalability, and API design patterns

    chapters 1 to 3

    chapters 4 to 6

    chapters 7 to 11

    chapters 12 to 15

    chapters 16 to 19

     
  • Mike 8:41 pm on August 20, 2008 Permalink | Reply  

    Why not an Open Source contribution tax deduction? 

    Have you heard of the Artists-Museum Partnership Act? Probably not. It didn’t even have a wikipedia article until I wrote it. In a few words the act would:

    amend the Internal Revenue Code of 1986 to allow taxpayers who create literary, musical, artistic, or scholarly compositions or similar property a fair market value (determined at the time of contribution) tax deduction for contributions of such properties, the copyrights thereon, or both…

    The artists put a lot of time, creativity, experience, and thought into their work, and then they donate it to museums so that the public can share in this art at a free or deeply reduced cost. This bill allows those artists to be justly compensated for their work. So its good for the public and good for the artist right? Maybe, depends on your political views I’d suppose. And just to be straightforward with you, this is only a proposed bill. It has not been made law yet despite the fact that it was introduced two years ago and has made it through the senate.

    So the question is, if artists can work on their art only to donate it and receive a tax deduction, then why don’t open source project leaders and contributors deserve equal rights? Well first, there are some issues to consider.

    Art is Understood

    Actually art is quite subjective, but that’s not what I meant. Art has been around since the beginning of time, so when it comes to writing and developing federal laws, congress has time and experience on their side. There are hundreds if not thousands of laws governing art. Computers, software, and information technology on the other hand is still very new. Most of it is still not regulated, and the geezers who are writing the regulation don’t know the difference between broadband and a pickup truck. It will still be many years before they get a handle information technology.

    Fair Market Value

    How do you determine the fair market value of open source software? Lines of code? That is a pretty lame metric. How about prevalence in the market place – is more users equal to a great worth? What about cutting edge software? Usually those to enter the market first make a little extra something for the risk and the know how. Forget about the code. What about documentation? And the size of the community. It’s going to be extremely hard to apply any type of accurate value to most open source projects.

    Many contributors

    Open Source software typically has many developers. From the project leaders and major contributors to the developers who simple submit a patch or two. But also consider issues that are reported, documentation, mailing lists, and other support channels. They are in some way or another contribute to the software as a whole and are important to making the software useful. So how do you determine each individual contributor’s value and thus determine their share of the deduction?

    Long development periods

    With art, you have a creation period, then a final release. With software, we have  creation periods that can last years, with many intermittent releases – some of which add value to the software others of which may actually make the software less valuable. So you could take the value of this release less the value of the last release to come up with this releases value. Careful. If you introduce too many bugs, the value could be negative, and could owe the IRS. Wow.

    Difficult to track

    Artists produce a single artifact that is sold or donated. Software is reproducible and is almost free to do so an infinite number of times. The usage of the software is very important in determining its value. For example, a project with a couple of users probably is not worth as much as a project with hundreds of users. Your Pumpkin Path is no where near as prominent as Apache’s Web Server – or is it. How do we know? There needs to be some way to determine an exact user count or at least to determine what grade you might be in, be int 1-10 users, 10-100, users, 100-1000 users, etc. I run Architecture Rules and I honestly don’t know if I have 10 users, or 100. You could look at download counts, but maven downloads aren’t tracked. And what about when one user downloads the artifact and puts it in their organization repository. There could be 100 users from that one download. This would be a hard number to come up with, and even harder the more successful a project becomes.

    Your Next 1040EZ

    The bill is not law yet, but if artists deserve tax deductions for their donations, then so do open source contributors. But we are along way away from properly regulating the computer and software industries. I have also outline a number of major hurdles before us before we can even begin to determine how big that deduction might be. So next April when your filling out your tax forms (yeah, April, because you waited until the last minute) think about how much value you have created with your open source projects and how long its going to be before you see any of that value put back into your wallet.

    The one thing that we can do from here is to keep an eye on this bill. If it goes into the books, then we have something to start fighting for and it might be time to call your less-than-computer-literate congressman or woman and start pressing them for your fair share.

     
    • Mike 1:19 pm on August 28, 2008 Permalink

      Looks like France beat us to this one…

      This summer, an economic commission set up by French President Nicolas Sarkozy recommended tax benefits to stimulate even more open source development.

      Read the rest of the article found at http://ossspyglass.com/

    • Chris 5:04 pm on March 8, 2009 Permalink

      Odd that you mention this — a few days ago there was a Slashdot article on a bill that does exactly what you describe:

      http://assembly.state.ny.us/leg/?bn=A06380

    • George 5:08 pm on March 8, 2009 Permalink

      It’s a great idea in theory, but nearly impossible to implement in practice. There’s no way one can accurately calculate fair market value. Many OS projects only realize their true value to the community many years later.

      Foundations are a more workable model for rewarding open source contributions by programmers. Rather than having to calculate fair market value, foundations may compensate programmers for their actual effort. Donors are rewarded with tax deductions for their contributions to the foundation.

      There are many open source foundations today that take advantage of this model. The Free Software Foundation is one of the oldest around, but there’s also Linux, Apache, and Mozilla Software Foundations, just to name a few.

    • Mike 7:54 pm on March 8, 2009 Permalink

      Thanks Chris, for linking to that.

      NewYorkCountryLawyer writes

      “Assemblymen Jonathan Bing and Micah Kellner, along with a number of co-sponsors, have introduced proposed legislation in New York State which would grant a tax credit to individuals acting as volunteers who develop open source programs. The idea of the credit is to ensure that volunteer developers, who could not otherwise deduct their expenses because they are not part of a ‘business,’ should nevertheless be able to receive a tax benefit for their contribution. The credit would be for 20% of the expenses incurred, up to $200. The preamble to the bill notes that the New York State Assembly itself currently uses ‘Open Source programs such as Mozilla for email, Firefox for web browsing, and WebCal for electronic calendars,’ and that these programs have led to significant cost savings to taxpayers. The preamble also cited a 2006 report authored by John Irons and Carl Malamud from the Center for American Progress detailing how Open Source software enhances a broader dissemination of knowledge and ideas.”

c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
esc
cancel