Debugging a Rust Crate/Library in VS Code

Recently, I have been learning a new programming language. I know, if you follow this really non-existant blog you would know that this is something that I do often. This time it is Rust. If you have not heard of Rust, it is a system programming language that would be in a similar space as C, only a much more modern design and is focused on memory safety and concurrency. Most of the time I get into a language and read about it a bit, then do a few hello world examples and move on. Rust on the other hand has stuck with me a little longer and I have been working on a “scratch my own itch” project with it. More on Rust itself in a future post.

Rust has a library system as many modern programming languages do and they call them Crates and are registered at I have been in the process of authoring a crate called PJLink that is a Rust API to control projectors or displays that understand the PJLink protocol. The API is growing and I have been getting to points in development where old school print line debugging was just very inefficient and wanted to use the debugging features built into Visual Studio Code.  Code has very good support for programming Rust thought the integration of the Rust Language Server and debugging using  lldb inside of VS Code.

Continue reading

Post Conference Observations

Over the last few months I have been using an app called Life Cycle to track where I go using my phone’s GPS. It gives me an idea of my home-work balance. Last week was a little off as we were getting ready for and running our marriage conference. This is not a bad thing. I’m not complaining, it is part of the ministry life that I have chosen. By the way I had these same weeks when I was in corporate life also. I can say that this is not a regular occurrence.

Over the last three months my average work hours have been at least 20 hours less than this and today I’m writing this post from home on a rest day. I will work less than 40 hours this week. I don’t think a work balance means 40 hours a week every week, you will have long weeks, just make sure you get some short ones also.

Find something that you can monitor your time and keep an eye on it. Life Cycle is not perfect because I do work at home from time to time, but it gives me a good picture and even surprises me occasionally when I thought I was at work more than I actually was.


The Dream Killer

Are you struggling through a dream that might be ending?

Where did the dream come from? I believe that God creates dreams and he will end them if they are to end. You shouldn’t blame those that are around you or have played a part in what’s leading you to think that it is ending. God gives and takes away.

Is it really over? If He is ending one dream I believe that he will bring a new one. If you have not received a new dream then the current situation might just be a road block that he will clear. No dream worth dreaming is ever going to be easy or a direct path.

So how do you work through it? Seek God and be open to his still small promptings. Continue to pursue the current dream until He has solidified your new dream. We are people who need dreams, never give up on dreaming!

NFP One Fader

icon_256x256I had the need to be able to control the level of the lights in one of the spaces at our West Ashley campus.  The control in the room is currently Crestron controlled and the staff requested more control of the house light level. I was just going to have one of the control buttons reprogrammed to a lower level, but  then I remember that Crestron processor was talking to a Pathways Connectivity Network Fade Processor.  Come to find out, the NFP has a very easy protocol.  I decided it was easier and cheaper to just write a Mac application that gave them a fader to control the house light levels.  Now I’m open sourcing that application and it can be found here:

The Programming Connection – Meteor.js

I have always thought that the Holy Grail of web development would be to write all of my code in one language.  The main problem with this is that browsers only accept Javascript. Why is that a problem? Two reasons: the language is ugly, and back in the day javascript didn’t run on the server side. While there has always been the option of other languages being cross compiled into browser compatible javascript such as Coffee Script, Dart, and even Rails had a DSL at one point. That always seemed like it was just an extra step in the build process and another place that you could have to debug code. Today there have been some changes that seem to be bring this closer to a reality.

Why does it matter that Javascript is ugly? What else do you like to use that is ugly?  Nobody wants to buy an ugly car if they don’t have have to. Does an ugly house inspire you to do home improvement? I completely believe that ugly code leads to less productivity.  Even with the best syntax highlighting and linting you still find yourself struggling to find mistakes. Back in the day, I worked with a team of creatives and we needed a ticket system.  I went out and found the most functional system I could find with the best features and showed it to the Creative Director, my boss, and he said, “We can’t use that, it is ugly”. We found another system that was not as feature complete but had a much better design and we used it. A system is only good if people like using it.  I use an Apple computer partially because of the great design and clean looking applications. I think users these days put a high value on aesthetics and choose products based on that.  Javascript, as with many languages have adopted C-like syntax and that is not bad, but Javascript has added some interesting additions that have not helped clarify or beautify the syntax. Nested callbacks and anonymous functions have added solid functionality to the language, but have not improved the readability.  We are starting to see some improvement coming in ES6 and ES7 changes.

Likewise, the server side has always left me wanting. Node.js has been the main player in this space and has been adopted by many and it used in production by some large companies like Walmart and Netflix.  It is also intended to be more then a web frame work, being use in embedded applications such as robots and is one of the main tool kits for the Arm based Beagle Bone single board computer. When I would look at frameworks like Express.js I would feel like I was back in my early PHP days were you really rolled your own data layer and build tooling. Node has had success working with modern web features like Web-sockets which has been a bit of a challenge for tool kits like Rails. When looking for solutions to some of these issues, I found Meteor.js.

Meteor is a new framework that takes a different track then other Javascript frameworks that I have looked at. It has a few key features that caught my attention like real time data push, clients and server side coding support with a common API, as well as a solid set of tooling. This was the first JS framework that I reviewed that I didn’t have to spend time learning multiple different frameworks/components to make a complete web application. Every time I would get started on a new project I would have to figure out the data layer, service side language, client framework, and how to maintain build versions/database changes.  This was something that was daunting when getting started and Meteor has a clear story on how that can be handled. Meteor is opinionated and does have some limitations which won’t make it a ‘be all’ framework, but if it does fit your requirements, it could be a great tool.  We will get into more details in later posts.

LiveQuestions Open Source Application

Today I published a web application that I have worked on for a while and we have used LQHeaderImagethree or four times at Seacoast Church to take live questions during a message.  This allows the people attending the event to text in or use a web page to submit anonymous questions.

For more information see the Github page.


  •  Submit questions from a ebpage or over SMS (using Twilio)
  • Password protected pages for review, editing, approving, and displaying the submitted questions
  • Built on a Meteor.js providing real time updates to all of the pages viewing the questions
  • Responsive to desktop and mobile clients
  • Screen display is customizable using CSS and HTML

The application is built so that the attenders post questions and they show up on an incoming questions tab in the admin section.  You can have one or many editors monitoring this page, editing and approving questions.  Once a question is approved, it is then cued on a approvals page that can be monitored by the moderator on stage.  The moderator then just clicks on a question for it to be displayed on the screen.

All clients need web browsers and internet access including the device used to feed the screen. LiveQuestions can be easily deployed to Meteor’s free basic hosting for testing or even production for events.


The Programming Connection

I have been working in the area of audio/video production for the last nine years, but in the past my focus was on IT and programming. Over the past year or so I have been feeling the itch to do some development again and it is a great distraction from my day to day production work.

I have developed in many different languages and environments.C/C++, Visual Basic, C#/.Net, RPG, Perl, Python, PHP, Objective C, Javascript, and Ruby just to name a few. Recently I have had some ideas for a few new projects, some just to scratch an itch and others to solve work needs. I could just jump into the tools that I have used in the past. For example if I was going to work on a web project I would lean torwards Rails, or if I needed to do a small utility app Ruby or Python might get the call. These are the tools that were productive for me in the past.

Being that some time has passed and I’m really not under any deadlines, I thought it would be fun to check out new languages/frameworks. I have always loved developing my skills and maybe some of it is just to see what all the fuss is about. So I have looked at many new to me languages and frameworks, such as Go, Scala, Erlang, Angular, Rust, Swift, and Ember. All of them have some intereseting ideas and yes I know they all cover many different development needs, but I really haven’t connected with any of them in the way that I did with frameworks like Rails.

It is strange to say that you “connect” with a programming language, but you do. I guess it is like how I like to play Fender Jazz basses, but can’t seem to get comforable with a Fender P bass. Maybe a little closer to this topic Vim vs Emacs, but I don’t want to start a editor flame war. That connection seems to lead to you wanting to dig deaper and continue to build your skill.

Recently I have come across a few new framworks and languages that I have
started to “connect” with. I thought that I might do a few posts on them: and try to
explain what has caught my attention. The two that I’m going to start with are
Meteor.js and Elixir/Phoenix.

Desolving the Work Idol

If you know me, then you know that I work a lot; some would say too much.  I don’t know if I agree, but that could be a long post by itself.  There is nothing wrong with working hard or long hours assuming you have found a balance and it works with your family. I think the issue comes in when your work becomes your identity. I can say that I have reached that point many times in my life and I seem to fall into it easily.

It would be easy to blame the job, even more when you have a ministry job.  In my case, it has always been my personal drive. Always trying to do the best I can leads me to getting lost in my work, then my work becomes an idol.

I have to remind myself every day that my identity is in Christ.  My work is to serve Jesus.

Going to Carolina…

It has been a little over four years that my family and I have lived in Texas. We moved here from Charlotte to work with a great team at Sugar Creek Baptist Church. It has been a great experience, but God is calling us on to a new opportunity. At the end of June we will be packing up the house and heading to Mount Pleasant, SC (a suburb of Charleston) where I will be joining Seacoast Church as the AV Systems Director.

I’m excited to see what God has in store for me at Seacoast. I’ve only spent a short amount of time with the staff, but I can already tell that it is going to be a great team to work with. Lots of new challenges lie ahead, but I’m looking forward to applying my technical and creative gifts.

We are really going to miss our family at Sugar Creek. What a great team of volunteers and staff to work with. God put it on my heart to work in technical ministry full time and SCBC gave me that opportunity. We have been so blessed to have had this season of life and pray that they continue to have a big impact on Sugar Land and the world.

When God leads, you go; to the ends of the Earth if that is his will is for your life. As it says in Joshua 24:15 “…But as for me and my house, we will serve the Lord.”

Video of Our Apollo Right Arm Test

Test of an Apollo Right Arm from Rick Russell on Vimeo.

I was in the process of testing this moving yoke fixture and I decided to shoot a video from the lift. This is hung on our house center truss with a 14 degree ETC Source 4 ellipsoidal. This was shot on my iPhone 4 from the bucket of a lift about 30 feet in the air.

I would say that overall I like the fixture, other then the speed. About half way though the video I have the fixture pan its limits and it takes about 5 seconds to move 200 degrees. We also found it a bit tricky to balance the fixture on the yoke. If you are in an installed setup you shouldn’t be moving the yoke too much and then this is not be a big issue. This fixture also includes a four pin connector that can be used for powering and controlling accessories such as a scroller or an iris.