<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chapman Cycles</title>
	<atom:link href="https://www.chapmancycles.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.chapmancycles.com/</link>
	<description>Modern frames for vintage souls</description>
	<lastBuildDate>Thu, 05 Dec 2024 20:23:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
<site xmlns="com-wordpress:feed-additions:1">31811074</site>	<item>
		<title>Dan’s 650b all-road bike</title>
		<link>https://www.chapmancycles.com/2024/12/dans-650b-all-road-bike/</link>
					<comments>https://www.chapmancycles.com/2024/12/dans-650b-all-road-bike/#comments</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Thu, 05 Dec 2024 20:23:14 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3930</guid>

					<description><![CDATA[<p>In 1956, International Harvester had a two-tone pickup with this color, Cambrian Coral, as an option. Here it finds itself on a handmade bike 68 years later. I’ve shared a lot of posts of this bike coming together over the past few months on Instagram and Facebook (and even TikTok). For those of you who [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/12/dans-650b-all-road-bike/">Dan’s 650b all-road bike</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/10/53585745841_f3623011a7_k.jpg'></p><p>In 1956, International Harvester had a two-tone pickup with this color, Cambrian Coral, as an option. Here it finds itself on a handmade bike 68 years later. I’ve shared a lot of posts of this bike coming together over the past few months on <a href="https://www.instagram.com/chapmancycles">Instagram</a> and <a href="https://www.facebook.com/ChapmanCycles/">Facebook</a> (and even <a href="https://www.tiktok.com/@chapmancycles">TikTok</a>). For those of you who were able to attend the 2024 Philly Bike Expo, you had the pleasure of seeing the fruits of my labor in person. It was a great time! The contrast in colors continually brings me joy. It seems like one of those bikes that will be very hard to keep clean though! Excited for Dan to take it on many an adventure!<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3909 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3909').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720315431073'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3909">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3909" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3909",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/12/dans-650b-all-road-bike/">Dan’s 650b all-road bike</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/12/dans-650b-all-road-bike/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3930</post-id>	</item>
		<item>
		<title>Chip’s drop bar 29er</title>
		<link>https://www.chapmancycles.com/2024/12/chips-drop-bar-29er/</link>
					<comments>https://www.chapmancycles.com/2024/12/chips-drop-bar-29er/#respond</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Thu, 05 Dec 2024 20:00:38 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3928</guid>

					<description><![CDATA[<p>I’m approaching 20 years of bike building but I’m still finding new things I haven’t done (or rarely do) to keep it fun. Chip’s bike was a first for me on a few fronts and I’m psyched with the final result! Is it a mountain bike? Maybe? It depends who you ask. It can definitely [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/12/chips-drop-bar-29er/">Chip’s drop bar 29er</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/12/53518198719_4aa593186e_k.jpg'></p><p>I’m approaching 20 years of bike building but I’m still finding new things I haven’t done (or rarely do) to keep it fun. Chip’s bike was a first for me on a few fronts and I’m psyched with the final result! Is it a mountain bike? Maybe? It depends who you ask. It can definitely go a lot of places. Thru axles, discs, 29”x2.2”, electronic shifting, high BB, etc. The Anthracite Gray metallic paint makes the bike look pretty mean and I dig it! I don’t know how many of these 29ers I’ll be doing in the future but it’s nice to mix them in from time to time. I was pleased at how the clearances worked out on this one. I’ve learned to trust the Bikecad drawing and it always works out!<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3908 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3908').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720314662572'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3908">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3908" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3908",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/12/chips-drop-bar-29er/">Chip’s drop bar 29er</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/12/chips-drop-bar-29er/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3928</post-id>	</item>
		<item>
		<title>Rob’s fixed gear</title>
		<link>https://www.chapmancycles.com/2024/11/robs-fixed-gear/</link>
					<comments>https://www.chapmancycles.com/2024/11/robs-fixed-gear/#comments</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Mon, 18 Nov 2024 14:48:48 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3926</guid>

					<description><![CDATA[<p>I’ve known Rob at MER Bags in Brooklyn for 20 years. We discussed having me building him a bike a long time ago (I actually took his measurements in 2011!). This one is long overdue. About 10 years ago I built a fork for his Soma track bike and so I ended up building this [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/11/robs-fixed-gear/">Rob’s fixed gear</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/53444591717_6252ef00d8_4k.jpg'></p><p>I’ve known Rob at <a href="https://merbags.com/">MER Bags</a> in Brooklyn for 20 years. We discussed having me building him a bike a <em>long</em> time ago (I actually took his measurements in 2011!). This one is long overdue. About 10 years ago I built a fork for his Soma track bike and so I ended up building this frame around that fork. Everything came together nicely and the tight clearances aren’t <em>too</em> tight. They’re reasonable. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Special thanks to Andy at <a href="https://www.instagram.com/dashdelivery/">Dash Delivery</a> for letting me borrow his bike parts off his <a href="https://www.flickr.com/photos/chapmancycles/albums/72157693696131525/">personal track bike</a> so I could shoot some photos!</p>
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3873 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3873').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720313845756'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3873">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3873" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3873",
                });
            });
            </script>

            
<p>The post <a href="https://www.chapmancycles.com/2024/11/robs-fixed-gear/">Rob’s fixed gear</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/11/robs-fixed-gear/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3926</post-id>	</item>
		<item>
		<title>David’s 700c light touring bike</title>
		<link>https://www.chapmancycles.com/2024/11/davids-700c-light-touring-bike/</link>
					<comments>https://www.chapmancycles.com/2024/11/davids-700c-light-touring-bike/#respond</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Thu, 14 Nov 2024 01:10:20 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3924</guid>

					<description><![CDATA[<p>The main color of David&#8217;s frame is New Zealand Green with a very dark version of that green on the head tube and gold detailing all around. Custom from rack with detachable lowriders, a custom bilaminate quill stem, integrated lighting, connectorless generator hub, etc. Lots of details to zoom in on!</p>
<p>The post <a href="https://www.chapmancycles.com/2024/11/davids-700c-light-touring-bike/">David’s 700c light touring bike</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/53349607273_eaf2cf9e7e_k.jpg'></p><p>The main color of David&#8217;s frame is New Zealand Green with a very dark version of that green on the head tube and gold detailing all around. Custom from rack with detachable lowriders, a custom bilaminate quill stem, integrated lighting, connectorless generator hub, etc. Lots of details to zoom in on!<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3872 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3872').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720312860617'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3872">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3872" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3872",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/11/davids-700c-light-touring-bike/">David’s 700c light touring bike</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/11/davids-700c-light-touring-bike/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3924</post-id>	</item>
		<item>
		<title>Joe’s dynamo powered Di2 disc randonneur</title>
		<link>https://www.chapmancycles.com/2024/10/joes-dynamo-powered-di2-disc-randonneur/</link>
					<comments>https://www.chapmancycles.com/2024/10/joes-dynamo-powered-di2-disc-randonneur/#respond</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Tue, 29 Oct 2024 15:06:52 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3922</guid>

					<description><![CDATA[<p>Joe’s 700c dynamo powered Di2 disc randonneur is finally ready! I did away with the battery in this iteration (this is the 3rd dynamo powered Di2 bike I’ve built) but it still needed a capacitor in order to shift at slow speeds. So it goes. He’s been incredibly patient which I am greatly appreciative. But [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/joes-dynamo-powered-di2-disc-randonneur/">Joe’s dynamo powered Di2 disc randonneur</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/53187079921_8b451508d6_k.jpg'></p><p>Joe’s 700c dynamo powered Di2 disc randonneur is finally ready! I did away with the battery in this iteration (this is the 3rd dynamo powered Di2 bike I’ve built) but it still needed a capacitor in order to shift at slow speeds. So it goes. He’s been incredibly patient which I am greatly appreciative. But I’m definitely looking forward to hearing his initial ride reports. Because I love it! When I asked Joe to pick a color for his bike, he sent me a photo of a <a href="https://cdn.britannica.com/39/28439-050-581001D9/Penthesilea-Achilles-amphora-Amazons-Attic-Exekias-British-525-bce.jpg">Greek amphora</a> as inspiration. I think I got pretty close!<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3871 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3871').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720311184020'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3871">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3871" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3871",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/joes-dynamo-powered-di2-disc-randonneur/">Joe’s dynamo powered Di2 disc randonneur</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/10/joes-dynamo-powered-di2-disc-randonneur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3922</post-id>	</item>
		<item>
		<title>Chris C.’s 650b light touring bike</title>
		<link>https://www.chapmancycles.com/2024/10/chris-c-s-650b-light-touring-bike/</link>
					<comments>https://www.chapmancycles.com/2024/10/chris-c-s-650b-light-touring-bike/#respond</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Tue, 29 Oct 2024 15:02:24 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3920</guid>

					<description><![CDATA[<p>This VW Reef Blue bi-laminate 650b randonneur/light touring bike was a fun one to put together. Even more fun to test ride as it’s almost exactly my size! Lots of details include the custom bar ends, matching bi-lam quill stem, and the modified Miche needle bearing headset. The brand new Dura Ace 7700 (GS rear [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/chris-c-s-650b-light-touring-bike/">Chris C.’s 650b light touring bike</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/53003507304_2b163117f0_k.jpg'></p><p>This VW Reef Blue bi-laminate 650b randonneur/light touring bike was a fun one to put together. Even more fun to test ride as it’s almost exactly my size! Lots of details include the custom bar ends, matching bi-lam quill stem, and the modified Miche needle bearing headset. The brand new Dura Ace 7700 (GS rear derailleur!) components were definitely the icing on the cake.<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3870 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3870').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720309356668'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3870">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3870" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3870",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/chris-c-s-650b-light-touring-bike/">Chris C.’s 650b light touring bike</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/10/chris-c-s-650b-light-touring-bike/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3920</post-id>	</item>
		<item>
		<title>Pat and Cece’s tandem</title>
		<link>https://www.chapmancycles.com/2024/10/pat-and-ceces-tandem/</link>
					<comments>https://www.chapmancycles.com/2024/10/pat-and-ceces-tandem/#respond</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Tue, 29 Oct 2024 14:54:27 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3918</guid>

					<description><![CDATA[<p>This tandem has been an ongoing project here in the shop. I started it in January 2023, I think? Technically I started it last year by making the fillet brazed brakeset. I do very few tandems so I really never know how much time to dedicate to such a project. It was originally going to [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/pat-and-ceces-tandem/">Pat and Cece’s tandem</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/52917211214_31e342de41_k.jpg'></p><p>This tandem has been an ongoing project here in the shop. I started it in January 2023, I think? Technically I started it last year by making the fillet brazed brakeset. I do very few tandems so I really never know how much time to dedicate to such a project. It was originally going to be a collaboration of sorts but ended up in my hands which was totally fine. The good news is that it is done and in Simon’s hands at Transport Cycles. I don’t think there’s a better mechanic to be working on this thing! Thanks for finishing the assembly!</p>
<p>As for the details, there were a lot going on here but some of the smaller things that might go unnoticed are the cable stops which were originally double cable stops that were modified to act as a raised single stop. This was to clear the height of the coupler off of the tube so the brake cable doesn’t rub. Other details to point out are the custom adjustable stoker stem, custom seat clamps, handmade barrel adjusters on the brake rockers, custom quick release cable knarp, cable guides made from 11 speed chain rollers, spoke holder on the chain stay, rear fender reinforcement, pump detailing, modified Cinelli tandem twin plate fork crown, modified 1 1/8” threaded XT headset, and that mystery taillight. If anyone has any idea what it is, chime in! I thought it was a French make but did not know any more. This one now has an LED stand light bulb in it.<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3869 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3869').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720308482104'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3869">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3869" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3869",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/pat-and-ceces-tandem/">Pat and Cece’s tandem</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/10/pat-and-ceces-tandem/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3918</post-id>	</item>
		<item>
		<title>BQ issue 61 test bike redux</title>
		<link>https://www.chapmancycles.com/2024/10/bq-issue-61-test-bike-redux/</link>
					<comments>https://www.chapmancycles.com/2024/10/bq-issue-61-test-bike-redux/#respond</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Tue, 29 Oct 2024 14:49:33 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3916</guid>

					<description><![CDATA[<p>Back in 2016 I started building myself a new 650b light touring bike to replace the 700c bike I rode in the Oregon Manifest in 2011. What I built ended up getting sent to Bicycle Quarterly to be reviewed in issue 61. And then when I got it back, I continued to ride it as [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/bq-issue-61-test-bike-redux/">BQ issue 61 test bike redux</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/52866863407_f54a7c0bcd_k.jpg'></p><p>Back in 2016 I started building myself a new 650b light touring bike to replace the 700c bike I rode in the Oregon Manifest in 2011. What I built ended up getting sent to Bicycle Quarterly to be reviewed in issue 61. And then when I got it back, I continued to ride it as my main go-to/do-all bike…up until very recently. I built myself a bike last year (now 2022 as I type this!) and felt that this one could go to a new home. Well, it found a new home. And it is now a completely different looking bike! No more black components, no more lilac paint, and no more electronic shifting powered off the dynamo. I’m definitely going to have to save that group for my next build and keep the dream alive!<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3868 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3868').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720307998303'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3868">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3868" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3868",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/10/bq-issue-61-test-bike-redux/">BQ issue 61 test bike redux</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/10/bq-issue-61-test-bike-redux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3916</post-id>	</item>
		<item>
		<title>Daralyn’s 650b randonneur</title>
		<link>https://www.chapmancycles.com/2024/04/daralyns-650b-randonneur/</link>
					<comments>https://www.chapmancycles.com/2024/04/daralyns-650b-randonneur/#respond</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Tue, 02 Apr 2024 02:38:46 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3913</guid>

					<description><![CDATA[<p>I&#8217;m hoping that people choose a color scheme like this on future builds. The head tube is a shade of the VW River Blue that I cut with a white pearl and sprayed over a white base. The effect is very pleasing to my eyes. One of the (many) neat details on this bike included [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/04/daralyns-650b-randonneur/">Daralyn’s 650b randonneur</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/52692101025_a69813dc89_k.jpg'></p><p>I&#8217;m hoping that people choose a color scheme like this on future builds. The head tube is a shade of the VW River Blue that I cut with a white pearl and sprayed over a white base. The effect is very pleasing to my eyes. One of the (many) neat details on this bike included me making a tiny wire guide for the taillight (vintage French one but not sure of the make) which is mounted low near the non-drive side rear dropout. It’s just to keep the wire out of the way of the axle when installing the wheel. There&#8217;s a short video of me putting it together <a href="https://www.instagram.com/p/Cosim6QvTrl/">here</a>.</p>
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3867 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3867').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720306037961'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3867">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3867" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3867",
                });
            });
            </script>

            
<p>The post <a href="https://www.chapmancycles.com/2024/04/daralyns-650b-randonneur/">Daralyn’s 650b randonneur</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/04/daralyns-650b-randonneur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3913</post-id>	</item>
		<item>
		<title>James&#8217; singlespeed</title>
		<link>https://www.chapmancycles.com/2024/03/james-singlespeed/</link>
					<comments>https://www.chapmancycles.com/2024/03/james-singlespeed/#comments</comments>
		
		<dc:creator><![CDATA[Brian]]></dc:creator>
		<pubDate>Wed, 27 Mar 2024 12:29:55 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://www.chapmancycles.com/?p=3896</guid>

					<description><![CDATA[<p>It’s very rare that I get to build a single speed these days. When I worked at Circle A Cycles, it seemed like every other bike that went out the door was a fixed gear or single speed. The building of this one conveniently coincided with the fixed gear show in Brooklyn put on by [&#8230;]</p>
<p>The post <a href="https://www.chapmancycles.com/2024/03/james-singlespeed/">James&#8217; singlespeed</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img src='https://www.chapmancycles.com/wp-content/uploads/2024/02/52440997965_a33ad17cbd_k.jpg'></p><p>It’s very rare that I get to build a single speed these days. When I worked at Circle A Cycles, it seemed like every other bike that went out the door was a fixed gear or single speed. The building of this one conveniently coincided with the fixed gear show in Brooklyn put on by Neil at <a href="https://www.atwbuilds.com/">ATW Builds</a>. He let the fact that this is a single speed with brakes slide thankfully! I used a set of long out of production Nervex Professional lugs on the most recent build. Right out of the drawer they are pretty rough. Unlike most modern castings, they need every edge filed and shaped. It takes about an hour or two (more or less) to get a full set of lugs into a presentable form before starting the build. The final form is as clean as I could get them. Enjoy!<br />
                    <style>
                                            .flickr-img-responsive {
                            width:100% !important;
                            height:auto !important;
                            display:block !important;
                        }
                        .LoadingImg img {
                            max-width: 45px;
                            max-height: 45px;
                            box-shadow: none;
                        }
                        .wpfrank-flickr-div{
                            padding:15px;
                        }
                        @media (max-width: 786px){
                            .col-md-3 {
                                width:49.9%;
                                float:left;
                            }
                        }
                        .play-pause {
                            display: none !important;
                        }
                        .gallery3865 {
                            overflow:hidden;
                            clear: both;
                        }
                        .fnf{
                            background-color: #a92929;
                            border-radius: 5px;
                            color: #fff;
                            font-family: initial;
                            text-align: center;
                            padding:12px;
                        }
                    </style>
                    <script type="text/javascript">
                    jQuery(function() {
                        jQuery('.gallery-3865').flickr({
                            apiKey: '037c012784565c3b5691cc5a0aa912b7',
                            photosetId: '72177720303030749'
                        });
                    });

                    ;(function ($, window, document, undefined) {
                        'use strict';
                        var pluginName = "flickr",
                            defaults = {
                                apiKey: "",
                                photosetId: "",
                                errorText: "<div class='fnf'><i class='far fa-times-circle'></i> Error generating gallery.</div>",
                                loadingSpeed: 38,
                                photosLimit: 200
                            },
                            apiUrl = 'https://api.flickr.com/services/rest/',
                            photos = [];

                        function Plugin(element, options) {
                            this.element = $(element);
                            this.settings = $.extend({}, defaults, options);
                            this._defaults = defaults;
                            this._name = pluginName;

                            this._hideSpinner = function() {
                                this.element.find('.spinner-wrapper').hide().find('*').hide();
                            };

                            this._printError = function() {
                                this.element.find('.gallery-container').append($("<div></div>", { "class": "col-lg-12" })
                                    .append($("<div></div>", { "class": "error-wrapper" })
                                        .append($("<span></span>", { "class": "label label-danger error" })
                                            .html(this.settings.errorText))));
                            };

                            this._flickrAnimate = function() {
                                this.element.find('.gallery-container img').each($.proxy(function(index, el) {
                                    var image = el;
                                    setTimeout(function() {
                                        $(image).parent().fadeIn();
                                    }, this.settings.loadingSpeed * index);
                                }, this));
                            };

                            this._printGallery = function(photos) {
                                var element = this.element.find('.gallery-container');
                                if (!photos || photos.length === 0) {
                                    this._hideSpinner();
                                    this._printError();
                                    return;
                                }
                                $.each(photos, function(key, photo) {
                                    if (!photo || !photo.thumbnail) return; // Skip undefined or invalid photos
                                    var img = $('<img>', { 'class': 'thumb img-thumbnail flickr-img-responsive', src: photo.thumbnail, 'alt': photo.title });
                                    element.append($('<div></div>', { 'class': ' col-md-3 col-sm-4 col-center wpfrank-flickr-div' })
                                        .append($('<a></a>', { 'class': '', href: photo.href, 'data-gallery': '', 'title': photo.title }).hide()
                                            .append(img)));
                                });

                                element.imagesLoaded()
                                    .done($.proxy(this._flickrAnimate, this))
                                    .always($.proxy(this._hideSpinner, this));
                            };

                            this._flickrPhotoset = function(photoset) {
                                var _this = this;
                                photos[photoset.id] = [];
                                $.each(photoset.photo, function(key, photo) {
                                    if (photo.media !== "photo") {
                                        return true; // Skip videos
                                    }
                                    if (key >= _this.settings.photosLimit) {
                                        return false;
                                    }
                                    photos[photoset.id][key] = {
                                        thumbnail: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_q.jpg',
                                        href: 'https://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_b.jpg',
                                        title: photo.title
                                    };
                                });

                                console.log('Filtered photos:', photos[photoset.id]); // Debug log
                                if (photos[photoset.id].length > 0) {
                                    this._printGallery(photos[photoset.id]);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._onFlickrResponse = function(response) {
                                console.log('API Response:', response); // Debug log
                                if (response.stat === "ok") {
                                    this._flickrPhotoset(response.photoset);
                                } else {
                                    this._hideSpinner();
                                    this._printError();
                                }
                            };

                            this._flickrRequest = function(method, data) {
                                var url = apiUrl + "?format=json&jsoncallback=?&method=" + method + "&api_key=" + this.settings.apiKey;
                                $.each(data, function(key, value) {
                                    url += "&" + key + "=" + value;
                                });

                                $.ajax({
                                    dataType: "json",
                                    url: url,
                                    context: this,
                                    success: this._onFlickrResponse
                                });
                            };

                            this._flickrInit = function () {
                                this._flickrRequest('flickr.photosets.getPhotos', {
                                    photoset_id: this.settings.photosetId,
                                    extras: 'media'
                                });
                            };

                            this.init();
                        }

                        Plugin.prototype = {
                            init: function () {
                                this._flickrInit();
                            }
                        };

                        $.fn[pluginName] = function (options) {
                            this.each(function () {
                                if (!$.data(this, "plugin_" + pluginName)) {
                                    $.data(this, "plugin_" + pluginName, new Plugin(this, options));
                                }
                            });
                            return this;
                        };
                    })(jQuery, window, document);
                    </script>
                    <div class="gallery-3865">
                                                <div class="row">
                            <div class="col-xs-12 spinner-wrapper">
                                <div class="LoadingImg"><img decoding="async" src="https://www.chapmancycles.com/wp-content/plugins/flickr-album-gallery/img/loading.gif" /></div>
                            </div>
                            <div align="center" class="gallery-container"></div>
                        </div>
                    </div>
                    
            <!-- Blueimp gallery -->
            <div id="blueimp-gallery-3865" class="blueimp-gallery blueimp-gallery-controls">
                <div class="slides"></div>
                <h3 class="title"></h3>
                <a class="prev">‹</a>
                <a class="next">›</a>
                <a class="close">×</a>
                <a class="play-pause"></a>
                <ol class="indicator"></ol>
                <div class="modal fade">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" aria-hidden="true">×</button>
                                <h4 class="modal-title"></h4>
                            </div>
                            <div class="modal-body next"></div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default pull-left prev">
                                    <i class="glyphicon glyphicon-chevron-left"></i>
                                    Previous                                </button>
                                <button type="button" class="btn btn-primary next">
                                    Next                                    <i class="glyphicon glyphicon-chevron-right"></i>
                                </button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
            jQuery(function() {
                jQuery.extend(blueimp.Gallery.prototype.options, {
                    useBootstrapModal: false,
                    hidePageScrollbars: false,
                    container: "#blueimp-gallery-3865",
                });
            });
            </script>

            </p>
<p>The post <a href="https://www.chapmancycles.com/2024/03/james-singlespeed/">James&#8217; singlespeed</a> appeared first on <a href="https://www.chapmancycles.com">Chapman Cycles</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.chapmancycles.com/2024/03/james-singlespeed/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3896</post-id>	</item>
	</channel>
</rss>
