How To Architect A Complex Web Table

How To Architect A Complex Web Table

Slava Shestopalov



Imagine you design a system for data researchers. Or an application for energy management. Or a dashboard for corn traders. Maybe you’re designing something like that right now. In all the mentioned cases, people will expect tables. Not those fancy ones from design inspiration sites but Excel-looking monsters with hundreds of cells and complex interaction.

In this case, a designer faces many challenges. For instance, matching design with existing frontend frameworks or struggling with “uncomfortable” data that smashes the layout. We’ll overcome these problems by means of the following steps: systematize needs, go atomic, and define interaction.


A trendy-looking table with little data versus a busy complex table
Expectation vs. Reality (Large preview)

1. Systematize Needs

So, you’ve interviewed the target audience and figured out their needs and wants. Now it’s time to piece together findings and transform them into an interface structure. For example, one user said, “I need to see how my data affects other parts of the application.” Or while watching another person work with old software you noticed he uses shortcuts and doesn’t touch a mouse at all. What does it mean?

The first user’s words are about input validation and hints. You’ll need to consider attaching alert or help information to a table. Or develop a system of meaningful colors. It depends on the domain and the mental model. The observation of the second user’s work might be a sign you need to design all actions keyboard-accessible. And you’ll probably need to think about shortcuts more profound than just “Cmd + C” and “Cmd + V”.

Here are some observation-assumption pairs.

  • I need to operate dozens of items at a time easily.”
    Allow cell multi-selecting? Add checkboxes to select many rows?
  • Now we do all the calculations this way.” [Shows Microsoft Excel]
    Is Excel effective for this purpose? What features can we borrow?
  • Can we somehow know beforehand if this name is already on the server.”
    Data validation on the fly? Error messages or auto-correction?
  • Usually I enter this information. It’s pretty generic.
    Suggest default values, defaults or templates?

As a result, you’ll have a list of people’s needs and wants. Open questions are helpful for figuring out real needs and filtering out whims:

“What helps you to work faster? What can make your choice easier? How is this feature affecting the efficiency of your work? What will change if you aren’t able to do X?”

So, what’s next? Now it’s time to build a logical skeleton for your table. A scheme of what it contains and is able to do. If you go directly to wireframing or prototyping, you step on the evil path of endless re-drawing and fighting with legacy.

Below is an example of what you might start with. It’s the tree of features. And the basic building block of any table is a cell. Cells unite into rows and columns, which can have specific features different from those of separate cells. And finally, we go to such important supplements of a table as a top bar with buttons, keyboard commands, and handling errors.


Tree-like hierarchical structure of table components
(Large preview)

The tree of features prevents you from making extra work and helps to focus on what is important. A well-organized feature tree is also helpful for the development team. They can match planned features with available frontend libraries and find the best way to turn designs into code.

On one of my projects, we used Angular Material framework. Unfortunately, Angular tables were too simple. We found an ag-Grid library that supported our functionality but had one limitation. It had no ability to expand a row and put children rows inside. We had revealed this issue before we put any effort into it and adjusted the design.

In A Nutshell

  • Start building a complex table with collecting and prioritizing user needs. Consider a non-table solution, for example, a chart.
  • Draw a tree diagram that systematizes all the needed features. Use it as a plan for producing visuals.

Recommended reading: Table Design Patterns On The Web by Chen Hui Jing

2. Go Atomic

So, the needs and functionality are defined, and you know technical limitations. It’s time to mockup your table. Basically, the atomic approach is designing small UI components first and then assembling bigger ones. We’ll gradually move from elementary particles like fonts and colors to such large modules like a header or column. I deliberately chose the strict brutalist style for mockups so that we can concentrate on function, not appearance.

Fonts, Colors, Icons

These parts can be already defined by the design system or UI framework you use. If you create a table for an existing product, check whether its color palette, fonts, and icons meet the table needs. On the picture below, I showed some of the shades of gray needed for table frames, lines, fills and text. Red and blue tints stand for warning-error-destructive and active-enabled-selected stuff. Text styles are to distinguish between primary and secondary information, titles and body text.


An example of a color palette, icons, and font styles sufficient for a table
(Large preview)

Cells And Accessories

When the table atoms are ready, we can proceed with molecules — different types of cells. In the first place, it’s important to think about normal, hover and active states of each element beforehand. Then go clicked, disabled and other states.

On one of my projects, we had eight types of cells with their own interaction. The simplest ones are text and numeric cells. In our case, it was allowed to populate numeric cells with non-numeric content, such as “N/A” (not applied) and “N/C” (no control). It was the peculiarity of the domain. Dropdowns and date pickers are more complex and have child elements. Finally, we had table cells that represented in-row commands.


A sample set of nine table cell types in normal, active, and clicked states
(Large preview)

Cells can have such accessories as tooltips, input hints, error messages, placeholders, etc. At this stage, they are static, but a designer should later specify the logic of how they show up (animation, delay, etc.).


Examples of table cell accessories: hints, error messages, and tooltips
(Large preview)

Rows And Headers

When cells are designed, you can make rows and see if various combinations work well together. Once I designed a table that had complex editing logic. Some of the properties were provided by users, whereas others were automatically calculated or populated with default values. Below is a mix of read-only and editable cells within one row.


Normal, hover, and active states of a read-only table row
(Large preview)

Note that the cursor is different when hovering over read-only and editable cells. Clicking on them triggers either selection of a row or going to the editing mode of the editable cell.

In the next image, you can see that people can select one or multiple rows:


Normal, hover, and multi-selection states of an editable table row
(Large preview)

Now it’s time to think about the table header. From my experience, it’s often impossible to control column title length and stick to one line. Even with a good writer on a team, you won’t keep all the texts short. Some of the tables require long technical titles or localization. Phrases, which were one-line in English, might become two- or three-line in Greek, German or Hungarian. Therefore, I showed different variants:


Examples of simple table headers with different amount of text
(Large preview)

Users of data-based software often need sorting and filtering. It helps them to find valuable information in the large chunks of data. The challenge with sorting and filtering is to combine sorting controls and filtering boxes with other header elements — column titles, measurement units, etc.


Different states of a table header: normal, hover, sorted ascendingly and descendingly
(Large preview)

Unlike table cells, filter boxes usually have “reset” icon on the right so that users can explicitly disable them and see unfiltered content.


Examples of table headers with filtering functionality
(Large preview)

In my example, there are three types of filter boxes. The alphanumeric filter enables search by letters and numbers. It supports wildcards — unknown number of unknown characters. For instance, if I type 45*A1, it might result in showing the rows with such values as 45A1, 45982A1B, 45A109B and 096445-A1.

Wildcards are a tricky feature since they depend on people’s habits. When I designed tables for technical specialists, we assigned the asterisk sign (*) to the unknown number of unknown symbols. For insurance analysts, I chose traditional SQL symbol — the percentage sign (%) — because they were used to it. As for the dropdown filter, it switches between a certain number of mutually exclusive text options, numbers or numeric ranges.


A sample set of three table filter types
(Large preview)

The date picker filter has a calendar and works like its cell equivalent. It’s good to allow users both enter the date manually and pick from the calendar. If they know what they are searching for, it’s much easier to type than click.

One more important thing is to format any meaningful input automatically and not to bother people with “invalid format” errors. On one of my projects, we allowed entering such dates as 01/25/2017, 6.12.17 and September 4 2016, and also filter by a month or year only.


Examples of a horizontal scroll in large tables: with fixed columns and without them
(Large preview)

Columns

One of the frequent features of complex tables is pinned columns. Usually, columns that contain key information, for instance, element names or statuses, are not scrollable.


Examples of text truncation in narrow columns and manual column resizing
(Large preview)

Although table columns should smartly adjust to content size, it happens when text is truncated. In this case, column resizing is helpful. Users can drag the column edge and see long content. They might also need to squeeze an unimportant column or the one with a short text.


Two ways to process long text in tales: truncation versus multiple lines
(Large preview)

Another way to handle long text strings is either to stretch a column by the longest content or wrap it and put on multiple lines. The first approach works better for more or less similar text strings. The second one works better if seeing the full content is more important for people than keeping the table vertically compact.


An example of the rules that define minimal column width for different cell types
(Large preview)

On one of my projects, we defined the minimal widths of columns to prevent tables from ungraceful resizing. We disabled squeezing columns behind a certain width depending on the content type.

Top Bar

What constitutes a table? Cells, columns, rows. In addition, complex tables often have a top bar. Like the rest of the components, the top bar is built of smaller elements — a title and commands.

Below, I collected the list of commands with all the variety of states, which we used in one of the products. We had icon commands for obvious metaphors like plus = add / create, trash bin = remove, arrow = move. Non-generic commands (e.g., assign, archive, balance) needed explicit textual naming. Moreover, some of the commands were accompanied by a dropdown menu.


A sample set of table-related commands of different types: icon, text, and dropdown
(Large preview)

Now we can try to combine different elements and see if it works. Here are some examples.


Three examples of table headers: a title only, title with icon commands, and title with text commands
(Large preview)

Of course, this is not the ultimate list of features and elements. It differs from one project to another and may include other things, for example:

  • Sorting by more than one column;
  • Customizable set of columns (ability to toggle them);
  • Expandable rows (a parent row can have child rows);
  • Logical operators for filtering and search (“and”, “or”, “else”, etc.).

If you hesitate which features to design and which not, here is a good principle. It’s Occam’s razor, or the law of parsimony. A designer should not create new instances if the existing ones satisfy the needs. You should “cut” the geeky features, which users might theoretically need in undefined future. The same story for the features that ideally fit one of a hundred situations but are useless in the remaining ninety-nine cases.

Whole Table

When all building blocks are ready, you can assemble a couple of tables for various purposes. This is a chance to spot inconsistencies. Most frequently I dealt with the following three types.

Read-Only Table

The simplest table type to build since it only shows as-is data. There are no filtering or editing options. Sorting or row hierarchy might help to analyze large chunks of data. Such a table is used for showing data, informing people about something.


An example of a read-only table with realistic data
(Large preview)
Search Table

The cells are not editable, the header has filter boxes and sorting controls, it’s possible to select rows. From my practice, such tables help to find, compare and select an item or several items out of a large range. For instance, filter out five of six thousand irrelevant tools from a catalog and then choose one needed tool.


An example of a search table with realistic data
(Large preview)
Editable Table

All or some cells are editable. Usually, there is no filtering because the order of rows might be customized. Such tables typically are accompanied by a toolbar and allow performing actions with rows.


An example of an editable table with realistic data
(Large preview)

In A Nutshell

  • Start with the smallest components, then gradually move towards bigger ones . Finally, mock up the whole thing.
  • Think about all of the possible states for each component beforehand.
  • Use Occam’s razor principle to keep the number of elements minimal yet sufficient.

Recommended reading: Design Systems by Alla Kholmatova

3. Define Interaction

Building blocks aren’t enough for such a complex interface piece as a table. A designer should think about “the rules of the game” and design logical principles and conventions behind the visual part. I’ll describe some typical things you’ll need to consider.

Numeric Data

How many decimals should numbers have in your table? One, two, five? What is the optimal precision level? I decide based on the accuracy users need for making the right decision. In some professions, fluctuation between 10932.01 and 10932.23 matters, whereas in other areas numbers 14 and 15 don’t really make a difference.

This is an example of numeric data rules my team used in a sophisticated engineering product.

  • Length
    Two decimals (57.53 m, 3.16 km); spaces are used as thousand separators (403 456.56 m).
  • Weight
    Two decimals (225.08 kg, 108.75 t); spaces are used as thousand separators (12 032.17 kg).
  • Money
    Two decimals ($9.45); commas are used as thousand separators ($16,408,989.00).
  • Diameter
    Three decimals (10.375 cm); no separators needed.
  • Latitude and longitude
    Eight decimals (26.4321121); minus sign used for the western longitude and southern longitude (-78.05640132).
  • Default
    For units not listed above — two decimals (32.05 g/m³, 86.13 C°).

One more thing we considered was the difference between the “true” data saved on servers and “approximated” data in the interface. The system used extremely accurate numbers with dozens of decimals in all calculations but people didn’t need to see it all the time. So we decided to show the number of decimals described above and expose the full number only when a table cell is active. For example, an engineer could enter 134432.97662301, and once he pressed Enter, the table showed 134 432.98. After clicking one more time, the engineer would see 134432.97662301 again.

Input Validation

Unlike the previous item about numbers, validation is important only for editable tables. It has two aspects. Firstly, the rules that qualify the entered data as valid or invalid. Secondly, either the messages that help to correct invalid data or mechanisms that fix it automatically. Usually, validation rules are too complex to reflect them in mockups or prototypes. So, designers can document them textually or in the format of flowcharts.

This is an example of message templates I once used. Text in angle brackets is dynamic and comes from the calculation engine or database.

  • Should be greater than number measurement unit. Optional explanation.
  • Should be less than number measurement unit. Optional explanation.
  • Should be between number 1 and number 2 measurement unit. Optional explanation.
  • Min value should be less than max value.
  • Max value should be greater than min value.
  • Min and max values should not be equal.

Commands

Editable tables with toolbars usually need a set of rules when toolbar commands are enabled and when disabled. These states can depend on the fact that a row is selected, on the number of selected rows, on the position or content of the selected row or rows, and other conditions. Below is one of the numerous ways to document such logical rules.

So, we have a table with some chemicals. It has such commands as “Add a row”, “Move up”, “Move down”, Delete”, “Recalculate”, and “Settings”.


An example of an editable table with a set of commands
(Large preview)

And here is the description of command states. It turns out their availability depends on one or several conditions.


A sample of logical rules that describe the behavior of table commands
(Large preview)

The next step is defining the result of each command. For example, what happens when I select two remote rows and click “Move up”? Or what is the result of clicking “Recalculate”? All these questions should be answered or at least considered beforehand.

Container And Responsiveness

How will the table be placed in the interface? For example, will it occupy some space within an existing container or be a separate module? The answers to these questions totally depend on a product and it’s better to foresee possible issues and thoroughly define the principles.


Three popular options of tale environment: as the key element of a page, as a dashboard module, and in a dialog
(Large preview)

When I design web applications, I usually think about at least three types of containers for tables. The most typical case is when a large table is the center of a screen and occupies as much space as possible. Such a table might not have its own title since the whole screen is devoted to working with the table. Small and medium tables can become autonomous modules of a dashboard as well as other items like graphs, diagrams, schemes. In this case, the top bar of a table plays the role of the card header. And finally, in large enterprise applications, tables often exist inside of popup dialogs. There should be wise guidelines so that dialogs don’t blow up because of too much content.

Another aspect of placing a table in the UI environment is the available screen area. The majority of enterprise applications are meant to be used primarily on the desktop. Table responsiveness is limited to simple stretching and squeezing behavior. Typically, tables with lots of rows and few columns occupy 100% of the available width. As a result, cells are evenly distributed on the screen, and more text can be shown without truncation of wrapping. On the other hand, huge gaps usually appear between columns, which contradicts the design law of proximity. That’s why some applications use lines between the rows or white-end-gray zebra coloring to make information better readable.


Examples of a table stretching and workarounds to make data clear: lines and “zebra” coloring
(Large preview)

A better way is to define rational default widths and allow manual resizing if needed. For reading a table, it’s better to have some empty space on the right than gaps between the columns.

If a table contains both many rows and columns, horizontal and vertical scrolls are unavoidable.

The key essence of a complex table is being large, thus giving the bird-eye view of data. Unfortunately, I cannot name a really good method of using large tables on smartphone screens. Excel and Google spreadsheets lose their power on small screens, although there are effective ways to handle small tables. For instance, converting a table to a set of cards.


An example of the table transition into cards on mobile
(Large preview)

Accessibility

Even an exceptionally smooth and nice table might become a nightmare for users. Therefore, it’s so important to follow accessibility principles. Web Content Accessibility Guidelines (WCAG 2.0) has a chapter about tables. Most of the material is about proper coding; however, a designer has a lot to think about too.

Here are major design considerations in terms of accessibility.

  • Give a title and prepare a concise summary.
    A visually impaired user should be able to get the idea of a table without voice-processing all its cells.
  • Mind the font size.
    Although there is no official minimal size for the web, 16 px (12 pt) is considered to be optimal. Additionally, a user should be able to increase it up to 200% without breaking the whole layout.
  • Test colors for people with color blindness.
    Text and controls should have enough contrast with their background. Color ratio 3:1 is minimally required (the more, the better). Also, color shouldn’t be the only way of marking things. For example, error messages shouldn’t rely on red text only, a warning icon will give additional clues to color-blind users.
  • Avoid small and ambiguous controls.
    Clickable components are considered to be touch-friendly if they are at least 40×40 px. Commands represented by icons should either be labeled or have tooltips and alternative text. Designers shouldn’t overuse icons because users might not understand complex metaphors correctly.

You can also utilize online tools for checking accessibility, for instance, Wave. Not only does it find accessibility issues and features, but also highlights them directly on a page and explains how to fix them.

In A Nutshell

  • Content unification and formatting is the designer’s work too.
  • Think beyond “things”, elements of your interface, and consider use cases and frequent patterns.
  • When everything inside is consistent and compatible, it’s time to think about how it fits the rest of the interface.

Conclusion

We’ve just walked through the process of constructing a complex table. Different projects require different approaches, but there is one universal principle. A designer should make all elements work together in any combination. That’s why it’s good to start with collecting needs and making small blocks first. And, of course, testing with users as soon as you have something clickable and realistic.

Further Reading

Smashing Editorial
(dm, ra, il)

via Smashing Magazine
How To Architect A Complex Web Table

Extending WordPress Dockerfile to use MySQL 5.7 (or 8.0)

I am working building some demos for Cloud SQL and one of the requirements I had was to run MySQL 5.7 and WordPress as my sample application. The demo consisted on migrating from a single VM environment with WordPress and MySQL running alongside. The narrative: the site got popular and the database became the bottle neck because of all the shared resources between them and the application. The proposed solution? A minimal downtime migration to Cloud SQL, moving the data layer to a dedicated server.

I am going to be doing this demo a lot of times, so I needed some way to automate it. I thought of doing through Docker. I am not Docker proficient, and to begin with I asked Anthony for help to get me to what I wanted, but there are so many nuances! Maybe someone will find a better solution to it than this one, but I decided to share what I got.

Let’s examine the two scenarios I faced. All examples assume Debian/Ubuntu.

I don’t run Docker, just have a VM and want to have MySQL 5.7

In this case it’s straightforward: you need to use the MySQL official APT repository available in https://dev.mysql.com/downloads/repo/apt/.

At this time the most recent version is mysql-apt-config_0.8.12-1_all.deb, keep an eye before continuing this because it may change the version until you use this tutorial.

In line 2 you can change from mysql-5.7 to mysql-8.0, if unspecified the command, version 8.0 will be installed.

I run Docker and want to have 5.7 or 8.0 installed on it

It’s a bit similar to the previous situation, you still need to go to the APT repository page to know which file to download and add this on your Dockerfile:

Notice, you can also change the version of MySQL here. Don’t forget to pass DB_ROOT_PASSWORD​ when doing your docker build using the --build-arg argument. More details here.

It works!

These are the workarounds to avoid using MySQL 5.5. After that I was able to finally automate my demo. Feel free here to share better examples of what I did, as I said, I don’t have proficiency in the subject.

via Planet MySQL
Extending WordPress Dockerfile to use MySQL 5.7 (or 8.0)

Watch the 2019 State of the Union address here (or not)

It’s that time again — time to hear what kind of state our precious union is in. For those of you inclined to watch the temporarily delayed speech by the President, you can of course watch it in a bar and invent your own drinking game, but you can also stay home and watch it on YouTube or C-SPAN. The drinks are cheaper — and stronger.

Of course C-SPAN will have it raw, and the White House stream will probably also be a plain one. But if you want a bit of partisan spice and occasional pull quotes along the bottom, many networks are also doing live YouTube coverage. There’s a list here; pick your poison. The broadcast starts at 6 PM Pacific time. 9 for you East coasters, of course.

Here’s the PBS stream if you want to just dip in right now. It’s live now and should be fairly straightforward:

Cord cutter? If you have a smart TV or a gadget that makes your TV smart, hop onto the YouTube app or any of the major networks and you should find a link there. You could also try to get the networks via your local channels, but why?

Honestly if you don’t particularly want to watch, and I don’t blame you, it’s going to be pretty tough to avoid. Twitter will be a mess, or more so than usual; News sites will be all SOTU quotes and fact checks; YouTube will be full of snips and clips and horrible comments; Reddit and the rest of the social web will be overrun.

Your best bet is to turn on airplane mode for a little bit and sit quietly and read. Doesn’t that sound nice?


via TechCrunch
Watch the 2019 State of the Union address here (or not)

The MOST Important Upgrade for Your New AR-15 Rifle

P1050238R

Nick L for TTAG

[ED: A Foghorn classic from back in the day. The advice is still every bit as good, though there are more options out there now.]

There’s little doubt that the AR-15 is the most popular rifle design around. It’s been called America’s rifle. Just about everyone seems to have one. But while the design is solid, it can definitely be improved.

As a more than 60-year-old design, it has aged extremely well, but there’s one specific improvement that can be made to the average AR-15 pattern rifle that costs less than $50, is easy to install, and yet can make all the difference in terms of the accuracy and usefulness of the firearm. What is this improvement I’m talking about?

The trigger.

P1140159

Nick L for TTAG

There’s a depressing trend in AR-15 builds these days where manufacturers use top-shelf, state-of-the-art parts to build most of the gun, and then cheap-out on the trigger. Just about every AR-15 I’ve tested recently suffers from this malady, namely using a “mil-spec” trigger that probably costs about $10 to finish off a $1,000+ rifle.

With a modern sporting rifle, there are definitely some parts you can skimp on and get away with it. A better bolt carrier is nice, but won’t really make much of a difference in performance. A better stock is appreciated, but the “mil-spec” stuff that gets mass produced gets the job done just fine.

One place where scrimping really hurts performance, though, is the trigger. The reason is that while a substandard bolt carrier or stock might not affect accuracy much (if at all), a better trigger can cut group sizes in half all by itself — something my one-time roommate Tom McHale proved once more in his article on this same topic.

Trigger control is critical to accuracy. An inconsistent or excessively stacking trigger will lead to inconsistent shot placement. But a consistent, clean trigger will allow the shooter to make that precisely-aimed shot much easier.

Jeremy S for TTAG

A new trigger won’t make every rifle and rifleman into a Carlos Hathcock clone — only training and practice can do that. But the difference between a stock trigger and a match grade trigger will be like night and day, no matter the skill level.

I can anticipate the next question. What’s the best drop-in trigger for the AR? There’s no single “best” trigger for the AR-15, but here are a few I prefer.

  • ALG Defense QMS Trigger – $45
    An excellent replacement that provides a stiff, yet crisp single stage trigger at an amazing price.
  • Timney Trigger – $209.95
    No mucking around with pins and springs, this one-piece trigger drops straight into your receiver and provides the crispest single stage pull on the market.
  • Hiperfire 24E – $215
    The main claim to fame is the adjustability — you can set the trigger pull weight to suit your style. Also it’s extremely reliable.
  • Geissele 2-Stage (G2S) Trigger – $165
    The best 2-stage trigger at the best price.

Also see Jeremy’s drop-in trigger round-up post.

There are some who believe that upgrading a rifle is a waste of time, that the money could be better spent on ammo and range time. That’s true to an extent. There’s no substitute for practice when it comes to shooting accurately.

But when your equipment is working against you, it makes the training process exponentially harder. For as little as $50, a new shooter can swap out their mediocre-at-best stock trigger and make a huge improvement in an AR’s shootability.

So what are you waiting for?

via The Truth About Guns
The MOST Important Upgrade for Your New AR-15 Rifle

Spiral Eye Needles

These ingenious sewing needles can be threaded blindfolded. You pull the thread into a spiral from the side, and for the most part the thread will remain in the eye as you sew. That is not true for calyx eye needles (invented a hundred years ago) as a solution to the vexing problem of threading the eye. It’s as easy for the thread to slip out of the open slot at the end of the calyx needle as it is to slip in, and this wavering can fray the thread. The spiral eye needle doesn’t snag, but in my experience, it will occasionally let the thread slip out. Expert sewers might find that annoying. It is dead simple to slip back on, and the thread is not frayed, so I can put up with that small inconvenience.

Spiral Eye needles are expensive. However they should last a lifetime if you don’t lose track of them (they look very similar to regular sewing needles).

— KK

[This is a Cool Tools Favorite from 2010]

One Second Needle, 8-Pack ($15)

Available from Amazon

via Cool Tools
Spiral Eye Needles

Design Solutions for Boot Jacks, Part 3: A Cheap, Efficient DIY Hack and More

Working designer readership FTW: I’m impressed with how many reader solutions have popped up for boot jacks. Two more readers sent in ideas. I also learned that a neighboring farmer reads Core77, and she showed me the rather brilliant DIY solution that she installed last fall.

To recap, my original gripe in Part 1 was that conventional boot jacks get your socks dirty. (Living on a farm, I’ve learned, is a never-ending battle against dirt and mud, particularly minimizing how much of it winds up in the living space.) In Part 2, three readers sounded off with suggestions for design fixes. Here are some more:

 

Jason Pokines provided the following sketches and descriptions:

"The handle is weighted, so it stays on one side until you flip it over with your foot. No bending down. Also, there’s a rubber wheel on the one point, to help with traction."

"Or go all out, make it out of steel, and bolt the sucker to the floor."

Daren Lewis came up with this idea:

"We need two surfaces, a boot and a sock surface. They could be managed with a hinged element that is either sprung up or lifted to a holding detent. I’d make the boot portion the fixed bottom and the sock surface the top. You’d want different surfaces to indicate the intended use of each."

As for the DIY solution, I video’d it:

(Brad Johnson, don’t worry, we’re getting to the alternate boot jack design you’d mentioned next.)


via Core77
Design Solutions for Boot Jacks, Part 3: A Cheap, Efficient DIY Hack and More

Brownells Giving Away a Barrel of Hornady 5.56 Ammo in Super Barrel Weekend Sweepstakes

brownells super barrel sweepstakes 5.56 ammo

courtesy Brownells

You know how every commercial or promotion being run for this weekend’s large sporting event refers to it as “the big game” or some other equally vague euphemism? That’s because the NFL guards the use of the term “Super Bowl” jealously.

They’ve threatened to sue bars, restaurants and any other business that uses the name of the event and piggyback off of the nation’s biggest secular holiday that happens to be built around a football game.

With all of that out of the way the cheeky folks at Brownells will be running a big SUPER BARREL WEEKEND SWEEPSTAKES beginning at midnight tonight. You’ll be able to win a barrel full of Hornady 55-grain 5.56 M193 ammunition simply by clicking this link and entering (again, the contest doesn’t go live until 12:01am tonight (well, Saturday morning, actually). That’s 13,889 rounds of all-American fun that could be yours.

Here’s the Brownells press release which does not, in any way, mention the Super Bowl . . .

Brownells Super Barrel Weekend Sweepstakes — Win A Barrel O’ Hornady Ammo

GRINNELL, Iowa (February 1, 2019) – This weekend, professional football fans celebrate the biggest game of the year. Brownells, on the other hand, is giving liberty-loving Patriots something else to celebrate – the chance to win an enormous barrel full of 13,889 rounds 5.56mm NATO Hornady Frontier 55-grain M193 ammo.

Starting at 12:01 AM Saturday, February 2, and going through 11:59 PM Sunday, February 3, free-ammo seekers are encouraged to look to the Brownells Ram as their guide and sign up for a chance to win the barrel full of Hornady ammo at www.brownells.com/superbarrel.

One lucky winner will be drawn by random on Monday February 4, and will receive the big red barrel full of ‘Merica valued at $4,239.99.

Containing enough freedom seeds to fill approximately 462 standard-capacity 30-round AR-15 magazines, the barrel is perfect for starting a home-based ammo dump, serving as a unique coffee table, or triggering interesting conversations with all who cast their astonished gaze upon it.

To learn more or sign up to win the big red barrel of freedom and other amazing products, visit www.brownells.com.

About Brownells

Serious About Firearms Since 1939™, Brownells is the world’s leading source for guns, gun parts and accessories, ammunition, gunsmithing tools and survival gear. With a large selection of both common and hard-to-find items, and an extensive collection of videos, articles, and gun schematics, Brownells is the expert for everything shooting-related. Committed to maintaining our great traditions, Brownells has more, does more and knows more – and guarantees it all, Forever. For more information or to place an order, call 800-741-0015 or visit Brownells.com. Stay up-to-date with Brownells on YouTube, Facebook, Twitter and Instagram.

via The Truth About Guns
Brownells Giving Away a Barrel of Hornady 5.56 Ammo in Super Barrel Weekend Sweepstakes

A New Captain Marvel TV Spot Gives Us Hope for Marvel’s Next Generation

Maria and Carol are surprised about something in Captain Marvel.
Photo: Disney

Everyone is always looking for clues to the future of the Marvel Cinematic Universe, right? Well, Marvel went ahead and put a big one in a new TV spot for Captain Marvel.

Here’s the TV spot courtesy of Comic Book Resources.

Five seconds into the above spot Carol Danvers (Brie Larson) asks a girl how she looks. The girl says “Fresh” and they give each other a high five. That girl is Monica Rambeau (played by Akira Akbar), and there’s a good chance she’s part of the next generation of Marvel films.

Advertisement

This is the first time we’ve actually seen Monica Rambeau in Captain Marvel footage, but we knew she was in there. If you read our set visit report, we got into it, plus the fact that a character named Maria Rambeau, played by Lashana Lynch, was announced was a not-so-subtle clue. Maria is Monica’s mother, an Air Force pilot and best friend of Carol before she went and got all super. Carol and Monica had a good relationship at that time, and it looks like it’ll continue once she gets over the whole “I’m a Kree” thing.

As you can read in this great piece from my colleague James Whitbrook, Monica has a long, storied history at Marvel. She was the hero Captain Marvel (before Carol Danvers) and now floats about with the Ultimates doing cosmic shit as Spectrum. In the Captain Marvel movie, she’s a little girl, but don’t forget this movie is set in the ‘90s. By the time Avengers: Endgame is over, and Captain Marvel has defeated Thanos, Monica will be a grown woman. A woman who very well could follow in the superhero footsteps of her Aunt Carol.

When could this happen though? That’s difficult to say considering very little is known about what Marvel is doing after Avengers: Endgame. The studio doesn’t even have a 2020 movie announced, though Disney has untitled films scheduled for release May 1 and November 6 of that year. You have to think, at some point, a Captain Marvel sequel would be in the works and that could be a good time for Monica to rise up to power.

Advertisement

For now though, we’ll meet her and a whole other side of the Marvel Cinematic Universe in Captain Marvel, which opens March 8.


For more, make sure you’re following us on our new Instagram @io9dotcom.

via Gizmodo
A New Captain Marvel TV Spot Gives Us Hope for Marvel’s Next Generation

Stunning Trailer for Apollo 11 Brings Us Never-Before-Seen Footage of the Moon Mission


Last year, the filmmakers behind Apollo 11 were discussing making a documentary to mark the upcoming 50th anniversary of the Apollo 11 moon landing, when an archivist informed them that extensive, unseen 70mm footage of the mission existed at the National Archives. The footage became the basis for the documentary Apollo 11 and now we’re getting our first look at it with a new trailer.

In December, the Apollo 11 filmmakers told Vanity Fair that Dan Rooney, an archivist at the National Archives and Records Administration, knew the footage was boxed up in a vault somewhere but he had no idea what kind of treasure he was sitting on. As NASA was preparing the Apollo 11 launch, it made a deal with MGM Studios to film the mission preparations and their aftermath. MGM set up a crew to film it all using the same epic Todd-AO 70mm treatment it gave to blockbusters like The Sound of Music. Six weeks before launch, MGM lost interest but NASA wanted to go through with it anyway and managed to get the crew filming. Some of the footage was used in a short documentary, but most of it was locked away. Now it’s coming to the big screen along with audio culled from 11,000 hours worth of uncatalogued recordings.

Buzz Aldrin himself is one of a dozen credited cinematographers on the new documentary, and based on early reviews coming from Sundance last week, it appears that the level of intimacy the crew captured is the film’s biggest strength. The Hollywood Reporter wrote that “much of the footage in Apollo 11 is, by virtue of both access and proper preservation, utterly breathtaking,” and found that the filmmakers were freed up to make something experiential because the story of the mission is already so well known. Indiewire gushed that “the clarity takes your breath away, and it does so in the blink of an eye; your body will react to it before your brain has time to process why, after a lifetime of casual interest, you’re suddenly overcome by the sheer enormity of what it meant to leave the Earth and land somewhere else.”

Just looking at the trailer, we can say it’s wild to see footage from this era that doesn’t look like it was shot through a yellowy vintage Instagram filter. It looks like it could’ve been shot yesterday.

There’s no theatrical release date yet, but the big 50th anniversary of the moon landing is coming up in July so we’d guess it will be out around that time. Until then, check out the trailer above and a spiffy new poster below.

[YouTube]


via Gizmodo
Stunning Trailer for Apollo 11 Brings Us Never-Before-Seen Footage of the Moon Mission