PodOsef – MP3-first, lightweight, simple podcast publishing system.


Over a decade ago I wrote a PHP-based podcast publishing/archive system. The idea behind it was MP3-first: no DB, no complications – just drop an MP3 file into a folder and distribute. The software could generate HTML and an iTunes RSS feed. The main point was simplicity and zero maintenance.

Over the last 10 years, a few issues cropped up. Some were fixed, and a couple of upgrades were slapped on top. However, a few issues (some major ones) remained, and last year I decided to rethink and rewrite the software.

No dream survives contact with reality

The rethinking phase was quite an enjoyable trip. Like a little kid in a candy shop, I was dreaming up anything and everything: rewrite in Java, JS, or Go; add a fancy frontend (to what purpose I wasn’t sure); p2p sync across servers; scaling; and so on.

Finally, the end of 2025 arrived, and it was time to get down to work. As pragmatism settled in, reality hit the fan: make it smaller, faster, and cheaper. Whatever it is, it must work on the smallest droplet, take as little space as possible, respond fast, and require no (or as little) maintenance as possible. With a countdown timer running, the feature set started to shrink rapidly.

Complexity & legacy

Next came a major design decision. A podcast is typically represented by an RSS feed (an XML file), which contains podcast information, a list of episodes, information about each episode, and a URL to the media file. Podcast client software reads the feed and displays it in a beautiful interface, ready for your enjoyment.

But where is the information stored? The internet is full of podcast-oriented CMSs (content management systems), podcast plugins for CMSs, and podcast services. Most of those solutions have one problem: they split information across a database, file storage, and/or config files. As a result we get complexity and, more importantly to me, legacy.

RSS feeds don’t grow infinitely. In theory they can, but in practice sooner or later the feed is trimmed and old episodes are forgotten. Well, not if I can help it – and wouldn’t it be nice to reduce system complexity at the same time?

Choose the source of truth

An audio recording (represented by an MP3 file) can be downloaded, stored, and listened to in any player (burn it to a CD for the old school). But most of the time it lacks the information provided by the RSS feed.

So what if we invert that? What if the source of truth is the MP3 file itself? All podcast information would be stored in the MP3: title, authors, show notes, and cover art. In that case, the RSS feed would simply reflect information already present in the MP3 file (episode).

The Apple Music app lets you edit MP3 metadata (ID3 tags)

In such an arrangement, no database or metadata storage system is required. No need to monitor a DB, no need to back up metadata – almost everything you need is the MP3, since everything else can be recreated from the media file itself, plus a small config for Apple RSS feed requirements.

Make it as simple as possible and no simpler

The prior version was fully dynamic and, in retrospect, that didn’t make much sense, since RSS feeds typically don’t change often. Even if you release new episodes multiple times per day, a statically generated feed is still a far better fit and costs far less.

However, to avoid pauses and polling, the inotify utility was used. It effectively triggers regeneration on file changes, which avoids unnecessary polling and updates the RSS feed as soon as a new episode is uploaded.

Hugo – a static site generator – seemed like a good fit for the task. It’s small, fast, and supports RSS out of the box. In addition, Hugo turned out to be fairly easy to work with, even though I didn’t need much in the way of templating.

Next, it was time to deal with the source of truth. As far as MP3 goes, it has enough pockets to stash your information into. Different versions of software save metadata into different fields, so to accommodate them all – and make it as bulletproof as possible – ExifTool was chosen. It can read metadata from different media formats and write it into metadata files, which are then used by Hugo to generate HTML and RSS.

Main & archive

Now that complexity is addressed, let’s get back to legacy. As I mentioned before, sooner or later podcast episodes are trimmed and, well, lost – unless someone preserves them. In this case it’s fairly easy to organize an archival version of the podcast. Since all the information is contained within the MP3 file itself, all that’s left is to download it.

Taking this idea a little further: an archive can be organized simply by deploying PodOsef along with a downloader (already built). It literally watches the main RSS feed, downloads MP3s, and with a little configuration you’ve got yourself an archival (so to speak) version that keeps downloading new episodes and keeping old ones.

This can be used as a cheap form of scaling, or perhaps community-driven archiving. However, I haven’t put much thought into it, and I have a feeling there might be a better way to scale – but at what cost, I don’t know.

And so…

We got ourselves an MP3-first, simple, lightweight, cheap, minimalistic podcast publishing system – with an archival option – that’s containerized under 250 MB and can run on a small server/instance/droplet, or even on an old machine. 

PodOsef is open source. You can modify it as you see fit, or drop me feedback. While I can’t promise feature fulfillment, I sure do appreciate it. For more technical information, please go to the GitHub repo: https://github.com/meirka/podOsef

Гараж

На этих выходных я наконец-то закончил обустраивать свой гараж. Процесс был долгим, тяжелым и образовательным. Как говорится в одной поговорке: «в теории нет разницы между теорией и практикой, а на практике есть».

Идея с гаражом была достаточно простая — сделать так, чтобы:

  • гараж остался гаражом на две машины, а не стал складским помещением;
  • место для технического обслуживания и ремонтных работ с автомобилем;
  • все под рукой – расположить инструменты и расходники на виду, чтобы не рыскать по шкафам и коробкам когда нужно что-то делать;
  • дополнительное место для поделок;
  • минималистично и мобильно, если нужно работать над чем-то большим (например БТР) то можно быстро переорганизовать гараж;
  • чилл место — можно посидеть, выпить рома и раскурить сигару.

Все запланированное удалось выполнить и даже чуть большее — друзья подарили много инструментов и оборудования, но все расположилось минималистично и практично. Надеюсь удержать всю эту красоту в минимальном состоянии — никакого барахла и хлама.

Чирз!

Сайт kayahara.org

Не так давно закончил сайт kayahara.org – сайт для Дзюдо клуба. Проект я сделал бесплатно, так как сам хожу в этот клуб … что бы стать “большим” и бить всех… хе-хе шучу… на самом деле что бы просто сбросить вес и наладить здоровье. Ну да ладно не буду тут писать про то что такое Дзюдо, а напишу немного о проекте и опыте полученном в процессе.

Сайт kayahara.org сделан статически, то есть без каких либо динамических элементов, хотя и думал туда что нить прикрутить. Классически сайты обычно делались в таблице, что бы все было аккуратно и красиво, но уже как минимум пару лет люди делают сайты без таблиц, применяя CSS… Для меня это был новый опыт, так как я особо с CSS не работал… Было дело пару тройку раз, например для этого сайта, но обычно я брал уже готовый CSS и дорабатывал его как мне надо было. Но на этот раз я решил что сайт сделаю с чистого листа и напишу весь CSS сам.

CSS довольно простой, но при этом мощный… можете немного покопаться в интернете и увидите примеры где один и тоже HTML код под управлением разных CSS дает абсолютно разный результат. Код сайта выглядит одинаково но при изменении CSS все меняется на 180 градусов. Я решил сделать сайт на 100% с использованием CSS и после пары дней у меня вышло то что я хотел… Было интересно посмотреть разные CSS коды и примеры, а так же прочитать разные новшества которые будут введены в новый CSS. Тут можно и даже нужно отметить что CSS это 100% будущее и если кто-то думает стать вэб дизайнером то ему обязательно стоит выучить CSS.

Что же касаемо сайта, то kayahara.org был моим первым опытом, где я написал весь код сам и с чистого листа… Вот например этот сайт был сделан не совсем с чистого листа… дизайн я сделал сам, а вот CSS я модифицировал с прежнего дизайна, который я тоже модифицировал до этого со стандартного темплейта ( шаблона ) ворд пресса. В итоге CSS для kayahara.org получился не слишком чистый, есть пара-тройка вещей которые стоило бы сделать по другому… конечно же не в плане функциональности, а в плане чистоты и структуры кода. Если вы хотите то можете зайти на kayahara.org посмотреть сорсник и открыть CSS, где вы найдете мой код.

Итого это был мой первый опыт написания CSS с чистого листа… и это прикольно, так как начинаешь видеть HTML по другому… да именно HTML, а не CSS… так как когда HTML структура уже дана, то проще написать CSS под нее, а когда надо писать и то и другое, то начинаешь немного путаться и думать как же сделать тут, там и так далее. И все же это хороший опыт… После написания сайта, я понял где у меня были проблемы и что стоит делать по другому…

Как “заднее слово” скажу что для меня написание кода это не просто написал что бы работало, а написал что бы было ещё и красиво. Кодить тоже можно красиво… и я думаю что с этим проектом я получил хороший урок о том как надо кодить красиво.

Мобильная серверная коробка.

Легенда:

Я уже давно думал о том что бы купить/сделать коробку под сервер… Идея заключалась в следующем. Во-первых было бы хорошо что бы все компьютерные фишки ( роутер, рейд и.т.д ) были в одном месте, для простоты переноса… другими словами для мобильности. Во-вторых я заметил что мой рейд, мак мини и все устройства которые содержат какие либо активные ( с вентилятором ) средства охлаждения периодически засоряются и их надо разбирать и чистить… было бы хорошо что бы в “серверной коробке” были фильтры, что бы воздух фильтровался… Ну вроде это все что я хотел… Конечно было бы прикольно если бы это ещё можно было использовать как ящик для дисплея или чего-то в этом роде, типо можно смотреть фильмы и все такое… но думаю что это уже уходит за камки изначальной идеи.

Можно и не париться:

Зачем все это делать? Да действительно зачем? Можно пойти и купить специализированную коробку под сервер и туда все поставить… + все будет правильных размеров, с правильной вентиляцией, а так же красиво. Да действительно, в интернете можно найти готовые профессиональные коробки которые местами даже по карману… Но в моем случае бюджет был на столько маленький что за эти деньге не реально было курить ничего… к тому же у меня было время на руках и можно было попробовать сконструировать то что надо.

Компоненты:

1 – Rubbermaid Hinged Top Tote, 114 L – $13
4 – 120mm Computer Case Cooling Fan – $10 * 4
1 – Air Filter – $5
2 – Hinges – $3
1 – Pegboard – $6
2 – Surge protector – $10 * 2

Итого: $87

Надо отметить что 12-ти сантиметровые вентиляторы оказались довольно дорогими… но я думаю если поискать то можно найти дешевле или вообще бесплатно ( разобрать старые компы или что-то в этом роде). Другие компоненты тоже можно найти дешевле или заменить их чем-то что уже есть под рукой…

Принцип:

Не буду описывать детально как и что делать, так как думаю что это и так понятно ( картинки приложены ниже )… нужно время, инструменты и терпение… А далее делаются дырки для вентиляторов, крепятся вентиляторы ( два на вытяжку и для на втяжку воздуха ). Потом вырезается из доски ( Pegboard ) нужный контр для создания “второго этажа” в пластиковой коробке ( Rubbermaid Hinged Top Tote ). Далее из остатков доски вырезаются рамки что бы держать фильтр на месте. Рамки прикручиваются к петлям ( Hinges ), а петли к коробке – хотя этого можно и не делать, но я подумал что так будет лучше ( в плане простоты смены фильтра ). Потом крепятся Surge protectors и все готово…. Все довольно просто и в основном зависит от размера коробки и того как вы хотите разместить компоненты внутри коробки. О да… забыл сказать что стоит так же изолировать коробку какой нить изоляцией… поскольку давления в коробке по сути нету, то подойдет любая изоляция… главное что бы туда не попадала пыль.

Стоит обратить внимание:

К сожалению когда я делал коробку я пропустил одну вещь. Я забыл что размер устройства не измеряется по корпусу устройства… а нужно учесть размеры штекеров питания, сетевого кабеля и тому подобного! Во-вторых когда делается коробка под какие либо тепло-выделяемые устройства нужно учесть это и подобрать адекватный способ охлаждения! Это очень важно так как вы не хотите что бы устройства работали за рамками операционных параметров… другими словами устройства не должны перегреваться! От сюда стоит подумать о подходящих вентиляторах или другой охлаждающей системе ( например кондиционер ). В-третьих стоит учесть что кабели и все такое занимают место и возможно стоит сделать специальные места где можно кабели сложить вместе и провести куда надо.

Итого:

Я сделал что первоначально планировал, хотя есть некоторые мелкие недоработки… Думаю что со временем я доработаю коробку и возможно даже поставлю её на колеса… хе-хе а так же поставлю двигатель что бы коробка сама ездила по дому за мной… хе-хе думаю это уже излишне… ну да ладно. Если у кого будут вопросы/идеи/впечатления то прошу писать. Чирз.

Tutorials / Пособия

На днях я задумался о том что бы сделать пособия по разным темам. Фишка в том что я сейчас работаю над проектом и проблема в том что мне не хватает информации о то как программировать некоторые вещи… И все же понемногу прогресс идет и местами получаю помощь со стороны. В связи с этим я подумал что возможно стоит сделать пособия о том с чем я работаю… Во-первых эти пособия могут пригодиться другим людям, во-вторых я буду глубже изучать то что делаю и наконец это послужит хорошим пособием для меня, так как если я когда нить вернусь к этому и что-то забуду, то смогу посмотреть свои собственные пособия и вспомню.

Вопрос только всегда во времени и силах… Напишите если кому будет интересна такая фишка.

Чирз.

Дизайн сайта MeIrz2

Наконец-то закончил кожу/тему ( skin/theme ) для сайта. Заняло это больше времени чем я планировал, но что поделать. Я следовал практике: все или ничего – типо или сделать как задумывал или не делать вообще. Вообщем теперь как можно заметить у сайта новый вид. Прошу слишком много не критиковать, я не гнался за супер-пупер навороченным дизайном. Задача была: сделать простой, чистый и приятный сайт. На мой личный взгляд задача была сделана на все 100. Так же пока делал сайт, поправил пару вещей которые неправильно работали.

Надо будет ещё пару вещей доделать… убрать из кода все не нужные пробелы, и тому подобное – whitespaces. Думаю, сперва надо новую тему обкатать, посмотреть как работает в реальном миру, а то я один её тестировал, но это не достаточно. Да хочу отметить что сайт отображается нормально для:

– Firefox 3.5.6
– Safari 4.0.4
– Opera 10.10 и 9.64
– Mobile Safari

Меня выше описанные браузеры удовлетворяют. Теперь я писал о том что использовал программу Artisteer. Теперь могу поделиться своими впечатлениями о программе. Если честно то для меня она была просто бесполезна, так как то что я хотел пришлось все равно писать руками. Я даже не мог использовать сгенерированную Artisteer-ом тему, так как там было столько кода, что разбираться пришлось бы не одну неделю. Я решил взять свой старый, простой темплате ( template ) и переписать на новый лад. После того как я перестал пытаться разобраться с Artisteer кодом, прогресс пошел довольны быстро. Все же проще взять готовую тему/темплате ( theme/template ) и переписать на свой лад – ибо там обычно код написан чисто и красиво, а значит легко разобраться и модифицировать. Надо отметить что я все же использовал некоторый код из Artisteer-а, но только часть с CSS и то немного – например смотрел цвета и все в этом роде. Теперь тому кто занимается вэб разработкой наверное и это не надо. Но надо отметить только одно, если вы не знаете ничего о программирование и хотите типо сделать свою тему для сайта, то Artisteer предложит вам довольно интересные варианты, но они все равно ограничены и убер-супер-друпер тему там не сделать! Проще будет просто найти в интернете то что нравиться и скачать!

Итого долгожданная тема закончена, я хотел и я сделал! Как можно заметить я сменил стиль… Что-то внутри поменялось… Хе-хе можно только догадываться что именно. Но могу заверить, что обновка не просто смена стиля… Символ! Пора занять свое место.

Ладно всем чирз и пишите в комменты если найдете что не так или просто так.

Кстати вот ссылки на предыдущие статьи с дизайном сайта:

Дизайн сайта #4 | Дизайн сайта #3 | Дизайн сайта #2 | Дизайн сайта

Или просто зайдите в категорию Проекты

ЗЫ: Отдаю дань старому дизайну:
Screen shot 2009-12-29 at 12.10.14 AM

Дизайн сайта #4

Сегодня был долгий день… Разбирался с разными проблемами и наконец-то начал работать над новым дизайном для сайта. То есть дизайн типо сделан, но вот “кожа” для блога ещё в ранней степени разработки. Теперь тут есть интересный момент… Я думал как написать “кожу” для блога, но что бы процесс был простой и без болезненный. Вообщем тут особо много решений нету. Я думаю что есть 2-а основных подхода:

– Взять готовый skin ( кожу ) и переписать на свой лад.
– Использовать какой нить софт что бы с генерировать skin и потом подправить её.

Вообще по хорошему я хотел написать все с чистого листа по спецификации, но потом понял что это займет слишком много времени ( которого у меня нету ). Да и процесс тестирования будет долгим. Итого я все же решил воспользоваться одним из двух выше описанных решений.

Я долго думал и выбирал один из двух подходов. Первый подход хорош, но если найти не совсем подходящий скин, то потом прийдется много переписывать и чистить… Меня это смущало, так как один раз это уже делал и осталось много багов ( типо стер кусок кода, а он был нужный ). Так же пришлось много чего подгонять, догонять и так далее… И я подумал что возможно стоит попробовать по другому.

Выбрал я второй подход. Теперь нужно было найти программу которая могла бы на лету сделать skin под wordpress да и ещё что бы можно было доработать или переделать skin в программе, перед тем как выплюнуть готовый код. Копался в интернете и нашел только одну программу которая может такое сделать – Artisteer. Сегодня как раз поставил и начал работать. Программа интересная, там нету не какого кода, а только кнопки с разными настройками. На первых парах я думал что допустил ошибку и мол программа какая-то левая… Как это так что под не видно и нельзя там самому что-то править ручками. Но потом решил не сдаваться и попробовать сделать что я хотел. На данный момент я остановился тут:
Screen shot 2009-12-24 at 11.25.09 PM
Явно работа только началась и после проб и ошибок я вроде разобрался как и что. Начал по немногу продвигаться в нужном направлении. Есть много вещей которые Artisteer не может сделать ( или я пока не понял как ). Например я хочу засунуть поиск и ещё пару линков в хедер ( header ), но я так и не понял как это можно сделать в этой программе. Но меня это не смущает, так как я знаю что мне все равно прийдется чистить код руками и кое что переписывать. Но тогда зачем так делать? Мне кажется что это мне сэкономит много времени. Ну пока что я только начал работать и думаю что потом допишу что и как. Вообщем следующие несколько дней я проведу работая над этим.

Кстати Artisteer пока что релизнут только под винду так что я работаю на своей тестовой машине которая пень 3 – 730 Mhz / 448 MB памяти… работает все это не мерено медленно. Я даже думал поставить Virtual Box на мак, винду поверх и там работать, но потом что-то стало в облом и решил так… А вот фотки моей тестовой машины:
Picture0001_25-12-2009_00-15-49Picture0002_25-12-2009_00-15-23Picture0003_25-12-2009_00-14-58

Кстати вот ссылки на предыдущие статьи с дизайном сайта:
Дизайн сайта #3 | Дизайн сайта #2 | Дизайн сайта
Или просто зайдите в категорию Проекты

Аппле клава A1048

Вчера вечером вернулся из Тороно. Сегодня уже работал над тем что хотел сделать некоторое время назад, а именно отремонтировать Аппле клавиатуру A1048. Вот ссылка на первый пост о клаве.

Apple Keyboard A1048

Теперь чуть предистории… эту клаву хотели выкинуть, так как на неё пролили что-то и она перестала работать ( частично ). Вот фотки до того как я её почистил:

Picture0007_12-11-2009_21-23-08Picture0008_12-11-2009_21-22-41

Как можно видеть из фоток клава была просто у жудком состоянии. Но я решил не сдавать и как уже говорил в другом посте, сперва я её отмыл, а потом разбирался что не так и почему она не работала… Надо отметить что большинство клавиш работало, но некоторые ( важные ) не работали. Например не работали стрелки ( влево, вниз, вправо ), по-моему не работало около 7-9 клавиш. Далее я разобрал клаву и посмотрел что внутри:

Picture0011_23-12-2009_22-07-33Picture0012_23-12-2009_22-06-59Picture0013_23-12-2009_22-06-05

По сути вся клава – это просто 2-а пластиковых листа с напыленными дорожками и ещё один листом между этими двумя ( для изоляции ). Итого эти дорожки хорошо горят ( если закаратить ), но при этом пластик не горит и не плавиться… Теперь, перепаивать дорожки не реально из-за пластиковой основы. Клеить – это вариант, НО нужен клей или что-то подобные с электропроводимостью ( у меня такого нету ). Итого я решил сделать следующее. После того как прозвонил дорожки и выяснил что и где перегорело, я взял фольгу ( обычную кухонную ) и клейкую ленту ( прозрачную ). Ну а далее, вырезаем тонкие дорожки из фольги, прокладываем к схеме, прижимаем ( что бы был контакт – тут полезно иметь 4-е руки… зыыы мне помогал Ваня ), тестируем на проводимость ВСЕЙ дорожки и если все работает то опять же прижимаем ( как можно сильнее ) вырезанную из фольги дорожку к схеме и приклеиваем клейкой лентой. Далее проверяем опять ( прозваниваем все дорожку ), подключаем к компу ( разобранную клаву ) и смотрим если работает… В принципе этого можно не делать так как если есть контакт при прозвоне то все должно работать, но поскольку разбирать эту клаву муторно, то лучше проверять все сразу, что бы потом не мучаться, но опять же это моя политика.

В моем случае перегорели только 2-е дорожки и после 3-4 часов ремонта, клава заработала. Вот сейчас сижу и пишу этот пост на этой клаве. Теперь надо отметить что мой подход ( фольга и клейкая лента ) не самый лучший. Так как если отлепиться то клава перестанет работать опять. Я лично надеюсь на то что мои самодельные дорожки не отклеяться из-за того что схема сжата с двух сторон. С одной стороны пластик с клавишами, а с другой металический лист. Кстати основной вес клавиатуры приходит как раз от этого металического листа.

Ну вроде и все, клава работает и я жудко рад ( такие клавы на дороге не валяются ) и надеюсь что она ещё долго проработает. Если будут какие нить апдейты в будущем то постараюсь написать.

ЗЫ: Если у кого-то есть другие способы решения подобной проблемы, пишите. Мне будет интересно!

Апдейт от [ 29-12-2009]:

И так как я написал в комментах клава проработала примерно 3 дня после чего пробел и ещё пара клавишь перестали работать. Я понял что походу отошла одна из дорожек. Вообще решил разобрать и починить! Сегодня было время и я так и сделал. Разобрал, отклеил дорожку и начал опять все тестировать… Потом вырезал новую дорожку из фольги и начал её осторожно приклеивать. Потом тестировал и смотрел как и что. Выяснил одно – клейкой лентой тут не обойтись. Походу нужно прижимать дорожку сильнее… Сперва расстроился, мол как её прижать сильнее? А потом решил что стоит вырезать толстый кусок бумаги и положить в доль дорожки. Так и сделал, взал бумаги из под записей с какой-то лекции, сложил её в несколько слоев и проложил в доль всей моей дорожки. Потом скрутил клаву обратно и все опять заработало. Не знаю сколько клава будет продолжать работать, но на данный момент она хорошо работает. Буду надеяться что чинить больше её не надо будет. Но если что-то буду пытаться дальше её доводить до “ума”.

Picture0002_29-12-2009_21-31-14Picture0001_29-12-2009_21-31-39

Чирз.

Апгрейд

Вчера немного усовершенствовал свое свое рабочее/учебное место.
Во-первых: я подсоединил 22 инчевый дисплей к лаптопу, что прикольно так как больше рабочего пространства. Теперь можно открывать документы и вторичные программы на отдельном дисплее, что типо позволяет увеличить “производительность”.
Во-вторых: я поднял стол немного. Так как мое кресло сидит высоко, а стол ниже – это было не удобно. Так вот поднял стол и стало лучше. Правда это ещё не конец, мне надо сделать подставки под ножки стола, более … как бы сказать … нормальными. Надо их ещё подпилить, и тому подобное что бы они лучше сидел.

Вообщем ещё надо немного доделать мое рабочие место, но потихоньку оно преобразуется в то что я хочу. Конечно некоторые посмотрят на это дело сказали бы как минимум “скромно”, но на самом делее кому нужны крутые столы и большие машины… Так как я приверженец минимизации, то это моя мечта.

Думаю если удачно доделаю стол, то возможно надо будет взяться за ещё один проект который я хотел сделать уже очень давно – “Серверная” коробка. Теперь есть пара проблем с моей идей “серверной” коробки – и это спецификация, я просто не уверен что именно я хочу. Но вот общая идея: хочу сделать коробку где будет находиться мой сервер + место для бэкап батарей ( на случай сбоя электричества ) + пара роутеров ( 3-4 ) + место для 3 компьютеров ( ещё не знаю точно размены ) + пара рейдов ( коробок с хардами ) + коробка должна быть мобильна. Это примерно что я хочу сделать. О да чуть не знабыл о системе вентиляции и фильтрации ( что бы пыль и грязь не попадала во внутрь ) – надоело чистить железо. Раз в год разбираю железо и вычищаю пыль.

Хе-хе самое смешное не то что такое сделать реально, а то что я хочу это сделать на небольшом бюджете. Я смотрел подобные коробки в интернете, конечно не совсем то что я хочу, но примерно и это дело стоило как минимум 500-600 долларов, а то и больше. Большие коробки вообще стоят больше 1000 долларов, хотя по сути оно того не стоит… Не может металический “шкаф” стоит больше 1000 долларов, даже если он на колесиках.

Ладно, время не жмет все это не к спеху.