Friday, April 19, 2024

Google Sheets Apps Script Basic Setup

 I want to simply connect to a sheet, pull data from a cell into my scripting interface, and update that cell from my code as well. There are a small hand full of approaches for different needs - this one works easily.

Let's create a function that pulls a numeric value from a cell and increments that value by one. I'm doing this for astrophotography processing, so that value will represent the number of "Frames" in a stack of photos.

1. Create a Function

From Google Sheets, choose Extensions > Apps Script to open the Code.gs coding interface for your spreadsheet. Use the default or create a new custom function name.

function addFrame() {

}

2. Connect to your Spreadsheet

Add 3 variables to connect to your:
  • Current spreadsheet file/item in drive. That's the whole document with the title at the top of the page
  • Current sheet (in case you have multiples sheets added to a spreadsheet. In this case we'll just point to the first [0] sheet in the spreadsheet
  • Specific cell that you want to interact with with (row,column) notation

function addFrame() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange(2,5);

}

3. Pull a Value from a Cell

Store the value using cell.getValue() in a new variable

function addFrame() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange(2,5);

  var currentValue = cell.getValue();
  console.log(currentValue);

}

4. Write a New Value to a Cell

cell.setValue() will do the job

function addFrame() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange(2,5);

  var currentValue = cell.getValue();

  cell.setValue(currentValue + 1);

}

5. Assign Script to Control Button

If you haven't already, you can Insert > Insert Drawing to design a button, add it to your sheet, and assign a script to run every time you click that object like a GUI control. 

Extra Credit: Refactor & Pass Values from Other Functions

Let's add comments, add some basic logic, and move the Add and Remove commands outside of the Processing function. Instead we'll pass the Add or Remove value into the Processing function as a positive or negative value.

// Add or Remove Frames from the Calculator

// Perform the addition or removal of frames from cell D2
function processFrames(frameChange) {
  // Setup
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange(2,5);
  
  
  // Get current value of Frames
  var currentValue = cell.getValue();

    // Ensure proper number of frames
    if (currentValue < 30 && currentValue > 1) {

      cell.setValue(currentValue + frameChange); // Update the frame value

    } else {
      // Cannot add more than 30 frames. Do nothing
      console.log("Maximum or mimumum number of frames are already set.");
    }  

}

function addFrame() {
      processFrames(1); // Add 1
}

function removeFrame() {
      processFrames(-1); // Remove 1
}


Here's a link to view the spreadsheet, but you'll need to allow a bunch of security permissions to use shared code over Google.

Wednesday, August 17, 2022

Remove Marker from Shape Elements in Inkscape

There's a known bug in Inkscape that prevents removing special markers from the start and end points of a polygon element.

  • Select a line, circle/ellipse, or a polygon object
  • Apply a stroke in the Stroke paint tab on the Fill and Stroke dialog
  • Navigate to the Stroke style tab and select an Start/Mid/End marker


I'm making a diagram with a number of line elements that I wanted to be displayed with arrow heads.


I know there are settings that let you use the last style as the default for new elements so you don't have to copy and paste the formatting to additional objects. Somewhere along the way, I think my line markers got applied to my polygon elements. Now I have weird arrow heads at the start/end point of my shape, which is absolutely not acceptable.

Rather than duplicating existing shapes to try find a clean element to resolve this, use the XML Editor to edit the element's properties to get rid of those arrowheads entirely. Using the XML Editor will allow you to edit existing elements without having to re-create the design from scratch each time.

  • Select the object
  • Navigate to Edit > XML Editor or launch it from the shortcut: Ctrl+Shift+X
  • With the graphic object selected in the list at the top of the editor, click on the style element to begin editing it's style attributes
  • Select and remove the marker-start; & marker-end; attributes. Ensure that you didn't remove too many- or leave any extra semicolon characters (;) as each attribute will be separated by one semicolon 
  • Click the check ✅ to apply the edits

Additional shapes may still have unwanted arrow markers, so clean up and restart the project.
  • Choose File > Clean Up Document
  • Save the project
  • Close and re-open Inkscape

Thursday, August 11, 2022

Roadway Index Consolidation

The fire department needs an updated wall map of city roadways with a lookup grid and an alphabetically sorted index of roadway names for rapid review. This workflow creates a grid index, and joins its identification information to all roadways within each cell; which are then consolidated into a reference index.

While this illustration uses a gridded map index, this method can be used to summarize features that exist across any kind of aerial boundary unit: for instance zip codes, districts, neighborhoods, etc.

Here is the City of Cocoa's footprint:

Create an Area of Interest Layer

This is for firefighters at Station 2, so their area of interest is mainly focused in the southeast portion of the city and surrounding areas. I created a polygon layer to describe that footprint, using ArcGIS Pro's Direction tool in the Edit toolset to snap digitized vertexes to cardinal directions for 90º corners.
 Precision isn't super important here, so I didn't switch over to a Mercator projection for digitization. I left the coordinate system in NAD83 Florida State Plane East (FIPS 0901) US Feet to avoid errors in the next step which is more important.

Create Fishnet Grid

We'll test ½ square mile grid cells (2640' x 2640') to balance fitting a sufficient amount of streets into a grid cell without being too densely populated and hard to identify a roadway within a cell.
  • Open the Create Fishnet tool
  • In ArcGIS Pro 3.0, open the dropdown at the top of the Template Extent section and choose Browse to select the Area of Interest layer that we created above as the template for the extent of this grid feature class
  • Ensure you're using the appropriate coordinate system with expected unit of measure for your own needs. I'm using FL State Plane East with US Feet as the unit of measure so I can enter a value of feet for an accurate grid cell size
    • Enter 2640 in the Cell Size Width & Cell Size Height fields (which is half a mile in US feet)
    • Set the Geometry Type to Polygon and run the tool

Cull & Customize the Grid

Many of these cells are over water, and I'd prefer to get rid of those and use that space for the Index. Even if the index doesn't fit there and I end up printing it out separately, I'd still prefer to remove those unnecessary cells in the northeast. 
  • Open the Attribute Table
  • Add a Field to named Status
  • Manually select of those unwanted cells (107-110, and down running southeast to cell 33) 
  • Calculate Values of "Blank" or "Remove" or whatever
  • Open the Layer Properties for that Fishnet layer and navigate to the Definition Query section
  • Click New definition query
    • Where Status | Is Null

Re-Calculate Grid IDs

This will remove those features from the view, but the grid ID numbers will become inconsistent: e.g. After cell 32, numbering will continue on the next line above at 34.


Since the definition query is already in place, and the intended order is already sorted based on the object ID, we can run a custom field calculation to create a new contiguous unique ID to fix these gaps.
ℹ Optional: To be safe, you can create a new field (named ID_Original) to preserve the original ID. You'll first need to temporarily disable the definition query to record all values; Calculate Field on that new ID_Original and simply use the OID field to populate the ID value for every record. When finished, re-apply the definition query.
  • Create another new field named ID_Truncated or something similar
  • Ensure there is no selection, and the definition query is set to exclude any unwanted parcels (see the graphic above)
  • Open the Calculate Field dialog to calculate values on that new field
    • ID_Truncated = autoIncrement()
    • Code Block: Enter the following script and click Apply to run
rec=0
def autoIncrement():
    global rec
    pStart = 1  # adjust start value, if req'd 
    pInterval = 1  # adjust interval value, if req'd
    if (rec == 0): 
        rec = pStart 
    else
        rec = rec + pInterval 
    return rec


  • Finally, change the labeling field to the new ID_Truncated 

Join Grid IDs to the Roadways

Now run an Intersect process to join the grid cell IDs to each roadway, while splitting roadway segments at the borders of each grid cell
  • Input Features: the Roadway Centerlines layer, and the Fishnet grid layer
  • Attributes: All
  • Output Type: Line
The result will be a line dataset set to the extent of the fishnet grid:

Export to Spreadsheet Editor

Move over to Excel/Sheets to finish processing. Run the Table to Excel tool to export the attribute table of the resulting Intersect process. This will make it easier to consolidate the dataset into distinct roadways with multiple IDs concatenated together. Here's an example:

  • Open the dataset in Excel and hide all field besides the Address Label (from the Roadway Centerlines dataset) and the ID_Truncated field (from the fishnet grid)
  • Add three field headings after these two fields: named Count, End, and Formatted

Clean up the Data

  • Select the first row of headings, navigate to the Data tab and click the Filter button to turn on field filtering tools
  • Sort the Address Label field, ascending
  • Remove any blank or null Address Labels by selecting those records and deleting those rows
  • Select cell A1 and press Ctrl+A to select all records
  • Navigate to the Data tab and run the Remove Duplicates tool
    • Select the Address Label and the ID_Truncated fields and click OK to run. The tool will report how many duplicate records were removed

Create Analysis & Formatting Formulas

Use the following formulas for those three new fields. Count and End are for reference and filtering use later, while the Formatted field is going to help build the index mapping that we're summarizing
  • Enter the following formulas for each cell:
    • Count: =COUNTIF($A$2:$A$1177,A2)
      * Where 1177 is the last row in the dataset
    • End: =IF(A2=A3, "", "End")
    • Formatted, line 2: =B2
    • Formatted, line 3: =IF(A3=A2,E2 & ", " & B3, B3)
  • Fill the formulas down the the bottom of the dataset, leaving cell B2 as a unique outlier to help start the formatting trick 

Here's what's happening in each of these new fields:
  1. The Count field compares downward, and aims to report how many times an Address Label is present across the dataset. A Lane is in the dataset twice, while A Street is in the dataset three times.
  2. The End field aims to mark the end of a group of addresses. We'll use this flag for filtering reasons next. Notice the value of End on the 2nd of two records for A Lane, and the 3rd of three records for A Street.
  3. Most importantly, we're beginning by taking the first ID in the dataset and writing that to the Formatted field. On the next row, we're looking upward to see if this next record's address is the same as the previous. If so, that means our address is found on an additional grid cell, so we're concatenating it with the previous cell, separated with a comma and a space. If the previous Address Label is different, then it's a new address and we'll pull a new ID by itself.

Consolidate with Formatting

Now we'll finish up by applying that filter.
  • Make those formulas permanent by copying those cells and Paste Special > Values
  • Select the filter menu for the End field and remove the Blank category. Click OK to apply the filter
  • The unnecessary records are merely hidden here. Hit Ctrl+A to Select All records, and Paste it into a new worksheet to make the dataset permanent. Notice the spreadsheet's row numbers are now sequential 

Stylize & Finishing

  • Remove the ID_Truncated, Count, and End fields
  • Rename the remaining fields to Roadway, and Grid
  • Optionally, you may want to use the formula =PROPER(A2) or =UPPER(A2) to change the case of the Address Label field as needed
  • Adjust the formatting of the font size and typeface to suit your map's style
At last, copy and paste the range (or segments of the dataset at a time) back into your mapping project for final cartography and layout.



Tuesday, August 10, 2021

ArcGIS Online Application Transparency Issue

Issue

I published a Map in ArcGIS Online, and converted it to an Application to add some custom functionality (splash disclaimer, print button, etc.). Unfortunately, there is a city boundary layer that is displaying with a 60% transparency, and the requestor wants this to be much darker. I cannot seem to adjust this at the Application level.

Application view

 

 The layer in the map has all transparency removed in the Symbology properties, as well as in the layer's Appearance settings. Despite removing and re-adding the hosted feature layer, the Application still renders the transparency.

Map view

Solution

 Check the settings at the feature layer level:
  • In ArcGIS Online/your Portal, navigate to Content 
  • Search for- and open the hosted feature layer
  • Navigate to the Visualization tab
  • Click the Change Style icon  
  • Click the Options button to open the symbol properties
  • Review the Overall Transparency setting and adjust if necessary
60% Transparency applied

Discussion

 In my case, this is where the issue originated. After I set the Overall Transparency to 0%, the property was able to propagate through to the Application level. Despite explicitly configuring the transparency in the Map that is directly consumed by the Application, the Application still reached across the Map and pulled the default transparency variable that was defined in the feature layer.

That is annoying because I had intended for the default City Boundary layer to render with a decent amount of transparency; and this application is an outlier from the otherwise uniform graphic standard I was hoping to implement.

Alternatively, I'll try to apply a transparency value inside the symbol fill/outline settings, rather than at the Overall layer transparency. 💁

 


 

 

 

 

 

Thursday, March 5, 2020

Testing a Cheap 2X Telephoto Converter Attachment for DSLR Camera Lenses


The Product

"58mm Telephoto Magnification Lens, Accessory for Cameras 58MM 2X Magnification Universal Teleconverter Telephoto Lens for Cameras"




The Pitch

"Bring objects you are photographing twice as close perfect for sports photography, bird watching, nature and anytime you need that extra distance. DOUBLE YOUR LENS FOR FRACTION OF THE COST OF NEW ZOOM LENS"

The Price

Only $13.99 on eBay, or $12.99 - $19.99 on Amazon. It's even available on B&H for $32.99 branded as Vivitar. All available for various filter sizes.

What?

Many beginner DSLR packages on Amazon come bundled with a lot of beginner gear that I endearing refer to as toys. In that previous link, I've given my perspective on the usefulness of many of these common items. Tl;dr - they're fun to play with for absolute beginners, and the gear is generally outgrown very quickly. Some items last longer than others; some items are not safe to use from the beginning.

One item in particular that I'll argue isn't particularly helpful from the very beginning is the 2X to 2.2X Telephoto Adapter, marketed with different branding depending on where you're seeing it sold.

Test Gear

Since this lens came with a basic DSLR gear package, I'll test it with two other common beginner/kit lenses and an intro body:
  • Canon T5 body
  • Canon 18-55 f/3.5-5.6 IS II "kit lens"
  • Canon 75-300 f/4-5.6 III USM "kit telephoto lens"

Test Conditions & Photos

The following are the resulting photos with minimal processing - just a slight exposure adjustment and nominal sharpening added to each raw file, then they were exported as JPEGs. As a parent to a toddler and an infant, I haven't had a ton of time to test this in optimally bright and uniform conditions of afternoon daylight. These photos were taken close to sunset with low level clouds passing in front of the sun so daylight was fading very quickly.

Ideally an ISO of 100 should be used while maintaining a high enough shutter speed to mitigate camera shake. While I came close to mitigating camera shake, a tripod/lower ISO/better testing conditions are desirable for a better comparison.

Additionally, I accidentally shot at 50 mm instead of 55 mm for the 18-55 control shot with no adapter.

Maybe I'll get around to updating this image set.


Images:

Kit Lens

18-55 @ 50mm
ISO 100, f/5/6, 1/125s

18-55 @ 55mm + 2.2x Adapter
ISO 100, f/5.6, 1/125s

Wide Kit Telephoto

75-300 @ 75mm
ISO 400, f/5.6, 1/250s

75-300 @ 75mm + 2.2x Adapter
ISO 400, f/5.6, 1/200s

Long Kit Telephoto

75-300 @ 300mm
ISO 1600, f/5.6, 1/200s
75-300 @ 300mm + 2.2x Adapter
ISO 1600, f/5.6, 1/200s




Comparisons


Kit Lens



Magnification is apparent - at the cost of sharpness. The center clarity is pretty hazy, but the edges are full-on muddy.


Kit Telephoto vs. Adapter



This is the most important comparison. Extending the kit 18-55 mm lens with a 2x tele adapter is significantly less sharp and more heavily distorted with image degradation issues.

Wide Kit Telephoto, Adapted

75-300 @ 75mm + 2.2x Adapter
Image degradation is absolutely apparent, and this will be as best as the image quality gets on a telephoto lens.

Long Kit Telephoto



ISO 1600 is my personal limit of ISO speed on this intro body to balance noise in low light. This kit telephoto lens works best around f/11, and f/5.6 is often too soft @ 300mm for really enjoyable results. 1/200s is far too slow to shoot at 300mm handheld.

Despite those very important and clearly sub-optimal shooting conditions, it cannot be any more apparent how much image degradation is occurring. Terrible sharpness, awful contrast, muddy/abberated colors, etc. Just night and day bad.

Conclusions

These test photos are essentially straight out of camera JPEGs. No effort was made to clean up noise, sharpness, color, contrast, texture, etc. so these are quite unsightly as-is. Any photo taken with a camera (film or digital) needs some amount of work to be developed into a pleasing photograph. These have the absolute minimum amount of processing to share across the Internet.

I'm used to shooting a lot of work with my kit telephoto lens and I have learned to mitigate its shortcomings quite significantly. These photos are pretty crude, and I would say that there are a few instances where the telephoto adapter can be improved; but by and large any improvement attempt is much better addressed by simply cropping in on an un-adapted lens.

Test shooting conditions aside, there is no doubt that this adapter is not helpful, and simply cropping will provide vastly superior results.

Don't bother with this lens.

The least amount of negative distortion and image degradation occurs at widest focal lengths on a given lens, and it immediately gets unusable on a dedicated telephoto lens. Even the Internet's most hated lens, my EF 75-300 mm, is far superior - and it can be picked up used as low as $25-60 on eBay or $60 on KEH or MPB.

Save the $15-35, and shoot for a kit telephoto between $25-60 used, or under $200 brand new.

There's More:

The photography community exhibits an incredible amount of gate keeping. That is: advanced users disappointingly often provide intellectually dishonest, lazy answers to novice shooters that give a perception that newcomers are not worthy of attaining high-end image quality without paying a toll of incredible expense or sheer luck in gaining experience from rote practice. In the case of this test, folks will suggest incredibly expensive lens options and discount the value of kit telephoto equipment, even though there are many truths to the image quality differences between kit lenses and advanced/pro gear.

That is not my intention with this review. There is value in using most basic gear. Of course if one has the means, a middle of the road package will provide plenty of quality to bolster success in a hobby without breaking the bank. In many cases, however, there is plenty of room to grow with absolute beginner gear on the lowest end of the budget spectrum.

Again, this telephoto adapter lens is not worth it.




Sunday, April 28, 2019

Telescope vs. Telephoto Lens for Photography

I have a bunch of intro gear -- none of which are particularly well suited to high magnification solar/lunar astrophotography. On my fourth attempt, I finally observed a solar transit of the ISS.



Unfortunately I forgot my telescope lenses and other hardware, so I resorted to my kit telephoto lens for magnification which was not enough. I may not have nailed focus, unfortunately, but I think the main source of image degradation was the intense crop on highly compressed video frames that had their format converted multiple times. I'm talking camera sensor data → .MOV video → JPEG frames exported → stacked, cropped, and re-exported as JPEG with minimal additional compression.

I know it's possible to perform a solid crop on raw still photos from my work on the August 21, 2017 solar eclipse, but clearly the video capture workflow is not cutting it.:

My shot of the Great American Solar Eclipse of 2017
So let's compare my DSLR + kit telephoto lens with my beginner telescope-mounted DSLR setup.

Gear

Camera

  • Canon T5 / 1200D DSLR
  • Canon 75-300 f/4-5.6 kit telephoto lens

Telescope

  • Celestron AstroMaster 114 EQ Reflector Telescope
  • 10 mm / 100x magnification eyepiece
  • T-adapter to mount an EOS camera body

Test Images

I'm observing a 500' FM radio tower located about half a mile from my back yard.

Telescope + DLSR

The telescope is 1000 mm @ f/9. The camera exposure is 1/30th sec @ ISO 800. Image size: 3457 x 5194 px. The projected image circle completely covers the camera sensor; and the image is magnified/cropped significantly through the camera when the T-adapter is added. This isn't my area of expertise, but I'd guess it has to do with added distance of the T-adapter instead of merely looking through the eyepiece. Maybe this is similar to a Barlow lens effect. I'll be glad to be corrected.


DSLR + Telephoto Lens

300 mm @ f/9, 1/125 sec, ISO 100. 5194 x 3457 px. Shooting raw. Un-cropped, and tuned with RawTherape for exposure, contrast, and some sharpening filters.


Significant crop added (7% of the original image -- 922 x 1385 px). Hello to an osprey that I didn't notice until I started reviewing these images. Not bad despite being one of the cheapest kit telephoto option available with notoriously poor image quality.



Very very tight crop (0.2% of the original image -- 152 x 228 px) only to match the telescope size; which clearly crosses the line line of not enough pixels to be of any quality other than "bad."


Telescope photo again for comparison:

Analysis

Telescope Benefits

  • Enormous magnification potential compared to the telephoto lens that I'm getting very used to. This is nuts.
  • Potentialy better (but not stellar) image quality on highly highly magnified subjects
  • Despite the weight of the camera body and metal T-adapter, the focusing mechanism is quite solid and seems to be able to hold the mass without slipping. It's not necessarily a benefit so much as it is adequate.

Telescope Drawbacks

  • It's challenging to focus. It's a basic rig, and hand-operated focusing results in a lot of image shaking so it takes several seconds for the image to stabilize. I spent 5-10 minutes attempting to adjust and review focus and I'm not sure if I'm at the limit of optical performance, the plane of focus is just that thin, or if I was simply not accurate enough. It's probably a bit of all three.
  • Earth's rotation will be a big issue. At this level of magnification, the Earth's rotation will need a lot of assistance to mitigate; and without a motor to keep the equatorial mount running smoothly, it will be a hard fought balance to keep an image in place (i.e. image shake).
  • Quite dark objective. I had to drag the shutter out to 1/30th @ ISO 800.
  • The image is still soft no matter what the cause is

Telephoto Lens Benefits

  • Less time to set up
  • Less equipment to transport
  • Easier to find an object

Telephoto Lens Drawbacks

  • It's challenging to nail focus in Live View in bright sunlight
  • 300 mm is useful, but on this kit lens it takes significant experience to recover image quality in post production
  • 300 mm is just not 1000+ mm. Dang.

Conclusions

  • There's not much else I can do (even just for basic astro work) with a dark objective, but I'll try anyway because it's fun
  • Thankfully I have experience recovering drab raw images from the kit 300 mm lens so I'm used to the shortcomings of intro gear
  • There should be remarkable (okay, at least pretty good) improvement from an image that fills the sensor. Not relying on such a significant crop could be a huge benefit to capturing a transit pass; though the camera body itself has limits (3-5 fps max burst photo rate, etc.)
  • I'll try another ISS transit again with the telescope next time; but if I can't overcome the limitations of a 1/30th sec @ ISO 800 exposure chasing an object traveling at 4.76 miles per second, no amount of practice is going to compensate for the shot I'm looking for here via telescope
  • The DSLR may fit but it's very large on top of the scope. It's secure enough when pointing in more of an upward direction, but it's not ideal. I have a cell phone mounting bracket but that has it's own drawbacks too (clumsy, no remote trigger so more touching, etc.)

Wednesday, April 18, 2018

List of Helpful Photography Training Content on YouTube


Photography Channels

  • Tony & Chelsea Northrup
    Vast wealth of information on all aspects of photography from basic exposure tutorials, gear discussions, training, business, community interaction, photo critiques, etc.
  • Photoshop Training Channel
    Very clear and easy to follow tutorials on advanced photo editing techniques
  • Mango Street
    Tastefully trendy photography tutorials that cover everything from posing models and selecting locations to shooting and editing skills
  • Riley Brandt
    Tutorials on processing photos with free & open source software including darktable and Gimp
  • Sean Tucker
    Very high quality tutorials, examples, and discussion on shootoing, editing, creating in various genres
  • Taylor Jackson
    Great mixture of breaking down high end, pro-level shooting and editing; awesome quick tips; and other longer form vlog chats about photography
  • The Phlog Photography
  • Phlearn 
    Excellent Photoshop editing lessons that can be applied to most open source applications
  • PiXimperfect
    Very extensive and really easy to follow tutorials on advanced retouching and editing procedures
  • Lucy Martin
    Fun, quality, easy to follow editing tutorials
  • Peter Zelinka
    Incredibly clear astrophotography lessons, including gear selection, setup, and processing topics
  • Tarjeen&Co
    Indie- and trendy channel with short, direct lessons on shooting, editing, gear, analyzing others' photos, etc. Great content
  • The Phlog Photography
    Vast collection of landscape processing/editing sessions from raw image to finished photograph
  • Fstoppers
    A wide variety of interesting tutorials, discussions, tips, and behind the scenes breakdowns of pro style work
  • Matt Granger
  • Peter McKinnon - Good info. The channel is super popular and it's getting a little too Vloggy more but there's still good info on shooting, editing, etc.
  • The Slanted Lens
  • Run N Gun
    Very short and to the point lessons with tips, tricks, and info on photography
  • workphlo
    Commercial product photography methods that cover lighting, shooting, compositing, and editing. Although product photography isn't a particularly popular subject, these tutorials provide incredibly rapid and easy to follow illustrations of very advanced lighting, compositing, and editing techniques which are useful in all other forms of photography. It's really helpful even if you're not interested in product work, and the skills are delivered so clearly that it's easy to learn a lot that you can apply to your own skillset
  • Mads Peter Iversen - Fantastic landscape photography instruction.
  • Rich Baum
    Real estate photography essentials. Lots of really well explained examples of a technique called "flambiant" which is a composite of flash and ambient exposures.
  • We Eat Together - Food photography discussion and tips
  • TinHouse Studio - Food photography lighting, questions, etc.
  • Jimmy McIntyre
    Advanced editing tutorials
  • Shutterbug
  • Evan Ranft
  • Karl Taylor
  • KelbyOne - A larger channel with lots of interviews, tutorioals, reviews, etc.
  • Josh Katz
    More of a young, vlogger feel. Decent advice and info on gear and shooting

Videography and Film Making Channels

  • Beginning Photography Essentials by Tony & Chelsea Northrup
  • My own collection of the most helpful videos I've seen on photography to bring you from absolute beginner to advanced lighting/shooting/editing proficiency; or to shore up gaps in your skill set with excellent tutorials. This is a work in progress, but any of these current videos should give you ideas and recommendations on where to look next for various topics on photography
  • My collection of Astrophotography tutorials that range from polar-aligning a telescope to imaging and processing photographs