PageSourceSearch

https://www.linuxjournal.com/form/contact

html linuxjournal.com collected 2026-10-01 07:09:02 UTC 38,146 bytes, 641 lines download raw bytes

1<!DOCTYPE html>
2<html  lang="en" dir="ltr" prefix="content: http://purl.org/rss/1.0/modules/content/  dc: http://purl.org/dc/terms/  foaf: http://xmlns.com/foaf/0.1/  og: http://ogp.me/ns#  rdfs: http://www.w3.org/2000/01/rdf-schema#  schema: http://schema.org/  sioc: http://rdfs.org/sioc/ns#  sioct: http://rdfs.org/sioc/types#  skos: http://www.w3.org/2004/02/skos/core#  xsd: http://www.w3.org/2001/XMLSchema# " class="no-js wf-loading">
3  <head>
4    <meta charset="utf-8" />
5<meta name="Generator" content="Drupal 9 (https://www.drupal.org)" />
6<meta name="MobileOptimized" content="width" />
7<meta name="HandheldFriendly" content="true" />
8<meta name="viewport" content="width=device-width, initial-scale=1.0" />
9<link rel="icon" href="/themes/linuxjournal/favicon.ico" type="image/vnd.microsoft.icon" />
10
11    <title>Contact | Linux Journal</title>
12    <link rel="stylesheet" media="all" href="/core/modules/system/css/components/align.module.css?tfpujm" />
13<link rel="stylesheet" media="all" href="/core/modules/system/css/components/fieldgroup.module.css?tfpujm" />
14<link rel="stylesheet" media="all" href="/core/modules/system/css/components/container-inline.module.css?tfpujm" />
15<link rel="stylesheet" media="all" href="/core/modules/system/css/components/clearfix.module.css?tfpujm" />
16<link rel="stylesheet" media="all" href="/core/modules/system/css/components/details.module.css?tfpujm" />
17<link rel="stylesheet" media="all" href="/core/modules/system/css/components/hidden.module.css?tfpujm" />
18<link rel="stylesheet" media="all" href="/core/modules/system/css/components/item-list.module.css?tfpujm" />
19<link rel="stylesheet" media="all" href="/core/modules/system/css/components/js.module.css?tfpujm" />
20<link rel="stylesheet" media="all" href="/core/modules/system/css/components/nowrap.module.css?tfpujm" />
21<link rel="stylesheet" media="all" href="/core/modules/system/css/components/position-container.module.css?tfpujm" />
22<link rel="stylesheet" media="all" href="/core/modules/system/css/components/progress.module.css?tfpujm" />
23<link rel="stylesheet" media="all" href="/core/modules/system/css/components/reset-appearance.module.css?tfpujm" />
24<link rel="stylesheet" media="all" href="/core/modules/system/css/components/resize.module.css?tfpujm" />
25<link rel="stylesheet" media="all" href="/core/modules/system/css/components/sticky-header.module.css?tfpujm" />
26<link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-counter.css?tfpujm" />
27<link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-report-counters.css?tfpujm" />
28<link rel="stylesheet" media="all" href="/core/modules/system/css/components/system-status-report-general-info.css?tfpujm" />
29<link rel="stylesheet" media="all" href="/core/modules/system/css/components/tablesort.module.css?tfpujm" />
30<link rel="stylesheet" media="all" href="/core/modules/system/css/components/tree-child.module.css?tfpujm" />
31<link rel="stylesheet" media="all" href="/modules/contrib/poll/css/poll.base.css?tfpujm" />
32<link rel="stylesheet" media="all" href="/modules/contrib/poll/css/poll.theme.css?tfpujm" />
33<link rel="stylesheet" media="all" href="/modules/contrib/webform/css/webform.element.message.css?tfpujm" />
34<link rel="stylesheet" media="all" href="/core/modules/views/css/views.module.css?tfpujm" />
35<link rel="stylesheet" media="all" href="/modules/contrib/webform/css/webform.form.css?tfpujm" />
36<link rel="stylesheet" media="all" href="/modules/contrib/webform/css/webform.element.details.toggle.css?tfpujm" />
37<link rel="stylesheet" media="all" href="/modules/contrib/webform/modules/webform_bootstrap/css/webform_bootstrap.css?tfpujm" />
38<link rel="stylesheet" media="all" href="/libraries/shariff/shariff.complete.css?tfpujm" />
39<link rel="stylesheet" media="all" href="/themes/linuxjournal/css/style.css?tfpujm" />
40<link rel="stylesheet" media="all" href="/themes/linuxjournal/css/fonts.css?tfpujm" />
41
42      <!--   
42<script defer src="https://use.fontawesome.com/releases/v5.0.9/js/all.js" integrity="sha384-8iPTk2s/jMVj81dnzb/iFR2sdA7u06vHJyyLlAd4snFpCl/SnyUjRrbdJsw1pGIl" crossorigin="anonymous"></script>
42-->
43
44    
vendor: 4,605 bytes, lines 44-70
44<script>
45      // Non-blocking webfonts.
46      (function iife() {
47        'use strict';
48
49        // JS is able to start executing.
50        document.documentElement.classList.remove('no-js');
51
52        // Optimization for Repeat Views
53        // Stop early for repeat views that have already cached fonts.
54        if (sessionStorage.fontsLoadedLateef && sessionStorage.fontsLoadedOpensans /* && sessionStorage.fontsLoadedNEWFONT */) {
55          document.documentElement.classList.remove('wf-loading');
56          document.documentElement.classList.add('wf-opensans');
57          document.documentElement.classList.add('wf-lateef');
58          // document.documentElement.classList.add('wf-NEWFONT');
59          return;
60        }
61
62        // Inlined Font Face Observer script + Promise polyfill.
63        /*! Font Face Observer v2.0.13 - © Bram Stein. License: BSD-3-Clause */
64        (function(){'use strict';var f,g=[];function l(a){g.push(a);1==g.length&&f()}function m(){for(;g.length;)g[0](),g.shift()}f=function(){setTimeout(m)};function n(a){this.a=p;this.b=void 0;this.f=[];var b=this;try{a(function(a){q(b,a)},function(a){r(b,a)})}catch(c){r(b,c)}}var p=2;function t(a){return new n(function(b,c){c(a)})}function u(a){return new n(function(b){b(a)})}function q(a,b){if(a.a==p){if(b==a)throw new TypeError;var c=!1;try{var d=b&&b.then;if(null!=b&&"object"==typeof b&&"function"==typeof d){d.call(b,function(b){c||q(a,b);c=!0},function(b){c||r(a,b);c=!0});return}}catch(e){c||r(a,e);return}a.a=0;a.b=b;v(a)}}
65        function r(a,b){if(a.a==p){if(b==a)throw new TypeError;a.a=1;a.b=b;v(a)}}function v(a){l(function(){if(a.a!=p)for(;a.f.length;){var b=a.f.shift(),c=b[0],d=b[1],e=b[2],b=b[3];try{0==a.a?"function"==typeof c?e(c.call(void 0,a.b)):e(a.b):1==a.a&&("function"==typeof d?e(d.call(void 0,a.b)):b(a.b))}catch(h){b(h)}}})}n.prototype.g=function(a){return this.c(void 0,a)};n.prototype.c=function(a,b){var c=this;return new n(function(d,e){c.f.push([a,b,d,e]);v(c)})};
66        function w(a){return new n(function(b,c){function d(c){return function(d){h[c]=d;e+=1;e==a.length&&b(h)}}var e=0,h=[];0==a.length&&b(h);for(var k=0;k<a.length;k+=1)u(a[k]).c(d(k),c)})}function x(a){return new n(function(b,c){for(var d=0;d<a.length;d+=1)u(a[d]).c(b,c)})};window.Promise||(window.Promise=n,window.Promise.resolve=u,window.Promise.reject=t,window.Promise.race=x,window.Promise.all=w,window.Promise.prototype.then=n.prototype.c,window.Promise.prototype["catch"]=n.prototype.g);}());
67
68        (function(){function l(a,b){document.addEventListener?a.addEventListener("scroll",b,!1):a.attachEvent("scroll",b)}function m(a){document.body?a():document.addEventListener?document.addEventListener("DOMContentLoaded",function c(){document.removeEventListener("DOMContentLoaded",c);a()}):document.attachEvent("onreadystatechange",function k(){if("interactive"==document.readyState||"complete"==document.readyState)document.detachEvent("onreadystatechange",k),a()})};function r(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.h=document.createElement("span");this.f=document.createElement("span");this.g=-1;this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";
69        this.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;";this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;";this.b.appendChild(this.h);this.c.appendChild(this.f);this.a.appendChild(this.b);this.a.appendChild(this.c)}
70        function t(a,b){a.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:"+b+";"}function y(a){var b=a.a.offsetWidth,c=b+100;a.f.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.g!==b?(a.g=b,!0):!1}function z(a,b){function c(){var a=k;y(a)&&a.a.parentNode&&b(a.g)}var k=a;l(a.b,c);l(a.c,c);y(a)};function A(a,b){var c=b||{};this.family=a;this.style=c.style||"normal";this.weight=c.weight||"normal";this.stretch=c.stretch||"normal"}var B=null,C=null,E=null,F=null;function G(){if(null===C)if(J()&&/Apple/.test(window.navigator.vendor)){var a=/AppleWeb
70Kit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent);C=!!a&&603>parseInt(a[1],10)}else C=!1;return C}function J(){null===F&&(F=!!document.fonts);return F}
71        function K(){if(null===E){var a=document.createElement("div");try{a.style.font="condensed 100px sans-serif"}catch(b){}E=""!==a.style.font}return E}function L(a,b){return[a.style,a.weight,K()?a.stretch:"","100px",b].join(" ")}
72        A.prototype.load=function(a,b){var c=this,k=a||"BESbswy",q=0,D=b||3E3,H=(new Date).getTime();return new Promise(function(a,b){if(J()&&!G()){var M=new Promise(function(a,b){function e(){(new Date).getTime()-H>=D?b():document.fonts.load(L(c,'"'+c.family+'"'),k).then(function(c){1<=c.length?a():setTimeout(e,25)},function(){b()})}e()}),N=new Promise(function(a,c){q=setTimeout(c,D)});Promise.race([N,M]).then(function(){clearTimeout(q);a(c)},function(){b(c)})}else m(function(){function u(){var b;if(b=-1!=
73        f&&-1!=g||-1!=f&&-1!=h||-1!=g&&-1!=h)(b=f!=g&&f!=h&&g!=h)||(null===B&&(b=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),B=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))),b=B&&(f==v&&g==v&&h==v||f==w&&g==w&&h==w||f==x&&g==x&&h==x)),b=!b;b&&(d.parentNode&&d.parentNode.removeChild(d),clearTimeout(q),a(c))}function I(){if((new Date).getTime()-H>=D)d.parentNode&&d.parentNode.removeChild(d),b(c);else{var a=document.hidden;if(!0===a||void 0===a)f=e.a.offsetWidth,
74        g=n.a.offsetWidth,h=p.a.offsetWidth,u();q=setTimeout(I,50)}}var e=new r(k),n=new r(k),p=new r(k),f=-1,g=-1,h=-1,v=-1,w=-1,x=-1,d=document.createElement("div");d.dir="ltr";t(e,L(c,"sans-serif"));t(n,L(c,"serif"));t(p,L(c,"monospace"));d.appendChild(e.a);d.appendChild(n.a);d.appendChild(p.a);document.body.appendChild(d);v=e.a.offsetWidth;w=n.a.offsetWidth;x=p.a.offsetWidth;I();z(e,function(a){f=a;u()});t(e,L(c,'"'+c.family+'",sans-serif'));z(n,function(a){g=a;u()});t(n,L(c,'"'+c.family+'",serif'));
75        z(p,function(a){h=a;u()});t(p,L(c,'"'+c.family+'",monospace'))})})};"object"===typeof module?module.exports=A:(window.FontFaceObserver=A,window.FontFaceObserver.prototype.load=A.prototype.load);}());
76
77        // Load and observe Lateef
78        var Lateef = new FontFaceObserver('Lateef', {weight: 400});
79        Promise.all([Lateef.load()]).then(function() {
80          document.documentElement.classList.remove('wf-loading');
81          document.documentElement.classList.add('wf-lateef');
82
83          // Optimization for Repeat Views
84          // Set a flag in localstorage so repeat views can skip processing FFO.
85          sessionStorage.fontsLoadedLateef = true;
86        });
87
88        // Load and observe Open Sans
89        var os300 = new FontFaceObserver('Open Sans', {weight: 300});
90        var os400 = new FontFaceObserver('Open Sans', {weight: 400});
91        Promise.all([os300.load(), os400.load()]).then(function() {
92          document.documentElement.classList.remove('wf-loading');
93          document.documentElement.classList.add('wf-opensans');
94
95          // Optimization for Repeat Views
96          // Set a flag in localstorage so repeat views can skip processing FFO.
97          sessionStorage.fontsLoadedOpensans = true;
98        });
99
100        // Load and observe NEWFONT
101        /*
102        var NEWFONT = new FontFaceObserver('NEWFONT', {weight: 400});
103        Promise.all([NEWFONT.load()]).then(function() {
104          document.documentElement.classList.remove('wf-loading');
105          document.documentElement.classList.add('wf-NEWFONT');
106
107          // Optimization for Repeat Views
108          // Set a flag in localstorage so repeat views can skip processing FFO.
109          sessionStorage.fontsLoadedNEWFONT = true;
110        });
111        */
112      })();
113    </script>
113
114    
115    
115<script src=https://slashdot.org/country.js></script>
115
116    
116<script src="/themes/linuxjournal/js/ada.js"></script>
116
117    
117<script src="/themes/linuxjournal/js/accessibility.js"></script>
117
118    
118<script>window.addEventListener('load', function() { new Accessibility(); });</script>
118
119    
119<script src="//a.fsdn.com/con/js/sftheme/cmp2.js"></script>
119
120    <link rel="stylesheet" href="//a.fsdn.com/con/css/sftheme/sandiego/cmp.css" type="text/css">
121    <link rel="stylesheet" href="/themes/linuxjournal/css/ccpa.css" type="text/css">
122    
122<script>window.bizx.cmp.init({ geo: window });</script>
122
123    
123<script>
124    function bm_trace() {
125        (function (w,d,t) {
126          _ml = w._ml || {};
127          _ml.eid = '771';
128          var s, cd, tag; s = d.getElementsByTagName(t)[0]; cd = new Date();
129          tag = d.createElement(t); tag.async = 1;
130          tag.src = 'https://ml314.com/tag.aspx?' + cd.getDate() + cd.getMonth();
131          s.parentNode.insertBefore(tag, s);
132        })(window,document,'script');
133    }
134    bizx.cmp.ifConsent('', ['all', 'bombora'],bm_trace);
135    </script>
135
136
137  </head>
138  <body class="path-webform has-glyphicons">
139    <a href="#main-content" class="visually-hidden focusable skip-link">
140      Skip to main content
141    </a>
142    
143      <div class="dialog-off-canvas-main-canvas" data-off-canvas-main-canvas>
144    <div id="wrap">
145<div class="leader-wrapper" id="leader-wrapper">
146</div>
147
148<div class="brand-wrapper" id="brand-wrapper">
149  <div class="brand container">
150    <div class="region region-brand">
151          <a class="logo navbar-btn" href="/" title="Home" rel="home">
152      <h1><img src="/themes/linuxjournal/images/ljlogo.png" alt="Linux Journal" /></h1>
153    </a>
154      <section id="block-topbannernearlogo" class="block block-block-content block-block-contenta8e75a3d-967c-416d-8944-4015d1f90a84 clearfix">
155  
156    
157
158      
159  </section>
160
161
162  </div>
163
164  </div>
165
166          <div class="header-wrapper">
167    <header class="navbar navbar-default container" id="navbar" role="banner">
168                                            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
169            <span class="sr-only">Toggle navigation</span>
170            <span class="icon-bar"></span>
171            <span class="icon-bar"></span>
172            <span class="icon-bar"></span>
173          </button>
174                <div id="navbar-collapse" class="navbar-collapse collapse">
175            <div class="region region-navigation-collapsible">
176    <section id="block-linuxjournal-main-menu" class="block block-system block-system-menu-blockmain clearfix navbar__menu col-xs-12 col-sm-8">
177  
178    
179
180      
181      <ul class="menu menu--main nav navbar-nav">
182                      <li class="expanded dropdown first">
183                                                                    <a href="/" class="dropdown-toggle" data-toggle="dropdown" data-drupal-link-system-path="&lt;front&gt;">Topics+ <span class="caret"></span></a>
184                        <ul class="dropdown-menu">
185                      <li class="first">
186                                        <a href="/tag/cloud">Cloud</a>
187              </li>
188                      <li>
189                                        <a href="/tag/containers" data-drupal-link-system-path="taxonomy/term/978">Containers</a>
190              </li>
191                      <li>
192                                        <a href="/tag/desktop">Desktop</a>
193              </li>
194                      <li>
195                                        <a href="/tag/kernel" data-drupal-link-system-path="taxonomy/term/662">Kernel</a>
196              </li>
197                      <li>
198                                        <a href="/tag/mobile">Mobile</a>
199              </li>
200                      <li>
201                                        <a href="/tag/networking">Networking</a>
202              </li>
203                      <li>
204                                        <a href="/tag/privacy">Privacy</a>
205              </li>
206                      <li>
207                                        <a href="/tag/programming">Programming</a>
208              </li>
209                      <li>
210                                        <a href="/tag/security" data-drupal-link-system-path="taxonomy/term/31">Security</a>
211              </li>
212                      <li>
213                                        <a href="/tag/servers">Servers</a>
214              </li>
215                      <li class="last">
216                                        <a href="/tag/sysadmin" data-drupal-link-system-path="taxonomy/term/21">SysAdmin</a>
217              </li>
218        </ul>
219  
220              </li>
221                      <li>
222                                        <a href="/news" data-drupal-link-system-path="news">News</a>
223              </li>
224                      <li class="last">
225                                        <a href="/books" data-drupal-link-system-path="books">eBooks</a>
226              </li>
227        </ul>
228  
229
230  </section>
231
232<section class="search-block-form block block-search block-search-form-block clearfix navbar__search col-xs-12 col-sm-4 col-md-4 col-md-offset-0" data-drupal-selector="search-block-form" id="block-linuxjournal-search" role="search">
233  
234      <h2 class="block-title sr-only">Search</h2>
235    
236
237      <form action="/search/node" method="get" id="search-block-form" accept-charset="UTF-8">
238  <div class="form-item js-form-item form-type-search js-form-type-search form-item-keys js-form-item-keys form-no-label form-group">
239      <label for="edit-keys" class="control-label sr-only">Search</label>
240  
241  
242  <div class="input-group"><input title="Enter the terms you wish to search for." data-drupal-selector="edit-keys" class="form-search form-control" placeholder="Search" type="search" id="edit-keys" name="keys" value="" size="15" maxlength="128" /><span class="input-group-btn"><button type="submit" value="Search" class="button js-form-submit form-submit btn-primary btn icon-only" name=""><span class="sr-only">Search</span><span class="icon glyphicon glyphicon-search" aria-hidden="true"></span></button></span></div>
243
244  
245  
246      <div id="edit-keys--description" class="description help-block">
247      Enter the terms you wish to search for.
248    </div>
249  </div>
250<div class="form-actions form-group js-form-wrapper form-wrapper" data-drupal-selector="edit-actions" id="edit-actions"></div>
251
252</form>
253
254  </section>
255
256
257  </div>
258
259        </div>
260            <div class="navbar-header">
261          <div class="region region-navigation">
262    <section id="block-mobilenavigation" class="block block-system block-system-menu-blockmenu-mobile-navbar clearfix col-xs-12 col-md-8 col-md-offset-2 col-lg-8 col-lg-offset-0 navbar__menu navbar__mobilenavigation">
263  
264    
265
266      
267      <ul class="menu menu--menu-mobile-navbar nav">
268                      <li class="first">
269                                        <a href="/news" data-drupal-link-system-path="news">News</a>
270              </li>
271                      <li>
272                                        <a href="/popular" data-drupal-link-system-path="popular">Popular</a>
273              </li>
274                      <li class="last">
275                                        <a href="/recent" data-drupal-link-system-path="recent">Recent</a>
276              </li>
277        </ul>
278  
279
280  </section>
281
282  </div>
283
284      </div>
285          </header>
286    </div>
287  
288</div>
289  <div role="main" class="main-container container js-quickedit-main-content" id="main">
290    <div class="row">
291
292            
293            
294                  <section class="col-sm-12">
295
296                                      <div class="highlighted">  <div class="region region-highlighted">
297    <div data-drupal-messages-fallback class="hidden"></div>
298<section id="block-contentsectionad" class="block block-block-content block-block-content23002994-ad54-4b02-9817-f4cee4ea308a clearfix">
299  
300    
301
302      
303            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div id="sitewide-top-banner-placeholder" style="height:100px;width:100%;padding-top:10px;"> </div>
304<script data-source="linuxjournal" src="https://a.fsdn.com/con/js/sandiego/floating-unit.js?2026-03-23"></script>
304<style type="text/css">
305<!--/*--><![CDATA[/* ><!--*/
306.header-wrapper{ margin-bottom:0;}
307#sitewide-top-banner-placeholder{
308margin-bottom: 25px;
309height:100px;
310width:100%
311}
312
313/*--><!]]>*/
314</style></div>
315      
316  </section>
317
318
319  </div>
320</div>
321                  
322                
323                
324                
325                          <a id="main-content"></a>
326            <div class="region region-content">
327        <h1 class="page-header">Contact</h1>
328
329  <form class="webform-submission-form webform-submission-add-form webform-submission-contact-form webform-submission-contact-add-form js-webform-details-toggle webform-details-toggle" data-drupal-selector="webform-submission-contact-add-form" action="/form/contact" method="post" id="webform-submission-contact-add-form" accept-charset="UTF-8">
330  
331  <div class="form-item js-form-item form-type-textfield js-form-type-textfield form-item-name js-form-item-name form-group">
332      <label for="edit-name" class="control-label js-form-required form-required">Your Name</label>
333  
334  
335  <input data-drupal-selector="edit-name" class="form-text required form-control" type="text" id="edit-name" name="name" value="" size="60" maxlength="255" required="required" aria-required="true" />
336
337  
338  
339  </div>
340<div class="form-item js-form-item form-type-email js-form-type-email form-item-email js-form-item-email form-group">
341      <label for="edit-email" class="control-label js-form-required form-required">Your Email</label>
342  
343  
344  <input data-drupal-selector="edit-email" class="form-email required form-control" type="email" id="edit-email" name="email" value="" size="60" maxlength="254" required="required" aria-required="true" />
345
346  
347  
348  </div>
349<div class="form-item js-form-item form-type-textfield js-form-type-textfield form-item-subject js-form-item-subject form-group">
350      <label for="edit-subject" class="control-label js-form-required form-required">Subject</label>
351  
352  
353  <input data-drupal-selector="edit-subject" class="form-text required form-control" type="text" id="edit-subject" name="subject" value="" size="60" maxlength="255" required="required" aria-required="true" />
354
355  
356  
357  </div>
358<div class="form-item js-form-item form-type-textarea js-form-type-textarea form-item-message js-form-item-message form-group">
359      <label for="edit-message" class="control-label js-form-required form-required">Message</label>
360  
361  
362  <div class="form-textarea-wrapper">
363  <textarea data-drupal-selector="edit-message" class="form-textarea required form-control resize-vertical" id="edit-message" name="message" rows="5" cols="60" required="required" aria-required="true"></textarea>
364</div>
365
366
367  
368  
369  </div>
370<div class="form-item js-form-item form-type-checkbox js-form-type-checkbox form-item-i-understand-by-clicking-on-send-message-button-below-i-am-agree js-form-item-i-understand-by-clicking-on-send-message-button-below-i-am-agree checkbox">
371  
372  
373  
374
375      <label for="edit-i-understand-by-clicking-on-send-message-button-below-i-am-agree" class="control-label option js-form-required form-required"><input data-drupal-selector="edit-i-understand-by-clicking-on-send-message-button-below-i-am-agree" class="form-checkbox required" type="checkbox" id="edit-i-understand-by-clicking-on-send-message-button-below-i-am-agree" name="i_understand_by_clicking_on_send_message_button_below_i_am_agree" value="1" required="required" aria-required="true" />I understand by clicking on "Send Message" button below I am agreeing to the LinuxJournal <a href="https://slashdotmedia.com/terms-of-use/" target="_blank" rel="nofollow">Terms of Use</a> and the <a href="https://slashdotmedia.com/privacy-statement/" target="_blank" rel="nofollow">Privacy Policy</a> which describe how we use and share your data. I agree to receive communications from LinuxJournal</label>
376  
377  
378  </div>
379<div id="edit-markup" class="form-item js-form-item form-type-webform-markup js-form-type-webform-markup form-item-markup js-form-item-markup form-no-label form-group">
380  
381  
382  <div class="g-recaptcha" data-sitekey="6Le9L8oZAAAAANFWpjOQPQgHo_XzekW8jss0Py49"></div>
383
384  
385  
386  </div>
387<div data-drupal-selector="edit-actions" class="form-actions webform-actions form-group js-form-wrapper form-wrapper" id="edit-actions"><button class="webform-button--submit button button--primary js-form-submit form-submit btn-primary btn" data-drupal-selector="edit-actions-submit" type="submit" id="edit-actions-submit" name="op" value="Send message">Send message</button>
388</div>
389<input autocomplete="off" data-drupal-selector="form-ez6v67dikwrha-sy6xnwd9xq-nhnauyubt9ktdtz1hc" type="hidden" name="form_build_id" value="form-Ez6v67dIkWrHA-sY6XNwd9xQ_NhnAUYUBt9KTDTZ1hc" /><input data-drupal-selector="edit-webform-submission-contact-add-form" type="hidden" name="form_id" value="webform_submission_contact_add_form" /><div class="url-textfield form-group js-form-wrapper form-wrapper" style="display: none !important;"><div class="form-item js-form-item form-type-textfield js-form-type-textfield form-item-url js-form-item-url form-group">
390      <label for="edit-url" class="control-label">Leave this field blank</label>
391  
392  
393  <input autocomplete="off" data-drupal-selector="edit-url" class="form-text form-control" type="text" id="edit-url" name="url" value="" size="20" maxlength="128" />
394
395  
396  
397  </div>
398</div>
399
400
401  
402</form>
403
404
405  </div>
406
407              </section>
408
409                </div>
410  </div>
411
412      <footer class="footer container" role="contentinfo">
413        <div class="region region-footer">
414    <section class="views-element-container block block-views block-views-blocknewsletter-promo-block-block-1 clearfix" id="block-views-block-newsletter-promo-block-block-1">
415  
416    
417
418      <div class="form-group"><div class="view view-newsletter-promo-block view-id-newsletter_promo_block view-display-id-block_1 js-view-dom-id-61b4a6c21ad0b6f6cb52193233c7a24d56d173795370a6179f5ffdc1e37ce251">
419  
420    
421      
422      <div class="view-content">
423          <div class="views-row">
424            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div class="newsletter-bottom">
425<div class="col-md-9 col-sm-12 signup-form">
426<!--<h3>Linux Journal Week in Review</h3>
427<p>Sign up to get all the good stuff delivered to your inbox every week.</p>
428
429
430<form id="subForm" class="js-cm-form" action="https://www.createsend.com/t/subscribeerror?description=" method="post" data-id="A61C50BEC994754B1D79C5819EC1255CDBC34DDF3E170B13E2BAC2D68C42BF424F853383C84F5BAE38EAB4CFA5C73907CAC074FF8192503AF80F3699F7FE5CE1">	
431<div class="flexform">-->
432    <!--<label for="fieldEmail">Email</label>
433    <br />-->
434    <!--<input id="fieldEmail" name="cm-gjjtdh-gjjtdh" type="email" class="js-cm-email-input" placeholder="Enter your email. Get the newsletter." 
435    required />
436
437    <button class="js-cm-submit-button" type="submit">Sign Up</button>
438</div>
439<div>
440    <input id="cm-privacy-consent" name="cm-privacy-consent" required type="checkbox"
441    />
442    <label for="cm-privacy-consent">I give my consent to be emailed</label>
443    <input id="cm-privacy-consent-hidden"
444    name="cm-privacy-consent-hidden" type="hidden" value="true" />
445</div>
446
447</form>
448<script type="text/javascript" src="https://js.createsend1.com/javascript/copypastesubscribeformlogic.js"></script>
448
449</div>-->
450<!--<div class="col-md-3 col-sm-12 subs-callout">
451<img src="/sites/default/files/styles/large/public/2019-01/LJ294-Jan2019-Cover_0.jpg" width="100px" />
452
453<h3>The Value of Open Source Journalism</h3>
454<p>
455Subscribe and support our coverage for technology's biggest thinkers – with up to 52% savings.
456</p>
457<strong><a href="https://www.linuxjournal.com/subscribe">Subscribe <i class="fa fa-angle-double-right" aria-hidden="true"></i></a> 
458</strong>
459
460
461
462</div>-->
463</div>
464
465</div>
466      </div>
467
468    </div>
469  
470          </div>
471</div>
472
473  </section>
474
475
476  </div>
477
478      		<div class="footer-blocks col-sm-12">
479                <div class="col-md-6 col-sm-12 footer-left">
480                        <div class="region region-footer-left">
481    <section id="block-connectwithusfooter" class="block block-block-content block-block-content5e722bd4-5e08-454b-8507-956089bfa661 clearfix">
482  
483    
484
485      
486            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div class="footer-heading">Connect With Us <span class="social-media sm-a-no-underline"><a href="https://youtube.com/linuxjournalonline"  alt="Linux Journal on YouTube" aria-label="YouTube"><i class="fa fa-youtube fa-2x"></i></a><a href="https://www.facebook.com/linuxjournal/" alt="Linux Journal on Facebook" aria-label="Facebook"><i class="fa fa-facebook-f fa-2x"></i><a href="https://twitter.com/linuxjournal" alt="Linux Journal on Twitter" aria-label="Twitter"><i class="fa fa-twitter fa-2x"></i></a></span></div>
487
488<p>Linux Journal, representing 25+ years of publication, is the original magazine of the global Open Source community.</p></div>
489      
490  </section>
491
492<section id="block-linuxjournal-block-9" class="block block-block-content block-block-content8669793b-e217-4426-a79e-eb3c21ede127 clearfix">
493  
494    
495
496      
497            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><div id="copyright">© 2026 Slashdot Media, LLC. All rights reserved.</div>
498</div>
499      
500  </section>
501
502<section id="block-privacyterms" class="block block-block-content block-block-contenta203b8bd-80ef-4982-bf6e-784dd7b44120 clearfix">
503  
504    
505
506      
507            <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"><ul class="menu menu--footer-submenu nav" id="terms-nav">
508	<li><a href="https://slashdotmedia.com/privacy-statement/" rel="nofollow" target="_blank">PRIVACY POLICY</a></li>
509	<li><a href="https://slashdotmedia.com/terms-of-use/" rel="nofollow" target="_blank">TERMS OF SERVICE</a></li>
510	<li><a href="/sponsors">ADVERTISE</a></li>
511</ul></div>
512      
513  </section>
514
515
516  </div>
517
518                  </div>
519        
520        		<div class="col-md-4 col-sm-8 footer-middle">
521                        <div class="region region-footer-middle">
522    <nav role="navigation" aria-labelledby="block-footermenucolumn2-menu" id="block-footermenucolumn2">
523            
524  <h2 class="visually-hidden" id="block-footermenucolumn2-menu">Footer Menu Column 2</h2>
525  
526
527        
528      <ul class="menu menu--footer-menu-column-2 nav">
529                      <li class="first">
530                                        <a href="/content/masthead" data-drupal-link-system-path="node/1007727">Masthead</a>
531              </li>
532                      <li>
533                                        <a href="/author" data-drupal-link-system-path="node/1009249">Authors</a>
534              </li>
535                      <li class="active active-trail last">
536                                        <a href="/form/contact" class="active-trail is-active" data-drupal-link-system-path="webform/contact">Contact Us</a>
537              </li>
538        </ul>
539  
540
541  </nav>
542<nav role="navigation" aria-labelledby="block-footermenucolumn3-menu" id="block-footermenucolumn3">
543            
544  <h2 class="visually-hidden" id="block-footermenucolumn3-menu">Footer Menu Column 3</h2>
545  
546
547        
548      <ul class="menu menu--footer-menu-column-3 nav">
549                      <li class="first">
550                                        <a href="/rss_feeds" data-drupal-link-system-path="node/1000457">RSS Feeds</a>
551              </li>
552                      <li class="last">
553                                        <a href="/aboutus" data-drupal-link-system-path="node/1000267">About Us</a>
554              </li>
555        </ul>
556  
557
558  </nav>
559
560  </div>
561
562                  </div>
563        
564                </div>
565    </footer>
566  
567</div> 
568  </div>
569
570    
571    
571<script type="application/json" data-drupal-selector="drupal-settings-json">{"path":{"baseUrl":"\/","scriptPath":null,"pathPrefix":"","currentPath":"webform\/contact","currentPathIsAdmin":false,"isFront":false,"currentLanguage":"en"},"pluralDelimiter":"\u0003","suppressDeprecationErrors":true,"bootstrap":{"forms_has_error_value_toggle":1,"popover_enabled":1,"popover_animation":1,"popover_auto_close":1,"popover_container":"body","popover_content":"","popover_delay":"0","popover_html":0,"popover_placement":"right","popover_selector":"","popover_title":"","popover_trigger":"click"},"linuxjournal":{"googleAnalytics":{"account":"UA-1117794-1"},"disqus":{"origin":"https:\/\/www.linuxjournal.com","prettyUrl":"\/form\/contact","fullUrl":"https:\/\/www.linuxjournal.com\/form\/contact","embedUrl":"https:\/\/linuxjournal.disqus.com\/embed.js","shortname":"linuxjournal"}},"ajaxTrustedUrl":{"form_action_p_pvdeGsVG5zNF_XLGPTvYSKCf43t8qZYSwcfZl2uzM":true,"\/search\/node":true},"user":{"uid":0,"permissionsHash":"a7b3a803411eb9cbd5d7d374ffb326721ee8274ab5a665df8f38311e3aad858c"}}</script>
vendor: 1 bytes, line 571
571
572<script src="/core/assets/vendor/jquery/jquery.min.js?v=3.6.3"></script>
vendor: 1 bytes, line 572
572
573<script src="/core/assets/vendor/underscore/underscore-min.js?v=1.13.6"></script>
vendor: 1 bytes, line 573
573
574<script src="/core/misc/polyfills/element.matches.js?v=9.5.11"></script>
vendor: 1 bytes, line 574
574
575<script src="/core/misc/polyfills/object.assign.js?v=9.5.11"></script>
vendor: 1 bytes, line 575
575
576<script src="/core/assets/vendor/once/once.min.js?v=1.0.1"></script>
vendor: 1 bytes, line 576
576
577<script src="/core/assets/vendor/jquery-once/jquery.once.min.js?v=2.2.3"></script>
vendor: 1 bytes, line 577
577
578<script src="/core/misc/drupalSettingsLoader.js?v=9.5.11"></script>
vendor: 1 bytes, line 578
578
579<script src="/core/misc/drupal.js?v=9.5.11"></script>
vendor: 1 bytes, line 579
579
580<script src="/core/misc/drupal.init.js?v=9.5.11"></script>
vendor: 1 bytes, line 580
580
581<script src="/themes/contrib/bootstrap/js/drupal.bootstrap.js?tfpujm"></script>
vendor: 1 bytes, line 581
581
582<script src="/themes/contrib/bootstrap/js/attributes.js?tfpujm"></script>
vendor: 1 bytes, line 582
582
583<script src="/themes/contrib/bootstrap/js/theme.js?tfpujm"></script>
vendor: 1 bytes, line 583
583
584<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/affix.js?tfpujm"></script>
vendor: 1 bytes, line 584
584
585<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/alert.js?tfpujm"></script>
vendor: 1 bytes, line 585
585
586<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/button.js?tfpujm"></script>
vendor: 1 bytes, line 586
586
587<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/carousel.js?tfpujm"></script>
vendor: 1 bytes, line 587
587
588<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/collapse.js?tfpujm"></script>
vendor: 1 bytes, line 588
588
589<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/dropdown.js?tfpujm"></script>
vendor: 1 bytes, line 589
589
590<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/modal.js?tfpujm"></script>
vendor: 1 bytes, line 590
590
591<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/tooltip.js?tfpujm"></script>
vendor: 1 bytes, line 591
591
592<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/popover.js?tfpujm"></script>
vendor: 1 bytes, line 592
592
593<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/scrollspy.js?tfpujm"></script>
vendor: 1 bytes, line 593
593
594<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/tab.js?tfpujm"></script>
vendor: 1 bytes, line 594
594
595<script src="/themes/linuxjournal/bootstrap/assets/javascripts/bootstrap/transition.js?tfpujm"></script>
vendor: 1 bytes, line 595
595
596<script src="/themes/linuxjournal/js/lj-consentmanager.js?tfpujm"></script>
vendor: 1 bytes, line 596
596
597<script src="/core/misc/jquery.once.bc.js?v=9.5.11"></script>
vendor: 1 bytes, line 597
597
598<script src="/modules/contrib/webform/js/webform.element.details.save.js?v=9.5.11"></script>
vendor: 1 bytes, line 598
598
599<script src="/modules/contrib/webform/js/webform.element.message.js?v=9.5.11"></script>
vendor: 1 bytes, line 599
599
600<script src="/webform/javascript/contact?tfpujm"></script>
vendor: 1 bytes, line 600
600
601<script src="/modules/contrib/webform/js/webform.behaviors.js?v=9.5.11"></script>
vendor: 1 bytes, line 601
601
602<script src="/core/misc/states.js?v=9.5.11"></script>
vendor: 1 bytes, line 602
602
603<script src="/themes/contrib/bootstrap/js/misc/states.js?tfpujm"></script>
vendor: 1 bytes, line 603
603
604<script src="/modules/contrib/webform/js/webform.states.js?v=9.5.11"></script>
vendor: 1 bytes, line 604
604
605<script src="/modules/contrib/webform/modules/webform_bootstrap/js/webform_bootstrap.states.js?v=9.5.11"></script>
vendor: 1 bytes, line 605
605
606<script src="/themes/contrib/bootstrap/js/popover.js?tfpujm"></script>
vendor: 1 bytes, line 606
606
607<script src="/core/misc/debounce.js?v=9.5.11"></script>
vendor: 1 bytes, line 607
607
608<script src="/core/misc/form.js?v=9.5.11"></script>
vendor: 1 bytes, line 608
608
609<script src="/themes/contrib/bootstrap/js/misc/form.js?tfpujm"></script>
vendor: 1 bytes, line 609
609
610<script src="/modules/contrib/webform/js/webform.form.js?v=9.5.11"></script>
vendor: 1 bytes, line 610
610
611<script src="/core/misc/announce.js?v=9.5.11"></script>
vendor: 1 bytes, line 611
611
612<script src="/modules/contrib/webform/js/webform.element.details.toggle.js?v=9.5.11"></script>
612
613
614    <!-- START EMBED -->
615    <noscript><img src="https://api.b2c.com/api/noscript-448i7exgpyqpr9c144q.gif"></noscript>
616<!-- END EMBED -->
617<!-- Matomo -->
618<script type="text/javascript">
619var _paq = _paq || [];
620function initPiwik() {
621  _paq.push(['trackPageView']);
622  _paq.push(['enableLinkTracking']);
623  (function() {
624    var u="https://analytics.linuxjournal.com/";
625    _paq.push(['setTrackerUrl', u+'piwik.php']);
626    _paq.push(['setSiteId', '50']);
627    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
628    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
629  })();
630}
631</script>
631
632<noscript><p><img src="https://analytics.linuxjournal.com/piwik.php?idsite=50&amp;rec=1" style="border:0;" alt="" /></p></noscript>
633<!-- End Matomo Code -->
634<div class="modal-custom overlay-custom" id="ccpa-modal" style="margin-left: 0; display: none; max-width: 100%; width: 100%">
635    <div id="modal-content" class="modal-content">
636        <div class="modal-header" id="ccpa-modal-content-destination"></div>
637        <span class="close" id="modal-close">&times;</span>
638    </div>
639</div>
640  </body>
641</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.