Covid Rhythms

Right about the time that lockdown started I was finishing up a book from James Clear called Atomic Habits. It was really good timing. I had been wanting to read it since I had heard about it on Craig Groeschel’s Leadership Podcast. It was a quick read and was one of those books that took a lot of stuff that I might have already known, and put it together in a way that helped me to apply it better. I had not been happy with some of the basic things in my life and wanted to develop new disciplines and rhythms around them. Then comes Covid-19, the perfect storm to really build on the lessons that I had learned from the book.

The book says to start with little things and do them a very minimal amount of time like two minutes and eliminate as much as possible that will hinder you from doing that one thing. I’m not going to get into the reasons why, you need to read the book for that, but let’s just say it has worked. If you are not in the habit of cleaning your teeth at night, don’t start by trying to floss, brush, and rinse, just start with the rinse. I know this sounds silly who doesn’t clean their teeth at night, right? After you master the rinse for a while add on the brushing or flossing. It’s all about keeping it simple, one thing at a time. Don’t try to change everything at once.

One thing that I wanted to get back to doing was working out. I was a runner for a few years and while I hated it for a while I learned to love it and have missed it since I stopped. It’s a long story as to why I stopped running and I could spit out a long list of excuses, but the real reason would be that I let myself stop. It’s as plain and simple as that. I had even convinced myself that I was never going to be able do it again and like I said, I have missed running.

On Sunday on March 23rd, I decided it was finally time for me to stop feeling sorry for myself. I have always been of the mindset that I can do anything that I put my mind to and why I let myself forget that I will never know. On that Sunday I did my first work out in almost 4 months. I was in no shape on that day to just start running. I was in no shape to do much of anything. So I applied what I learned from Atomic Habits and I started slow. I did a seven minute core workout that I think burned 44 calories. Not much to write home about but it was something; then I did it the next day and the next.

As of Saturday (May 23th) I have worked out consistently for two months, only missing one day. I feel so much better. Mentally I’m much better. I have more energy. Why have I not been doing this all the time? In the past I would try to do too much. If I couldn’t get 30 minutes in I would just not do it which led to inconsistency and eventually doing nothing. This has all been fairly easy to maintain during lock down. In the next few weeks, I will be heading into a "more normal" schedule and it is going to be challenge to keep this up. I just have to remind myself that something is better than nothing.

I don’t plan to fall back into my old ways. Am I running? No, but I can feel that I’m getting stronger and should be working up to that soon. Right now I’m alternating every other day, doing a core workout one day and at least a 30 minute walk the next. I’m talking it slow, but doing it at a pace to make sure that I can sustain the new rhythm. Check back soon and I will give an update when I am back to running.

Insight from Lifecycle

These days I’m drawn to applications and things that can help me build good habits. Good habits that lead to peace, growth and balance were a focus of mine in 2019 and I plan on building on that this year. Apple Books added daily reading goals and tracks the amount of consecutive days I’ve read. Day One is what I use for Journaling and they have also added encouragement in the form a steaks. Even the built in Screentime feature of iOS has prompted me to make some changes as to how I use Social Media by helping me see that I was spending too much time looking at everyones perfect lives 😏.

It is a new year and with that it is always fun to look at my Life Cycle donut for the year. Notice in the attached image, I worked 20 hours more a month in 2019 than I did the previous year. First of all, I would have never had any idea that I had worked more if I had not been using an application like Life Cycle. If you know Life Cycle then you know that it is based on tracking the time that you are at specific locations. This is in no way perfect, but I don’t think that it needs it to be. For me, it is close enough to give me a rough idea of how I have been using my time. When I first saw 20 extra hours in a month, I was bothered by that. When you break it down that is basically like working an extra hour each work day last year. Doesn’t sound that bad, but that also is 240 hours in a year. Wow, that equals 6 man weeks of extra work last year. Based on a quick web search, we work an average of 21.68 days in a month. That would be 173.44 hours per month and I was closer to that target in 2018.

Looking back, now I can see how I ended up with more hours but it never felt like that much while it was happening. I helped Seacoast open a 2500 seat worship center that added many hours to the first half of the year and this summer, I transitioned into a new job and spent extra time getting up to speed. Both of those were things that I chose to be a part of and there is nothing wrong with that. Each of us has to decide how much work is appropriate for us in the season we are in. It is interesting that I did take a few weeks off during the year and Life Cycle doesn’t track the amount of time I spend working at home because I’m not logging that and just basing it off of the location data. All of that info needs to be weighed as I’m looking at how to find balance this year. All of that to say, it is great to have enough data to be able to review and not just continuing on with my head in the sand. Let me know if you have an application or process that has helped you.

Evaluation and Change

A few years back, I wrote a post about being a life long learner. This has always been a driving force in my life. I want to learn something new every day. My favorite days are when I have the opportunity to solve hard problems as well as learn something new. I know that seems like a very lofty goal, but it doesn’t have to be something big, it just needs to be something. We are not trying to prove one of Einstein’s theories each day, it could be as simple as a new keyboard shortcut that makes things easier.

I spent the first part of my professional career in the IT world, which provided lots of opportunities to learn and grow, but eventually I felt that I hit a point where my growth was getting limited. About twelve years ago, I left the IT world and started serving on a church staff. That role also provided many opportunities to learn and the amount of growth I experienced was immeasurable. While the growth in live production came quickly and easily at first, as my time in that field lengthened, the opportunities for growth became harder and tended to be more focused on leadership. Leadership is definitely an area where I had room to grow and didn’t have a lot of experience. However, you can’t really accelerate learning and growing in leadership by just working harder. Leadership growth takes time and patience and surrender.

For about the past year and a half I have been in a time of evaluation. When you go through that process you have things that you have to let go of and new directions get set. If I’m honest with myself, I have been battling letting go of my opportunities to grow technically and embracing a leadership focused direction. On top of that, I have been noticing the loss of talent and experince in the church production community and I didn’t want to contribute to that. However as I continued to evaluate, I realized that my efectiveness had been diminished and I was not going to be able to take my church to the next level. A change was needed.

Looking back, I realize that this road I have been on is a path that many church production guys end up walking. I know in my case I have such a heart for the Church, but found myself in a place where I felt that I was unable to improve myself or my church. I would bet that many of my fellow church techs have felt the same at some point. As I learn more about how God has made me, I realize that I was not done growing technically. I just needed to pass on my old dream to someone else and embrace a new one. One of my beliefs is that change is not hard, but I’m learning that change requires releasing a dream. This has not been an easy road, but I know all will be better in the long run.

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 http://crates.io. 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.

SaveSave

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:

https://github.com/macoss/NFP-One-Fader

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.

Features:

  •  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.