PageSourceSearch

https://www.frozentux.net/

html frozentux.net collected 2026-10-02 04:54:37 UTC 147,750 bytes, 1,349 lines download raw bytes

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head profile="http://gmpg.org/xfn/11">
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5<meta name="distribution" content="global" />
6<meta name="robots" content="follow, all" />
7<meta name="language" content="en" />
8
9<title> Frozentux</title>
10<meta name="generator" content="WordPress 7.0.6" />
11<!-- leave this for stats -->
12
13<link rel="Shortcut Icon" href="https://www.frozentux.net/wp-content/themes/code-blue_20/images/favicon.ico" type="image/x-icon" />
14<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="https://www.frozentux.net/feed/" />
15<link rel="alternate" type="text/xml" title="RSS .92" href="https://www.frozentux.net/feed/rss/" />
16<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="https://www.frozentux.net/feed/atom/" />
17<link rel="pingback" href="https://www.frozentux.net/xmlrpc.php" />
18	<link rel='archives' title='June 2025' href='https://www.frozentux.net/2025/06/' />
19	<link rel='archives' title='December 2024' href='https://www.frozentux.net/2024/12/' />
20	<link rel='archives' title='January 2020' href='https://www.frozentux.net/2020/01/' />
21	<link rel='archives' title='November 2018' href='https://www.frozentux.net/2018/11/' />
22	<link rel='archives' title='October 2018' href='https://www.frozentux.net/2018/10/' />
23	<link rel='archives' title='April 2018' href='https://www.frozentux.net/2018/04/' />
24	<link rel='archives' title='May 2016' href='https://www.frozentux.net/2016/05/' />
25	<link rel='archives' title='March 2016' href='https://www.frozentux.net/2016/03/' />
26	<link rel='archives' title='February 2016' href='https://www.frozentux.net/2016/02/' />
27	<link rel='archives' title='January 2016' href='https://www.frozentux.net/2016/01/' />
28	<link rel='archives' title='December 2015' href='https://www.frozentux.net/2015/12/' />
29	<link rel='archives' title='October 2015' href='https://www.frozentux.net/2015/10/' />
30	<link rel='archives' title='July 2015' href='https://www.frozentux.net/2015/07/' />
31	<link rel='archives' title='April 2015' href='https://www.frozentux.net/2015/04/' />
32	<link rel='archives' title='February 2015' href='https://www.frozentux.net/2015/02/' />
33	<link rel='archives' title='January 2015' href='https://www.frozentux.net/2015/01/' />
34	<link rel='archives' title='December 2014' href='https://www.frozentux.net/2014/12/' />
35	<link rel='archives' title='November 2014' href='https://www.frozentux.net/2014/11/' />
36	<link rel='archives' title='June 2014' href='https://www.frozentux.net/2014/06/' />
37	<link rel='archives' title='March 2014' href='https://www.frozentux.net/2014/03/' />
38	<link rel='archives' title='February 2014' href='https://www.frozentux.net/2014/02/' />
39	<link rel='archives' title='December 2013' href='https://www.frozentux.net/2013/12/' />
40	<link rel='archives' title='October 2013' href='https://www.frozentux.net/2013/10/' />
41	<link rel='archives' title='May 2013' href='https://www.frozentux.net/2013/05/' />
42	<link rel='archives' title='February 2013' href='https://www.frozentux.net/2013/02/' />
43	<link rel='archives' title='November 2012' href='https://www.frozentux.net/2012/11/' />
44	<link rel='archives' title='August 2012' href='https://www.frozentux.net/2012/08/' />
45	<link rel='archives' title='July 2012' href='https://www.frozentux.net/2012/07/' />
46	<link rel='archives' title='October 2011' href='https://www.frozentux.net/2011/10/' />
47	<link rel='archives' title='February 2011' href='https://www.frozentux.net/2011/02/' />
48	<link rel='archives' title='December 2010' href='https://www.frozentux.net/2010/12/' />
49	<link rel='archives' title='October 2010' href='https://www.frozentux.net/2010/10/' />
50	<link rel='archives' title='May 2010' href='https://www.frozentux.net/2010/05/' />
51	<link rel='archives' title='March 2010' href='https://www.frozentux.net/2010/03/' />
52	<link rel='archives' title='February 2010' href='https://www.frozentux.net/2010/02/' />
53	<link rel='archives' title='December 2009' href='https://www.frozentux.net/2009/12/' />
54	<link rel='archives' title='November 2009' href='https://www.frozentux.net/2009/11/' />
55	<link rel='archives' title='October 2009' href='https://www.frozentux.net/2009/10/' />
56	<link rel='archives' title='September 2009' href='https://www.frozentux.net/2009/09/' />
57	<link rel='archives' title='August 2009' href='https://www.frozentux.net/2009/08/' />
58	<link rel='archives' title='July 2009' href='https://www.frozentux.net/2009/07/' />
59	<link rel='archives' title='May 2009' href='https://www.frozentux.net/2009/05
59/' />
60	<link rel='archives' title='April 2009' href='https://www.frozentux.net/2009/04/' />
61	<link rel='archives' title='February 2009' href='https://www.frozentux.net/2009/02/' />
62	<link rel='archives' title='January 2009' href='https://www.frozentux.net/2009/01/' />
63	<link rel='archives' title='November 2008' href='https://www.frozentux.net/2008/11/' />
64	<link rel='archives' title='October 2008' href='https://www.frozentux.net/2008/10/' />
65	<link rel='archives' title='September 2008' href='https://www.frozentux.net/2008/09/' />
66	<link rel='archives' title='August 2008' href='https://www.frozentux.net/2008/08/' />
67	<link rel='archives' title='September 2006' href='https://www.frozentux.net/2006/09/' />
68	<link rel='archives' title='June 2005' href='https://www.frozentux.net/2005/06/' />
69	<link rel='archives' title='August 2003' href='https://www.frozentux.net/2003/08/' />
70	<link rel='archives' title='June 2003' href='https://www.frozentux.net/2003/06/' />
71	<link rel='archives' title='May 2003' href='https://www.frozentux.net/2003/05/' />
72	<link rel='archives' title='April 2003' href='https://www.frozentux.net/2003/04/' />
73	<link rel='archives' title='March 2003' href='https://www.frozentux.net/2003/03/' />
74	<link rel='archives' title='February 2003' href='https://www.frozentux.net/2003/02/' />
75	<link rel='archives' title='December 2002' href='https://www.frozentux.net/2002/12/' />
76	<link rel='archives' title='November 2002' href='https://www.frozentux.net/2002/11/' />
77	<link rel='archives' title='October 2002' href='https://www.frozentux.net/2002/10/' />
78<meta name='robots' content='max-image-preview:large' />
79<!-- Jetpack Site Verification Tags -->
80<meta name="google-site-verification" content="rulbLWudKX2-hScw6sajuHZE2aeizyTa5TG48k4fv6E">
81<link rel='dns-prefetch' href='//v0.wordpress.com' />
82<link rel='preconnect' href='//c0.wp.com' />
83<link rel='preconnect' href='//i0.wp.com' />
84<style id="wp-img-auto-sizes-contain-inline-css">
85img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
86/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
87</style>
88<link rel='stylesheet' id='twb-open-sans-css' href='https://fonts.googleapis.com/css?family=Open+Sans:300,400,500,600,700,800&#038;display=swap&#038;ver=7.0.6' media='all' />
89<link rel='stylesheet' id='twbbwg-global-css' href='https://www.frozentux.net/wp-content/plugins/photo-gallery/booster/assets/css/global.css?ver=1.0.0' media='all' />
90<style id="wp-emoji-styles-inline-css">
91
92	img.wp-smiley, img.emoji {
93		display: inline !important;
94		border: none !important;
95		box-shadow: none !important;
96		height: 1em !important;
97		width: 1em !important;
98		margin: 0 0.07em !important;
99		vertical-align: -0.1em !important;
100		background: none !important;
101		padding: 0 !important;
102	}
103/*# sourceURL=wp-emoji-styles-inline-css */
104</style>
105<style id="wp-block-library-inline-css">
106:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
106--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
107
108/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
109</style>
110<style id="wp-block-paragraph-inline-css">
111.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
112/*# sourceURL=https://c0.wp.com/c/7.0.6/wp-includes/blocks/paragraph/style.min.css */
113</style>
114<style id="wp-block-preformatted-inline-css">
115.wp-block-preformatted{box-sizing:border-box;white-space:pre-wrap}:where(.wp-block-preformatted.has-background){padding:1.25em 2.375em}
116/*# sourceURL=https://c0.wp.com/c/7.0.6/wp-includes/blocks/preformatted/style.min.css */
117</style>
118
119<style id="classic-theme-styles-inline-css">
120/*! This file is auto-generated */
121.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
122/*# sourceURL=/wp-includes/css/classic-themes.min.css */
123</style>
124
125<style id="global-styles-inline-css">
126:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
1260) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
126.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
127/*# sourceURL=global-styles-inline-css */
128</style>
129
130<link rel='stylesheet' id='bwg_fonts-css' href='https://www.frozentux.net/wp-content/plugins/photo-gallery/css/bwg-fonts/fonts.css?ver=0.0.1' media='all' />
131<link rel='stylesheet' id='sumoselect-css' href='https://www.frozentux.net/wp-content/plugins/photo-gallery/css/sumoselect.min.css?ver=3.4.6' media='all' />
132<link rel='stylesheet' id='mCustomScrollbar-css' href='https://www.frozentux.net/wp-content/plugins/photo-gallery/css/jquery.mCustomScrollbar.min.css?ver=3.1.5' media='all' />
133<link rel='stylesheet' id='bwg_frontend-css' href='https://www.frozentux.net/wp-content/plugins/photo-gallery/css/styles.min.css?ver=1.8.47' media='all' />
134<style id="jetpack-stats-inline-css">
135img#wpstats{display:none}
136/*# sourceURL=jetpack-stats-inline-css */
137</style>
138<link rel='stylesheet' id='sharedaddy-css' href='https://c0.wp.com/p/jetpack/16.2/modules/sharedaddy/sharing.css' media='all' />
139<link rel='stylesheet' id='social-logos-css' href='https://c0.wp.com/p/jetpack/16.2/_inc/build/social-logos/social-logos.css' media='all' />
140<script id="jquery-core-js" src="https://c0.wp.com/c/7.0.6/wp-includes/js/jquery/jquery.min.js"></script>
vendor: 1 bytes, line 140
140
141<script id="jquery-migrate-js" src="https://c0.wp.com/c/7.0.6/wp-includes/js/jquery/jquery-migrate.min.js"></script>
vendor: 1 bytes, line 141
141
142<script id="twbbwg-circle-js" src="https://www.frozentux.net/wp-content/plugins/photo-gallery/booster/assets/js/circle-progress.js?ver=1.2.2"></script>
vendor: 1 bytes, line 142
142
143<script id="twbbwg-global-js-extra">
144var twb = {"nonce":"69a58f313b","ajax_url":"https://www.frozentux.net/wp-admin/admin-ajax.php","plugin_url":"https://www.frozentux.net/wp-content/plugins/photo-gallery/booster","href":"https://www.frozentux.net/wp-admin/admin.php?page=twbbwg_photo-gallery"};
145var twb = {"nonce":"69a58f313b","ajax_url":"https://www.frozentux.net/wp-admin/admin-ajax.php","plugin_url":"https://www.frozentux.net/wp-content/plugins/photo-gallery/booster","href":"https://www.frozentux.net/wp-admin/admin.php?page=twbbwg_photo-gallery"};
146//# sourceURL=twbbwg-global-js-extra
147</script>
vendor: 1 bytes, line 147
147
148<script id="twbbwg-global-js" src="https://www.frozentux.net/wp-content/plugins/photo-gallery/booster/assets/js/global.js?ver=1.0.0"></script>
vendor: 1 bytes, line 148
148
149<script id="sumoselect-js" src="https://www.frozentux.net/wp-content/plugins/photo-gallery/js/jquery.sumoselect.min.js?ver=3.4.6"></script>
vendor: 1 bytes, line 149
149
150<script id="bwg_mobile-js" src="https://www.frozentux.net/wp-content/plugins/photo-gallery/js/tocca.min.js?ver=2.0.9"></script>
vendor: 1 bytes, line 150
150
151<script id="mCustomScrollbar-js" src="https://www.frozentux.net/wp-content/plugins/photo-gallery/js/jquery.mCustomScrollbar.concat.min.js?ver=3.1.5"></script>
vendor: 1 bytes, line 151
151
152<script id="jquery-fullscreen-js" src="https://www.frozentux.net/wp-content/plugins/photo-gallery/js/jquery.fullscreen.min.js?ver=0.6.0"></script>
vendor: 1 bytes, line 152
152
153<script id="bwg_frontend-js-extra">
154var bwg_objectsL10n = {"bwg_field_required":"field is required.","bwg_mail_validation":"This is not a valid email address.","bwg_search_result":"There are no images matching your search.","bwg_select_tag":"Select Tag","bwg_order_by":"Order By","bwg_search":"Search","bwg_show_ecommerce":"Show Ecommerce","bwg_hide_ecommerce":"Hide Ecommerce","bwg_show_comments":"Show Comments","bwg_hide_comments":"Hide Comments","bwg_restore":"Restore","bwg_maximize":"Maximize","bwg_fullscreen":"Fullscreen","bwg_exit_fullscreen":"Exit Fullscreen","bwg_search_tag":"SEARCH...","bwg_tag_no_match":"No tags found","bwg_all_tags_selected":"All tags selected","bwg_tags_selected":"tags selected","play":"Play","pause":"Pause","is_pro":"","bwg_play":"Play","bwg_pause":"Pause","bwg_hide_info":"Hide info","bwg_show_info":"Show info","bwg_hide_rating":"Hide rating","bwg_show_rating":"Show rating","ok":"Ok","cancel":"Cancel","select_all":"Select all","lazy_load":"0","lazy_loader":"https://www.frozentux.net/wp-content/plugins/photo-gallery/images/ajax_loader.png","front_ajax":"0","bwg_tag_see_all":"see all tags","bwg_tag_see_less":"see less tags"};
155//# sourceURL=bwg_frontend-js-extra
156</script>
vendor: 1 bytes, line 156
156
157<script id="bwg_frontend-js" src="https://www.frozentux.net/wp-content/plugins/photo-gallery/js/scripts.min.js?ver=1.8.47"></script>
157
158<link rel="https://api.w.org/" href="https://www.frozentux.net/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.frozentux.net/xmlrpc.php?rsd" />
159<meta name="generator" content="WordPress 7.0.6" />
160<link rel='shortlink' href='https://wp.me/FM93' />
161	<link href="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Styles/SyntaxHighlighter.css" type="text/css" rel="stylesheet" />
162	<style data-context="foundation-flickity-css">/*! Flickity v2.0.2
163http://flickity.metafizzy.co
164---------------------------------------------- */.flickity-enabled{position:relative}.flickity-enabled:focus{outline:0}.flickity-viewport{overflow:hidden;position:relative;height:100%}.flickity-slider{position:absolute;width:100%;height:100%}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:-webkit-grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:-webkit-grabbing;cursor:grabbing}.flickity-prev-next-button{position:absolute;top:50%;width:44px;height:44px;border:none;border-radius:50%;background:#fff;background:hsla(0,0%,100%,.75);cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.flickity-prev-next-button:hover{background:#fff}.flickity-prev-next-button:focus{outline:0;box-shadow:0 0 0 5px #09f}.flickity-prev-next-button:active{opacity:.6}.flickity-prev-next-button.previous{left:10px}.flickity-prev-next-button.next{right:10px}.flickity-rtl .flickity-prev-next-button.previous{left:auto;right:10px}.flickity-rtl .flickity-prev-next-button.next{right:auto;left:10px}.flickity-prev-next-button:disabled{opacity:.3;cursor:auto}.flickity-prev-next-button svg{position:absolute;left:20%;top:20%;width:60%;height:60%}.flickity-prev-next-button .arrow{fill:#333}.flickity-page-dots{position:absolute;width:100%;bottom:-25px;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{display:inline-block;width:10px;height:10px;margin:0 8px;background:#333;border-radius:50%;opacity:.25;cursor:pointer}.flickity-page-dots .dot.is-selected{opacity:1}</style><style data-context="foundation-slideout-css">.slideout-menu{position:fixed;left:0;top:0;bottom:0;right:auto;z-index:0;width:256px;overflow-y:auto;-webkit-overflow-scrolling:touch;display:none}.slideout-menu.pushit-right{left:auto;right:0}.slideout-panel{position:relative;z-index:1;will-change:transform}.slideout-open,.slideout-open .slideout-panel,.slideout-open body{overflow:hidden}.slideout-open .slideout-menu{display:block}.pushit{display:none}</style>
165<!-- Jetpack Open Graph Tags -->
166<meta property="og:type" content="website" />
167<meta property="og:title" content="Frozentux" />
168<meta property="og:description" content="Yet another site" />
169<meta property="og:url" content="https://www.frozentux.net/" />
170<meta property="og:site_name" content="Frozentux" />
171<meta property="og:image" content="https://s0.wp.com/i/blank.jpg" />
172<meta property="og:image:width" content="200" />
173<meta property="og:image:height" content="200" />
174<meta property="og:image:alt" content="" />
175<meta property="og:locale" content="en_US" />
176
177<!-- End Jetpack Open Graph Tags -->
178<style>.ios7.web-app-mode.has-fixed header{ background-color: rgba(45,53,63,.88);}</style>
179<link rel="stylesheet" href="https://www.frozentux.net/wp-content/themes/revolution-code-blue/style.css" type="text/css" media="screen" />
180
181
182<link rel="alternate" type="application/rss+xml" title="Frozentux RSS Feed" href="https://www.frozentux.net/feed/" />
183<link rel="pingback" href="https://www.frozentux.net/xmlrpc.php" />
184
185<meta name='robots' content='max-image-preview:large' />
186<!-- Jetpack Site Verification Tags -->
187<meta name="google-site-verification" content="rulbLWudKX2-hScw6sajuHZE2aeizyTa5TG48k4fv6E">
188<link rel='dns-prefetch' href='//c0.wp.com' />
189<link rel='dns-prefetch' href='//v0.wordpress.com' />
190<link rel='preconnect' href='//c0.wp.com' />
191<link rel='preconnect' href='//i0.wp.com' />
192<link rel="https://api.w.org/" href="https://www.frozentux.net/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.frozentux.net/xmlrpc.php?rsd" />
193<meta name="generator" content="WordPress 7.0.6" />
194<link rel='shortlink' href='https://wp.me/FM93' />
195	<link href="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Styles/SyntaxHighlighter.css" type="text/css" rel="stylesheet" />
196	<style data-context="foundation-flickity-css">/*! Flickity v2.0.2
197http://flickity.metafizzy.co
198---------------------------------------------- */.flickity-enabled{position:relative}.flickity-enabled:focus{outline:0}.flickity-viewport{overflow:hidden;position:relative;height:100%}.flickity-slider{position:absolute;width:100%;height:100%}.flickity-enabled.is-draggable{-webkit-tap-highlight-color:transparent;tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.flickity-enabled.is-draggable .flickity-viewport{cursor:move;cursor:-webkit-grab;cursor:grab}.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down{cursor:-webkit-grabbing;cursor:grabbing}.flickity-prev-next-button{position:absolute;top:50%;width:44px;height:44px;border:none;border-radius:50%;background:#fff;background:hsla(0,0%,100%,.75);cursor:pointer;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.flickity-prev-next-button:hover{background:#fff}.flickity-prev-next-button:focus{outline:0;box-shadow:0 0 0 5px #09f}.flickity-prev-next-button:active{opacity:.6}.flickity-prev-next-button.previous{left:10px}.flickity-prev-next-button.next{right:10px}.flickity-rtl .flickity-prev-next-button.previous{left:auto;right:10px}.flickity-rtl .flickity-prev-next-button.next{right:auto;left:10px}.flickity-prev-next-button:disabled{opacity:.3;cursor:auto}.flickity-prev-next-button svg{position:absolute;
198left:20%;top:20%;width:60%;height:60%}.flickity-prev-next-button .arrow{fill:#333}.flickity-page-dots{position:absolute;width:100%;bottom:-25px;padding:0;margin:0;list-style:none;text-align:center;line-height:1}.flickity-rtl .flickity-page-dots{direction:rtl}.flickity-page-dots .dot{display:inline-block;width:10px;height:10px;margin:0 8px;background:#333;border-radius:50%;opacity:.25;cursor:pointer}.flickity-page-dots .dot.is-selected{opacity:1}</style><style data-context="foundation-slideout-css">.slideout-menu{position:fixed;left:0;top:0;bottom:0;right:auto;z-index:0;width:256px;overflow-y:auto;-webkit-overflow-scrolling:touch;display:none}.slideout-menu.pushit-right{left:auto;right:0}.slideout-panel{position:relative;z-index:1;will-change:transform}.slideout-open,.slideout-open .slideout-panel,.slideout-open body{overflow:hidden}.slideout-open .slideout-menu{display:block}.pushit{display:none}</style>
199<!-- Jetpack Open Graph Tags -->
200<meta property="og:type" content="website" />
201<meta property="og:title" content="Frozentux" />
202<meta property="og:description" content="Yet another site" />
203<meta property="og:url" content="https://www.frozentux.net/" />
204<meta property="og:site_name" content="Frozentux" />
205<meta property="og:image" content="https://s0.wp.com/i/blank.jpg" />
206<meta property="og:image:width" content="200" />
207<meta property="og:image:height" content="200" />
208<meta property="og:image:alt" content="" />
209<meta property="og:locale" content="en_US" />
210
211<!-- End Jetpack Open Graph Tags -->
212<style>.ios7.web-app-mode.has-fixed header{ background-color: rgba(45,53,63,.88);}</style>
213<script type="text/javascript"><!--//--><![CDATA[//><!--
214sfHover = function() {
215	if (!document.getElementsByTagName) return false;
216	var sfEls = document.getElementById("nav").getElementsByTagName("li");
217
218	for (var i=0; i<sfEls.length; i++) {
219		sfEls[i].onmouseover=function() {
220			this.className+=" sfhover";
221		}
222		sfEls[i].onmouseout=function() {
223			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
224		}
225	}
226
227}
228if (window.attachEvent) window.attachEvent("onload", sfHover);
229//--><!]]></script>
229
230
231</head>
232
233<body>
234
235<div id="header">
236
237	<div class="headerleft">
238		<h1><a href="https://www.frozentux.net/">Frozentux</a></h1>
239		Yet another site	</div>
240	
241	<!--Replace the # below with the ad destination url.-->
242	
243	<div class="headerright">
244		<p><a href="https://www.frozentux.net/feed/rss/"><img style="vertical-align:middle" src="https://www.frozentux.net/wp-content/themes/revolution-code-blue/images/rss.gif" alt="Subscribe to Frozentux" /></a><a href="https://www.frozentux.net/feed/rss/">RSS Feed</a><a href="https://www.frozentux.net/comments/feed/"><img style="vertical-align:middle;margin-left:10px;" src="https://www.frozentux.net/wp-content/themes/revolution-code-blue/images/rss.gif" alt="Subscribe to Frozentux" /></a><a href="https://www.frozentux.net/comments/feed/">Comments</a></p>
245<!--		<a href="#"><img src="https://www.frozentux.net/wp-content/themes/revolution-code-blue/images/468x60.gif" alt="Featured Ad" /></a>-->
246	</div>
247
248</div>
249
250<div id="navbar">
251
252	<div id="navbarleft">
253		<ul id="nav">
254			<li><a href="https://www.frozentux.net">Home</a></li>
255			<li class="page_item page-item-3 page_item_has_children"><a href="https://www.frozentux.net/documents/">Documents</a>
256<ul class='children'>
257	<li class="page_item page-item-16 page_item_has_children"><a href="https://www.frozentux.net/documents/iptables-tutorial/">Iptables-tutorial</a></li>
258	<li class="page_item page-item-17"><a href="https://www.frozentux.net/documents/ipsysctl-tutorial/">Ipsysctl-tutorial</a></li>
259	<li class="page_item page-item-20"><a href="https://www.frozentux.net/documents/presentations/">Presentations</a></li>
260	<li class="page_item page-item-28 page_item_has_children"><a href="https://www.frozentux.net/documents/texts/">Texts</a></li>
261	<li class="page_item page-item-35"><a href="https://www.frozentux.net/documents/papers/">Papers</a></li>
262</ul>
263</li>
264<li class="page_item page-item-22 page_item_has_children"><a href="https://www.frozentux.net/projects/">Projects</a>
265<ul class='children'>
266	<li class="page_item page-item-44"><a href="https://www.frozentux.net/projects/cc/">C/C++</a></li>
267	<li class="page_item page-item-49"><a href="https://www.frozentux.net/projects/bash/">Bash</a></li>
268	<li class="page_item page-item-512 page_item_has_children"><a href="https://www.frozentux.net/projects/python/">Python</a></li>
269	<li class="page_item page-item-906 page_item_has_children"><a href="https://www.frozentux.net/projects/plastic-modelling/">Scale modelling</a></li>
270	<li class="page_item page-item-1288 page_item_has_children"><a href="https://www.frozentux.net/projects/3d-models/">3D Models</a></li>
271	<li class="page_item page-item-46"><a href="https://www.frozentux.net/projects/junkyard/">Junkyard</a></li>
272</ul>
273</li>
274<li class="page_item page-item-51 page_item_has_children"><a href="https://www.frozentux.net/personal/">Personal</a>
275<ul class='children'>
276	<li class="page_item page-item-2"><a href="https://www.frozentux.net/personal/about/">About</a></li>
277	<li class="page_item page-item-59"><a href="https://www.frozentux.net/personal/contact/">Contact</a></li>
278</ul>
279</li>
280		</ul>
281	</div>
282	
283	<div id="navbarright">
284		<form id="searchform" method="get" action="/index.php">
285		<input type="text" value="Search this website..." name="s" id="s" onfocus="if (this.value == 'Search this website...') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Search this website...';}" />
286		<input type="submit" id="sbutt" value="GO" /></form>
287	</div>
288
289</div>
290
291<div id="wrap">
292<div id="content">
293
294	<div id="contentleft">
295	
296				
297		<h1><a href="https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/" rel="bookmark">Playing with bcache: NVMe Write-Back Caching over HDD</a></h1>
298		
299		<div class="date">
300			June 20, 2025  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/linux/" rel="category tag">Linux</a>&nbsp; 
301		</div>
302		
303		<p>Over the weekend I decided to revisit bcache, Linux’s block-layer cache system, to try and squeeze more performance out of a large spinning disk by caching it with a small SSD. The concept is simple: attach a fast SSD (in this case, a 256?GB NVMe drive) in front of a slower HDD, and let bcache absorb and smooth out writes using the SSD as a write-back cache.</p>
304<p>Unfortunately, the results were not what I expected. Instead of a big performance bump, I discovered that my NVMe drive—despite being a Samsung MZVLQ256HBJD—is shockingly slow for sustained writes, barely better than the HDD I was trying to accelerate.</p>
305<h2>Setup Steps</h2>
306<p>Here’s the setup I used:</p>
307<ol>
308<li>Wipe the drives<br />
309Make sure there’s no lingering filesystem or bcache metadata:</p>
310<pre>sudo wipefs -a /dev/sda
311sudo wipefs -a /dev/nvme0n1p4</pre>
312</li>
313<li>Create backing device on the HDD
314<pre>sudo make-bcache --wipe-bcache --block /dev/sda</pre>
315</li>
316<li>Create cache device on the NVMe SSD
317<pre>sudo make-bcache --cache --wipe-bcache --block /dev/nvme0n1p4</pre>
318</li>
319<li>Attach the cache to the backing device<br />
320Get the cache set UUID and attach it to the backing device:</p>
321<pre># Find UUID
322bcache-super-show /dev/nvme0n1p4 | grep UUID
323
324# Attach (replace UUID)
325echo | sudo tee /sys/block/bcache0/bcache/attach
326</pre>
327</li>
328<li>Enable write-back mode
329<pre>echo writeback | sudo tee /sys/block/bcache0/bcache/cache_mode
330</pre>
331</li>
332<li>Format and mount
333<pre>sudo mkfs.ext4 /dev/bcache0
334sudo mount /dev/bcache0 /mnt
335</pre>
336</li>
337</ol>
338<h2>Benchmarking Reality</h2>
339<p>To get a baseline, I ran a basic fio test directly on a file on my root filesystem, which resides on the NVMe drive:</p>
340<pre>fio --name=test --filename=/home/osan/testfile --size=10G --bs=1M --rw=write \
341--ioengine=libaio --iodepth=32 --direct=0
342</pre>
343<p>The result: ~194?MiB/s write bandwidth. And that’s not a typo.</p>
344<p>With clat latencies in the hundreds of milliseconds and 99th percentile latencies &gt;2?seconds, the drive showed behavior much closer to a spinning disk than what you’d expect from an NVMe device. Even enabling write-back caching in bcache didn’t improve performance much—it simply matched the NVMe’s raw write speed, which isn&#8217;t saying much.</p>
345<p>The disk shows 8GT/s x4 on PCIe Gen3, so the bus isn’t the bottleneck. The drive is just bad at sustained writes—probably DRAM-less and overaggressively optimized for client workloads or bursty activity.</p>
346<p>&lt;H2Takeaways</p>
347<p>If you’re planning to use an NVMe SSD as a bcache write-back device, don’t assume all NVMe drives are fast. Many low-end OEM drives—especially DRAM-less models like the MZVLQ256HBJD—fall off a performance cliff under sustained write load.</p>
348<p>In my case, bcache didn&#8217;t offer a performance boost because the cache layer was just as slow as the backing device. In retrospect, I would’ve been better off checking the SSD’s sustained write behavior first using something like:</p>
349<pre>sudo nvme smart-log /dev/nvme0n1
350</pre>
351<p>Or running long-duration writes and monitoring latency and thermal throttling.</p>
352<p>There’s still value in bcache—especially if you have a real SSD or enterprise-grade NVMe to use as a cache. But with a sluggish consumer NVMe like mine, bcache turns into a no-op at best and a source of extra latency at worst.</p>
353<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
354				data-shared="sharing-email-1354"
355				class="share-email sd-button share-icon no-text"
356				href="mailto:?subject=%5BShared%20Post%5D%20Playing%20with%20bcache%3A%20NVMe%20Wr
356ite-Back%20Caching%20over%20HDD&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2025%2F06%2Fplaying-with-bcache-nvme-write-back-caching-over-hdd%2F&#038;share=email"
357				target="_blank"
358				aria-labelledby="sharing-email-1354"
359				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="d2a19568d2" data-email-share-track-url="https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/?share=email">
360				<span id="sharing-email-1354" hidden>Email a link to a friend (Opens in new window)</span>
361				<span>Email</span>
362			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
363				data-shared="sharing-facebook-1354"
364				class="share-facebook sd-button share-icon no-text"
365				href="https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/?share=facebook"
366				target="_blank"
367				aria-labelledby="sharing-facebook-1354"
368				>
369				<span id="sharing-facebook-1354" hidden>Share on Facebook (Opens in new window)</span>
370				<span>Facebook</span>
371			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
372				data-shared="sharing-linkedin-1354"
373				class="share-linkedin sd-button share-icon no-text"
374				href="https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/?share=linkedin"
375				target="_blank"
376				aria-labelledby="sharing-linkedin-1354"
377				>
378				<span id="sharing-linkedin-1354" hidden>Share on LinkedIn (Opens in new window)</span>
379				<span>LinkedIn</span>
380			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
381				data-shared="sharing-reddit-1354"
382				class="share-reddit sd-button share-icon no-text"
383				href="https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/?share=reddit"
384				target="_blank"
385				aria-labelledby="sharing-reddit-1354"
386				>
387				<span id="sharing-reddit-1354" hidden>Share on Reddit (Opens in new window)</span>
388				<span>Reddit</span>
389			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
390				data-shared="sharing-twitter-1354"
391				class="share-twitter sd-button share-icon no-text"
392				href="https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/?share=twitter"
393				target="_blank"
394				aria-labelledby="sharing-twitter-1354"
395				>
396				<span id="sharing-twitter-1354" hidden>Share on X (Opens in new window)</span>
397				<span>X</span>
398			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
399		
400		<div class="postmeta">
401			<p>Tags: <a href="https://www.frozentux.net/tag/bcache/" rel="tag">bcache</a>, <a href="https://www.frozentux.net/tag/filesystem/" rel="tag">filesystem</a>, <a href="https://www.frozentux.net/tag/linux/" rel="tag">Linux</a> </p>
402		</div>
403		
404				
405		<h1><a href="https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/" rel="bookmark">Iptables tutorial 1.2.3</a></h1>
406		
407		<div class="date">
408			December 23, 2024  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/linux/iptables/" rel="category tag">Iptables</a>, <a href="https://www.frozentux.net/category/linux/" rel="category tag">Linux</a>&nbsp; 
409		</div>
410		
411		
412<p class="wp-block-paragraph">It&#8217;s time for the&#8230; 4 year update?&#8230;</p>
413
414
415
416<p class="wp-block-paragraph">I recently got a lot of very good feedback on the iptables tutorial by Ed Drouillard. It&#8217;s been laying dormant for a long time, but the feedback kind of got me reminiscing about writing tech documentation etc, and I decided to get some work done on the old documentation.</p>
417
418
419
420<p class="wp-block-paragraph">My immediate concern is that the build systems etc are kind of not working, and we&#8217;ve identified some technical issues with the actual documentation and rectified it. </p>
421
422
423
424<p class="wp-block-paragraph">We&#8217;ve also had to more or less reproduce/fix the build procedures as it&#8217;s been ages since I even tried building the project. I&#8217;m surprised at how resilient it has been though, it mostly boiled down to installations of packages and changes in settings etc. </p>
425
426
427
428<p class="wp-block-paragraph">For now, you&#8217;ll find the updated version in <a href="https://www.frozentux.net/documents/iptables-tutorial/" data-type="page" data-id="16">
428Iptables-tutorial</a>.</p>
429<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
430				data-shared="sharing-email-1332"
431				class="share-email sd-button share-icon no-text"
432				href="mailto:?subject=%5BShared%20Post%5D%20Iptables%20tutorial%201.2.3&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2024%2F12%2Fiptables-tutorial-1-2-3%2F&#038;share=email"
433				target="_blank"
434				aria-labelledby="sharing-email-1332"
435				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="78771d531b" data-email-share-track-url="https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/?share=email">
436				<span id="sharing-email-1332" hidden>Email a link to a friend (Opens in new window)</span>
437				<span>Email</span>
438			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
439				data-shared="sharing-facebook-1332"
440				class="share-facebook sd-button share-icon no-text"
441				href="https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/?share=facebook"
442				target="_blank"
443				aria-labelledby="sharing-facebook-1332"
444				>
445				<span id="sharing-facebook-1332" hidden>Share on Facebook (Opens in new window)</span>
446				<span>Facebook</span>
447			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
448				data-shared="sharing-linkedin-1332"
449				class="share-linkedin sd-button share-icon no-text"
450				href="https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/?share=linkedin"
451				target="_blank"
452				aria-labelledby="sharing-linkedin-1332"
453				>
454				<span id="sharing-linkedin-1332" hidden>Share on LinkedIn (Opens in new window)</span>
455				<span>LinkedIn</span>
456			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
457				data-shared="sharing-reddit-1332"
458				class="share-reddit sd-button share-icon no-text"
459				href="https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/?share=reddit"
460				target="_blank"
461				aria-labelledby="sharing-reddit-1332"
462				>
463				<span id="sharing-reddit-1332" hidden>Share on Reddit (Opens in new window)</span>
464				<span>Reddit</span>
465			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
466				data-shared="sharing-twitter-1332"
467				class="share-twitter sd-button share-icon no-text"
468				href="https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/?share=twitter"
469				target="_blank"
470				aria-labelledby="sharing-twitter-1332"
471				>
472				<span id="sharing-twitter-1332" hidden>Share on X (Opens in new window)</span>
473				<span>X</span>
474			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
475		
476		<div class="postmeta">
477			<p>Tags: <a href="https://www.frozentux.net/tag/iptables/" rel="tag">iptables</a>, <a href="https://www.frozentux.net/tag/iptables-tutorial/" rel="tag">iptables tutorial</a>, <a href="https://www.frozentux.net/tag/linux/" rel="tag">Linux</a> </p>
478		</div>
479		
480				
481		<h1><a href="https://www.frozentux.net/2020/01/sparse-files/" rel="bookmark">Sparse files</a></h1>
482		
483		<div class="date">
484			January 21, 2020  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2020/01/sparse-files/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/linux/" rel="category tag">Linux</a>&nbsp; 
485		</div>
486		
487		
488<p class="wp-block-paragraph">A really long time ago I was writing up something about sparse files to show how they can be used for automatically growing file systems. Unfortunately I never got very far but figured it&#8217;s one of those things I&#8217;m still really happy to play around with, so I might as well try to finish this entry.</p>
489
490
491
492<p class="wp-block-paragraph">A sparse file is basically an empty file with a size, but you never assign the blocks for the file&#8230; so you can wind up with a huge file, but it only uses a small part of the harddrive space which in turn is only filled/take up real disk space as you use the space. The real disk space is not taken up until it&#8217;s actually used. This can be really useful for creating harddrive  loopback disks for example. Below is an example of how I create an empty image file which takes up 0 bytes of diskspace, but is 512 megabytes in size according to the filesystem.</p>
493
494
495
496<pre class="wp-block-preformatted">oan@work7:~$ dd if=/dev/zero of=file.img bs=1 count=0 seek=512M<br>0+0 records in<br>0+0 records out<br>0 bytes (0 B) copied, 9.0712e-05 s, 0.0 kB/s</pre>
497
498
499
500<p class="wp-block-paragraph">Here we actually create the file, notice the seek 512M. This makes dd jump 512 megabytes forward to write a single zero.</p>
501
502
503
504<pre class="wp-block-preformatted">oan@work7:~$ du -shx file.img<br>0 file.img</pre>
505
506
507
508<p class="wp-block-paragraph">And here you see the amount of disk space actually used by the file at this point. </p>
509
510
511
512<pre class="wp-block-preformatted">oan@work7:~$ mkfs.btrfs file.img<br>SMALL VOLUME: forcing mixed metadata/data groups<br>btrfs-progs v4.0<br>See http://btrfs.wiki.kernel.org for more information.<br>Turning ON incompat feature 'mixed-bg': mixed data and metadata block groups<br>Turning ON incompat feature 'extref': increased hardlink limit per file to 65536<br>Turning ON incompat feature 'skinny-metadata': reduced-size metadata extent refs<br>Created a data/metadata chunk of size 8388608<br>ERROR: device scan failed 'file.img' - Operation not permitted<br>fs created label (null) on file.img<br>nodesize 4096 leafsize 4096 sectorsize 4096 size 512.00MiB</pre>
513
514
515
516<p class="wp-block-paragraph">At this point we create a btrfs filesystem inside the sparse file we previously created. </p>
517
518
519
520<pre class="wp-block-preformatted">oan@work7:~$ du -shx file.img<br>4.1M file.img</pre>
521
522
523
524<p class="wp-block-paragraph">And now you can see that the filesystem metadata that we created uses 4.1 megabytes of actual diskspace. The actual filesystem available should be 512M &#8211; 4.1M in size approximately.</p>
525
526
527
528<pre class="wp-block-preformatted">oan@work7:~$ sudo mount -t btrfs -o loop file.img file<br>oan@work7:~$ sudo dd if=/dev/urandom of=./lalala.rand bs=1K count=4K<br>4096+0 records in<br>4096+0 records out<br>4194304 bytes (4.2 MB) copied, 0.344203 s, 12.2 MB/s</pre>
529
530
531
532<p class="wp-block-paragraph">We mount the file system using a loopback device and create a small file of 4M in size. </p>
533
534
535
536<pre class="wp-block-preformatted">oan@work7:~$ du -shx file.img<br>8.1M file.img</pre>
537
538
539
540<p class="wp-block-paragraph">And here you can see how the actual diskspace used has grown to 8.1M in size. </p>
541
542
543
544<p class="wp-block-paragraph">This is a really interesting way of utilizing your diskspace optimally while creating for example yocto builds run locally etc. I hope this can be useful for others as well. </p>
545<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
546				data-shared="sharing-email-967"
547				class="share-email sd-button share-icon no-text"
548				href="mailto:?subject=%5BShared%20Post%5D%20Sparse%20files&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2020%2F01%2Fsparse-files%2F&#038;share=email"
549				target="_blank"
550				aria-labelledby="sharing-email-967"
551				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="30cce5a199" data-email-share-track-url="https://www.frozentux.net/2020/01/sparse-files/?share=email">
552				<span id="sharing-email-967" hidden>Email a link to a friend (Opens in new window)</span>
553				<span>Email</span>
554			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
555				data-shared="sharing-facebook-967"
556				class="share-facebook sd-button share-icon no-text"
557				href="https://www.frozentux.net/2020/01/sparse-files/?share=facebook"
558				target="_blank"
559				aria-labelledby="sharing-facebook-967"
560				>
561				<span id="sharing-facebook-967" hidden>Share on Facebook (Opens in new window)</span>
562				<span>Facebook</span>
563			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
564				data-shared="sharing-linkedin-967"
565				class="share-linkedin sd-button share-icon no-text"
566				href="https://www.frozentux.net/2020/01/sparse-files/?share=linkedin"
567				target="_blank"
568				aria-labelledby="sharing-linkedin-967"
569				>
570				<span id="sharing-linkedin-967" hidden>Share on LinkedIn (Opens in new window)</span>
571				<span>LinkedIn</span>
572			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
573				data-shared="sharing-reddit-967"
574				class="share-reddit sd-button share-icon no-text"
575				href="https://www.frozentux.net/2020/01/sparse-files/?share=reddit"
576				target="_blank"
577				aria-labelledby="sharing-reddit-967"
578				>
579				<span id="sharing-reddit-967" hidden>Share on Reddit (Opens in new window)</span>
580				<span>Reddit</span>
581			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
582				data-shared="sharing-twitter-967"
583				class="share-twitter sd-button share-icon no-text"
584				href="https://www.frozentux.net/2020/01/sparse-files/?share=twitter"
585				target="_blank"
586				aria-labelledby="sharing-twitter-967"
587				>
588				<span id="sharing-twitter-967" hidden>Share on X (Opens in new window)</span>
589				<span>X</span>
590			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
591		
592		<div class="postmeta">
593			<p>Tags: <a href="https://www.frozentux.net/tag/btrfs/" rel="tag">btrfs</a>, <a href="https://www.frozentux.net/tag/dd-seek/" rel="tag">dd seek</a>, <a href="https://www.frozentux.net/tag/filesystem/" rel="tag">filesystem</a>, <a href="https://www.frozentux.net/tag/sparse/" rel="tag">sparse</a>, <a href="https://www.frozentux.net/tag/sparse-files/" rel="tag">sparse files</a> </p>
594		</div>
595		
596				
597		<h1><a href="https://www.frozentux.net/2018/11/gitea-and-drone-io/" rel="bookmark">Gitea and Drone.io</a></h1>
598		
599		<div class="date">
600			November 9, 2018  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2018/11/gitea-and-drone-io/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/management/configuration-management/" rel="category tag">Configuration Management</a>, <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/management/projects/" rel="category tag">Projects</a>&nbsp; 
601		</div>
602		
603		<p>Recently I&#8217;ve been frustrated at work while using Gitlab and Jenkins for various reasons, some of the integrations are really fragile due to some plugins we use, both Jenkins and Gitlab are incredibly bloated and use insane amounts of resources and they are simply not reasonable choices for a private setup. Also I recently replaced my server at home (basically a machine that does almost everything I want at home) from a 32 bit atom to an I5 intel machine with 16 gigs of RAM etc, which means I have totally different resources to work with. For example, 32 bit i386 cpu&#8217;s are not supported out of the box by docker, and the cpu was quite overloaded. With the new box I&#8217;
603ve been able to play around a little with my setup.</p>
604<p>I&#8217;ve previously used just a basic and manual git setup at home, with approximately 110&#8217;ish repositories in it. I&#8217;ve been playing around with gitea and drone.io at home with the new server and am very pleased with it, even though it took a bit of work to get used to it. In all honesty, I&#8217;ve only done fairly basic work with it so far. The only really complex stuff I&#8217;ve done was to move my existing git repositories into the gitea environment by scripting a bit and using the gitea web based API.</p>
605<p>Regarding gitea, so far I&#8217;ve noticed the following things:</p>
606<ul>
607<li>Very slim by comparison to other options, currently uses around 60 MB of RAM and not a lot of CPU from what I&#8217;ve seen. Especially considering what you get.</li>
608<li>UI is fairly similar to gitlab/github.</li>
609<li>Setup was very simple except for database connection (I winded up just using sqlite3 I believe, I was lazy and also don&#8217;t expect more than a very few users).</li>
610<li>Pull Request is really nice.</li>
611<li>Issue tracking seems to work fairly well.</li>
612<li>Docker setup with volumes is very easy.</li>
613<li>Seems to have the essentials in plugins etc that I need.</li>
614<li>API seems very nice, I&#8217;ve only used it for the migration so far though.</li>
615<li>The only bad part I&#8217;ve seen so far is that the administration panel might be a bit spartan at times, but I don&#8217;t really mind.</li>
616</ul>
617<p>Regarding drone.io, my first impressions are:</p>
618<ul>
619<li>I absolutely love the yaml file format so far.</li>
620<li>UI is incredibly clean, on the verge of too clean.</li>
621<li>Integration with gitea was super simple once I actually got it working (documentation was not 100% accurate I think).</li>
622<li>Simple to get started with if you have a sane build pattern.</li>
623<li>Nice integration to gitea and you get marks on build statuses etc. Interesting to find if you can block a build from being merged based on build results as well.</li>
624<li>I&#8217;ve managed to make a simple build of a playground project I have by adding a Dockerfile which is built into an image when the build is started, then a continuation of the build builds my project inside the docker image we just built.</li>
625<li>First time using docker-compose so it was a bit of a hassle understanding this, but it was fun ;). Not always obvious where some configuration should be placed etc.</li>
626<li>Yaml file format definitely not enough for the type of pipelines we do professionally though :(.</li>
627<li>Pleasantly surprised you can actually add and remove build slaves to the drone.io platform.</li>
628<li>Also pleasantly surprised by how to do parallel build steps. Syntax is super simple.</li>
629<li>I really lack some form of artifact storage, or at least a plugin for something that is not either cloud based or incredibly enterprisey (artifactory). Actually, I&#8217;ve had issues just finding a good light weight open source artifact storage so far&#8230;</li>
630<li>I also lack some form of nice presentation of various build artifacts, code coverage or unit test results etc.</li>
631</ul>
632<p>In all, pleasantly surprised by how simple this was to setup and configure. It was a fun trip and I&#8217;ll continue using it at home for now.</p>
633<p>As a sidenote, for the stuff I have on github, I do like to use travis, it also has a nice syntax and is a nice solution.</p>
634<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
635				data-shared="sharing-email-1072"
636				class="share-email sd-button share-icon no-text"
637				href="mailto:?subject=%5BShared%20Post%5D%20Gitea%20and%20Drone.io&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2018%2F11%2Fgitea-and-drone-io%2F&#038;share=email"
638				target="_blank"
639				aria-labelledby="sharing-email-1072"
640				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-sh
640are-nonce="21818f4e65" data-email-share-track-url="https://www.frozentux.net/2018/11/gitea-and-drone-io/?share=email">
641				<span id="sharing-email-1072" hidden>Email a link to a friend (Opens in new window)</span>
642				<span>Email</span>
643			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
644				data-shared="sharing-facebook-1072"
645				class="share-facebook sd-button share-icon no-text"
646				href="https://www.frozentux.net/2018/11/gitea-and-drone-io/?share=facebook"
647				target="_blank"
648				aria-labelledby="sharing-facebook-1072"
649				>
650				<span id="sharing-facebook-1072" hidden>Share on Facebook (Opens in new window)</span>
651				<span>Facebook</span>
652			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
653				data-shared="sharing-linkedin-1072"
654				class="share-linkedin sd-button share-icon no-text"
655				href="https://www.frozentux.net/2018/11/gitea-and-drone-io/?share=linkedin"
656				target="_blank"
657				aria-labelledby="sharing-linkedin-1072"
658				>
659				<span id="sharing-linkedin-1072" hidden>Share on LinkedIn (Opens in new window)</span>
660				<span>LinkedIn</span>
661			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
662				data-shared="sharing-reddit-1072"
663				class="share-reddit sd-button share-icon no-text"
664				href="https://www.frozentux.net/2018/11/gitea-and-drone-io/?share=reddit"
665				target="_blank"
666				aria-labelledby="sharing-reddit-1072"
667				>
668				<span id="sharing-reddit-1072" hidden>Share on Reddit (Opens in new window)</span>
669				<span>Reddit</span>
670			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
671				data-shared="sharing-twitter-1072"
672				class="share-twitter sd-button share-icon no-text"
673				href="https://www.frozentux.net/2018/11/gitea-and-drone-io/?share=twitter"
674				target="_blank"
675				aria-labelledby="sharing-twitter-1072"
676				>
677				<span id="sharing-twitter-1072" hidden>Share on X (Opens in new window)</span>
678				<span>X</span>
679			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
680		
681		<div class="postmeta">
682			<p>Tags: <a href="https://www.frozentux.net/tag/drone/" rel="tag">drone</a>, <a href="https://www.frozentux.net/tag/drone-io/" rel="tag">drone.io</a>, <a href="https://www.frozentux.net/tag/gitea/" rel="tag">gitea</a>, <a href="https://www.frozentux.net/tag/gitlab/" rel="tag">gitlab</a>, <a href="https://www.frozentux.net/tag/jenkins/" rel="tag">jenkins</a> </p>
683		</div>
684		
685				
686		<h1><a href="https://www.frozentux.net/2018/11/devops-world-nice-2018/" rel="bookmark">DevOps World Nice 2018</a></h1>
687		
688		<div class="date">
689			November 7, 2018  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2018/11/devops-world-nice-2018/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/management/configuration-management/" rel="category tag">Configuration Management</a>, <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/linux/" rel="category tag">Linux</a>&nbsp; 
690		</div>
691		
692		<p>Long time again, I seem to be bad at updating this site at times.</p>
693<p>I&#8217;ve recently moved into DevOps as a coincidence. I feel like this is what I&#8217;ve done for ages, but I just never set a name on it really. Also, this time it&#8217;s proper DevOps I&#8217;d say, a team of people maintaining build environments, CI/CD environments, gitlab, and so forth. It&#8217;s been a long time since I did proper server maintenance however, and it&#8217;s kind of interesting to see what happened. New tools, new possibilities, containerization, monitoring, virtualization, cloud, and so forth.</p>
694<p>Because of said circumstances, I went to the DevOps World conference (previously Jenkins World I guess) in Nice and was pleasantly surprised by some of the development done to Jenkins and what they are trying to do. I&#8217;m a bit cautious with some of the changes though and what I expect of the future. One of my main issues from work is that a lot of the clients we have are very sensitive about where data is stored, to the point where they set up private clouds to keep stuff in house and in many cases blocking internet access almost completely. A lot of the changes in Jenkins and from CloudBees is about mov
694ing stuff into the public clouds from private installations. IE, something that we will not be able to do, even though my company is all for working as open as possible and driving our clients to open up what they are doing as well. There is obviously stuff you don&#8217;t want to open as a corporation, but a lot of it is not really specific to you and the help you can receive from collaborating with your competition is actually quite tremendous, hence driving down part costs etc.</p>
695<p>So, all that said. I&#8217;m super happy to have been to the conference and have heard a lot new stuff. My main takeaways:</p>
696<p>Jenkins x seems really interesting, it&#8217;s basically a stripped down Jenkins master running in kubernetes/cloud swarm but you spin up a new master for every build so the single point of failure is removed in it, and the kubernetes ecosystem for most of the extraneous systems such as web-hooks, etc. The bad part of this is that you loose the Jenkins UI  and Jenkins x is completely Command Line Interface based. CloudBees has some proprietary UI&#8217;s for Jenkins X however&#8230;</p>
697<p>Configuration as Code Plugin seems really nice as I&#8217;d really like to easily take my Jenkins Master and create staging environments to test new changes easily. I will be experimenting with this most definitely.</p>
698<p>Speeches about breaking down and splitting down your Jenkins Master and basically divide and conquer. Try to do different things on different servers basically, and don&#8217;t create a Jenkinstein with almost all the plugins in a single instance to cater to all types of jobs, etc.</p>
699<p>Jenkins seems to be moving a lot into the public cloud, which unfortunately is bad for our industry as already mentioned. However, I&#8217;m really intrigued by the scaling possibilities that was shown using GCP and AWS for example.</p>
700<p>Also, a lot of other good talks.</p>
701<p>All this said, I&#8217;ve been experimenting with alternative CI and git hosting solutions, which I find rather interesting and I&#8217;ll write more about that in a close future&#8230;. 😉</p>
702<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
703				data-shared="sharing-email-1064"
704				class="share-email sd-button share-icon no-text"
705				href="mailto:?subject=%5BShared%20Post%5D%20DevOps%20World%20Nice%202018&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2018%2F11%2Fdevops-world-nice-2018%2F&#038;share=email"
706				target="_blank"
707				aria-labelledby="sharing-email-1064"
708				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="e82f57ecbb" data-email-share-track-url="https://www.frozentux.net/2018/11/devops-world-nice-2018/?share=email">
709				<span id="sharing-email-1064" hidden>Email a link to a friend (Opens in new window)</span>
710				<span>Email</span>
711			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
712				data-shared="sharing-facebook-1064"
713				class="share-facebook sd-button share-icon no-text"
714				href="https://www.frozentux.net/2018/11/devops-world-nice-2018/?share=facebook"
715				target="_blank"
716				aria-labelledby="sharing-facebook-1064"
717				>
718				<span id="sharing-facebook-1064" hidden>Share on Facebook (Opens in new window)</span>
719				<span>Facebook</span>
720			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
721				data-shared="sharing-linkedin-1064"
722				class="share-linkedin sd-button share-icon no-text"
723				href="https://www.frozentux.net/2018/11/devops-world-nice-2018/?share=linkedin"
724				target="_blank"
725				aria-labelledby="sharing-linkedin-1064"
726				>
727				<span id="sharing-linkedin-1064" hidden>Share on LinkedIn (Opens in new window)</span>
728				<span>LinkedIn</span>
729			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
730				data-shared="sharing-reddit-1064"
731				class="share-reddit sd-button share-icon no-text"
732				href="https://www.frozentux.net/2018/11/devops-world-nice-2018/?share=reddit"
733				target="_blank"
734				aria-labelledby="sharing-reddit-1064"
735				>
736				<span id="sharing-reddit-1064" hidden>Share on Reddit (Opens in new window)</span>
737				<span>Reddit</span>
738			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
739				data-shared="sharing-twitter-1064"
740				class="share-twitter sd-button share-icon no-text"
741				href="https://www.frozentux.net/2018/11/devops-world-nice-2018/?share=twitter"
742				target="_blank"
743				aria-labelledby="sharing-twitter-1064"
744				>
745				<span id="sharing-twitter-1064" hidden>Share on X (Opens in new window)</span>
746				<span>X</span>
747			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
748		
749		<div class="postmeta">
750			<p>Tags: <a href="https://www.frozentux.net/tag/aws/" rel="tag">AWS</a>, <a href="https://www.frozentux.net/tag/gcp/" rel="tag">GCP</a>, <a href="https://www.frozentux.net/tag/jenkins/" rel="tag">jenkins</a>, <a href="https://www.frozentux.net/tag/jenkins-x/" rel="tag">Jenkins X</a>, <a href="https://www.frozentux.net/tag/jenkinstein/" rel="tag">Jenkinstein</a>, <a href="https://www.frozentux.net/tag/kubernetes/" rel="tag">kubernetes</a> </p>
751		</div>
752		
753				
754		<h1><a href="https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/" rel="bookmark">SSL certificate updated slightly late</a></h1>
755		
756		<div class="date">
757			October 31, 2018  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/management/configuration-management/" rel="category tag">Configuration Management</a>, <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/frozentuxnet/" rel="category tag">Frozentux.net</a>&nbsp; 
758		</div>
759		
760		<p>Due to being away for the duration of last week, I missed the renewal of the SSL certificate. This should be fixed now as I&#8217;ve moved to letsencrypt using certbot for autorenewal. I hope this should solve the problem for the future.</p>
761<p>As a sidenote, I was attending the DevOps World in Nice last week. Very interesting week, I&#8217;
761ll try to write up on some of the topics I found interesting. Also, I&#8217;ve been experimenting with &#8220;other&#8221; solutions than jenkins + gitlab + atlassian tools as of late, I found some rather nice setups using gitea and drone.io that I&#8217;ll try to write about as well.</p>
762<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
763				data-shared="sharing-email-1059"
764				class="share-email sd-button share-icon no-text"
765				href="mailto:?subject=%5BShared%20Post%5D%20SSL%20certificate%20updated%20slightly%20late&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2018%2F10%2Fssl-certificate-updated-slightly-late%2F&#038;share=email"
766				target="_blank"
767				aria-labelledby="sharing-email-1059"
768				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="53f9d36a3c" data-email-share-track-url="https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/?share=email">
769				<span id="sharing-email-1059" hidden>Email a link to a friend (Opens in new window)</span>
770				<span>Email</span>
771			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
772				data-shared="sharing-facebook-1059"
773				class="share-facebook sd-button share-icon no-text"
774				href="https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/?share=facebook"
775				target="_blank"
776				aria-labelledby="sharing-facebook-1059"
777				>
778				<span id="sharing-facebook-1059" hidden>Share on Facebook (Opens in new window)</span>
779				<span>Facebook</span>
780			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
781				data-shared="sharing-linkedin-1059"
782				class="share-linkedin sd-button share-icon no-text"
783				href="https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/?share=linkedin"
784				target="_blank"
785				aria-labelledby="sharing-linkedin-1059"
786				>
787				<span id="sharing-linkedin-1059" hidden>Share on LinkedIn (Opens in new window)</span>
788				<span>LinkedIn</span>
789			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
790				data-shared="sharing-reddit-1059"
791				class="share-reddit sd-button share-icon no-text"
792				href="https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/?share=reddit"
793				target="_blank"
794				aria-labelledby="sharing-reddit-1059"
795				>
796				<span id="sharing-reddit-1059" hidden>Share on Reddit (Opens in new window)</span>
797				<span>Reddit</span>
798			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
799				data-shared="sharing-twitter-1059"
800				class="share-twitter sd-button share-icon no-text"
801				href="https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/?share=twitter"
802				target="_blank"
803				aria-labelledby="sharing-twitter-1059"
804				>
805				<span id="sharing-twitter-1059" hidden>Share on X (Opens in new window)</span>
806				<span>X</span>
807			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
808		
809		<div class="postmeta">
810			<p>Tags:  </p>
811		</div>
812		
813				
814		<h1><a href="https://www.frozentux.net/2018/04/iptables-tutorial-work/" rel="bookmark">Iptables-tutorial work</a></h1>
815		
816		<div class="date">
817			April 26, 2018  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2018/04/iptables-tutorial-work/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/frozentuxnet/" rel="category tag">Frozentux.net</a>, <a href="https://www.frozentux.net/category/linux/iptables/" rel="category tag">Iptables</a>, <a href="https://www.frozentux.net/category/linux/" rel="category tag">Linux</a>, <a href="https://www.frozentux.net/category/linux/netfilter/" rel="category tag">Netfilter</a>&nbsp; 
818		</div>
819		
820		<p>It&#8217;s been a while since I looked at the iptables-tutorial to say the least. The last real commits where 9 years ago and the last proper release is closer to 13 years ago&#8230;.</p>
821<p>The last two three days I kind of picked it up again, for fun mostly. In the end of my maintenance of the project I kind of burnt myself out on the whole topic, I just did not want to do the whole thing anymore. I&#8217;ve grown and changed as a person since then. I don&#8217;t have the same spare time for one.</p>
822<p>My first order of business, The build system was always a mess and I started cleaning out stuff that shouldn&#8217;t be there. A bunch of old scripts have been removed, I managed to remove the dependency on the fabpdf backend for jade and also the eps_to_png script with that, and almost all of the changes.sh scripts where removed. The Spanish and Portuguese builds where similarly cleaned up. Finally a Travis file was added to get automated builds running on Travis, and this actually works now!</p>
823<p>I&#8217;m getting close to making a 1.2.3 release imho to get something new out there. The actual content has barely changed to be honest, maybe a few words at the most, but it feels like something that would be nice to get out there.</p>
824<p>The task of getting this documentation up to par is a tremendous effort to be honest, and I&#8217;d be really interested in getting help from anyone who reads this. If you feel like contributing, contact me, check the code out on <a href="https://github.com/frznlogic/iptables-tutorial">github</a>, add bugs/tasks on stuff you find that is wrong, or provide pull requests. I would be thrilled to have other people working on this as well so it becomes more vibrant again and don&#8217;t stagnate as it has done over time.</p>
825<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
826				data-shared="sharing-email-1016"
827				class="share-email sd-button share-icon no-text"
828				href="mailto:?subject=%5BShared%20Post%5D%20Iptables-tutorial%20work&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2018%2F04%2Fiptables-tutorial-work%2F&#038;share=email"
829				target="_blank"
830				aria-labelledby="sharing-email-1016"
831				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="56a0d1fdfe" data-email-share-track-url="https://www.frozentux.net/2018/04/iptables-tutorial-work/?share=email">
832				<span id="sharing-email-1016" hidden>Email a link to a friend (Opens in new window)</span>
833				<span>Email</span>
834			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
835				data-shared="sharing-facebook-1016"
836				class="share-facebook sd-button share-icon no-text"
837				href="https://www.frozentux.net/2018/04/iptables-tutorial-work/?share=facebook"
838				target="_blank"
839				aria-labelledby="sharing-facebook-1016"
840				>
841				<span id="sharing-facebook-1016" hidden>Share on Facebook (Opens in new window)</span>
842				<span>Facebook</span>
843			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
844				data-shared="sharing-linkedin-1016"
845				class="share-linkedin sd-button share-icon no-text"
846				href="https://www.frozentux.net/2018/04/iptables-tutorial-work/?share=linkedin"
847				target="_blank"
848				aria-labelledby="sharing-linkedin-1016"
849				>
850				<span id="sharing-linkedin-1016" hidden>Share on LinkedIn (Opens in new window)</span>
851				<span>LinkedIn</span>
852			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
853				data-shared="sharing-reddit-1016"
854				class="share-reddit sd-button share-icon no-text"
855				href="https://www.frozentux.net/2018/04/iptables-tutorial-work/?share=reddit"
856				target="_blank"
857				aria-labelledby="sharing-reddit-1016"
858				>
859				<span id="sharing-reddit-1016" hidden>Share on Reddit (Opens in new window)</span>
860				<span>Reddit</span>
861			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
862				data-shared="sharing-twitter-1016"
863				class="share-twitter sd-button share-icon no-text"
864				href="https://www.frozentux.net/2018/04/iptables-tutorial-work/?share=twitter"
865				target="_blank"
866				aria-labelledby="sharing-twitter-1016"
867				>
868				<span id="sharing-twitter-1016" hidden>Share on X (Opens in new window)</span>
869				<span>X</span>
870			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
871		
872		<div class="postmeta">
873			<p>Tags: <a href="https://www.frozentux.net/tag/github/" rel="tag">github</a>, <a href="https://www.frozentux.net/tag/iptables/" rel="tag">iptables</a>, <a href="https://www.frozentux.net/tag/iptables-tutorial/" rel="tag">iptables tutorial</a>, <a href="https://www.frozentux.net/tag/linux/" rel="tag">Linux</a>, <a href="https://www.frozentux.net/tag/netfilter/" rel="tag">netfilter</a> </p>
874		</div>
875		
876				
877		<h1><a href="https://www.frozentux.net/2016/05/retropie-table-writeup/" rel="bookmark">Retropie table writeup</a></h1>
878		
879		<div class="date">
880			May 27, 2016  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2016/05/retropie-table-writeup/#comments">2 Comments</a><br />Filed under: <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/hardware/" rel="category tag">Hardware</a>, <a href="https://www.frozentux.net/category/linux/" rel="category tag">Linux</a>, <a href="https://www.frozentux.net/category/personal/" rel="category tag">Personal</a>&nbsp; 
881		</div>
882		
883		<p>A co-worker of mine asked me to do a writeup of my retropie table build and yes, I guess I should. I rarely write anything about what I do anymore 🙂 .</p>
884<p>So, I got kids, and I thought it would be fun for them to play some of the old stuff I used to play and found the https://www.raspberrypi.org/blog/raspberry-pi-ikea-arcade-table-make-yourself/ quite interesting and so set out to do something similar. I winded up going to Ikea with the kids and told them to choose colors, we winded up with a pink IKEA Lack table &#8230; ;).</p>
885<p>I also got a bunch of old screens at home, I picked a very heavy 17&#8243; monitor and removed all the casings etc greatly reducing the weight. My choice was slightly bad though for two reasons, the connectors are standing at a 90 degree angle to the screen so it winded up not fitting inside the table and it&#8217;s pointing out on the underside as it is now&#8230; secondly, the viewing angles are so so, I winded up rotating the screen 180 degrees as the viewing angles where much better from that direction and the /boot/config.txt in raspbian systems have options to hardware rotate the output. I also bought a set of 2 joysticks + 20 buttons with built in backlight and a xin mo based usb controller from ebay, a small speaker from a local shop and the power adapters I had at home, and a connector to fit for power input to the table. I decided to pick up a powered USB hub as well to fit so it was reachable from the outside. I also had a sheet of plexiglass lying around for many years which winded up useful. I also had a USB wifi dongle lying around so I reused that for connectivity.</p>
886<p>We started out with measuring out and sawing up the holes needed and then removing the innards that are in the way. I used some paint masking tape to protect the table, more on this later. This work was very easy to do with a dremel with a circular saw addon. The underside wasn&#8217;t so important how it looked but I tried to make the cuts decent looking at least.</p>
887<p>Once this was done, I test fitted and probed a bit on how to get the ras
887pberry pi, monitor and power system fitted inside the the table before moving on to sawing the plexiglass sheet into the same size as the table, and then drilling and countersinking the screw holes, temporarily fit the plexiglass while drilling the holes for the joystick + buttons. Some sanding and fixing of edges followed. I removed the plexiglass sheet and drilled and countersunk holes for screwing the joysticks to  the topside of the table underneath the plexiglass.</p>
888<p>Moving on, I screwed in the joysticks and fitted the power adapters for the monitor, USB hub and raspberry pi in the screen. I made 6 foam inserts to rest the monitor on and glued in place inside the table, wired up the monitor and put the monitor in. Removing the paint masking tape I realized that I used some shitty tape with much too hard tacking adhesive, meaning that I managed to pull away a bunch of the foil/tape (the &#8220;paint&#8221; on the table, it&#8217;s not painted, but rather foiled with a layer of colored plastic). When I realized this I started rethinking a paint scheme I had already planned and decided to do some modifications to hide the errors and to possibly heighten the feeling of the table.</p>
889<p>I did the paintjob, made some simple paint masks etc and airbrushed the table with black borders, softish blue and red and green colors further softened with a few drops of white.</p>
890<p>After this had dried for a few days I put the plexiglass on, screwed in all the buttons, joystick heads etc and installed the raspberry pi + other final electronics and tested the system. This is when I realized the problems with the screen viewing angle so I had to back everything up, remove the buttons, joysticks, plexiglass screen, and monitor. I winded up lifting some of the paint I had used to paint the table (the paint was really sticking badly to the surface). This lead me to question the surface of the plexiglass and figured I&#8217;d polish the plexiglass. I originally made the bad choice of trying to apply an old plastic modelling technique on the plexiglass, washing it with a layer of future floor polish. This looked absolutely horrible on this big surface so I winded up spending 1,5-2 hours removing the stuff again and then using some proper polishing compounds on both sides of the table making the plexiglass sheet incredibly nice looking (in my humble opinion). I Repainted the parts where the paint was removed, took out the screen, rotated it 180 degrees, re-fitted all the power adapters etc so it wouldn&#8217;t be in the way of the monitor and had to saw up a second hole for the DVI connector&#8230; I then reinstalled plexiglass, buttons, joysticks, etc&#8230; and now, a much nicer viewing angle of the monitor and a nicer looking plexiglass sheet, but paint job not as nice anymore. Shit happens. Oh, I also pulled a cable through from the screen to the front panel button so I can turn on/off the monitor from one of the buttons. The USB hub was glued into a hole made in the skirting so it sticks out underneath the table with two accessible USB ports.</p>
891<p>After everything was fitted and tested to work I started to look at the backside what could be done about it&#8230; I had to make a raised area to increase the depth of the table as the buttons I got wont fit properly otherwise. I used a 1 cm floor skirting around the hole and then took the sheet from the monitor hole and sawed into two pieces which fits over the hole, drilled a lot of holes in it to at least create some air ventilation into the table.</p>
892<p>At this point I&#8217;ve installed some games, used it for a bit, let the kids play around and I&#8217;
892m absolutely happy with it. The software side I didn&#8217;t need to do anything about, it worked more or less out of the box. I had to make a usb quirks hack to split the controller into two halves, I had to rotate the screen in the config.txt and that&#8217;s it, then just follow the installation howtos. Retropie was a really happy surprise, I wasn&#8217;t expecting things to be that smooth to install. I do wish the Amiga emulator was better integrate, it would be nice to be able to do the same thing as with the NES images, just drop them in and they work&#8230; but I understand that each game needs its own &#8220;fixes&#8221; to get up and running&#8230; I will have a look and see if it&#8217;s possible to improve the situation somehow, at least so I can start games with just the joysticks and buttons.</p>
893<p><style id="bwg-style-0">    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails {      width: 1004px;              justify-content: center;        margin:0 auto !important;              background-color: rgba(255, 255, 255, 0.00);            padding-left: 4px;      padding-top: 4px;      max-width: 100%;            }        #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-item {    justify-content: flex-start;      max-width: 200px;            width: 200px !important;          }    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-item a {       margin-right: 4px;       margin-bottom: 4px;    }    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-item0 {      padding: 0px;            background-color:rgba(255,255,255, 0.30);      border: 0px none #CCCCCC;      opacity: 1.00;      border-radius: 0;      box-shadow: 0px 0px 0px #888888;    }    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-item1 img {      max-height: none;      max-width: none;      padding: 0 !important;    }        @media only screen and (min-width: 480px) {      #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-item0 {        transition: all 0.3s ease 0s;-webkit-transition: all 0.3s ease 0s;      }      #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-item0:hover {        -ms-transform: scale(1.1);        -webkit-transform: scale(1.1);        transform: scale(1.1);      }    }          #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-item1 {      padding-top: 50%;    }        #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-title2,    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-ecommerce2 {      color: #CCCCCC;      font-family: segoe ui;      font-size: 16px;      font-weight: bold;      padding: 2px;      text-shadow: 0px 0px 0px #888888;      max-height: 100%;    }    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-thumb-description span {    color: #323A45;    font-family: Ubuntu;    font-size: 12px;    max-height: 100%;    word-wrap: break-word;    }    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-play-icon2 {      font-size: 32px;    }    #bwg_container1_0 #bwg_container2_0 .bwg-container-0.bwg-standard-thumbnails .bwg-ecommerce2 {      font-size: 19.2px;      color: #CCCCCC;    }    </style>    <div id="bwg_container1_0"         class="bwg_container bwg_thumbnail bwg_thumbnails "         data-right-click-protection="0"         data-bwg="0"         data-scroll="0"         data-gallery-type="thumbnails"         data-gallery-view-type="thumbnails"         data-current-url="/"         data-lightbox-url="https://www.frozentux.net/wp-admin/admin-ajax.php?action=GalleryBox&#038;current_view=0&#038;gallery_id=2&#038;tag=0&#038;theme_id=1&#038;shortcode_id=2&#038;sort_by=order&#038;order_by=desc&#038;current_url=%2F"         data-gallery-id="2"         data-popup-width="800"         data-popup-height="500"         data-is-album="gallery"         data-buttons-position="bottom">      <div id="bwg_container2_0">             <div id="ajax_loading_0" class="bwg_loading_div_1">      <div class="bwg_loading_div_2">        <div class="bwg_loading_div_3">          <div id="loading_div_0" class="bwg_spider_ajax_loading">          </div>        </div>      </div>    </div>            <form id="gal_front_form_0"              class="bwg-hidden"              method="post"              action="#"              data-current="0"              data-shortcode-id="2"              data-gallery-type="thumbnails"              data-gallery-id="2"              data-tag="
8930"              data-album-id="0"              data-theme-id="1"              data-ajax-url="https://www.frozentux.net/wp-admin/admin-ajax.php?action=bwg_frontend_data">          <div id="bwg_container3_0" class="bwg-background bwg-background-0">                <div data-max-count="5"         data-thumbnail-width="200"         data-bwg="0"         data-gallery-id="2"         data-lightbox-url="https://www.frozentux.net/wp-admin/admin-ajax.php?action=GalleryBox&amp;current_view=0&amp;gallery_id=2&amp;tag=0&amp;theme_id=1&amp;shortcode_id=2&amp;sort_by=order&amp;order_by=desc&amp;current_url=%2F"         id="bwg_thumbnails_0"         class="bwg-container-0 bwg-thumbnails bwg-standard-thumbnails bwg-container bwg-border-box">            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="20" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-03-10_13.29.10.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="20"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-10_13.29.10.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-10_13.29.10.jpg"                   alt="2016-03-10 13.29.10  "                   title="2016-03-10 13.29.10  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="21" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-03-10_13.32.42.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="21"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-10_13.32.42.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-10_13.32.42.jpg"                   alt="2016-03-10 13.32.42  "                   title="2016-03-10 13.32.42  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="22" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-03-10_13.32.47.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="22"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-10_13.32.47.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-10_13.32.47.jpg"                   alt="2016-03-10 13.32.47  "                   title="2016-03-10 13.32.47  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="23" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-03-24_23.15.58.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="23"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-24_23.15.58.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-03-24_23.15.58.jpg"                   alt="2016-03-24 23.15.58  "                   title="2016-03-24 23.15.58  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="24" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-04-08_15.51.01.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="24"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-04-08_15.51.01.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-04-08_15.51.01.jpg"                   alt="2016-04-08 15.51.01  "                   title="2016-04-08 15.51.01  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="25" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-04-08_23.37.20.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="25"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-04-08_23.37.20.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-04-08_23.37.20.jpg"                   alt="2016-04-08 23.37.20  "                   title="2016-04-08 23.37.20  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="26" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-05_20.53.44.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="26"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_20.53.44.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_20.53.44.jpg"                   alt="2016-05-05 20.53.44  "                   title="2016-05-05 20.53.44  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="27" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-05_20.54.01.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="27"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_20.54.01.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_20.54.01.jpg"                   alt="2016-05-05 20.54.01  "                   title="2016-05-05 20.54.01  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="28" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-05_22.00.42.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="28"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_22.00.42.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_22.00.42.jpg"                   alt="2016-05-05 22.00.42  "                   title="2016-05-05 22.00.42  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="29" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-05_22.00.50.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="29"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_22.00.50.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-05_22.00.50.jpg"                   alt="2016-05-05 22.00.50  "                   title="2016-05-05 22.00.50  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="30" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-06_11.33.47.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="30"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-06_11.33.47.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-06_11.33.47.jpg"                   alt="2016-05-06 11.33.47  "                   title="2016-05-06 11.33.47  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="31" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-06_21.30.09.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="31"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-06_21.30.09.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-06_21.30.09.jpg"                   alt="2016-05-06 21.30.09  "                   title="2016-05-06 21.30.09  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="32" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-06_21.30.19.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="32"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-06_21.30.19.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-06_21.30.19.jpg"                   alt="2016-05-06 21.30.19  "                   title="2016-05-06 21.30.19  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="33" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-07_18.28.58.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="33"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-07_18.28.58.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-07_18.28.58.jpg"                   alt="2016-05-07 18.28.58  "                   title="2016-05-07 18.28.58  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>            <div class="bwg-item">        <a class="bwg-a  bwg_lightbox"  data-image-id="34" href="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/2016-05-07_19.39.52.jpg" data-elementor-open-lightbox="no">                <div class="bwg-item0 ">          <div class="bwg-item1 ">            <div class="bwg-item2">              <img decoding="async" class="skip-lazy bwg_standart_thumb_img_0 "                   data-id="34"                   data-width=""                   data-height=""                   data-src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-07_19.39.52.jpg"                   src="https://www.frozentux.net/wp-uploads/fs1/photo-gallery/thumb/2016-05-07_19.39.52.jpg"                   alt="2016-05-07 19.39.52  "                   title="2016-05-07 19.39.52  " />            </div>            <div class="">                                                      </div>          </div>        </div>                        </a>              </div>          </div>    <style>
893      /*pagination styles*/      #bwg_container1_0 #bwg_container2_0 .tablenav-pages_0 {				text-align: center;				font-size: 12px;				font-family: segoe ui;				font-weight: bold;				color: #666666;				margin: 6px 0 4px;				display: block;      }      @media only screen and (max-width : 320px) {      #bwg_container1_0 #bwg_container2_0 .displaying-num_0 {     	 display: none;      }      }      #bwg_container1_0 #bwg_container2_0 .displaying-num_0 {				font-size: 12px;				font-family: segoe ui;				font-weight: bold;				color: #666666;				margin-right: 10px;				vertical-align: middle;      }      #bwg_container1_0 #bwg_container2_0 .paging-input_0 {				font-size: 12px;				font-family: segoe ui;				font-weight: bold;				color: #666666;				vertical-align: middle;      }      #bwg_container1_0 #bwg_container2_0 .tablenav-pages_0 a.disabled,      #bwg_container1_0 #bwg_container2_0 .tablenav-pages_0 a.disabled:hover,      #bwg_container1_0 #bwg_container2_0 .tablenav-pages_0 a.disabled:focus,			#bwg_container1_0 #bwg_container2_0 .tablenav-pages_0 input.bwg_current_page {				cursor: default;				color: rgba(102, 102, 102, 0.5);      }      #bwg_container1_0 #bwg_container2_0 .tablenav-pages_0 a,      #bwg_container1_0 #bwg_container2_0 .tablenav-pages_0 input.bwg_current_page {				cursor: pointer;				text-align: center;				font-size: 12px;				font-family: segoe ui;				font-weight: bold;				color: #666666;				text-decoration: none;				padding: 3px 6px;				margin: 0;				border-radius: 0;				border-style: solid;				border-width: 1px;				border-color: #E3E3E3;								background-color: rgba(255, 255, 255, 1.00);				box-shadow: 0;				transition: all 0.3s ease 0s;-webkit-transition: all 0.3s ease 0s;      }      </style>      <span class="bwg_nav_cont_0">              <div class="tablenav-pages_0">                  </div>                <input type="hidden" id="page_number_0" name="page_number_0" value="1" />      
893<script type="text/javascript">        if( jQuery('.bwg_nav_cont_0').length > 1 ) {          jQuery('.bwg_nav_cont_0').first().remove()        }        function spider_page_0(cur, x, y, load_more) {          if (typeof load_more == "undefined") {            var load_more = false;          }          if (jQuery(cur).hasClass('disabled')) {            return false;          }          var items_county_0 = 1;          switch (y) {            case 1:              if (x >= items_county_0) {                document.getElementById('page_number_0').value = items_county_0;              }              else {                document.getElementById('page_number_0').value = x + 1;              }              break;            case 2:              document.getElementById('page_number_0').value = items_county_0;              break;            case -1:              if (x == 1) {                document.getElementById('page_number_0').value = 1;              }              else {                document.getElementById('page_number_0').value = x - 1;              }              break;            case -2:              document.getElementById('page_number_0').value = 1;              break;						case 0:              document.getElementById('page_number_0').value = x;              break;            default:              document.getElementById('page_number_0').value = 1;          }          bwg_ajax('gal_front_form_0', '0', 'bwg_thumbnails_0', '0', '', 'gallery', 0, '', '', load_more, '', 1);        }                    jQuery('.first-page-0').on('click', function () {              spider_page_0(this, 1, -2, 'numeric');              return false;            });            jQuery('.prev-page-0').on('click', function () {              spider_page_0(this, 1, -1, 'numeric');              return false;            });            jQuery('.next-page-0').on('click', function () {              spider_page_0(this, 1, 1, 'numeric');              return false;            });            jQuery('.last-page-0').on('click', function () {              spider_page_0(this, 1, 2, 'numeric');              return false;            });        				/* Change page on input enter. */        function bwg_change_page_0( e, that ) {          if (  e.key == 'Enter' ) {            var to_page = parseInt(jQuery(that).val());            var pages_count = jQuery(that).parents(".pagination-links").data("pages-count");            var current_url_param = jQuery(that).attr('data-url-info');            if (to_page > pages_count) {              to_page = 1;            }	 												spider_page_0(this, to_page, 0, 'numeric');							return false;						          }          return true;        }        jQuery('.bwg_load_btn_0').on('click', function () {            spider_page_0(this, 1, 1, true);            return false;        });      </script>
893      </span>                </div>        </form>        <style>          #bwg_container1_0 #bwg_container2_0 #spider_popup_overlay_0 {          background-color: #000000;          opacity: 0.70;          }          </style>        <div id="bwg_spider_popup_loading_0" class="bwg_spider_popup_loading"></div>        <div id="spider_popup_overlay_0" class="spider_popup_overlay" onclick="spider_destroypopup(1000)"></div>        <input type="hidden" id="bwg_random_seed_0" value="1468793657">                </div>    </div>    
893<script>      if (document.readyState === 'complete') {        if( typeof bwg_main_ready == 'function' ) {          if ( jQuery("#bwg_container1_0").height() ) {            bwg_main_ready(jQuery("#bwg_container1_0"));          }        }      } else {        document.addEventListener('DOMContentLoaded', function() {          if( typeof bwg_main_ready == 'function' ) {            if ( jQuery("#bwg_container1_0").height() ) {             bwg_main_ready(jQuery("#bwg_container1_0"));            }          }        });      }    </script>
893    </p>
894<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
895				data-shared="sharing-email-960"
896				class="share-email sd-button share-icon no-text"
897				href="mailto:?subject=%5BShared%20Post%5D%20Retropie%20table%20writeup&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2016%2F05%2Fretropie-table-writeup%2F&#038;share=email"
898				target="_blank"
899				aria-labelledby="sharing-email-960"
900				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="96314e1d56" data-email-share-track-url="https://www.frozentux.net/2016/05/retropie-table-writeup/?share=email">
901				<span id="sharing-email-960" hidden>Email a link to a friend (Opens in new window)</span>
902				<span>Email</span>
903			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
904				data-shared="sharing-facebook-960"
905				class="share-facebook sd-button share-icon no-text"
906				href="https://www.frozentux.net/2016/05/retropie-table-writeup/?share=facebook"
907				target="_blank"
908				aria-labelledby="sharing-facebook-960"
909				>
910				<span id="sharing-facebook-960" hidden>Share on Facebook (Opens in new window)</span>
911				<span>Facebook</span>
912			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
913				data-shared="sharing-linkedin-960"
914				class="share-linkedin sd-button share-icon no-text"
915				href="https://www.frozentux.net/2016/05/retropie-table-writeup/?share=linkedin"
916				target="_blank"
917				aria-labelledby="sharing-linkedin-960"
918				>
919				<span id="sharing-linkedin-960" hidden>Share on LinkedIn (Opens in new window)</span>
920				<span>LinkedIn</span>
921			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
922				data-shared="sharing-reddit-960"
923				class="share-reddit sd-button share-icon no-text"
924				href="https://www.frozentux.net/2016/05/retropie-table-writeup/?share=reddit"
925				target="_blank"
926				aria-labelledby="sharing-reddit-960"
927				>
928				<span id="sharing-reddit-960" hidden>Share on Reddit (Opens in new window)</span>
929				<span>Reddit</span>
930			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
931				data-shared="sharing-twitter-960"
932				class="share-twitter sd-button share-icon no-text"
933				href="https://www.frozentux.net/2016/05/retropie-table-writeup/?share=twitter"
934				target="_blank"
935				aria-labelledby="sharing-twitter-960"
936				>
937				<span id="sharing-twitter-960" hidden>Share on X (Opens in new window)</span>
938				<span>X</span>
939			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
940		
941		<div class="postmeta">
942			<p>Tags: <a href="https://www.frozentux.net/tag/arcade/" rel="tag">arcade</a>, <a href="https://www.frozentux.net/tag/ikea-lack/" rel="tag">ikea lack</a>, <a href="https://www.frozentux.net/tag/lack/" rel="tag">lack</a>, <a href="https://www.frozentux.net/tag/retropie/" rel="tag">retropie</a>, <a href="https://www.frozentux.net/tag/table/" rel="tag">table</a> </p>
943		</div>
944		
945				
946		<h1><a href="https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/" rel="bookmark">Replacing network switches can be a pain sometimes</a></h1>
947		
948		<div class="date">
949			March 25, 2016  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/communications/" rel="category tag">Communications</a>, <a href="https://www.frozentux.net/category/personal/" rel="category tag">Personal</a>&nbsp; 
950		</div>
951		
952		<p>One of those days when replacing 2 routers being used as switches should be so simple bit turn out so complicated. I completely forgot I&#8217;m using one of them as a &#8220;firewall&#8221; between a dmz and the rest of the network. Figured I&#8217;d just switch the IP on the comhem router and it would work for now at least, but no, it refused to because guest network is hardwired in the router to the same range as my internal network, and hence impossible to use&#8230;
952 Winded up reconfiguring everything on my network to a different IP range, spending a couple of hours doing so, and once I&#8217;m done, switch IP on the comhem router and reboot it&#8230; And get a 10/8 IP address on the Internet side interface&#8230; Wtf? I call the tech support and apparently this has been so for at least 3 years. Sometimes you get a private network IP on the Internet, sometimes not, and there is nothing you or they can do about it. I went home and rebooted the router, and got an 83/8 IP instead this time. So&#8230; Something I planned to take 10 minutes winded up taking 5-6 hours&#8230; Hurray&#8230; I just wish we could start being sane and also that certain network providers would start implementing IPv6.</p>
953<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
954				data-shared="sharing-email-954"
955				class="share-email sd-button share-icon no-text"
956				href="mailto:?subject=%5BShared%20Post%5D%20Replacing%20network%20switches%20can%20be%20a%20pain%20sometimes&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2016%2F03%2Freplacing-network-switches-can-be-a-pain-sometimes%2F&#038;share=email"
957				target="_blank"
958				aria-labelledby="sharing-email-954"
959				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="6c09115e55" data-email-share-track-url="https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/?share=email">
960				<span id="sharing-email-954" hidden>Email a link to a friend (Opens in new window)</span>
961				<span>Email</span>
962			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
963				data-shared="sharing-facebook-954"
964				class="share-facebook sd-button share-icon no-text"
965				href="https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/?share=facebook"
966				target="_blank"
967				aria-labelledby="sharing-facebook-954"
968				>
969				<span id="sharing-facebook-954" hidden>Share on Facebook (Opens in new window)</span>
970				<span>Facebook</span>
971			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
972				data-shared="sharing-linkedin-954"
973				class="share-linkedin sd-button share-icon no-text"
974				href="https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/?share=linkedin"
975				target="_blank"
976				aria-labelledby="sharing-linkedin-954"
977				>
978				<span id="sharing-linkedin-954" hidden>Share on LinkedIn (Opens in new window)</span>
979				<span>LinkedIn</span>
980			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
981				data-shared="sharing-reddit-954"
982				class="share-reddit sd-button share-icon no-text"
983				href="https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/?share=reddit"
984				target="_blank"
985				aria-labelledby="sharing-reddit-954"
986				>
987				<span id="sharing-reddit-954" hidden>Share on Reddit (Opens in new window)</span>
988				<span>Reddit</span>
989			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
990				data-shared="sharing-twitter-954"
991				class="share-twitter sd-button share-icon no-text"
992				href="https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/?share=twitter"
993				target="_blank"
994				aria-labelledby="sharing-twitter-954"
995				>
996				<span id="sharing-twitter-954" hidden>Share on X (Opens in new window)</span>
997				<span>X</span>
998			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
999		
1000		<div class="postmeta">
1001			<p>Tags: <a href="https://www.frozentux.net/tag/comhem/" rel="tag">comhem</a>, <a href="https://www.frozentux.net/tag/ipv4/" rel="tag">ipv4</a>, <a href="https://www.frozentux.net/tag/private-ip-address/" rel="tag">private ip address</a> </p>
1002		</div>
1003		
1004				
1005		<h1><a href="https://www.frozentux.net/2016/02/fosdem-2016-is-over/" rel="bookmark">FOSDEM 2016 is over</a></h1>
1006		
1007		<div class="date">
1008			February 2, 2016  by <a href="https://www.frozentux.net/author/admin/" rel="author">Oscar Andreasson</a> &middot; <a href="https://www.frozentux.net/2016/02/fosdem-2016-is-over/#respond">Leave a Comment</a><br />Filed under: <a href="https://www.frozentux.net/category/communications/" rel="category tag">Communications</a>, <a href="https://www.frozentux.net/category/linux/debian/" rel="category tag">Debian</a>, <a href="https://www.frozentux.net/category/development/" rel="category tag">Development</a>, <a href="https://www.frozentux.net/category/frozentuxnet/" rel="category tag">Frozentux.net</a>, <a href="https://www.frozentux.net/category/general/" rel="category tag">General</a>, <a href="https://www.frozentux.net/category/linux/" rel="category tag">Linux</a>, <a href="https://www.frozentux.net/category/personal/" rel="category tag">Personal</a>, <a href="https://www.frozentux.net/category/uncategorized/" rel="category tag">Uncategorized</a>&nbsp; 
1009		</div>
1010		
1011		<p>I went to FOSDEM 2016 this year with 8 other colleagues of mine and had a really really good time. A lot of good speeches and stuff to talk about and I feel very motivated for some new projects. Some of the stuff going on right now is incredibly exciting, especially with regards to containerization etc which is something I have a lot of personal and work related interest in. I will be looking into more details in that for the future&#8230;</p>
1012<p>What I did miss was a more &#8220;general networking&#8221; track with low level stuff like iptables, netfilter, iproute, wireshark, snort, etc. I&#8217;m just not sure if this is the right conference for that though. Gathering my thoughts and working out some of the project details in the upcoming week if I get time.</p>
1013<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-email"><a rel="nofollow noopener noreferrer"
1014				data-shared="sharing-email-950"
1015				class="share-email sd-button share-icon no-text"
1016				href="mailto:?subject=%5BShared%20Post%5D%20FOSDEM%202016%20is%20over&#038;body=https%3A%2F%2Fwww.frozentux.net%2F2016%2F02%2Ffosdem-2016-is-over%2F&#038;share=email"
1017				target="_blank"
1018				aria-labelledby="sharing-email-950"
1019				data-email-share-error-title="Do you have email set up?" data-email-share-error-text="If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself." data-email-share-nonce="158bcb76f0" data-email-share-track-url="https://www.frozentux.net/2016/02/fosdem-2016-is-over/?share=email">
1020				<span id="sharing-email-950" hidden>Email a link to a friend (Opens in new window)</span>
1021				<span>Email</span>
1022			</a></li><li class="share-facebook"><a rel="nofollow noopener noreferrer"
1023				data-shared="sharing-facebook-950"
1024				class="share-facebook sd-button share-icon no-text"
1025				href="https://www.frozentux.net/2016/02/fosdem-2016-is-over/?share=facebook"
1026				target="_blank"
1027				aria-labelledby="sharing-facebook-950"
1028				>
1029				<span id="sharing-facebook-950" hidden>Share on Facebook (Opens in new window)</span>
1030				<span>Facebook</span>
1031			</a></li><li class="share-linkedin"><a rel="nofollow noopener noreferrer"
1032				data-shared="sharing-linkedin-950"
1033				class="share-linkedin sd-button share-icon no-text"
1034				href="https://www.frozentux.net/2016/02/fosdem-2016-is-over/?share=linkedin"
1035				target="_blank"
1036				aria-labelledby="sharing-linkedin-950"
1037				>
1038				<span id="sharing-linkedin-950" hidden>Share on LinkedIn (Opens in new window)</span>
1039				<span>LinkedIn</span>
1040			</a></li><li class="share-reddit"><a rel="nofollow noopener noreferrer"
1041				data-shared="sharing-reddit-950"
1042				class="share-reddit sd-button share-icon no-text"
1043				href="https://www.frozentux.net/2016/02/fosdem-2016-is-over/?share=reddit"
1044				target="_blank"
1045				aria-labelledby="sharing-reddit-950"
1046				>
1047				<span id="sharing-reddit-950" hidden>Share on Reddit (Opens in new window)</span>
1048				<span>Reddit</span>
1049			</a></li><li class="share-twitter"><a rel="nofollow noopener noreferrer"
1050				data-shared="sharing-twitter-950"
1051				class="share-twitter sd-button share-icon no-text"
1052				href="https://www.frozentux.net/2016/02/fosdem-2016-is-over/?share=twitter"
1053				target="_blank"
1054				aria-labelledby="sharing-twitter-950"
1055				>
1056				<span id="sharing-twitter-950" hidden>Share on X (Opens in new window)</span>
1057				<span>X</span>
1058			</a></li><li class="share-end"></li></ul></div></div></div><div style="clear:both;"></div>
1059		
1060		<div class="postmeta">
1061			<p>Tags:  </p>
1062		</div>
1063		
1064				<p><a href="https://www.frozentux.net/page/2/" >Next Page &raquo;</a></p>
1065	
1066	</div>
1067		
1068	<!-- begin l_sidebar -->
1069
1070<div id="l_sidebar">
1071
1072	<ul id="l_sidebarwidgeted">
1073		
1074		<li id="categories">
1075		<h2>Categories</h2>
1076			<ul>
1077					<li class="cat-item cat-item-209"><a href="https://www.frozentux.net/category/android/">Android</a>
1078</li>
1079	<li class="cat-item cat-item-73"><a href="https://www.frozentux.net/category/communications/">Communications</a>
1080</li>
1081	<li class="cat-item cat-item-74"><a href="https://www.frozentux.net/category/development/">Development</a>
1082<ul class='children'>
1083	<li class="cat-item cat-item-170"><a href="https://www.frozentux.net/category/development/fpv/">FPV</a>
1084</li>
1085	<li class="cat-item cat-item-62"><a href="https://www.frozentux.net/category/development/phone/">Phone</a>
1086</li>
1087	<li class="cat-item cat-item-49"><a href="https://www.frozentux.net/category/development/robots/">Robots</a>
1088</li>
1089</ul>
1090</li>
1091	<li class="cat-item cat-item-75"><a href="https://www.frozentux.net/category/editors/">Editors</a>
1092</li>
1093	<li class="cat-item cat-item-9"><a href="https://www.frozentux.net/category/frozentuxnet/">Frozentux.net</a>
1094</li>
1095	<li class="cat-item cat-item-5"><a href="https://www.frozentux.net/category/general/">General</a>
1096</li>
1097	<li class="cat-item cat-item-81"><a href="https://www.frozentux.net/category/hardware/">Hardware</a>
1098<ul class='children'>
1099	<li class="cat-item cat-item-197"><a href="https://www.frozentux.net/category/hardware/3d-printing/">3D printing</a>
1100</li>
1101	<li class="cat-item cat-item-198"><a href="https://www.frozentux.net/category/hardware/plastic-modelling/">Plastic modelling</a>
1102</li>
1103</ul>
1104</li>
1105	<li class="cat-item cat-item-12"><a href="https://www.frozentux.net/category/linux/">Linux</a>
1106<ul class='children'>
1107	<li class="cat-item cat-item-129"><a href="https://www.frozentux.net/category/linux/debian/">Debian</a>
1108</li>
1109	<li class="cat-item cat-item-71"><a href="https://www.frozentux.net/category/linux/ipsysctl/">Ipsysctl</a>
1110</li>
1111	<li class="cat-item cat-item-19"><a href="https://www.frozentux.net/category/linux/iptables/">Iptables</a>
1112</li>
1113	<li class="cat-item cat-item-18"><a href="https://www.frozentux.net/category/linux/netfilter/">Netfilter</a>
1114</li>
1115	<li class="cat-item cat-item-24"><a href="https://www.frozentux.net/category/linux/ubuntu/">Ubuntu</a>
1116</li>
1117	<li class="cat-item cat-item-64"><a href="https://www.frozentux.net/category/linux/video/">Video</a>
1118</li>
1119</ul>
1120</li>
1121	<li class="cat-item cat-item-69"><a href="https://www.frozentux.net/category/management/">Management</a>
1122<ul class='children'>
1123	<li class="cat-item cat-item-47"><a href="https://www.frozentux.net/category/management/configuration-management/">Configuration Management</a>
1124</li>
1125	<li class="cat-item cat-item-46"><a href="https://www.frozentux.net/category/management/projects/">Projects</a>
1126</li>
1127</ul>
1128</li>
1129	<li class="cat-item cat-item-70"><a href="https://www.frozentux.net/category/personal/">Personal</a>
1130<ul class='children'>
1131	<li class="cat-item cat-item-40"><a href="https://www.frozentux.net/category/personal/economy/">Economy</a>
1132</li>
1133</ul>
1134</li>
1135	<li class="cat-item cat-item-1"><a href="https://www.frozentux.net/category/uncategorized/">Uncategorized</a>
1136</li>
1137	<li class="cat-item cat-item-25"><a href="https://www.frozentux.net/category/windows/">Windows</a>
1138</li>
1139			</ul>
1140		</li>
1141		
1142		<li id="archives">
1143		<h2>Archives</h2>
1144			<ul>
1145					<li><a href='https://www.frozentux.net/2025/06/'>June 2025</a></li>
1146	<li><a href='https://www.frozentux.net/2024/12/'>December 2024</a></li>
1147	<li><a href='https://www.frozentux.net/2020/01/'>January 2020</a></li>
1148	<li><a href='https://www.frozentux.net/2018/11/'>November 2018</a></li>
1149	<li><a href='https://www.frozentux.net/2018/10/'>October 2018</a></li>
1150	<li><a href='https://www.frozentux.net/2018/04/'>April 2018</a></li>
1151	<li><a href='https://www.frozentux.net/2016/05/'>May 2016</a></li>
1152	<li><a href='https://www.frozentux.net/2016/03/'>March 2016</a></li>
1153	<li><a href='https://www.frozentux.net/2016/02/'>February 2016</a></li>
1154	<li><a href='https://www.frozentux.net/2016/01/'>January 2016</a></li>
1155	<li><a href='https://www.frozentux.net/2015/12/'>December 2015</a></li>
1156	<li><a href='https://www.frozentux.net/2015/10/'>October 2015</a></li>
1157	<li><a href='https://www.frozentux.net/2015/07/'>July 2015</a></li>
1158	<li><a href='https://www.frozentux.net/2015/04/'>April 2015</a></li>
1159	<li><a href='https://www.frozentux.net/2015/02/'>February 2015</a></li>
1160	<li><a href='https://www.frozentux.net/2015/01/'>January 2015</a></li>
1161	<li><a href='https://www.frozentux.net/2014/12/'>December 2014</a></li>
1162	<li><a href='https://www.frozentux.net/2014/11/'>November 2014</a></li>
1163	<li><a href='https://www.frozentux.net/2014/06/'>June 2014</a></li>
1164	<li><a href='https://www.frozentux.net/2014/03/'>March 2014</a></li>
1165	<li><a href='https://www.frozentux.net/2014/02/'>February 2014</a></li>
1166	<li><a href='https://www.frozentux.net/2013/12/'>December 2013</a></li>
1167	<li><a href='https://www.frozentux.net/2013/10/'>October 2013</a></li>
1168	<li><a href='https://www.frozentux.net/2013/05/'>May 2013</a></li>
1169	<li><a href='https://www.frozentux.net/2013/02/'>February 2013</a></li>
1170	<li><a href='https://www.frozentux.net/2012/11/'>November 2012</a></li>
1171	<li><a href='https://www.frozentux.net/2012/08/'>August 2012</a></li>
1172	<li><a href='https://www.frozentux.net/2012/07/'>July 2012</a></li>
1173	<li><a href='https://www.frozentux.net/2011/10/'>October 2011</a></li>
1174	<li><a href='https://www.frozentux.net/2011/02/'>February 2011</a></li>
1175	<li><a href='https://www.frozentux.net/2010/12/'>December 2010</a></li>
1176	<li><a href='https://www.frozentux.net/2010/10/'>October 2010</a></li>
1177	<li><a href='https://www.frozentux.net/2010/05/'>May 2010</a></li>
1178	<li><a href='https://www.frozentux.net/2010/03/'>March 2010</a></li>
1179	<li><a href='https://www.frozentux.net/2010/02/'>February 2010</a></li>
1180	<li><a href='https://www.frozentux.net/2009/12/'>December 2009</a></li>
1181	<li><a href='https://www.frozentux.net/2009/11/'>November 2009</a></li>
1182	<li><a href='https://www.frozentux.net/2009/10/'>October 2009</a></li>
1183	<li><a href='https://www.frozentux.net/2009/09/'>September 2009</a></li>
1184	<li><a href='https://www.frozentux.net/2009/08/'>August 2009</a></li>
1185	<li><a href='https://www.frozentux.net/2009/07/'>July 2009</a></li>
1186	<li>
1186<a href='https://www.frozentux.net/2009/05/'>May 2009</a></li>
1187	<li><a href='https://www.frozentux.net/2009/04/'>April 2009</a></li>
1188	<li><a href='https://www.frozentux.net/2009/02/'>February 2009</a></li>
1189	<li><a href='https://www.frozentux.net/2009/01/'>January 2009</a></li>
1190	<li><a href='https://www.frozentux.net/2008/11/'>November 2008</a></li>
1191	<li><a href='https://www.frozentux.net/2008/10/'>October 2008</a></li>
1192	<li><a href='https://www.frozentux.net/2008/09/'>September 2008</a></li>
1193	<li><a href='https://www.frozentux.net/2008/08/'>August 2008</a></li>
1194	<li><a href='https://www.frozentux.net/2006/09/'>September 2006</a></li>
1195	<li><a href='https://www.frozentux.net/2005/06/'>June 2005</a></li>
1196	<li><a href='https://www.frozentux.net/2003/08/'>August 2003</a></li>
1197	<li><a href='https://www.frozentux.net/2003/06/'>June 2003</a></li>
1198	<li><a href='https://www.frozentux.net/2003/05/'>May 2003</a></li>
1199	<li><a href='https://www.frozentux.net/2003/04/'>April 2003</a></li>
1200	<li><a href='https://www.frozentux.net/2003/03/'>March 2003</a></li>
1201	<li><a href='https://www.frozentux.net/2003/02/'>February 2003</a></li>
1202	<li><a href='https://www.frozentux.net/2002/12/'>December 2002</a></li>
1203	<li><a href='https://www.frozentux.net/2002/11/'>November 2002</a></li>
1204	<li><a href='https://www.frozentux.net/2002/10/'>October 2002</a></li>
1205			</ul>
1206		</li>
1207
1208		<li id="links">
1209		<h2>Links</h2>
1210			<ul>
1211							</ul>
1212		</li>
1213	
1214		<li id="meta">
1215		<h2>Meta</h2>
1216			<ul>
1217								<li><a href="https://www.frozentux.net/wp-login.php">Log in</a></li>
1218				<li><a href="http://www.wordpress.org/">WordPress</a></li>
1219								<li><a href="http://validator.w3.org/check?uri=referer">XHTML</a></li>
1220			</ul>
1221		</li>
1222
1223		</ul>
1224	
1225</div>
1226
1227<!-- end l_sidebar -->	
1228	<!-- begin r_sidebar -->
1229
1230<div id="r_sidebar">
1231
1232	<ul id="r_sidebarwidgeted">
1233		
1234		<li id="recent-posts">
1235		<h2>Recent Posts</h2>
1236			<ul>
1237					<li><a href='https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/'>Playing with bcache: NVMe Write-Back Caching over HDD</a></li>
1238	<li><a href='https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/'>Iptables tutorial 1.2.3</a></li>
1239	<li><a href='https://www.frozentux.net/2020/01/sparse-files/'>Sparse files</a></li>
1240	<li><a href='https://www.frozentux.net/2018/11/gitea-and-drone-io/'>Gitea and Drone.io</a></li>
1241	<li><a href='https://www.frozentux.net/2018/11/devops-world-nice-2018/'>DevOps World Nice 2018</a></li>
1242			</ul>
1243		</li>
1244		<li id="ad">
1245		<ul>
1246			
1246<script type="text/javascript"><!--
1247google_ad_client = "pub-9619007549461057";
1248/* 160x600, sidebar */
1249google_ad_slot = "9705574384";
1250google_ad_width = 160;
1251google_ad_height = 600;
1252//-->
1253</script>
vendor: 2 bytes, line 1253
1253
1254<script type="text/javascript"
1255src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
1256</script>
1256
1257		</ul>
1258		</li>
1259		
1260		</ul>
1261			
1262</div>
1263
1264<!-- end r_sidebar -->
1265</div>
1266
1267<!-- The main column ends  -->
1268
1269<!-- begin footer -->
1270
1271<div style="clear:both;"></div>
1272
1273</div>
1274
1275<div id="footerbg">
1276
1277	<div id="footer">
1278	
1279		<div class="footerleft">
1280		<p>Copyright &copy; 2001-2009 &middot; <a href="http://www.frozentux.net" >www.frozentux.net</a> by <a href="mailto: [email protected]" >Oskar Andreasson</a>.</p>
1281		</div>
1282		
1283		<div class="footerright">
1284			<p><a href="http://www.haringstad.com">Haringstad</a> &middot; <a href="http://wordpress.org">WordPress</a> &middot; <a href="https://www.frozentux.net/wp-login.php">Log in</a> </p>
1285		</div>
1286		
1287	</div>
1288	
1289</div>
1290
1291<script type="speculationrules">
1292{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-uploads/fs1/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/revolution-code-blue/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
1293</script>
vendor: 1 bytes, line 1293
1293
1294<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shCore.js"></script>
vendor: 1 bytes, line 1294
1294
1295<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushCSharp.js"></script>
vendor: 1 bytes, line 1295
1295
1296<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushPhp.js"></script>
vendor: 1 bytes, line 1296
1296
1297<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushJScript.js"></script>
vendor: 1 bytes, line 1297
1297
1298<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushJava.js"></script>
vendor: 1 bytes, line 1298
1298
1299<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushVb.js"></script>
vendor: 1 bytes, line 1299
1299
1300<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushSql.js"></script>
vendor: 1 bytes, line 1300
1300
1301<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushXml.js"></script>
vendor: 1 bytes, line 1301
1301
1302<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushDelphi.js"></script>
vendor: 1 bytes, line 1302
1302
1303<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushPython.js"></script>
vendor: 1 bytes, line 1303
1303
1304<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushRuby.js"></script>
vendor: 1 bytes, line 1304
1304
1305<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushCss.js"></script>
vendor: 1 bytes, line 1305
1305
1306<script class="javascript" src="https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/shBrushCpp.js"></script>
vendor: 1 bytes, line 1306
1306
1307<script class="javascript">
1308dp.SyntaxHighlighter.ClipboardSwf = 'https://www.frozentux.net/wp-content/plugins/google-syntax-highlighter/Scripts/clipboard.swf';
1309dp.SyntaxHighlighter.HighlightAll('code');
1310</script>
1310
1311<!-- Powered by WPtouch: 4.3.62 -->
1312	
1312<script type="text/javascript">
1313		window.WPCOM_sharing_counts = {"https://www.frozentux.net/2025/06/playing-with-bcache-nvme-write-back-caching-over-hdd/":1354,"https://www.frozentux.net/2024/12/iptables-tutorial-1-2-3/":1332,"https://www.frozentux.net/2020/01/sparse-files/":967,"https://www.frozentux.net/2018/11/gitea-and-drone-io/":1072,"https://www.frozentux.net/2018/11/devops-world-nice-2018/":1064,"https://www.frozentux.net/2018/10/ssl-certificate-updated-slightly-late/":1059,"https://www.frozentux.net/2018/04/iptables-tutorial-work/":1016,"https://www.frozentux.net/2016/05/retropie-table-writeup/":960,"https://www.frozentux.net/2016/03/replacing-network-switches-can-be-a-pain-sometimes/":954,"https://www.frozentux.net/2016/02/fosdem-2016-is-over/":950};
1314	</script>
1314
1315				
1315<script id="jetpack-stats-js-before">
1316_stq = window._stq || [];
1317_stq.push([ "view", {"v":"ext","blog":"9956521","post":"0","tz":"2","srv":"www.frozentux.net","arch_home":"1","j":"1:16.2"} ]);
1318_stq.push([ "clickTrackerInit", "9956521", "0" ]);
1319_stq = window._stq || [];
1320_stq.push([ "view", {"v":"ext","blog":"9956521","post":"0","tz":"2","srv":"www.frozentux.net","arch_home":"1","j":"1:16.2"} ]);
1321_stq.push([ "clickTrackerInit", "9956521", "0" ]);
1322//# sourceURL=jetpack-stats-js-before
1323</script>
vendor: 1 bytes, line 1323
1323
1324<script data-wp-strategy="defer" defer fetchpriority="low" id="jetpack-stats-js" src="https://stats.wp.com/e-202640.js"></script>
vendor: 1 bytes, line 1324
1324
1325<script id="sharing-js-js-extra">
1326var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"};
1327//# sourceURL=sharing-js-js-extra
1328</script>
vendor: 1 bytes, line 1328
1328
1329<script id="sharing-js-js" src="https://c0.wp.com/p/jetpack/16.2/_inc/build/sharedaddy/sharing.min.js"></script>
vendor: 1 bytes, line 1329
1329
1330<script id="sharing-js-js-after">
1331window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1332window.WPCOM_sharing_popups[ "facebook" ] = "menubar=1,resizable=1,width=600,height=400";
1333window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1334window.WPCOM_sharing_popups[ "linkedin" ] = "menubar=1,resizable=1,width=580,height=450";
1335window.WPCOM_sharing_popups = window.WPCOM_sharing_popups || {};
1336window.WPCOM_sharing_popups[ "twitter" ] = "menubar=1,resizable=1,width=600,height=350";
1337//# sourceURL=sharing-js-js-after
1338</script>
vendor: 1 bytes, line 1338
1338
1339<script id="wp-emoji-settings" type="application/json">
1340{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.frozentux.net/wp-includes/js/wp-emoji-release.min.js?ver=7.0.6"}}
1341</script>
vendor: 1 bytes, line 1341
1341
1342<script type="module">
1343/*! This file is auto-generated */
1344var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
1345//# sourceURL=https://www.frozentux.net/wp-includes/js/wp-emoji-loader.min.js
1346</script>
1346
1347
1348</body>
1349</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.