SledgeConf Schedule

August 7th 2020 

3-5pm PST

4-6pm MTN

Times in Mountain below

4PM: Sean Michael  : Micro Frontends

4:50: Break

5PM: Nicholas Sledgianowski : Business Intelligence Publishing Pitfalls 

5:50: Closing discussion 

Sign up to the Mailing List for the zoom link when we start.

Don’t use internal tooling, contribute to your tools.

There is a dichotomy in software engineering organizations, some only use public tooling, entirely avoiding building their owns tools. Other companies  follow the ‘Not invented here’ principle and try to only use software developed internally. 

There are two forces driving this split, first building software tooling is expensive, small companies often cannot afford to build and support internal tools. It is an expensive recurring cost that can easily get out of hand. Building 2 internal tools a year will set you on a path to supporting 20 tools 10 years from now eating huge chunks of your operations budget. 

The other force in play is that if you use public or off the shelf tooling you will encounter workflow discontinuities that are difficult to fix. Using off-the-shelf tool A with tool B might require an entire employee to bridge the gaps manually, while still be a pain for everyone involved. Decision makers at some companies think to themselves, “We can just build a tool B that works perfectly with our use case.” And that works great when you have one tool, but then when need C comes along your team  makes the same case again, “We already invested in custom tool B we can’t throw away that work, we need a new custom tool for need C”. And now your company is on the path towards building an alphabet’s worth of internal tools that aren’t useful outside of your business.

Luckily, there is a solution to this. Use Open Source tooling and when you run into a workflow problem, work with the maintainers to contribute a fix. Even in poorly managed projects extending the code to support your use case will be less costly than building an entirely new internal tool to solve the same problem. 

Previewing image uploads with stimulus.js

I’ve been working on a website with file uploads lately and after a bunch of googling put together a solution using stimulus.js instead of jQuery as not using jQuery is the thing now.

The website I’m working on allows people to upload images and then to tag them before sharing and I thought it was a bit sub-optimal to ask people to tag their images without being able to see them. 

I’m using rails so this component has two parts the javascript file and my html template file. In the html template file I have a html form created via the rails form_with helper. 

<%= form_with scope: :look, url: looks_path, local: true do |form| %>

  <div>
    <%= form.label :title %><br>
    <%= form.text_field :title %>
  </div>

  <div>
    <%= form.text_field :tag_list, multiple:true %>
  </div>

  <div data-controller="image-preview">
    <%= image_tag("preview.png",  :width => "100px", :hight => "100px", 
    data: { target: "image-preview.output" }) %>
  
    <div class="my-2">
      <%= form.label "Look Image" %><br>
      <%= form.file_field :image, :class => "form-control-file photo_upload", 
      data: {target: "image-preview.input", action: "image-preview#readURL" } %>
    </div>    
  </div>

  <div>
    <%= form.submit %>
  </div>
  <% end %>

You can see there that my stimulus data-controller encapsulates the form file_input and an image tag. The image tag loads a “preview.png” on page load and then replaces that white square when the user uploads an image. Ideally, you may want to play with the visibility attribute instead of using a blank square. 

// Visit The Stimulus Handbook for more details 
// https://stimulusjs.org/handbook/introduction

import { Controller } from "stimulus"

export default class extends Controller {
  static targets = [ "output", "input" ]

  readURL() {
    var input = this.inputTarget
    var output = this.outputTarget

    if (input.files && input.files[0]) {
      var reader = new FileReader();

      reader.onload = function () {
       output.src = reader.result
     }

     reader.readAsDataURL(input.files[0]);
   }
 }

}

The stimulus.js controller is here. It uses two targets the “input” which is the form file field and the “output” which is the image tag we are updating with the new image. This javascript uses the FileReader (https://developer.mozilla.org/en-US/docs/Web/API/FileReader) API to read the image off of the user’s computer and display it without needing to move the image across the network. 

This ended up being pretty simple to do in stimulus.js. I like that we don’t need QuerySelectors or anything non-deterministic like that and can just reference our targets directly. I haven’t included the webpack and rails integration code, it was a little tricky, and is a topic for another blog post. 

Who should present at SledgeConf?

SledgeConf is a remote ‘tiny conference’ focused on the software industry and software development. Anyone is welcome to present on our three themes “Software, Consulting and Teams”. 

See our article below on the SledgeConf themes.

Do you need to be a software engineer to present at SledgeConf?
No, you don’t need to be a software engineer or even able to code to present at SledgeConf. We just ask that your topic be pertinent to the Software industry. 

Do you need to pay to submit or present a talk to SledgeConf?

No, submitting and presenting talks is free just email a 3-5 sentence summary of your talk idea at my email. nick@sledgeworx.io

Do you need to pay to attend SledgeConf?

No, attending SledgeConf is free for individuals. Depending on interest, we may offer paid corporate pass with extra benefits. 

What equipment do you need to present a talk at SledgeConf?

To present you will need a device that can run the Zoom application and has a microphone so you can talk and answer questions. A smartphone could work, but we would need to test it ahead of time. If you don’t have the equipment needed to present, but have a great talk you want to present, reach out to us and we can try to coordinate something in Seattle. 

What is the process to presenting a talk at SledgeConf?

The process is slightly ad hoc at this point. The first step is to send me an email saying that you are interested in presenting and giving a short 3-5 sentence summary of your talk idea. I will get back to you within a day or two with my thoughts on the talk. You might be asked to modify your talk slightly if we already have a talk on that subject or it doesn’t clearly match one of our themes. 

Once we have agreed on a talk topic, and depending on what slots we have left, you can pick whether to do a full 50 minutes of talk and Q&A or to do a lightening talk with 5 minutes of presentation and 5 minutes of questions. 

SledgeConf Request for Talks and Themes guide

We are open to talk submissions for SledgeConf 2020. Please apply today. To apply please email me at nick@sledgeworx.io with a 3-5 sentence summary of your talk.

SledgeConf is a remote tiny conference (https://briancasel.com/tiny-conferences/) debuting August 7th and 8th 2020. So far our survey of whether people preferred weekdays or weekends is a flat tie, so we are doing both. There will be up to six 50 minute presentations and six lightening talks spread across two days of festivities. 

The themes for this years conference are Software, Consulting and Teams. Proposed talks should apply to at least one of these themes. The conference is targeted towards software engineers but talks from outside the industry are welcome if they apply to at least one of the themes. 

Software is a pretty large theme. Talks in this category can range from software tutorials, “Integrating full text search in Rails with Postgres tsvectors” for example, to discussions of industry wide issues. A talk on wastewater management in the Bahamas would not be appropriate unless the focus was on the software used. 

Consulting is our second theme in 2020. Talks in this category will cover issues software consultants and agencies, large and small face in their business. A great talk might be “How I found my niche as a React.js charting consultant”. 

Teams is our final theme for SledgeConf 2020. Most software is developed collaboratively and how we do that is a major part of our work. Talks in this category cover the organizational issues involved in building software. A great talk might be “Begging, Borrowing and Stealing our way to consistent data collection for estimates at $Company”

To submit your talk please email me at nick@sledgeworx.io with a 3-5 sentence summary of your talk subject.

Ex.

Hey, Nick, I’m interested in presenting at SledgeConf 2020! My idea for the talk is Integrating full text search in Rails with Postgres tsvectors. My project deepeats is a food ingredients discovery tool and we had an interesting time integrating full text search especially when supporting image uploads of ingredients list.

Thanks,

Example Person

To keep up with the latest updates on SledgeConf sign up to the mailing list!