{"@attributes":{"version":"2.0"},"channel":{"title":"On Software Engineering","link":"https:\/\/www.bilski.tech\/","description":"Recent content on On Software Engineering","generator":"Hugo -- gohugo.io","language":"en-gb","lastBuildDate":"Mon, 16 Jan 2023 00:00:00 +0000","item":[{"title":"Simple made easy by Rich Hickey","link":"https:\/\/www.bilski.tech\/videos\/simple_made_easy\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/videos\/simple_made_easy\/","description":"Most likely number one video on my list. I&rsquo;ve seen it already at least 5 times and every single time I&rsquo;m finding something new in there. A gold mine.\nI don&rsquo;t want to spoil the surprise too much, but Rich makes a point that &ldquo;easy&rdquo; is subjective but &ldquo;simple&rdquo; is objective and builds on that. Consequencces are profound.\nUnfortunately I cannot embedd it here, but it&rsquo;s available here: https:\/\/www.infoq.com\/presentations\/Simple-Made-Easy\/"},{"title":"TDD, where did it all go wrong by Ian Cooper","link":"https:\/\/www.bilski.tech\/videos\/tdd_where_did_it_all_go_wrong\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/videos\/tdd_where_did_it_all_go_wrong\/","description":"Probably number two on my list. This video helped me greatly understand the concept of a &ldquo;unit&rdquo;. That in turn, combined with bounded context idea from DDD world and hexagonal architecture with its ports and adapters, changed my perspective on tests in general. I finally understood what is the scope of a unit test and how I was doing it wrong previously."},{"title":"Improving your software by Gernot Starke","link":"https:\/\/www.bilski.tech\/videos\/improving_your_software\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/videos\/improving_your_software\/","description":"It&rsquo;s probably one of quite a few videos about that topic, but probably the only one publicly available that I know of. The topic is: value, as in how &ldquo;business&rdquo; perceives what we, engineers are doing. It&rsquo;s probably the one thing that turns you from a mere code writer to a professional software engineer. At least this is how I feel now that I understand the idea. My recommendation to all developers, if you want to advance your career, learn about value, everything else are implementation details."},{"title":"Java Case Study by Micah Martin & Robert \"Uncle Bob\" Martin","link":"https:\/\/www.bilski.tech\/videos\/java_case_study\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/videos\/java_case_study\/","description":"This is unfortunately a paid material but I believe it was worth buying. Before I&rsquo;ve seen this whole series I theoretically knew what TDD is and how to do it, but I always struggled with it. Watching this series has shown me how to apply all this theoretical knowledge, put most pieces in place.\nThe link: https:\/\/cleancoders.com\/videos?series=java-case-study"},{"title":"Engineering you by Martin Thompson","link":"https:\/\/www.bilski.tech\/videos\/engineering_you\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/videos\/engineering_you\/","description":"This video is about simple things, basics sometimes, yet we tend to forget about them way too often. Worth watching every now and then to remind ourselves what it means to be a software engineer."},{"title":"Agile is dead by Pragmatic Dave Thomas","link":"https:\/\/www.bilski.tech\/videos\/agile_is_dead\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/videos\/agile_is_dead\/","description":"This video is about how original idea of &ldquo;Agile&rdquo; is different from what we&rsquo;re usually doing on &ldquo;agile&rdquo; projects. And Dave, as one of the 17 who created the Manifesto for Agile Software Development, knows what he&rsquo;s talking about."},{"title":"Software, faster by Dan North","link":"https:\/\/www.bilski.tech\/videos\/software_faster\/","pubDate":"Mon, 01 Jan 0001 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/videos\/software_faster\/","description":"This video is just one of many in which Dan presents some of the patterns he sees and uses to deliver value faster. All are equally good and worth watching. He also seem to have started a book collecting all those patterns, available on Leanpub, but it also seems that he hasn&rsquo;t been working on that for quite some time already."},{"title":"Behaviour over structure","link":"https:\/\/www.bilski.tech\/posts\/random\/behaviour-over-structure\/","pubDate":"Mon, 16 Jan 2023 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/behaviour-over-structure\/","description":"This post was originally posted on INNOQ blog.\nNote: In this post, I&rsquo;m using the terms &ldquo;behaviour&rdquo; and &ldquo;structure&rdquo; to describe more &ldquo;dynamic&rdquo; and more &ldquo;static&rdquo; properties of a particular system or piece of software. That is, I&rsquo;m using the term &ldquo;structure&rdquo; for properties like &ldquo;Java is a statically-typed language&rdquo; or &ldquo;We follow Java Beans convention in this project&rdquo;. On the other hand, &ldquo;behaviour&rdquo; to me are things like &ldquo;The application correctly calculates SHA-512 checksum&rdquo; or &ldquo;The calculations are done within 10 seconds&rdquo;."},{"title":"Tests organization and naming","link":"https:\/\/www.bilski.tech\/posts\/testing_primer\/tests-organization-and-naming\/","pubDate":"Thu, 22 Jul 2021 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/testing_primer\/tests-organization-and-naming\/","description":"Note, this post was originally published on INNOQ blog together with Torsten Mandry and Theo Pack.\nAs our system grows, so will our test suites. For our production code, we have learned techniques to keep it maintainable. For example, we try to structure our logic into sub-aspects, put them in specific locations and give the units meaningful names. We want to achieve the same for our tests. One of the main goals is that a developer - or generally speaking, the person who has to maintain the test - knows where to find which test."},{"title":"Spring-less testing","link":"https:\/\/www.bilski.tech\/posts\/random\/spring-less-testing\/","pubDate":"Tue, 20 Jul 2021 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/spring-less-testing\/","description":"Foreword This article was originally posted on INNOQ blog.\nAfter it was published it caused a bit of a discussion on Twitter (even the creator of Spring Framework, Rod Johnson, replied) but also internally in the company (sorry, not public). The reason is, I believe, I&rsquo;ve failed to clearly state my intention right from the start. My goal when writing this post always was to say: whenever you can write a test for your application without using Spring, you should do it exatly this way."},{"title":"Test Strategy","link":"https:\/\/www.bilski.tech\/posts\/testing_primer\/test-strategy\/","pubDate":"Mon, 05 Jul 2021 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/testing_primer\/test-strategy\/","description":"Note, this post was originally published on INNOQ blog together with Torsten Mandry and Theo Pack.\nIn our previous posts, we focused on why and how we write tests. In most of our projects, there will be many of those tests. In the last post about tests granularity, we additionally stated that there usually will be different kinds of tests, on different levels of granularity. That leads to our next topic: which kinds of tests do we need and what is the ideal mix of them?"},{"title":"Familiarity - friend or foe (part 2)","link":"https:\/\/www.bilski.tech\/posts\/random\/familiarity-friend-or-foe-part-2\/","pubDate":"Mon, 26 Apr 2021 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/familiarity-friend-or-foe-part-2\/","description":"The first part of this post was not really meant to be a first part of, possibly, a longer series. Yet, I seem to have found another case where things that we know and ways how we work might be preventing us from finding other solutions, possibly better.\nSome time ago I joined a new project. I was supposed to start working on a new application that would, later on, be taken over by a team I was part of."},{"title":"Tests Granularity","link":"https:\/\/www.bilski.tech\/posts\/testing_primer\/tests-granularity\/","pubDate":"Thu, 22 Oct 2020 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/testing_primer\/tests-granularity\/","description":"Note, this post was originally published on INNOQ blog together with Torsten Mandry.\nIn two previous posts (see below) we discussed the benefits of automated tests and the properties of a good test. So far we were trying to avoid differentiating the tests in any way. This time we want to address one way how tests can be classified: tests granularity.\nAll posts in this series:\nWhy You Should Write Automated Tests Anatomy of a Good Test This post: Tests Granularity Test Strategy Tests Organization and Naming What is granularity?"},{"title":"Anatomy of a Good Test","link":"https:\/\/www.bilski.tech\/posts\/testing_primer\/anatomy-of-a-good-test\/","pubDate":"Wed, 23 Sep 2020 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/testing_primer\/anatomy-of-a-good-test\/","description":"Note, this post was originally published on INNOQ blog together with Torsten Mandry.\nIn our last post, we focused on why we should write tests and what value they provide. This time we will go far more technical and take a look at a single test. We will show what makes a test a good one and describe desired and unwanted properties. Interestingly enough, all those properties hold, no matter how isolated or integrated the test is."},{"title":"Why You Should Write Automated Tests","link":"https:\/\/www.bilski.tech\/posts\/testing_primer\/why-you-should-write-automated-tests\/","pubDate":"Thu, 27 Aug 2020 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/testing_primer\/why-you-should-write-automated-tests\/","description":"Note, this post was originally published on INNOQ blog together with Torsten Mandry.\nThis blog post gives an overview of the most common benefits gained by writing automated tests. It starts in a place where most of the projects we\u2019ve seen so far are: tests are written as a last step of the development process. Then it shows additional benefits that could be gained if we all gave the tests a bit more focus and care."},{"title":"Iteration 9 - custom functions","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-9-custom-functions\/","pubDate":"Mon, 24 Aug 2020 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-9-custom-functions\/","description":"Welcome to the 9th iteration of WebCalc. Previously I managed to extract billing module from the app module and started differentiating users from one another. This time I&rsquo;ll enable the users to define their own functions. To IDEs then.\nBut first I must apologize for what I&rsquo;ve done last time. I coupled my User class with Spring&rsquo;s UserDetails. It&rsquo;s obvious to me now, in my face even. Apparently, it wasn&rsquo;t back then."},{"title":"Familiarity - friend or foe","link":"https:\/\/www.bilski.tech\/posts\/random\/familiarity-friend-or-foe\/","pubDate":"Tue, 08 Oct 2019 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/familiarity-friend-or-foe\/","description":"Familiarity seems like a good thing, you know the thing, how to deal with it, what to expect and where problems might be hiding. But more and more I see its dark side.\nSome time ago I was working on a legacy system. It was very complex and fragile, most developers didn&rsquo;t want to have anything to do with it. We knew the time would come when we would need to touch the core of this monster, so we wrote some tests and started slowly cleaning it up."},{"title":"Iteration 8 - billing module extraction and differentiating users","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-8-billing-module-extraction-and-differentiating-users\/","pubDate":"Mon, 13 May 2019 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-8-billing-module-extraction-and-differentiating-users\/","description":"Welcome to the 8th iteration of WebCalc. Previously I promised to extract billing module from the app module and that&rsquo;s what I&rsquo;ll start with. To IDEs then.\nThere&rsquo;s nothing really fancy about extracting this module. You can see the full commit 9f191153, but it really boils down to creating a new module and copying build.gradle from calculator module, adding it to settings.gradle, moving Billing and BillingShould to the new module and importing new module in the app module."},{"title":"Iteration 7 - billing","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-7-billing\/","pubDate":"Mon, 08 Apr 2019 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-7-billing\/","description":"Welcome to the 7th iteration of WebCalc. Previously I scratched a surface of users and security in order to start working on billing. In retrospective, I don&rsquo;t think I needed any user and Spring Security at all for billing to work, at least not in the first phase. Luckily, their introduction didn&rsquo;t require much and should not actually hurt. The plan for this iteration is to get the billing as far as possible in terms of functionality."},{"title":"Iteration 6 - introducing users","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-6-introducing-users\/","pubDate":"Thu, 28 Mar 2019 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-6-introducing-users\/","description":"Welcome to the 6th iteration of WebCalc. Previously I was dealing mostly with adding some more complex calculations. Like I mentioned there already, I think that I have already enough business logic to start moving into other areas like billing or user management. I also said that I&rsquo;d be going into the unknown. Up until now, I had a rough idea of how to do things, now I don&rsquo;t, I&rsquo;ll be exploring a lot."},{"title":"About me","link":"https:\/\/www.bilski.tech\/about\/","pubDate":"Wed, 23 Jan 2019 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/about\/","description":"I&rsquo;m a software engineer trying to find the sweet spot between providing business value to my customers and technical excellence enabling me to work fast.\nFor those interested, here&rsquo;s my CV.\nI&rsquo;m also using PGP, this is my key, fingerprint is A594 DB1E F3DE AD6E C784 442B 93F9 C3F3 0943 789A."},{"title":"Iteration 5 - more complex calculations","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-5-more-complex-calculations\/","pubDate":"Tue, 18 Dec 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-5-more-complex-calculations\/","description":"Welcome everyone to the fifth iteration of WebCalc. Previously I only managed to fix a few issues with the code and upgrade Java, Spring Boot and Gradle. This time I&rsquo;ll get back to adding new functionalities and add a possibility to do more complex calculations like 1+2+3. To IDE then!\nBut first, let&rsquo;s deal with some technical issues. One is upgrading Gradle to stable version 5.0. Having installed it locally on my machine, I can just call gradle wrapper --gradle-version=5."},{"title":"Iteration 4 - fixes only","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-4-fixes-only\/","pubDate":"Fri, 02 Nov 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-4-fixes-only\/","description":"Welcome to the fourth iteration of WebCalc implementation. Previously I added multiplication and division as operations supported by my WebCalc. Especially the latter one forced me to add and change a few things in the code. By doing so I think I&rsquo;ve made a mistake, that I&rsquo;ll fix now.\nThe problem was to make Calculator stateful, it now remembers maxFractionDigits. If one user would set maxFractionDigits, all others would see that changed too."},{"title":"Testing is storytelling","link":"https:\/\/www.bilski.tech\/posts\/random\/testing-is-storytelling\/","pubDate":"Thu, 25 Oct 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/testing-is-storytelling\/","description":"While working with a customer, I recently saw a test, that looked like this: throw a big XML (&gt;10kB) at a function, get another XML of similar size back and compare it with a pre-recorded one. The test is green if they&rsquo;re equal. I guess, at the very minimum, it serves a purpose of detecting issues. The problem is that it cannot do much more.\nWhat such a test is not providing are hints as to what the problem is when it fails."},{"title":"Iteration 3 - formatting and cleanup in calculator module","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-3-formatting-and-cleanup-in-calculator-module\/","pubDate":"Wed, 10 Oct 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-3-formatting-and-cleanup-in-calculator-module\/","description":"Welcome to the third iteration of WebCalc implementation. Previously I managed to get only basic operations working, namely addition and subtraction. This time I want to go further and add multiplication and division. Whereas multiplication should be pretty straightforward, I&rsquo;m expecting issues with the division. Once I get these things working, I&rsquo;ll see if I can improve the design of calculator itself and the tests. To IDE then.\nMultiplication is, indeed, straightforward."},{"title":"Iteration 2 - actual calculations and modules separation","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-2-actual-calculations-and-modules-separation\/","pubDate":"Fri, 21 Sep 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-2-actual-calculations-and-modules-separation\/","description":"Welcome to the second iteration of WebCalc implementation. Last time I managed only to get a basic construct working and only in a very crude way. Always returning &ldquo;3&rdquo; from a controller is hardly a proper solution. This time I&rsquo;ll separate the app module from calculation one and then I&rsquo;ll start digging into actual calculations.\nBut first, looking at Gradle files I&rsquo;ve noticed a few unnecessary things. One thing is, that I&rsquo;m specifying explicit versions for JUnit and REST-Assured, which, having Spring Boot, is not necessary."},{"title":"Iteration 1 - setting up with one test","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-1-setting-up-with-one-test\/","pubDate":"Wed, 05 Sep 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/iteration-1-setting-up-with-one-test\/","description":"Welcome to the first iteration of WebCalc implementation. In my previous post I just explained my motivations and goals for this project. This time I&rsquo;ll do some actual coding. Although in the end, I&rsquo;ll try to have something &ldquo;business&rdquo; related, I guess most of the time I&rsquo;ll spend wiring things up. To the keyboard then.\nGoal I want to have a very first and simple test working: adding 1 to 2."},{"title":"Motivation and plan","link":"https:\/\/www.bilski.tech\/posts\/webcalc\/motivation-and-plan\/","pubDate":"Tue, 04 Sep 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/webcalc\/motivation-and-plan\/","description":"My previous posts were rather theoretical, a lot of philosophy, very little code. This time I&rsquo;ll do almost the opposite, I&rsquo;ll be actually writing a little system before your eyes, so there will be a lot of code. I will be referring to some concepts I was writing about previously, but this time I&rsquo;ll not be discussing them, just applying.\nMotivation There are many reasons I want to do this:"},{"title":"Understanding decomposed","link":"https:\/\/www.bilski.tech\/posts\/random\/understanding-decomposed\/","pubDate":"Fri, 22 Jun 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/understanding-decomposed\/","description":"I previously wrote about simplicity and how it helps to understand software code. In that post, I already mentioned the use of concepts like set theory. I\u2019d like to expand on this and show how to boost readability of code.\nDespite what people might think, our main purpose as developers is not writing software, but solving problems. A code is just a means, not the goal. Nobody demands software just for the sake of it from a developer."},{"title":"Supporting understanding with simplicity","link":"https:\/\/www.bilski.tech\/posts\/random\/supporting-understanding-with-simplicity\/","pubDate":"Fri, 15 Jun 2018 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/supporting-understanding-with-simplicity\/","description":"Some time ago, my colleague Joy Clark wrote about simplicity. I&rsquo;ve also approached this topic once before. I&rsquo;d like to follow up on both articles and show how simplicity can boost our understanding of software. I will also propose that we look at other disciplines to see if and how simplicity affects them. Maybe we can benefit from their experience.\nWhat&rsquo;s all the fuss about? Why do we even talk about simplicity?"},{"title":"What do I believe in","link":"https:\/\/www.bilski.tech\/posts\/random\/what-do-i-believe-in\/","pubDate":"Wed, 02 Nov 2016 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/what-do-i-believe-in\/","description":"Below are my guiding principles, that are the basis of what, how and why am I doing with regards to software development.\nLong term development speed First and foremost I understand my main responsibility as delivering value as fast as possible in the long term. By delivering value I mean adding, changing or removing features, that &ldquo;business&rdquo; requested, but also things like:\nimproving processes around me, both technical, like application deployment, and business, like simplifying stock management, proposing and introducing new techniques and technologies whenever I feel that they will improve things, sharing knowledge within and outside of the team (blog, mentoring, pair\/crowd programming, etc."},{"title":"Code quality as a winning factor","link":"https:\/\/www.bilski.tech\/posts\/random\/code-quality-as-a-winning-factor\/","pubDate":"Fri, 21 Oct 2016 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/code-quality-as-a-winning-factor\/","description":"Software development seems to me like the only discipline where practitioners can get away with producing crap. If you&rsquo;re a doctor and you screw up surgery or treatment, in the worst case you will kill your patient, in the best you will not make his\/her situation worse. If you&rsquo;re a bridge builder and you&rsquo;ll make a mistake during construction, in the worst case the bridge will collapse killing people, in the best case, the bridge will be usable only after adding some additional support to it."},{"title":"Writing good test scenarios","link":"https:\/\/www.bilski.tech\/posts\/random\/writing-good-test-scenarios\/","pubDate":"Tue, 16 Aug 2016 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/writing-good-test-scenarios\/","description":"On my current company&rsquo;s blog I posted some time ago part one of &ldquo;writing good tests&rdquo;. Now it&rsquo;s time to continue.\nLast time I just barely scratched the topic of writing test scenarios. I briefly gave only a few hints like &ldquo;avoid unnecessary information&rdquo;, &ldquo;don&rsquo;t include implementation details&rdquo; or &ldquo;don&rsquo;t repeat yourself in different scenarios&rdquo;. This time I&rsquo;d like to dig deeper and present results of discussions we had in the team."},{"title":"Microservices - a solution or a problem?","link":"https:\/\/www.bilski.tech\/posts\/random\/microservices-a-solution-or-a-problem\/","pubDate":"Mon, 04 Jul 2016 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/microservices-a-solution-or-a-problem\/","description":"Microservices seem to be everywhere, everybody is talking about them, writing and consuming them. For a good reason, they can solve a lot of problems like scaling, high availability, independent developability, etc. But are they really THE solution to our problems? Do we always remember their costs?\nIntegration One of the good things about microservices is, that they&rsquo;re simple. Each one should be easy to understand even by a new person joining a team."},{"title":"More on MyFaces and ContentType","link":"https:\/\/www.bilski.tech\/posts\/random\/more-on-myfaces-and-contenttype\/","pubDate":"Thu, 23 Jul 2009 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/more-on-myfaces-and-contenttype\/","description":"I&rsquo;ve dug some more, debugged some more and know a little more. The whole problem with Apache MyFaces and ContentType comes from the awful idea that there is more than one moment, when, for a single request, resulting ContentType is evaluated.\nMyFaces looks at Accept HTTP header, which, in my case, states text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8. MyFaces goes through that list and picks first entry which it understands, in my case that&rsquo;s text\/html. It doesn&rsquo;t really matter, that next entry application\/xhtml+xml is what I would really want, &ldquo;text\/html&rdquo; was first."},{"title":"Including JavaScript in HTML content","link":"https:\/\/www.bilski.tech\/posts\/random\/including-javascript-in-html-content\/","pubDate":"Tue, 07 Jul 2009 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/including-javascript-in-html-content\/","description":"For the last couple of days, I was struggling with Java ServerFaces. The exact problem was, that commandButtons were working as expected, but commandLinks were not. We are using Apache MyFaces with Tomahawk and Sandbox components. We were going to use commandLinks for navigation and other uses like selecting nodes in Tomahawks&rsquo; tree2 component, but we were forced to render commandButtons instead, which looked quite awkward in some places.\nSymptoms we got, were that three browsers: Firefox, Opera and Konqueror, were complaining about &ldquo;oamSubmitForm is not defined&rdquo; after clicking a commandLink."},{"title":"Autowiring EJB 3.0 in Tomcat from remote JBoss","link":"https:\/\/www.bilski.tech\/posts\/random\/autowiring-ejb-3.0-in-tomcat-from-remote-jboss\/","pubDate":"Sat, 20 Jun 2009 00:00:00 +0000","guid":"https:\/\/www.bilski.tech\/posts\/random\/autowiring-ejb-3.0-in-tomcat-from-remote-jboss\/","description":"To be honest I&rsquo;ve never fully understood EJB 2.x or written an application using that specification. Well, I&rsquo;ve written some EJBs, but it was just following an example of different EJB in the same project. Even though we used Spring at that time nothing seemed simple and straightforward. Every time I wanted to use an EJB I had to modify several XML files to be able to inject EJB into some bean."}]}}