01
Mar
10

Rest, I dont think I get it

I sent this as an internal email.. but figured I would post the question as well. File this into the “I dont get it” category. Not as bad as Google Wave, but close.

So.. I hear that Rest is a panacea, but mostly because it is “Rest not SOAP”. I actually understand many of the benefits that REST is gives you:

1) I can use a simple http client to access resources, therefore it is easier to adopt.
2) I inherit alot of the WS-* enhancements from the underlieing http transport, so the frameworks are lighter weight.
3) The ability to use the service both by a client and a browser.. mashups become easy.

What I keep getting hung up on is the absence of a formal description of the interface. I see WADL, but whenever I dig into this it seems to get brushed aside as a nuisance. If i want to write typed clients, then I need to have some formal contract of what can be passed in and what is returned. This contract seems to be what alot of the cruft around SOAP is for. Is there something I am missing with this? The answer the books/articles seem to give is “who needs a formal spec, it is all URI’s”. This tends to be a load of hooey, since some clients (rails in particular) do not handle nicely objects of the same type with heterogeneous data sets.

So.. it seems like Rest (which is not SOAP) makes it easy for the easy clients by skimping on the tools for the more complex clients. I can easily do jersey -> jersey, and I presume Resteasy -> Resteasy. But w/o that neutral definition.. cross implementation clients (robust ones) are actually harder.

Am I missing something?

01
Mar
10

Good Hockey Nicknames

It is the end of the hockey season, and the parents have been coming up with some good nicknames for hockey players. It is a fun thing to do when giving out participation awards. I was unable to find a great list on the internet, so here is what we have put together:

Best Between the Pipes
Best Passer
Best Sportsmanship
Best Stick Handling
Biggest Goon
Breakaway King
Brick Wall
Captain Goof Ball
Chief Mucker
Goon Juice
Grinder
Hardest Worker
Hat Trick
Jr. Coach
Killer
King of the Wraparound
Little Big Man
Little Giant
Lumber Jack
Minister of Defense
Most Consistent
Most Improved
Mr/Miss Hat Track
Mr/Miss Not in My Net
Mr/Miss. End to End
Mr/Miss. Hustle
Mr/Miss. Moves
Mr/Miss. Reliable
Mr/Miss. Versatility
Not Past Me you Dont
Not So Secret Weapon
Red Light
Smooth Operator
Speed Freak
Speedy Gonzalez
Team Leader
Team Spirit
The Blond Bomber
The Blur
The Cardiac Kid
The Closer
The Defender
The Destroyer
The Enforcer
The Joker
The Pitchfork
The Playmaker
The Puck Stops Here
The Punisher
The Silent Weapon
The Sniper
Tough Guy
Tricky
Was that a good check coach?
Wood Chopper
Yoeman

I am always looking for more!

23
Feb
10

Latest RHQ: 3.0.0 Build 3

Another good release from the RHQ team. You can check out the new release here. Lots of new alerting work, and some good performance enhancements. Check it out.

02
Feb
10

Latest RHQ Build:l 3.0.0 Build 2

The second community build for RHQ has landed. You can download it from http://rhq-project.org/display/RHQ/Download and check out the release notes at http://rhq-project.org/display/RHQ/Release+Notes+3.0.0.B02. There is lots of goodness here including better content management, better alerting, and other stuff you will have to play with to see. Come on bye, and check it out. Better yet… contributions are welcome.

25
Jan
10

Check out OpenSource.com

Red Hat has just put out a new community service, opensource.com. The goal is get together and discuss how the open source principals can be applied not only to technology but to business, education, and government. Come on bye.. and check out the conversation.

07
Jan
10

Installing Oracle 10-xe on Fedora 11 x86_64

I had to install Oracle XE on a Fedora 11 machine, and had lots of trouble. This blog post:

http://remcodeblok.blogspot.com/2009/07/install-oracle-xe-on-fedora-11-x8664.html

provided the help to get it running. A couple of other things to note:

1) You have to install xterm. The rpm does not force that depdency for you.
2) If you do not have glibc installed, there is no visible error message. No log, and the rpm does not enfore the dependency.

22
Dec
09

Cobbler Settings Lens for Augeas

After much help from David Lutterkort, I have a first cut of an Augeas lens for Cobbler . The settings file is basically a single YAML document, so this lens could be used to do generic yaml processing, but I would assume it would need some tweaks before then.

I figure it is best to get the first cut out there though. So here it is.

(*
	Parse the /etc/cobbler/settings file  which is in
	YAML 1.0 format.

	The lens can handle the following contructs
	* key: value
	* key: "value"
	* key: 'value'
	* key: [value1, value2]
	* key:
	   - value1
	   - value2
	* key:
	   key2: value1
	   key3: value2 

	Author: Bryan Kearney

	About: License
	  This file is licensed under the LGPLv2+, like the rest of Augeas.
*)
module CobblerSettings =
	autoload xfm

	let kw = /[a-zA-Z0-9_]+/
	(* TODO Would be better if this stripped off the " and ' chracters *)
	let kv = /([^]['", \t\n#:@-]+|"[^"\n]*"|'[^'\n]*')/ 

	let lbr = del /\[/ "["
	let rbr = del /\]/ "]"
	let colon = del /:[ \t]*/ ": "
	let dash = del /-[ \t]*/ "- "
	(* let comma = del /,[ \t]*(\n[ \t]+)?/ ", " *)
	let comma = del /[ \t]*,[ \t]*/ ", "

	let eol_only = del /\n/ "\n"

	(* TODO Would be better to make items a child of a document *)
	let docmarker = /-{3}/

	let eol   = Util.eol
	let comment = Util.comment
	let empty   = Util.empty
	let indent = del /[ \t]+/ "\t"
	let ws = del /[ \t]*/ " "

	let value_list = Build.opt_list [label "item" . store kv] comma
	let setting = [key kw . colon . store kv] . eol
	let simple_setting_suffix = store kv . eol
	let setting_list_suffix =  [label "sequence" . lbr . ws . (value_list . ws)? . rbr ] . eol
	let indendented_setting_list_suffix =  eol_only . (indent . setting)+
    let indented_list_suffix =  [label "list" . eol_only . ([ label "value" . indent . dash  . store kv] . eol)+]

    (* Break out setting because of a current bug in augeas *)
	let nested_setting = [key kw . colon . (
											(* simple_setting_suffix | *)
											setting_list_suffix |
											indendented_setting_list_suffix |
											indented_list_suffix
											)
						]

	let document = [label "---" . store docmarker] . eol    

	let lns = (document | comment | empty | setting | nested_setting )*
    (* let lns = (setting)* *)

	let xfm = transform lns (incl "/etc/cobbler/settings") 

	(*
	test lns  get "" = ?
	test lns  get "Simple_Setting: Value \n" = ?
	test lns  get "Simple_Setting2: 'Value2@acme.com' \n" = ?
	test lns  get "Simple_Setting3: ''\n" = ?
	test lns  get "Simple_Setting4: \"\"\n" = ?
	test lns  get "Setting_List:[Value1, Value2, Value3]\n" = ?
	test lns  get "Empty_Setting_List: []\n" = ?
	test lns  get "# Commented_Out_Setting: 'some value'\n" = ?
	test lns  get "---\n" = ?
	test lns  get "Nested_Setting:\n Test: Value\n" = ?
	test lns  get "Nested_Setting:\n - Test \n" = ?
	let  cset = Sys.read_file "/etc/cobbler/settings"
	test lns  get cset = ?
    *)
(* Local Variables: *)
(* mode: caml *)
(* End: *)

My next steps will be to clean this up, and to submit it along with some tests.

11
Dec
09

RHQ Build 1.4.0.B01

My new project at work put out it’s latest open source release. You can learn about it in this here If folks are looking to contribute to a very successful open source Java management project I suggest coming over and taking a look.

15
Sep
09

Happy Cucumber is Happy!

Veggies are fun!

27
Aug
09

Stupid Error Messages

On Fedora 11, If you get this error message:


gconf-sanity-check-2 exit status 256

When you log in. Check that your /tmp file is not write protected. If it is write protected, or the disk is full, you will get this error. Save yourself a few hours of installing/unintsalling and check the /tmp directory.




bk on Identi.ca (via twitter)