Click here to Skip to main content
15,896,557 members
Articles / Web Development / ASP.NET

HTMLEditor Provider - How to write a custom provider for ASP.NET 2.0

Rate me:
Please Sign up or sign in to vote.
4.75/5 (29 votes)
5 Sep 200614 min read 123K   2.4K   123  
A tutorial on how to use the Provider Templates to create your own provider.
/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2006 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * 		http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 * 		http://www.fckeditor.net/
 * 
 * "Support Open Source software. What about a donation today?"
 * 
 * File Name: pl.js
 * 	Polish language file.
 * 
 * File Authors:
 * 		Jakub Boesche (jboesche@gazeta.pl)
 * 		Maciej Bochynski (maciej.bochynski@lubman.pl)
 */

var FCKLang =
{
// Language direction : "ltr" (left to right) or "rtl" (right to left).
Dir					: "ltr",

ToolbarCollapse		: "Zwiń pasek narzędzi",
ToolbarExpand		: "Rozwiń pasek narzędzi",

// Toolbar Items and Context Menu
Save				: "Zapisz",
NewPage				: "Nowa strona",
Preview				: "Podgląd",
Cut					: "Wytnij",
Copy				: "Kopiuj",
Paste				: "Wklej",
PasteText			: "Wklej jako czysty tekst",
PasteWord			: "Wklej z Worda",
Print				: "Drukuj",
SelectAll			: "Zaznacz wszystko",
RemoveFormat		: "Usuń formatowanie",
InsertLinkLbl		: "Hiperłącze",
InsertLink			: "Wstaw/edytuj hiperłącze",
RemoveLink			: "Usuń hiperłącze",
Anchor				: "Wstaw/edytuj kotwicę",
InsertImageLbl		: "Obrazek",
InsertImage			: "Wstaw/edytuj obrazek",
InsertFlashLbl		: "Flash",
InsertFlash			: "Dodaj/Edytuj element Flash",
InsertTableLbl		: "Tabela",
InsertTable			: "Wstaw/edytuj tabelę",
InsertLineLbl		: "Linia pozioma",
InsertLine			: "Wstaw poziomą linię",
InsertSpecialCharLbl: "Znak specjalny",
InsertSpecialChar	: "Wstaw znak specjalny",
InsertSmileyLbl		: "Emotikona",
InsertSmiley		: "Wstaw emotikonę",
About				: "O programie FCKeditor",
Bold				: "Pogrubienie",
Italic				: "Kursywa",
Underline			: "Podkreślenie",
StrikeThrough		: "Przekreślenie",
Subscript			: "Indeks dolny",
Superscript			: "Indeks górny",
LeftJustify			: "Wyrównaj do lewej",
CenterJustify		: "Wyrównaj do środka",
RightJustify		: "Wyrównaj do prawej",
BlockJustify		: "Wyrównaj do lewej i prawej",
DecreaseIndent		: "Zmniejsz wcięcie",
IncreaseIndent		: "Zwiększ wcięcie",
Undo				: "Cofnij",
Redo				: "Ponów",
NumberedListLbl		: "Lista numerowana",
NumberedList		: "Wstaw/usuń numerowanie listy",
BulletedListLbl		: "Lista wypunktowana",
BulletedList		: "Wstaw/usuń wypunktowanie listy",
ShowTableBorders	: "Pokazuj ramkę tabeli",
ShowDetails			: "Pokaż szczegóły",
Style				: "Styl",
FontFormat			: "Format",
Font				: "Czcionka",
FontSize			: "Rozmiar",
TextColor			: "Kolor tekstu",
BGColor				: "Kolor tła",
Source				: "Źródło dokumentu",
Find				: "Znajdź",
Replace				: "Zamień",
SpellCheck			: "Sprawdź pisownię",
UniversalKeyboard	: "Klawiatura Uniwersalna",
PageBreakLbl		: "Odstęp",
PageBreak			: "Wstaw odstęp",

Form			: "Formularz",
Checkbox		: "Checkbox",
RadioButton		: "Pole wyboru",
TextField		: "Pole tekstowe",
Textarea		: "Obszar tekstowy",
HiddenField		: "Pole ukryte",
Button			: "Przycisk",
SelectionField	: "Lista wyboru",
ImageButton		: "Przycisk obrazek",

FitWindow		: "Maksymalizuj rozmiar edytora",

// Context Menu
EditLink			: "Edytuj hiperłącze",
CellCM				: "Komórka",
RowCM				: "Wiersz",
ColumnCM			: "Kolumna",
InsertRow			: "Wstaw wiersz",
DeleteRows			: "Usuń wiersze",
InsertColumn		: "Wstaw kolumnę",
DeleteColumns		: "Usuń kolumny",
InsertCell			: "Wstaw komórkę",
DeleteCells			: "Usuń komórki",
MergeCells			: "Połącz komórki",
SplitCell			: "Podziel komórkę",
TableDelete			: "Usuń tabelę",
CellProperties		: "Właściwości komórki",
TableProperties		: "Właściwości tabeli",
ImageProperties		: "Właściwości obrazka",
FlashProperties		: "Właściwości elementu Flash",

AnchorProp			: "Właściwości kotwicy",
ButtonProp			: "Właściwości przycisku",
CheckboxProp		: "Checkbox - właściwości",
HiddenFieldProp		: "Właściwości pola ukrytego",
RadioButtonProp		: "Właściwości pola wyboru",
ImageButtonProp		: "Właściwości przycisku obrazka",
TextFieldProp		: "Właściwości pola tekstowego",
SelectionFieldProp	: "Właściwości listy wyboru",
TextareaProp		: "Właściwości obszaru tekstowego",
FormProp			: "Właściwości formularza",

FontFormats			: "Normalny;Tekst sformatowany;Adres;Nagłówek 1;Nagłówek 2;Nagłówek 3;Nagłówek 4;Nagłówek 5;Nagłówek 6",

// Alerts and Messages
ProcessingXHTML		: "Przetwarzanie XHTML. Proszę czekać...",
Done				: "Gotowe",
PasteWordConfirm	: "Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Word. Czy chcesz go wyczyścic przed wklejeniem?",
NotCompatiblePaste	: "Ta funkcja jest dostępna w programie Internet Explorer w wersji 5.5 lub wyższej. Czy chcesz wkleić tekst bez czyszczenia?",
UnknownToolbarItem	: "Nieznany element paska narzędzi \"%1\"",
UnknownCommand		: "Nieznana komenda \"%1\"",
NotImplemented		: "Komenda niezaimplementowana",
UnknownToolbarSet	: "Pasek narzędzi \"%1\" nie istnieje",
NoActiveX			: "Ustawienia zabezpieczeń twojej przeglądarki mogą ograniczyć niektóre funkcje edytora. Musisz włączyć opcję \"Uruchamianie formantów Activex i dodatków plugin\". W przeciwnym wypadku mogą pojawiać się błędy.",
BrowseServerBlocked : "Okno menadżera plików nie może zostać otwarte. Upewnij się, że wszystkie blokady popup są wyłączone.",
DialogBlocked		: "Nie można otworzyć okna dialogowego. Upewnij się, że wszystkie blokady popup są wyłączone.",

// Dialogs
DlgBtnOK			: "OK",
DlgBtnCancel		: "Anuluj",
DlgBtnClose			: "Zamknij",
DlgBtnBrowseServer	: "Przeglądaj",
DlgAdvancedTag		: "Zaawansowane",
DlgOpOther			: "<Inny>",
DlgInfoTab			: "Informacje",
DlgAlertUrl			: "Proszę podać URL",

// General Dialogs Labels
DlgGenNotSet		: "<nieustawione>",
DlgGenId			: "Id",
DlgGenLangDir		: "Kierunek tekstu",
DlgGenLangDirLtr	: "Od lewej do prawej (LTR)",
DlgGenLangDirRtl	: "Od prawej do lewej (RTL)",
DlgGenLangCode		: "Kod języka",
DlgGenAccessKey		: "Klawisz dostępu",
DlgGenName			: "Nazwa",
DlgGenTabIndex		: "Indeks tabeli",
DlgGenLongDescr		: "Long Description URL",
DlgGenClass			: "Stylesheet Classes",
DlgGenTitle			: "Advisory Title",
DlgGenContType		: "Advisory Content Type",
DlgGenLinkCharset	: "Linked Resource Charset",
DlgGenStyle			: "Styl",

// Image Dialog
DlgImgTitle			: "Właściwości obrazka",
DlgImgInfoTab		: "Informacje o obrazku",
DlgImgBtnUpload		: "Syślij",
DlgImgURL			: "Adres URL",
DlgImgUpload		: "Wyślij",
DlgImgAlt			: "Tekst zastępczy",
DlgImgWidth			: "Szerokość",
DlgImgHeight		: "Wysokość",
DlgImgLockRatio		: "Zablokuj proporcje",
DlgBtnResetSize		: "Przywróć rozmiar",
DlgImgBorder		: "Ramka",
DlgImgHSpace		: "Odstęp poziomy",
DlgImgVSpace		: "Odstęp pionowy",
DlgImgAlign			: "Wyrównaj",
DlgImgAlignLeft		: "Do lewej",
DlgImgAlignAbsBottom: "Do dołu",
DlgImgAlignAbsMiddle: "Do środka w pionie",
DlgImgAlignBaseline	: "Do linii bazowej",
DlgImgAlignBottom	: "Do dołu",
DlgImgAlignMiddle	: "Do środka",
DlgImgAlignRight	: "Do prawej",
DlgImgAlignTextTop	: "Do góry tekstu",
DlgImgAlignTop		: "Do góry",
DlgImgPreview		: "Podgląd",
DlgImgAlertUrl		: "Podaj adres obrazka.",
DlgImgLinkTab		: "Link",

// Flash Dialog
DlgFlashTitle		: "Właściwości elementu Flash",
DlgFlashChkPlay		: "Auto Odtwarzanie",
DlgFlashChkLoop		: "Pętla",
DlgFlashChkMenu		: "Włącz menu",
DlgFlashScale		: "Skaluj",
DlgFlashScaleAll	: "Pokaż wszystko",
DlgFlashScaleNoBorder	: "Bez Ramki",
DlgFlashScaleFit	: "Dokładne dopasowanie",

// Link Dialog
DlgLnkWindowTitle	: "Hiperłącze",
DlgLnkInfoTab		: "Informacje ",
DlgLnkTargetTab		: "Cel",

DlgLnkType			: "Typ hiperłącza",
DlgLnkTypeURL		: "Adres URL",
DlgLnkTypeAnchor	: "Odnośnik wewnątrz strony",
DlgLnkTypeEMail		: "Adres e-mail",
DlgLnkProto			: "Protokół",
DlgLnkProtoOther	: "<inny>",
DlgLnkURL			: "Adres URL",
DlgLnkAnchorSel		: "Wybierz etykietę",
DlgLnkAnchorByName	: "Wg etykiety",
DlgLnkAnchorById	: "Wg identyfikatora elementu",
DlgLnkNoAnchors		: "<W dokumencie nie zdefiniowano żadnych etykiet>",
DlgLnkEMail			: "Adres e-mail",
DlgLnkEMailSubject	: "Temat",
DlgLnkEMailBody		: "Treść",
DlgLnkUpload		: "Upload",
DlgLnkBtnUpload		: "Wyślij",

DlgLnkTarget		: "Cel",
DlgLnkTargetFrame	: "<ramka>",
DlgLnkTargetPopup	: "<wyskakujące okno>",
DlgLnkTargetBlank	: "Nowe okno (_blank)",
DlgLnkTargetParent	: "Okno nadrzędne (_parent)",
DlgLnkTargetSelf	: "To samo okno (_self)",
DlgLnkTargetTop		: "Okno najwyższe w hierarchii (_top)",
DlgLnkTargetFrameName	: "Nazwa Ramki Docelowej",
DlgLnkPopWinName	: "Nazwa wyskakującego okna",
DlgLnkPopWinFeat	: "Właściwości wyskakującego okna",
DlgLnkPopResize		: "Możliwa zmiana rozmiaru",
DlgLnkPopLocation	: "Pasek adresu",
DlgLnkPopMenu		: "Pasek menu",
DlgLnkPopScroll		: "Paski przewijania",
DlgLnkPopStatus		: "Pasek statusu",
DlgLnkPopToolbar	: "Pasek narzędzi",
DlgLnkPopFullScrn	: "Pełny ekran (IE)",
DlgLnkPopDependent	: "Okno zależne (Netscape)",
DlgLnkPopWidth		: "Szerokość",
DlgLnkPopHeight		: "Wysokość",
DlgLnkPopLeft		: "Pozycja w poziomie",
DlgLnkPopTop		: "Pozycja w pionie",

DlnLnkMsgNoUrl		: "Podaj adres URL",
DlnLnkMsgNoEMail	: "Podaj adres e-mail",
DlnLnkMsgNoAnchor	: "Wybierz etykietę",

// Color Dialog
DlgColorTitle		: "Wybierz kolor",
DlgColorBtnClear	: "Wyczyść",
DlgColorHighlight	: "Podgląd",
DlgColorSelected	: "Wybrane",

// Smiley Dialog
DlgSmileyTitle		: "Wstaw emotikonę",

// Special Character Dialog
DlgSpecialCharTitle	: "Wybierz znak specjalny",

// Table Dialog
DlgTableTitle		: "Właściwości tabeli",
DlgTableRows		: "Liczba wierszy",
DlgTableColumns		: "Liczba kolumn",
DlgTableBorder		: "Grubość ramki",
DlgTableAlign		: "Wyrównanie",
DlgTableAlignNotSet	: "<brak ustawień>",
DlgTableAlignLeft	: "Do lewej",
DlgTableAlignCenter	: "Do środka",
DlgTableAlignRight	: "Do prawej",
DlgTableWidth		: "Szerokość",
DlgTableWidthPx		: "piksele",
DlgTableWidthPc		: "%",
DlgTableHeight		: "Wysokość",
DlgTableCellSpace	: "Odstęp pomiędzy komórkami",
DlgTableCellPad		: "Margines wewnętrzny komórek",
DlgTableCaption		: "Tytuł",
DlgTableSummary		: "Podsumowanie",

// Table Cell Dialog
DlgCellTitle		: "Właściwości komórki",
DlgCellWidth		: "Szerokość",
DlgCellWidthPx		: "piksele",
DlgCellWidthPc		: "%",
DlgCellHeight		: "Wysokość",
DlgCellWordWrap		: "Zawijanie tekstu",
DlgCellWordWrapNotSet	: "<brak ustawień>",
DlgCellWordWrapYes	: "Tak",
DlgCellWordWrapNo	: "Nie",
DlgCellHorAlign		: "Wyrównanie poziome",
DlgCellHorAlignNotSet	: "<brak ustawień>",
DlgCellHorAlignLeft	: "Do lewej",
DlgCellHorAlignCenter	: "Do środka",
DlgCellHorAlignRight: "Do prawej",
DlgCellVerAlign		: "Wyrównanie pionowe",
DlgCellVerAlignNotSet	: "<brak ustawień>",
DlgCellVerAlignTop	: "Do góry",
DlgCellVerAlignMiddle	: "Do środka",
DlgCellVerAlignBottom	: "Do dołu",
DlgCellVerAlignBaseline	: "Do linii bazowej",
DlgCellRowSpan		: "Zajętość wierszy",
DlgCellCollSpan		: "Zajętość kolumn",
DlgCellBackColor	: "Kolor tła",
DlgCellBorderColor	: "Kolor ramki",
DlgCellBtnSelect	: "Wybierz...",

// Find Dialog
DlgFindTitle		: "Znajdź",
DlgFindFindBtn		: "Znajdź",
DlgFindNotFoundMsg	: "Nie znaleziono szukanego hasła.",

// Replace Dialog
DlgReplaceTitle			: "Zamień",
DlgReplaceFindLbl		: "Znajdź:",
DlgReplaceReplaceLbl	: "Zastąp przez:",
DlgReplaceCaseChk		: "Uwzględnij wielkość liter",
DlgReplaceReplaceBtn	: "Zastąp",
DlgReplaceReplAllBtn	: "Zastąp wszystko",
DlgReplaceWordChk		: "Całe słowa",

// Paste Operations / Dialog
PasteErrorPaste	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wklejanie tekstu. Użyj skrótu klawiszowego Ctrl+V.",
PasteErrorCut	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.",
PasteErrorCopy	: "Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.",

PasteAsText		: "Wklej jako czysty tekst",
PasteFromWord	: "Wklej z Worda",

DlgPasteMsg2	: "Proszę wkleić w poniższym polu używając klawiaturowego skrótu (<STRONG>Ctrl+V</STRONG>) i kliknąć <STRONG>OK</STRONG>.",
DlgPasteIgnoreFont		: "Ignoruj definicje 'Font Face'",
DlgPasteRemoveStyles	: "Usuń definicje Stylów",
DlgPasteCleanBox		: "Wyczyść",

// Color Picker
ColorAutomatic	: "Automatycznie",
ColorMoreColors	: "Więcej kolorów...",

// Document Properties
DocProps		: "Właściwości dokumentu",

// Anchor Dialog
DlgAnchorTitle		: "Właściwości kotwicy",
DlgAnchorName		: "Nazwa kotwicy",
DlgAnchorErrorName	: "Wpisz nazwę kotwicy",

// Speller Pages Dialog
DlgSpellNotInDic		: "Słowa nie ma w słowniku",
DlgSpellChangeTo		: "Zmień na",
DlgSpellBtnIgnore		: "Ignoruj",
DlgSpellBtnIgnoreAll	: "Ignoruj wszystkie",
DlgSpellBtnReplace		: "Zmień",
DlgSpellBtnReplaceAll	: "Zmień wszystkie",
DlgSpellBtnUndo			: "Undo",
DlgSpellNoSuggestions	: "- Brak sugestii -",
DlgSpellProgress		: "Trwa sprawdzanie ...",
DlgSpellNoMispell		: "Sprawdzanie zakończone: nie znaleziono błędów",
DlgSpellNoChanges		: "Sprawdzanie zakończone: nie zmieniono żadnego słowa",
DlgSpellOneChange		: "Sprawdzanie zakończone: zmieniono jedno słowo",
DlgSpellManyChanges		: "Sprawdzanie zakończone: zmieniono %l słów",

IeSpellDownload			: "Słownik nie jest zainstalowany. Chcesz go ściągnąć?",

// Button Dialog
DlgButtonText	: "Tekst (Wartość)",
DlgButtonType	: "Typ",

// Checkbox and Radio Button Dialogs
DlgCheckboxName		: "Nazwa",
DlgCheckboxValue	: "Wartość",
DlgCheckboxSelected	: "Zaznaczony",

// Form Dialog
DlgFormName		: "Nazwa",
DlgFormAction	: "Akcja",
DlgFormMethod	: "Metoda",

// Select Field Dialog
DlgSelectName		: "Nazwa",
DlgSelectValue		: "Wartość",
DlgSelectSize		: "Rozmiar",
DlgSelectLines		: "linii",
DlgSelectChkMulti	: "Wielokrotny wybór",
DlgSelectOpAvail	: "Dostępne opcje",
DlgSelectOpText		: "Tekst",
DlgSelectOpValue	: "Wartość",
DlgSelectBtnAdd		: "Dodaj",
DlgSelectBtnModify	: "Zmień",
DlgSelectBtnUp		: "Do góry",
DlgSelectBtnDown	: "Do dołu",
DlgSelectBtnSetValue : "Ustaw wartość zaznaczoną",
DlgSelectBtnDelete	: "Usuń",

// Textarea Dialog
DlgTextareaName	: "Nazwa",
DlgTextareaCols	: "Kolumnu",
DlgTextareaRows	: "Wiersze",

// Text Field Dialog
DlgTextName			: "Nazwa",
DlgTextValue		: "Wartość",
DlgTextCharWidth	: "Szerokość w znakach",
DlgTextMaxChars		: "Max. szerokość",
DlgTextType			: "Typ",
DlgTextTypeText		: "Tekst",
DlgTextTypePass		: "Hasło",

// Hidden Field Dialog
DlgHiddenName	: "Nazwa",
DlgHiddenValue	: "Wartość",

// Bulleted List Dialog
BulletedListProp	: "Właściwości listy punktowanej",
NumberedListProp	: "Właściwości listy numerowanej",
DlgLstType			: "Typ",
DlgLstTypeCircle	: "Koło",
DlgLstTypeDisc		: "Dysk",
DlgLstTypeSquare	: "Kwadrat",
DlgLstTypeNumbers	: "Cyfry (1, 2, 3)",
DlgLstTypeLCase		: "Małe litery (a, b, c)",
DlgLstTypeUCase		: "Duże litery (A, B, C)",
DlgLstTypeSRoman	: "Numeracja rzymska (i, ii, iii)",
DlgLstTypeLRoman	: "Numeracja rzymska (I, II, III)",

// Document Properties Dialog
DlgDocGeneralTab	: "Ogólne",
DlgDocBackTab		: "Tło",
DlgDocColorsTab		: "Kolory i marginesy",
DlgDocMetaTab		: "Meta Dane",

DlgDocPageTitle		: "Tytuł strony",
DlgDocLangDir		: "Kierunek pisania",
DlgDocLangDirLTR	: "Od lewej do prawej (LTR)",
DlgDocLangDirRTL	: "Od prawej do lewej (RTL)",
DlgDocLangCode		: "Kod języka",
DlgDocCharSet		: "Kodowanie znaków",
DlgDocCharSetOther	: "Inne kodowanie znaków",

DlgDocDocType		: "Nagłowek typu dokumentu",
DlgDocDocTypeOther	: "Inny typ dokumentu",
DlgDocIncXHTML		: "Dołącz deklarację XHTML",
DlgDocBgColor		: "Kolor tła",
DlgDocBgImage		: "Obrazek tła",
DlgDocBgNoScroll	: "Tło nieruchome",
DlgDocCText			: "Tekst",
DlgDocCLink			: "Hiperłącze",
DlgDocCVisited		: "Odwiedzane hiperłącze",
DlgDocCActive		: "Aktywne hiperłącze",
DlgDocMargins		: "Marginesy strony",
DlgDocMaTop			: "Górny",
DlgDocMaLeft		: "Lewy",
DlgDocMaRight		: "Prawy",
DlgDocMaBottom		: "Dolny",
DlgDocMeIndex		: "Słowa kluczowe (oddzielone przecinkami)",
DlgDocMeDescr		: "Opis dokumentu",
DlgDocMeAuthor		: "Autor",
DlgDocMeCopy		: "Copyright",
DlgDocPreview		: "Podgląd",

// Templates Dialog
Templates			: "Sablony",
DlgTemplatesTitle	: "Szablony zawartości",
DlgTemplatesSelMsg	: "Wybierz szablon do otwarcia w edytorze<br>(obecna zawartość okna edytora zostanie utracona):",
DlgTemplatesLoading	: "Ładowanie listy szablonów. Proszę czekać...",
DlgTemplatesNoTpl	: "(Brak zdefiniowanych szablonów)",

// About Dialog
DlgAboutAboutTab	: "O ...",
DlgAboutBrowserInfoTab	: "O przeglądarce",
DlgAboutLicenseTab	: "Licencja",
DlgAboutVersion		: "wersja",
DlgAboutLicense		: "na licencji GNU Lesser General Public License",
DlgAboutInfo		: "Więcej informacji uzyskasz pod adresem"
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Systems Engineer Virtual RadioLogic
United States United States
Todd Davis has been working in web and application development for several years, using Silverlight, ASP.NET, VB.NET, C#, C++ and Javascript, as well as a great deal of work with SQL server and IIS.

He currently works for Virtual Radiologic in Eden Prairie, MN, however he is better known for his varied work in the open source community, especially the DotNetNuke project for which he provided several world-renowned training videos and modules. A huge advocate of open source and open knowledge sharing, everything on his website (www.SeaburyDesign.com) is always offered for free.

Whenever he is not actively coding at his laptop (a rarity to be sure), he can be found woodworking, walking with his wife and kids, or motoring along the back roads of MN on his Harley Davidson Fatboy.

Comments and Discussions