-
Announcing ShadowCamp
(2) comments
There are more and more one-day local events every year, and each time people come into town, go to the event, then meander home sometime on Sunday. A couple months ago I had the idea to run a separate unaffiliated event on the Sunday morning after one of these local events.
We will be having the first ShadowCamp this weekend on Sunday after the Raleigh Code Camp. It will be held at the same venue (ECPI) and will of course be free. The only catch is that we are capping attendance at 30, but it is first-come, first-serve. Even though Raleigh Code Camp is focused on .NET and ShadowCamp attendance will probably be slanted towards .NET, I am sure there will be plenty of people interested in other languages and technologies so don't let that stop you from coming.
Many of these code camps now include open spaces events, but I wanted to experiment with a pure open spaces event. There will be no other talks other than open spaces.
So, if you live in the area or are in-town for Raleigh Code Camp go register and participate in this experiment.
-James
-
RubyConf 2008 Day 3
(0) comments
I am a little late in posting this but I wanted to post my thoughts on the last day and the overall conference. I was a little "talked out" by the third day so I only ended up only going to a couple of talks
Advanced DSLs in Ruby
Neal Ford did an excellent job talking about how to build DSLs in Ruby and true to the name of the talk he didn't just cover the basics, he dug down into various techniques you can use to build a good DSL in Ruby. There is a great write-up of the talk over here, and Neal has posted his slides over here.
The Ruby Code Review. A Play in Three Acts
This was a very entertaining talk with Jim Weirich and Chris Nelson. I worked with both of these guys on my last contract but when Chris and I ran into each other we couldn't place where we knew each other from since we weren't wearing ties and in the right context. The talk was basically a mock code review of Chris showing very poorly tested and written code to Jim. It was a blast to watch and a good re-inforcement of good testing and coding principles.
I spent the rest of the day getting ready to head out and then had a great conversation with John Nunemaker. John and I have alot in common and I had a great time exchanging ideas and brainstorming about our various projects.
The conference was over and I headed back to the order with my free ride (Fred) and hung out at the airport with Matthew Bass and Ryan Daigle until out plane left.
Overall it was an amazing conference, I am already thinking about next year. It was great to meet most of the members of Ruby Row and many of the other developers I have run into over the last year. One thing that I would totally love to see next year (like Jamis) is an open spaces track that would let people self-organize some great conversations and presentations about their projects. Like most conferences the best times are usually in the halls chatting with people or peering over their laptop to see what they are working on.
-James
-
RubyConf 2008 Day 2
(0) comments
I decided to take a different approach for Day 2 and write a single post instead of writing an entry for every talk. Last year when I had power in the room it was much easier to write the post during the talk, but this year without power I have to try and save my batter power for those boring talks where I want to work on something else.
Aristotle and the art of software development - Jonathan Dahl
This was the first talk of the day and it was very enjoyable. Jonathan obviously comes from a philosophy background and drew on that to make some interesting observations about being a developer. The one that stuck with me is the comparison to morals. When kids are young they follow a very strict rule set which is eventually internalized into morals. Development is very similar, for instance DRY (Don't Repeat Yourself) could be considered a rule of development. But it is very much a judgement call on how far to take DRY, taking it too far can produce overly complicated and obfuscated code. Overall it was a great talk, you can see the slides up already on Jon's blog.
Fear of Programming - Nathaniel Talbott
This talk was something I am very familiar with. I used to be very afraid of giving presentations, but one time I gave a presentation for some material I wasn't very familiar with. It was a canned talk from MS for one of their events and was a complete disaster. The next talk I gave was infinitely better though because I had gotten over my fear of completely bombing on a talk. I realized that while it wasn't fun to flop a talk, it didn't cause me that much harm and I was much more willing to take chances and throw myself into a talk after I saw that it couldn't really be that bad. This talk was about the same thing but with writing code and working on side projects. It was a very open talk with no slides and lots of audience participation, it was almost like an open space.
What Every Rubyist Should Know About Threads - Jim Weirich
I love seeing Jim Weirich talk. I have seen him talk more about Ruby more than any other person and his enthusiasm is infectious. For this talk Jim walked through the basics of threading then covered how to deal with the various race conditions that you can encounter and how to tackle them. Jim then went on to cover some of the various other languages that are better built for concurrency including Erlang and Clojure.
Effective and Creative Coding: Help from Cognitive Psychology in Caring For the Rubyist's Mind - Evan Ivancich
This was a very interesting talk that covered how our minds work while we are programming. It covered the differences between fascination and direct attention and the affects of the mental fatigue that long periods of direct attention can have on you. One interesting study showed how people who took a vacation in a wilderness setting vs. an urban setting had less fatigue and could better focus after the vacation. This talk didn't include alot of actionable items, but it was fascinating to learn a little bit more about how our brains work
Writing Code That Doesn't Suck: Interface Oriented Design - Yehuda Katz
This was a great talk that consisted on one main point. Unit tests are not regression tests. We should be writing regression tests that make sure that the API we are exposing to the world doesn't change or break while we work on our application. So much of unit testing is now focused on testing the actual implementation of that functionality instead of testing the actual interface and functionality. The example he had from Merb was where they used to test lots of the internals of the Render method, but they didn't have a simple test to call the Render method and make sure that the response type is HTTP. How that happens doesn't matter to the outside world, what matters is that the external interface doesn't break. I agree with Yehuda that this is something that is sorely missing in most Ruby programs, because Ruby is so open people tend to forget that they should still care about the public interface of their application.
OS X Application Development with HotCocoa - Rich Kilmer
This talk was freaking awesome. Rich has written a ruby wrapper over Cocoa that along with MacRuby makes writing Cocoa applications in Ruby extremely easy. Rich walked through creating a simple app and showed off controlling iTunes from Ruby code, all very cool stuff. The only downside is that there is still alot of work left to wrap Cocoa and make this a viable solution to writing Cocoa apps.
Keynote by Dave Thomas
After dinner we came back for the Dave Thomas keynote. Before the talk they gave away books and I was lucky enough to win Programming Erlang from Joe Armstrong which was perfect since I am looking to use Erlang for a number of things. Dave did an excellent keynote where he started by encouraging people to fork the ruby language. Not to try and replace the existing ruby, but to encourage experimentation in Ruby. Dave went through four different possible forks, but the one that connected with me was RubyLite. I would love to see less methods and features in core Ruby and more moved out to gems, especially things in the standard library. This is a tough line to walk though, one of the benefits of Ruby is that by downloading Ruby you get so much functionality. I can see where it might be frustrating to have to install 10-15 gems to get a reasonably complex application up and working, but I think there is definitely some room to move things to gems without taking it to far. I am sure a number of RubyLites will popup on github and I look forward to seeing what they accomplish.
After the keynote I grabbed a couple beers and hacked on some code then went to bed way too late.
-James
-
RubyConf 08: John Lam - IronRuby
(1) comments
John walked through some of the cool stuff they are doing with IronRuby. He started out showing how you can host the ruby engine in a C# application, in just a couple lines of code he wrote a WPF irb clone. He also showed how with C# 4.0 you can run the ruby engine, send it code, then reach in and get specific variables and pull them back out (using the dynamic keyword).
He went on to show accessing C# from IronRuby and even monkey patching a CLR class from IronRuby, which was pretty cool. Corey Haines asked to confirm and you can even undef methods from a CLR class from IronRuby. (of course they would only be modified from a DLR perspective)
John also shared some interesting statistics, I believe they were that the language rubyspecs were around 93% passing and the lib specs were around 78% complete. He also mentioned that performance right now is mostly better than MRI with some that is worse but that they haven't spent alot of time on it yet. IronRuby and the DLR clock in at only 2MB when compressed, which is fairly impressive.
There was a question about 1.9 which he basically said they weren't even thinking about yet, which is worrisome since it will probably be out fairly soon and I would at least like to hear that they have a plan on how to implement it. (otherwise they will always be behind)
I have to say I was very happy to not see any Silverlight in the talk, there was a decent amount of XAML and WPF but that is OK. I just don't want to see IronRuby and Silverlight joined at the hip, which for the first year or so seemed to be the case.
-James
-
RubyConf 08: Jamis Buck - Recovering from the Enterprise
(1) comments
The main idea of this talk was that working in the enterprise gets you used to certain solutions and its easy to try and apply those solutions in Ruby where they might not apply. Jamis worked in Java and when he came to Ruby he wanted to bring dependency injection to Ruby and wrote two different frameworks for Ruby to enable dependency injection.
The first he wrote was called Copland and was very much a Java library written in Ruby, one stat he mentioned was that there was 161 lines of YAML config for a 250 line ruby library. He presented it at RubyConf and the main recommendation was to get rid of the config and write it in Ruby. Jim Weirich went as far as to write a small sample of how he would do it, Jamis ran with the sample and created another library called Needle.
To try and show why these libraries were needed Jamis added Needle to his NET:SSH project. He went as far as to make the cryptography library configurable, even though there is only one ruby cryptography library. It's a classic example of of "enterprise thinking".
Jamis has since realized that he was trying to use Java solutions in a Ruby world. His analogy was that Java is like Legos and Ruby is like Play-Doh, you wouldn't mold Play-Doh into little blocks to build something... because you don't have the constraints that you have with Legos.
One great quote was "Just in time, not just in case" which is a nice re-statement of YAGNI.
UPDATE: Jamis has posted a great post summing up his talk.
-James
-
RubyConf 2008: Mark Bates - Building Distributed Applications
(0) comments
About this time my battery died on my laptop and this year there is no power available in the rooms (which is a major bummer) so my notes on this talk aren't as good as my other notes.
Basically this talk was about a number of libraries available to make working with distributed ruby very easy. The first is Drb with is the base library need to use distributed ruby. The second is Rinda which is a server used to register and communicate with your ruby services.
Mark then went onto to cover his Mack Framework which is a framework for building portal like applications in Ruby. It basically gives you a very easy way to bring multiple applications together into a portal application using distributed ruby to communicate between the different applications.
-James
-
RubyConf 2008: Evan Phoenix - Rubinius
(0) comments
For this talk Evan went through some of the challenges and choices they made in re-writing the VM from C to C++. It was interesting to see some of the internals but for the most part I was more interested in hearing about the progress of the project and when it might be ready for use... unfortunately all we found out is that it is going well, they are happy with their progress, but no information on when it might be ready for production.
-James
-
RubyConf 2008: Gregg Pollack - Scaling Ruby (without the Rails)
(0) comments
For the first of the split-out sessions I decided on Gregg Pollack's Scaling Ruby talk. I am getting ready to do some work on optimizing the sds-rest library so I was hoping to get some good information from this talk on how to approach that optimization.
Gregg started out covering the Ruby basics of performance. He talked about threading and processes and how the ruby thread scheduler works. He showed a great demo using the default mysql adapter, using 10 threads it took 30 seconds since each mysql call was blocking. Then he showed using the NeverBlock mysqlplus adapter and the same calls took 3 seconds. It was a great example of the performance hit you take for blocking code.
He then covered the differences between Green Threads and native threads and how Ruby 1.9 introduces native threading but still has the issue with the global interpreter lock so they still aren't perfect. Gregg then covered a number of tools that can be used to get around some of these issues including EventMachine and message queues. He touched on RubyInline briefly to show the performance gains you can get from writing some inline C code and RubyInline makes that much easier.
Gregg then walked through a typical usage of ruby-prof: profiling code, explaining the output, and showing some of the different possible output types from ruby-prof and how to use them.
Gregg then went through numerous performance tips and tricks on ways to optimize your Ruby code, I was familiar with a couple of the techniques but also managed to learn a couple new things I will definitely be using.
Gregg also had a great idea and has put his talk up as an envycast, so if this is a topic that interests you then you can go and buy the cast and see basically the same thing I saw. I would definitely recommend it.
-James
-
RubyConf 2008: Matz Keynote
(0) comments
Matz opened up RubyConf with an enjoyable keynote where he touched on the reasons behind using Ruby and why the language and community continues to grow. He walked us through is own programming history and talked about the different language extremes, languages like BASIC (what he got started with) are too restrictive, but languages like LISP are too extreme and are "over the edge". Ruby is all about the balance of power and flexibility.
Matz talked about the growing community around Ruby and how enthusiastic the community is all of the work going on with different implementations. He also mentioned a statistic from Gartner that says there are over a million Ruby developers and that it will grow to over 4 million by 2012, which would be astounding growth.
Matz finished up by saying that Ruby is all about love, which I think is a great message and I doubt you would go to many other conferences that start out with a talk and message like that (or have a slide that says "I love you all".
-James -
RubyConf 2008
(0) comments
Last year was my first RubyConf, it was just down the interstate in Charlotte and I couldn't pass it up. Well, now I am hooked and I have my hotel and flight booked for RubyConf 2008. I am leaving today around 4:50 and get into Orlando at 6:40. If anyone else is getting in around the same time let me know and we can split a cab to the hotel.
I am looking forward to a great conference this year, although there are going to be some tough choices on the presentations. I am going to try and blog each session like I did last year, but we will see if I can keep that up.
If you are going to be there give me a ring (919-600-0742) or grab me on twitter (averyj)
-James
About Me
I am a software developer living in the Raleigh, NC area where I run Infozerk. This blog is about writing software and the business of software, as well as some .NET or Ruby on Rails from time to time. I have written a number of books and articles, the most recent being Windows Developer Power Tools.