tag:blogger.com,1999:blog-73124379622713810212024-03-13T23:14:59.030-04:00Deven Phillips - Über-geekVarious interesting things that I have learned and wanted to share.Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.comBlogger46125tag:blogger.com,1999:blog-7312437962271381021.post-8908864002001167162019-08-22T10:25:00.002-04:002019-08-22T12:22:21.750-04:00CodepaLOUsa 2019 - PresentationsYou can find the slide decks and collateral from my CodepaLOUsa 2019 session here.
A little security goes a long way in DevOps culture from Deven Phillips
Contract-First API Development from Deven Phillips
Start with an example JSON object:
{
"title": "Something I need to do",
"description": "A long description",
&Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-84125076069428029452018-11-03T07:02:00.000-04:002018-11-03T07:02:16.427-04:00What IS Jest, And How Is It Related To A Vue 3 Project?
I was recently talking with a developer who said "TDD Ruins Weekend" and then proceeded on to "TDD ruins lives". The hyperbole was amusing, but seeing as how I was contracted to help teach TDD to that team it was pretty concerning. After patiently working my way through to understand the issues, it wasn't really TDD that the developer disliked, it was the lack of understanding of the tools Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-22582588045315742292018-11-02T15:36:00.000-04:002018-11-03T05:38:06.603-04:00Using Vue Test Utils With Jest - Vue 3In our previous posts we have talked a little informally about testing Vue 3 applications using Jest and vue-test-utils. In this post we will dig a little deeper into the specifics of how vue-test-utils works.
vue-test-utils is a set of tools which help us to write tests for Vue components without having to write those tests as End-2-End tests to be executed against a running web site. In Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-83688090990139758862018-10-21T15:18:00.001-04:002018-11-02T14:12:57.139-04:00Testing Vue Applications With Interactions Involving Asynchronous Operations
My recent series of posts on testing Vue.js applications using Feature Specifications is progressing nicely. In this segment, I will show you how you can test Vue properties and use asynchronous operations in your tests.
Starting from where we left off in our last post, we will implement the login function using a REST API client attached as a Vue property. For the purposes of this document, Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-62058494272360407512018-10-19T23:10:00.000-04:002018-11-02T14:12:42.668-04:00Interaction Testing A Vue.js Application With Vue Test Utils, Jest, & Jest CucumberIn my last post about Vue testing, we got ourselves bootstrapped and ready to write tests and we wrote a simple test to see if our Vue page was being rendered properly. In this post, we're going to walk through how to do simple interactions with our Vue application using Vue Test Utils, Jest, and Jest Cucumber.
Starting from where we left off in the last post, we are going to write some simple Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-13337233595072282962018-10-05T23:01:00.002-04:002018-10-05T23:01:30.239-04:00Test First Development With Vue.js, Quasar, and jest-cucumberAs a long-time backend/services developer, I have never had much patience for writing front-end applications in all the latest and myriad JavaScript frameworks. Angular is too complex, React is not intuitive, etc... About a year ago, a colleague of mine at Red Hat's Open Innovation Labs introduced me to VueJS and my front-end development attitude was forever changed. Vue is, in my humble opinion,Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-61194505324206743882017-09-22T12:40:00.001-04:002017-09-22T12:40:47.003-04:00Testing Vert.x Applications With SpockFramework
I was recently working on a project for a client where Vert.x was the suggested tool for server-side development. Another requirement was the use of Behavior Driven Development (BDD). While Vert.x has an extensive unit testing modules, it is based on JUnit and does not lend itself to BDD. Having used SpockFramework with great success in the past, I decided to try it out on a completely reactive Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-5567414587744973592017-08-22T10:54:00.000-04:002017-08-22T10:54:04.791-04:00Avoiding Nested Callback Complexities In Vert.x And Java 8If you have experience using callbacks in various applications and languages (Node, Swing, Vert.x, etc...), you are probably familiar with what some people refer to as Callback Hell.
Generally, you have some sort of anonymous function within an anonymous function and chaining deeply until you see something like:
One way that I have used to avoid this difficult to read code is to use method Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-3564571662956586862017-02-06T09:07:00.000-05:002017-02-06T09:07:47.129-05:00Vert.x And Callback HellOne thing which some developers may not find appealing in Vert.x is the use of callbacks. Specifically when you have all sorts of nested Lambda/Closure blocks in your code, it can make your code harder to understand and much harder to test. In this post, I will demonstrate a way of writing your code so that the impact of callback hell is minimized and testing options are improved.
Let's look at Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com1tag:blogger.com,1999:blog-7312437962271381021.post-39205909723012413112017-02-03T08:00:00.000-05:002017-02-03T08:00:19.293-05:00Vert.x Web And Request RoutingIn yesterday's post, we started looking at handlers; but we only showed how to set up a handler for ALL HTTP requests. It would be nice if there were an easy way to attach a handler to SPECIFIC HTTP requests. There is, and it's called Vert.x Web. Vert.x Web has a number of additional features above and beyond the Core features:
Session Handling
Authentication Hooks
Static Content Handling
Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-47981082270837473712017-02-02T10:07:00.001-05:002017-02-02T10:10:51.799-05:00Vert.x HandlersLet's do an exercise to better understand Handlers in Vert.x
HandlersA handler in Vert.x is a form of Callback. Handlers are passed as arguments to some Vert.x methods so that the callback can be executed once a particular asynchronous operation has been completed. Handlers for Vert.x can be written in Groovy in several ways:Exercise 1: Handler classesThe basic Handler in Vert.x is any class Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-38905771002101123982017-02-01T08:00:00.000-05:002017-02-01T08:00:03.924-05:00Hello Vert.x World!From out previous 2 posts, we had been explaining a bit of background and preparation to be able to start writing Vert.x code. In this post, we will actually start to write some Vert.x code and examine some of it's features.
Our First Vert.x Application
Get The Vert.x Runtime
Vert.x has a command-line runtime for deploying purely Vert.x applications. It can be downloaded from the Vert.x web
Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-8547648191920347992017-01-31T08:00:00.000-05:002017-01-31T11:05:10.692-05:00Vert.x BasicsIn part 1, we discussed some of the ideas behind Vert.x. In this, the second post in the series, we will discuss some more details and coding conventions used in Vert.x. Vert.x is pretty easy to get started with. The most difficult part is getting used to the asynchronous nature of the code. Let’s begin a little by talking about callbacks, what they look like, and how they are used.
CallbacksA Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-56948392474391581762017-01-30T08:00:00.000-05:002017-02-03T09:12:07.120-05:00Vert.x - A PrimerRecently, I started working on writing a book about writing Reactive applications using Vert.x. To better help me organize my thoughts and to get early feedback, I have decided to start writing a series of blog posts which will eventually be integrated into that book. You, my dear reader, will get to follow my journey as I try to explain the wonderful and productive world of writing applicationsDeven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com2tag:blogger.com,1999:blog-7312437962271381021.post-31469451088028398532016-08-22T11:36:00.003-04:002016-08-22T11:38:14.707-04:00RedHat Enterprise Linux, McAfee, Java, and slow startup!!!I recently ran across an issue with a Java application taking several minutes to start on a RHEL 6 host, but I could not reproduce the problem in any of my development environments. Turned out to be caused by McAfee/NAI anti-virus. If you are forced to use NAI/McAfee on Linux (for some stupid reason), then you might want to try this fix.
/opt/NAI/LinuxShield/bin/nails on-access --disable
Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-42372143558959375002015-03-27T23:38:00.002-04:002015-03-27T23:38:54.073-04:00An Awesome Way To Migrate To PostgreSQL From MySQLPostgreSQL... We read about it, but so many of us have MASSIVE legacy projects built in MySQL that we cannot easily jump the fence... Well, that has gotten a lot easier of late with the improvement of PostgreSQL's Foreign Data Wrappers (FDW)... FDW allows you to use PostgreSQL as your database connection, but have it actually pass queries through to an FDW implementation (like mysql_fdw). Then Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-46866016025415427652015-01-06T22:33:00.002-05:002015-01-06T22:33:21.311-05:00WebSocket Development With Java And JettyRecently at work we have been using WebSockets to communicate between our microservices and our service registries. In order to teach these concepts to others on my team, I decided to create some example projects on GitHub which show how easy it is to create WebSocket servers AND clients in Java.
Let begin with the server as it requires the most work. Jetty is an API, Server, and framework forDeven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com2tag:blogger.com,1999:blog-7312437962271381021.post-88630671178158608322014-12-29T10:46:00.000-05:002015-03-23T13:02:38.779-04:00Java "Hangs", and how to combat them...A recent discussion on the KYOSS list has made me yet again aware that some people still consider Java to be "slow". And from my position, deep inside of the Java ecosystem, I am always shocked by this attitude... Then, I stop and think about some of the complexity involved with properly writing/tuning a Java application; especially large enterprise Java applications. So, in an effort to help, I Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com2tag:blogger.com,1999:blog-7312437962271381021.post-23347126373163063442012-05-29T14:03:00.001-04:002015-03-23T13:02:53.891-04:00Highly Parallel Small Processes In ErlangRecently, my employer needed a way to implement a network proxy which could handle tens of thousands of concurrent packets (UDP) which were all very short-lived processes. We had implementations in Java, C, and Go. None of them were able to keep up with our requirements. So we tried writing our new version in Erlang/OTP, and there we finally had some success after some trial and error.
For Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com3tag:blogger.com,1999:blog-7312437962271381021.post-12192710398892289602011-07-14T23:14:00.000-04:002015-03-23T13:03:04.553-04:00Book Review - Pro PuppetRecently, I was contacted by Apress and asked to read and review their new book, "Pro Puppet". Seeing as how I had been working my way through understanding puppet for my new job, I was quite excited to check out yet another resource. I'll try to be fair in this review, but sometimes your first love will always have a special place in your heart. And without further ado, in all of it's glory, my Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-29748993207602112332011-03-04T20:44:00.001-05:002015-03-23T13:03:23.699-04:00Introduction To Java Persistence This is the blog representation of the presentation I gave at CodepaLOUsa in March of 2011. The presentation included some basic introduction and history and some code examples which are shown below.
The Long Road To JPA Java has long had database capabilities. We started with JDBC, which is excellent for working directly with the database. A nice Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com1tag:blogger.com,1999:blog-7312437962271381021.post-32143791453449156742010-11-18T09:45:00.000-05:002010-11-18T09:45:13.797-05:00The Trials And Tribulations Of Windows Terminal Servers (Part 2) In the first segment I wrote on Terminal Services I discussed Terminal Services roaming profiles, their difficulties and some best practices. In this article I want to cover the various performance improvements you can make on your network to improve the overall responsiveness of terminal services. Be aware that while most of these are from well tested documents, making Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-73874855281617288612010-10-26T09:56:00.001-04:002010-10-26T10:02:22.867-04:00The Trials And Tribulations Of Windows Terminal Servers (Part 1) My employer made the decision to move to thin client computing several years ago, and I wanted to share with people some of the lessons learned and best practices for using Windows Terminal Services. In addition, I want to let people know what will not work (as best I can tell). I've experienced a lot of frustrations, but as we have overcome problems we have documented andDeven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-19155184138355746332010-10-26T09:49:00.003-04:002010-10-26T10:12:56.204-04:00Alive And Kicking . . .I would first like to apologize for neglecting this blog for so long. There are literally hundreds of comments I never even knew about on the site and I never responded because I have my notification settings wrong... Mea culpa!!
Anyhow, going forward this site should be updated more often as I have a new position which allows me the freedom to post on a regular basis. I promise that I will be Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0tag:blogger.com,1999:blog-7312437962271381021.post-59424590928506860662009-09-03T07:49:00.003-04:002009-09-03T08:25:50.106-04:00How To Burn In A Server Under LinuxFrom time to time we all need to install new hardware. The problem is, how can you be sure that all of the components of your server are working well before you put it into production? For other operating systems there are diagnostic tools which allow you to run burn-in tests to exercise your hardware before going to productions. This article will show you how to do a similar process on Deven Phillipshttp://www.blogger.com/profile/08586690604807850592noreply@blogger.com0