NOLA Vieux Carré Hack n’ Life n’ Lagniappe

I’ve been organizing conferences (with other awesome organizers of course, it’s never a singular person getting that work done!) for a long while now and they’re what they are. Then along came the pandemic and splat, in person conferences became extinct. I’m sure they’ll be back, but I’m not entirely sure they ought to come back. At least, they ought not come back in the same way they existed pre-pandemic time.

Mississippi River in New Orleans along the ole’ Crescent

There’s another type of get together that I’ve been thinking of that I’m really excited about. This experience, I was fortunate enough to experience a bunch of years ago in New Orleans with an awesome group of folks. To add a little context to this, I lived in New Orleans for a good while and grew up about 45 minutes from the city across the state line in Mississippi. With that, I feel like I’ve got a little bit of context for living the New Orleans lifestyle. I must add, it is distinctively and specifically a very unique lifestyle among these United States. Living a New Orleans life is like nothing else in these United States, not even remotely!

When I lived in the area I loved many aspects of this city and there were aspects that I was not happy with. The city has a few parts that make the famous south side of Chicago seem like a peaceful hippy village, but on the other side of the spectrum New Orleans has an intense passion and love among its people. The city is amazing, beautiful, and honestly a marvel of engineering (it’s below sea level). This city, always standing as a monument to passion, music, love, and more is prominent throughout the city. This passion and love of life itself is a positive among positives that in the end, vastly outweigh any of the negatives.

A Dose of That NOLA Life

It’s that famous street y’all!

This adventure I experienced a number of years ago went something like this. In 2010 I had a conference to attend where I was going to speak about various data analysis techniques, coding project ideas, and related technologies around web and data analytics. At the time I worked for a company called WebTrends with a solid bunch. The conference was all set and would be a great time, but it wasn’t the key experience of this trip.

Some friends with a business startup that also were attending the conference decided to rent a house down near Decatur Street. They rented this house and turned it into a coder’s house for a full week! It was a wildly entertaining, enjoyable, unique, and worthwhile experience to undertake. In addition we were wildly productive! Implementing a number of features, swarming on some ideas, and writing up a number of ideas for future implementation while thinking out the design in a great thorough way. It was spectacular!

But there was more, much more to this truly excellent trip. We had access to New Orleans after all which is well known for truly epic food – arguably some of the best options – to explore flavors, tastes, and truly expansive ideas in foodie explorations! The local creole food, the surrounding local southern food, and the combinations therein are unto themselves not comparable in any other part of the United States. Also no, New York, San Francisco, Portland, or anywhere doesn’t even come close in food comparisons and I’m not even going to engage in that silliness. New Orleans food is a culinary delight in it’s own world ranking! As can be see below…

In addition since I knew the city well there were streets to walk, places to explore such as Jax Brewery, the markets, the levies along the riverfront, a riverwalk that’s great, steamship paddle wheelers that traverse the Mississippi river for some amazing explorations, views, and food too!

Ok, ok, ok so that’s a lot of me telling you about the awesomeness of New Orleans. If you’re not into the idea of exploring or visiting the city I can’t really do much more to sell you on the trip. But the next aspect of this post I’ll detail an idea of forming a krewe to head south to the city of New Orleans, build awesome software, eat wonderful food, and generally live the relaxed life for a solid week or so. The idea is this krewe will be a parade of its own that’ll setup shop and live this for the escape, the celebration, and the experience of it all! If this sounds interesting to you, read on, here’s the details.

How This Would Work

For some, we’d join onboard the City of New Orleans, the Crescent, or the Sunset Limited into New Orleans. For others the option of choice may be to fly into the Louis Armstrong Airport or even take the train in from Chicago, Memphis, or other place onboard the City of New Orleans or out of Washington DC, Charlotte, Atlanta, Montgomery or elsewhere onboard the Crescent. Upon arriving we’d converge at the house or houses we’d choose for this adventure where we’d live for the week and get setup for the projects we’d do during the week. That night we’d gather for a grand dinner at our first excellent destination.

Day one dinner at Lil Dizzy’s Cafe & Coding Plans

The first day we’d all get breakfast at Lil Dizzy’s Cafe or somewhere thereabouts. There we’ll get fueled up with a most epic food win and then depart to gather to plot what we’ll create for the week. This is when we’d get a full plan and some goals together as a group. Decide if we want to break out further into groups (depending on our overall group size) and such. We’d find a good place (likely organized well before the trip) and gather there, post-wicked-awesome-amazing good breakfast, and get into all this. This one goal, would be the goal for day one!

Looking at that sinking (yes, by almost an inch per year!) Central Business District in New Orleans!

Day two rolling in… later rise, more good food, and coding time

Day two rolling in. We’d rise a bit later, get some piping hot coffee and maybe a kicker at Cafe Du Monde for the start of day two. Once collected we’d gather for some day hacking or maybe checking out the brewery blocks (it’s more than just breweries, just sayin’). Then we’d get in some evening coding, building, and creating then back into some food and entertainment of whatever sort for the evening. Possibly some jazz at Julius Kimbrough’s Prime Example, Little Gem Saloon, or the Spotted Cat. Either way, a good time and good evening however we want to slice and dice it up.

Day three, onward and forward and advance!

Day three and onward would continue along this theme. Dynamic organization with a loosely coupled and loosely designed scheduled workflow. Mostly to keep it flexible to live NOLA while we’re there. All the while we get to build something as a krewe (team, crew, cohort, however you’d call the group)!

This would continue for the rest of the week. I’ll have more ideas, more to this proposal, more to this trip coming in subsequent blog posts. This post has one purpose, to get the idea introduced to you dear reader and to start the conversation about getting this event put together. If you’d be interested in this idea, please reach out to me via Twitter @Adron, or you can message me via my Contact Form, or if you have some other means – txt me, sms me, slack me, or whatever – that’ll work too. Whatever the medium, let’s get a conversation started about traveling down to the Crescent City for an EPIC week of food, life, music, and hacking together a solution for whatever it is we create!

For more on this, follow me on Twitter, stay tuned here on the blog, and eventually we’ll get an organizing krewe together and start getting together more specifics, like dates and travel times, core ideas, and more.

Cheers!

References:

  • New Orleans skyline as featured image above is from Wikipedia Commons.
  • I did try to make sure there wasn’t rights issues with all those glorious food pictures, but will fix if anything is contested.

5 Ways to Learn & Improve Your Programming Language Use

Posed the question,

What to write when starting to learn and programming language?

I started an answer to the question in this video. But read on for more extensive list and details!

I’ve written up this article. It started last week when I wrote up “Top 5 Ways to get the coding basics down!” This week I wanted to delve deeper into a specific item on that list and provide what I came up with, which is this List of 10 things to write in order to effectively learn a programming language.

1. Find a Known Domain

What I mean by this is to find a domain that you personally know. It seemed the 80’s generation of programmer dorks wrote role playing game character generators for Dungeons & Dragons. I did myself but for Robotech. But there’s a million other domains that you would know, and those domains are what you should pick and find data and actions in that domain you could implement with code.

Two examples I’ve used recently includes the made up e-commerce store of Better Botz, a store that works with the domain of robots and mecha, and Railroads such as Union Pacific, Norfolk Southern, Amtrak, and the respective domain around that. Many of the other things you could use might be transportation, automotive, health care, or more specific the universe of Harry Potter, Star Wars, Tumble Leaf, Sesame Street, style and fashion trends,

2. Model a Domain According to the Language

Let’s say you’re learning JavaScript. Whatever the domain you’ll want to find actions and data to implement and use specificly to how the language is best used. With JavaScript that would be to use the language features and design to build a working application, like; perform mathematical calculations, such as with bigint, using dynamic import, chaining, promises, async and await, global variables, arrow functions, inheritence through prototyping, and how the properties and methods, or functions, for starters work best for the application domain.

In C#, Java, Rust, Go, Erlang, F#, and other languages these features and characteristics would be different. Whatever the language, make a list of the features and characteristics that are widely used and work with those to best implement the application domain.

List Interupt: Refactoring

I’ve written this list in order of what I personally have found the easiest path in gaining a high level of profiecience with a programming language. You could however mix the list to your preferred style. However at this point between the first two item efforts and the next a new skill will be learned both out of necessity and intent: refactoring.

Code Refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior. Refactoring is intended to improve the design, structure, and/or implementation of the software (its non-functional attributes), while preserving the functionality of the software. Potential advantages of refactoring may include improved code readability and reduced complexity; these can improve source code maintainability and create a simpler, cleaner, or more expressive internal architecture or object model to improve extensibility.”

3. Learn to Test

Learning to test an application will help you tremendously in writing better code. If you’ve committed the actions of the first two items in this list, this is an opportunity to significantly refactor the application you’ve built around your known domain. You’ll need to break apart existing functions so that they’re bit size enough to test. Sometimes you’ll need to differentiate between making some testable at a small unit size versus across an application’s hard boundaries, like an integration test between a database and the application’s data access code.

Pushing for testing the core domain functionality of the application is the best thing to focus on. Don’t worry about the specifics of testing if data is written to the database, or data is retrieved from the database, as much as testing that a function returns the specific answer you expected based on passing it the specific parameters you’ve assumed it would be given. This isn’t to say sometimes you may want to test what you’ve written to the database, so sure, that is something that you can test. But focusing on the core application domain functionality will ensure the best return on your investment of time!

4. Clean Coding Practices

Once you’ve gained familiarity with the language by building an application or two using the features, rooted in a known domain that you understand well, and have some test coverage of the application, refactor that application using clean coding practices. Clean code is often described using the SOLID principles:

  • Single Responsibility Principle
  • Open / Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle

See also: KISS (Keep It Simple Stupid), DRY (Don’t Repeat Yourself), YAGNI (You Aint Gonna Need It), and others.

The idea behind these, is to keep the application code regardless of languages as simple as it can possibly be. With a secondary effect that once software becomes painful to modify, it should be changed as to make modification simpler. Thus the idea of refactoring to the SOLID principles listed, and doing so continuously will keep software in a usable, maintainable, and one could arguable say even a performant state.

5. The Hardest Suggestion: Naming & Thinking

It is often stated, “The hardest problem in computer science is naming things.” to which I, not in jest, whole heartedly agree. Elements in programming, programming design, programming implementation, and every permeable space around programming is littered with poorly named things. I don’t blame anybody because it is damned hard to get a good name for features and functionality, and have truth in the naming of those features and functionality remain throughout the course of its lifetime.

Naming is hard, which I’d combine to say stop programming regularly and think about your naming. Think about refactoring to names that are more accurate to the intent. Stop and ponder what a good name would be, and if the function or feature will replication what that name implies. Add in some metaphysical thought to the whole effort, talk it through with someone you know (or a stranger, it’s a good skill for debuggin!), but think, think, ponder, analyze, and think some more.

The short of the long part of this suggetion can simply be summarized as: Practice naming things, think a bunch, then rename things, and repeat this cycle.

In Summary

To really get a programming language down by heart, be able to readily implement pretty much anything, this is my go to list of actions and practices to follow. Hopefully, it’ll provide you with some ideas to explore how best you would also like to go about learning a programming language. I’m always open to suggestions, comments, thoughts, and discussions on the topic, so feel free to ping me via the Twitters @Adron.

Search Words

Type in any of the following, in pretty much any search engine, like duckduckgo to dig up the latest and greatest on this topic.

  • Single Responsibility Principle
  • Open / Closed Principle
  • Liskov Substitution Principle
  • Interface Segregation Principle
  • Dependency Inversion Principle
  • How to Model a Domain
  • Clean Coding Practices
  • Unit Testing
  • Unit Testing Practices
  • SOLID Principles
  • Package Principles (REP, CRP, CCP, ADP, SDP, SAP)
  • Don’t Repeat Yourself (DRY)
  • Keep It Simple Stupid (KISS)
  • You Aint Gonna Need It (YAGNI)

Top 5 Ways to get the coding basics down!

Another question came up during a recent Twitch stream that I wanted to elaborate on.

How to get the basics down?

WTF is “Developer Focused”?

I always hear a lot about companies being developer focused. Maybe it’s a bit of cynicism but I never expect much from this goal. Few companies have been effectively developer focused, they just dream of it. I asked myself recently, and would love others’ feedback. What exactly does it even mean to be developer focused?

What I Think of “Developer Focused”

When I think of developer focused organizations, the first organizations I think which actually have some type of grasp and effectively work toward this are open source software projects. Not particularly foundations or companies related to the projects, but the projects and the people involved with the core project themselves. These come to mind for several specific reasons. Continue reading “WTF is “Developer Focused”?”

Dev Rel Thoughts, Observations, and Ideas

Dev Rel = Developer Relations

First, I’ve got a few observations that I’ve made in the last 6 months since joining DataStax (which I joined ~10 months ago) about a number of things. In this post I’ve detailed some of the thoughts, observations, and ideas I have about many of the aspects, roles, divisions, organizational structure, and related elements of DevRel.

Refining the Definition of Developer Relations

Over the last few months a lot of moments and conversations have come up in regards to DevRel being under the marketing department within an organizational structure. Which has made me revisit the question of, “what is DevRel and what do we do again?” Just asking that question in a free form and open ended way brings up a number of answers and thoughts around what various DevRel teams and even groups within a DevRel team may have as a mission. Let’s break some of this out and just think through the definition. Some of the other groups that DevRel either includes or works very closely with I’ll include too.

Developer Advocates

At the core of DevRel, somewhere, is the notion of advocacy to the developer. This advocacy comes with an implied notion that the advocates will bring solid technical details. These details then are brought to engineering and in many cases even contribute in some technical way to production advancement and development. Does this always happen among advocates, the sad honest answer is no, but that’s for another blog entry. At this point let’s work with the simple definition that Developer Relation’s Advocates work from a technical point of view to bring product and practice to developers in the community. Then take the experience gained from those interactions and learning what the community of developers is working on back to engineering and product to help in development of product and in turn, messaging. To be clear, I’ve broken this out again just for emphasis:

“Advocates work from a technical point of view to bring product and practice to developers in the community. Then take the experience gained from those interactions and learning what the community of developers is working on back to engineering and product to help in development of product and in turn, messaging.”

I feel, even with that wordy definition there are a few key words. For one, when I write community in this definition I have a specific and inclusive context in which I use the word. It includes customers, but also very specifically includes non-customers, users of similar competing products, prospective customers, and overall anybody that has some interest in the product or related topics of the product. In addition to this, product needs clearly scoped in this definition. Product means, for example in the case of the Spring Framework. Product wouldn’t stop at the finite focus on just Spring and it’s code base and built framework product, it would also include how that framework interacts with or does not interact with other products. It would include a need for at least a passing familiarity, and ability to dive in deeper if questions come up, into peripheral technology around the full ecosystem of the Spring Framework.

If there’s any other part of that definition that doesn’t make sense, I’d be curious what you think. Is it a good definition? Does adding specific details around the words used help? If you’ve got thoughts on the matter I’d love your thoughts, observations, ideas, and especially any opinions and hot takes!

Curriculum

Curriculum Mission: How to Effectively Learn and Share Product Knowledge

Often a developer relations team either includes, might be part of, or otherwise organized closely with curriculum development. Curriculum development, the creative and regimented process of determine how to present material to learn and teach about the product and product ecosystem is extremely important. Unless you’re selling an easy button, almost every practical product or service on the planet needs at least some educational material rolled into it. We all start with no knowledge on a topic at some point, and this team’s goal is to bring a new learner from zero knowledge to well versed in the best way possible. Advocates or dedicated teachers may be tasked with providing this material, sometimes it’s organized a slightly different way, but whatever the case it’s extremely important to understand what is happening with curriculum.

Let’s take the curriculum team at DataStax for example. They build material to provide a pathway for our workshops, all day teaching sessions, the DataStax Academy material and more. Sometimes the advocates jump in and help organize material, sometimes engineers, and others. They do a solid job, and I’m extremely thankful for their support. It gives the teachers, which in many cases it’s us advocates, a path to go without the overhead of determining that path.

However…

It is still extremely important, just like with the advocates’ roles of bringing community feedback to engineering in an effective way, we need to bring student feedback and ideas to increase the curriculum effectiveness back to the curriculum team itself. As we teach, and learn at the same time, we find new ways to present information and new ways to help students try out and experiment with concepts and ideas. Thus, again, advocates are perfectly aligned with the task of communicating between two groups. Ensuring that this communication is effective as well as curriculum material is one of the many core skills for developer advocates.

In the next post on this topic of refining, defining, and learning about the best way for DevRel to operate here’s some topic thoughts:

  • Twitch Streaming – How’s it work and what’s it give me? What’s it give the prospective customer, community, and related thoughts.
  • Github – What’s the most effective way to use Github from a DevRel perspective? Obviously code goes here, but how else – should we use wikis heavily, build pages with Github Pages to provide additional information, should it be individual domain names for repos, what other things to ask? So many questions, again, a space that doesn’t seem to be explored from a DevRel perspective to often.
  • Twitter – This seems like the central place for many minds to come together, collide, and cause disruption in positive and negative ways. What are some ways to get the most out of Twitter in DevRel, and as Twitter becomes a standard, basic, household utility of sorts – what value does it still bring or does it?
  • LinkedIn – It’s a swamp of overzealous and rude recruiters as much as it is a great place to find a job, connect with others, and discuss topics with others. How does one get value or add value to it?
  • StackOverflow, Hacker News, and Other Mediums – What others sources are good for messaging, discussions, learning, and related efforts for people in the community that DevRel wants to reach out to?
  • Value for DevRel – DevRel provides a lot of value to the community and to prospective customers of a product. But what provides value for us? That’s a question that rarely gets approached let alone answered.

I hope to get to these posts, or maybe others will write a thing or three about these? Either way, if you write a post let me know, if you’d like me to write about a specific topic also let me know. I’ll tackle it ASAP or we can discuss whatever comes up in this realm.

Summary

This is by no means the end of this topic, just a few observations and all. I’ll have more, but for now this is what I got done and hope to contribute more in the coming days, weeks, months, and years to this topic. DevRel – good effective, entertaining, and useful DevRel – is one of my keen interests in industry. Give me a follow, and I’ll have more of these DevRel lessons learned, observations, and ideas that I’d love to share with you all and also get your feedback on.