<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Toma</title>
    <description>The latest articles on Forem by Toma (@tomavelev).</description>
    <link>https://forem.com/tomavelev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F117423%2F2a0107cd-3058-4db1-b6df-402b146b2e61.png</url>
      <title>Forem: Toma</title>
      <link>https://forem.com/tomavelev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tomavelev"/>
    <language>en</language>
    <item>
      <title>Start Programming the Mind with WordPress</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Mon, 15 Feb 2021 19:28:06 +0000</pubDate>
      <link>https://forem.com/tomavelev/start-programming-the-mind-with-wordpress-1ffp</link>
      <guid>https://forem.com/tomavelev/start-programming-the-mind-with-wordpress-1ffp</guid>
      <description>&lt;p&gt;WordPress is a content management system used all around the Internet With the unconscious or the unconscious purpose of programming the mind. Professional individuals and non-technical users adopt it. It allows them to get things done. The purposes could go – from simple web site or blog, online shop/marketplace, to newsletter and media platforms, email and content marketing, and even, why not – back-end systems for web and mobile applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Who uses it?
&lt;/h3&gt;

&lt;p&gt;More than one third of the Internet is on WordPress and you could too. I've compiled one small list with focus on my country - Bulgaria:&lt;/p&gt;

&lt;p&gt;Marketing/Personal Development – &lt;a href="https://yulitonkin.bg/"&gt;https://yulitonkin.bg/&lt;/a&gt;&lt;br&gt;
Marketing – &lt;a href="https://www.garyvaynerchuk.com/"&gt;https://www.garyvaynerchuk.com/&lt;/a&gt;&lt;br&gt;
Marketing – &lt;a href="https://grantcardone.com/"&gt;https://grantcardone.com/&lt;/a&gt;&lt;br&gt;
Programming – &lt;a href="https://codinginflow.com/"&gt;https://codinginflow.com/&lt;/a&gt;&lt;br&gt;
Software – &lt;a href="https://iristech.co/"&gt;https://iristech.co/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://logsentinel.com/"&gt;https://logsentinel.com/&lt;/a&gt; – SaaS&lt;br&gt;
Influencer and Content Creator – &lt;a href="https://choko.bg/"&gt;https://choko.bg/&lt;/a&gt;&lt;br&gt;
Blogging – &lt;a href="https://www.peter.and.bilyana.net/"&gt;https://www.peter.and.bilyana.net/&lt;/a&gt;&lt;br&gt;
Media/entertainment/politics – &lt;a href="https://sedemosmi.tv/"&gt;https://sedemosmi.tv/&lt;/a&gt;&lt;br&gt;
Media/entertainment – &lt;a href="https://gospodari.com/"&gt;https://gospodari.com/&lt;/a&gt;&lt;br&gt;
Politics &lt;a href="https://demokrati.bg/"&gt;https://demokrati.bg/&lt;/a&gt;&lt;br&gt;
Jobs Marketplace NobleHire / Dev.bg&lt;br&gt;
Tech Newsletter &lt;a href="https://techcrunch.com/"&gt;https://techcrunch.com/&lt;/a&gt;&lt;br&gt;
Web Sites – The Rolling Stones, Toyota Motors Brasil, Angry Birds, The White House&lt;br&gt;
&lt;a href="https://programtom.com/dev/"&gt;https://programtom.com/dev/&lt;/a&gt; also is WordPress web site with shop and a blog&lt;br&gt;
Self Development (un Bulgarian Language: &lt;a href="https://chetilishte.com/"&gt;https://chetilishte.com/&lt;/a&gt;)&lt;br&gt;
This list could go endlessly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why you should use it too?
&lt;/h3&gt;

&lt;p&gt;There is a thing that I’ve realized over the years – having a WordPress Site (or site on some other platform for fast content publishing) is a starting point. You’ll have a base ready to be published with very little, sometimes none technical investment. It is utility to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a Static Web Site&lt;/li&gt;
&lt;li&gt;Publish Articles in a Blog&lt;/li&gt;
&lt;li&gt;Build or include an Online Shop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Marketing specialists could collect emails or something else of a enormous quantity and actually own the audience.&lt;br&gt;
It allows you to extend your mind beyond thinking about software. Start thinking how to repackage your stuff in for the consumption of other people. The tricky part is the non-technical wrap-up.&lt;/p&gt;

&lt;p&gt;If you look at WordPress from broader perspective it is the tool to do Mind Programming.&lt;/p&gt;

&lt;p&gt;What words, colors and images to use to attract people?&lt;br&gt;
How to actually persuade and accumulate some amount of the endless value measurement systems. The human society needs content so the mathematics [and demagogy] embedded in them could get attached to the thinking.&lt;/p&gt;

&lt;p&gt;Politics is just one more area of the Western Society with enormous volume of content. Politicians and journalists do finger-pointing and battle of ideas and a Web-Site is ideal place to share one side of the opinions.&lt;br&gt;
Media Platforms need a place with multiple editors – to channel information. WordPress or some other CMS is ideal.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Get Started?
&lt;/h3&gt;

&lt;p&gt;Any big hosting provider has a WordPress installer that takes care of settings, configurations and updates. To you – it is just clicking next, next, next. If you don’t have money, the WordPress.com has a free plan – installed on a subdomain/name of the service. I’ve seen fake news sites using it this way.&lt;/p&gt;

&lt;h3&gt;
  
  
  And more crucial aspect is the ownership.
&lt;/h3&gt;

&lt;p&gt;It is open source. You could download it on your computer and see it all. Replacing the platform is as easy as export and import to the new software.&lt;/p&gt;

&lt;p&gt;You’ll own the content in the technical sense. You will be the Administrator.&lt;/p&gt;

&lt;p&gt;The private online web-site platforms most likely offer what is most sellable or required by companies and it will come with a price. Choose WordPress (or other popular CMSes) and you’ll have the power to integrate 3rd party analytics, unusual visual designs, add custom code and so on.&lt;/p&gt;

&lt;p&gt;How far have you’ve gone into the games of the programming of the humans? Legal levels, Finances, Fame and Influence? Or maybe some Real World Change?&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>marketing</category>
      <category>programming</category>
    </item>
    <item>
      <title>Who do you work for?</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Tue, 09 Feb 2021 09:50:29 +0000</pubDate>
      <link>https://forem.com/tomavelev/who-do-you-work-for-2d2k</link>
      <guid>https://forem.com/tomavelev/who-do-you-work-for-2d2k</guid>
      <description>&lt;p&gt;Maybe it is not appropriate thing to share on a platform focused on tech, but, all this diving into technological complexity is just egoism packaged professionally.&lt;/p&gt;

&lt;p&gt;If you consider money as a fair and real thing and not just an invention for those in power, the leaf of the economical tree are the end users. You may get paid from a business, but, down the tubes, the other side at some level goes to customers - non-engineers. Do you have something for them?&lt;/p&gt;

&lt;p&gt;How much ducks the end user gives with what Technology, library, tool we've build something? You're right - 0 - zero.  &lt;/p&gt;

&lt;p&gt;Lately, I am thinking of analogy about software development that is scaring me. All the software complexities and all the layers above are just one big ponzi scheme. Law is just words we all agreed to accept as truth, money as value - even that it is pumped up by more abstractions like credit, taxes. Fame is also dust in the wind. &lt;/p&gt;

&lt;p&gt;Software choice is always at second place - after programming the mind - the wrapping up of the product - with the words that will make humans use it or see value in it. Soft skills are always more important than the tech. And unfortunately we're all making our lives harder and harder with the complexities of development. &lt;/p&gt;

</description>
      <category>philosophy</category>
      <category>technology</category>
    </item>
    <item>
      <title>Web Technology for 2021?</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Wed, 06 Jan 2021 01:23:16 +0000</pubDate>
      <link>https://forem.com/tomavelev/web-technology-for-2021-9d7</link>
      <guid>https://forem.com/tomavelev/web-technology-for-2021-9d7</guid>
      <description>&lt;p&gt;I know that, generally speaking, there is no silver bullet for everything. However, I wonder what would be the most appropriate web framework or library to learn or to keep digging in - in 2021:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flutter&lt;/li&gt;
&lt;li&gt;(P)React&lt;/li&gt;
&lt;li&gt;vue.js&lt;/li&gt;
&lt;li&gt;Angular&lt;/li&gt;
&lt;li&gt;Material&lt;/li&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Vanilla (no framework)&lt;/li&gt;
&lt;li&gt;other&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>question</category>
      <category>webdev</category>
      <category>frameworkchoice</category>
    </item>
    <item>
      <title>Getting Started with PreactJS with Material Design</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Thu, 10 Dec 2020 20:37:31 +0000</pubDate>
      <link>https://forem.com/tomavelev/getting-started-with-preactjs-with-material-design-41cf</link>
      <guid>https://forem.com/tomavelev/getting-started-with-preactjs-with-material-design-41cf</guid>
      <description>&lt;p&gt;This article is a “Getting Started” – the very first steps of how to start a PreactJS project offline and include Material Design CSS Library or Components.&lt;/p&gt;

&lt;p&gt;First You should have installed on your system the module required for all “modern” JavaScript frameworks – NodeJS and/or npm.&lt;/p&gt;

&lt;p&gt;Next, You should follow the steps from the PreactJS Site. From a command line console, execute:&lt;/p&gt;

&lt;p&gt;npm install -g preact-cli&lt;br&gt;
preact create default my-cool-project&lt;br&gt;
cd my-cool-project&lt;br&gt;
npm run dev (actually preact places a “watch” argument development setting) – npm run watch&lt;br&gt;
develop your app – code/code/code&lt;br&gt;
npm run build&lt;br&gt;
Before the run dev/run watch phase, if you plan to use material components with preact, you could execute:&lt;/p&gt;

&lt;p&gt;npm -i -D preact-material-components&lt;br&gt;
And in your component, you could include on the top - the JavaScript components definition and the CSS files.&lt;br&gt;
import Radio from 'preact-material-components/Radio';&lt;br&gt;
import FormField from 'preact-material-components/FormField';&lt;br&gt;
import Button from 'preact-material-components/Button';&lt;/p&gt;

&lt;p&gt;import 'preact-material-components/Radio/style.css';&lt;br&gt;
import 'preact-material-components/FormField/style.css';&lt;br&gt;
import 'preact-material-components/Button/style.css';&lt;/p&gt;

&lt;p&gt;One last thing before you start developing is to include the setting that will actually handle the included CSS files in the import section of your components. Otherwise they’ll not get styled and will default to whatever the browser or your other CSS provide.&lt;/p&gt;

&lt;p&gt;You know, Preact is one of the many frameworks that does its thing on non–fully JS code to produce JS. The framework includes JSX to JS and the sass|scsss to CSS processors, but it seems it misses to handle CSS ready includes by default (at least at time of writing this article).&lt;/p&gt;

&lt;p&gt;Search the webpack.js file located in the config folder under the root folder of your project. There you could find a section with:&lt;/p&gt;

&lt;p&gt;module: {&lt;br&gt;
rules: [{ …. }, {&lt;br&gt;
test: /.(sass|scss)$/,&lt;br&gt;
} ….&lt;br&gt;
Include the CSS in this list : (sass|scss|css)$/,&lt;/p&gt;

&lt;p&gt;After that, your material components should get styled as expected at least during the development phase. &lt;/p&gt;

&lt;p&gt;Unfortunately, after trying to build for production I've got an error:&lt;br&gt;
npm ERR! code ELIFECYCLE&lt;br&gt;
npm ERR! errno 2&lt;br&gt;
npm ERR! &lt;a href="mailto:preact-starter@1.4.0"&gt;preact-starter@1.4.0&lt;/a&gt; build: &lt;code&gt;webpack --env.production --config config/webpack&lt;/code&gt;&lt;br&gt;
npm ERR! Exit status 2&lt;br&gt;
npm ERR! &lt;br&gt;
npm ERR! Failed at the &lt;a href="mailto:preact-starter@1.4.0"&gt;preact-starter@1.4.0&lt;/a&gt; build script.&lt;br&gt;
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.&lt;/p&gt;

&lt;p&gt;npm ERR! A complete log of this run can be found in:&lt;br&gt;
npm ERR!     ~[my_home]/.npm/_logs/2020-12-10T22_03_51_434Z-debug.log &lt;/p&gt;

&lt;p&gt;If somebody can give me an idea, I'll be very grateful. &lt;/p&gt;

</description>
      <category>preactjs</category>
      <category>gettingstarted</category>
      <category>materialdesign</category>
    </item>
    <item>
      <title>Light and Dark Theme for your 2020 Web Site</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Tue, 27 Oct 2020 08:38:33 +0000</pubDate>
      <link>https://forem.com/tomavelev/light-and-dark-theme-for-your-2020-web-site-2e6f</link>
      <guid>https://forem.com/tomavelev/light-and-dark-theme-for-your-2020-web-site-2e6f</guid>
      <description>&lt;p&gt;How web sites should look like and behave is constantly evolving. For the past year or two - having light and dark themes is the norm. Otherwise, you are not adapting to the user. Otherwise you (and also I) are lazy developer. &lt;br&gt;
Here is the basic CSS for theming:&lt;/p&gt;

&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/media"&gt;@media&lt;/a&gt; (prefers-color-scheme: dark) {&lt;br&gt;
    //dark background, light colors for text, icons and images&lt;br&gt;
}&lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/media"&gt;@media&lt;/a&gt; (prefers-color-scheme: light) {&lt;br&gt;
    //light background, dark colors for text, icons and images&lt;br&gt;
}   &lt;/p&gt;

&lt;p&gt;Here is a work in progress - applying themes for a WP site: &lt;br&gt;
&lt;a href="https://programtom.com/common_sense/"&gt;https://programtom.com/common_sense/&lt;/a&gt;&lt;br&gt;
Sadly, it will not work on any other theme or most other Web Sites, because of the specific CSS rules that must be overwritten. &lt;/p&gt;

</description>
      <category>css</category>
      <category>theme</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Not another tech X vs tech Y</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Wed, 03 Jun 2020 00:39:46 +0000</pubDate>
      <link>https://forem.com/tomavelev/not-another-tech-x-vs-tech-y-4n8j</link>
      <guid>https://forem.com/tomavelev/not-another-tech-x-vs-tech-y-4n8j</guid>
      <description>&lt;p&gt;I'm seeing yet another rise of battles between technologies. So this is my personal architectural opinion about it. It's meaningless. Underneath technology, there are chips that sum, subtract, multiply and divide you know. Computers execute mathematical operations, not personal preferences.&lt;/p&gt;

&lt;p&gt;Want software cheap - use free - other people's platforms. They are not good enough? Choose the closest to your needs open source and adapt it. Self-host. &lt;/p&gt;

&lt;p&gt;Want non-ready software fast? Choose no-code tech, generating code framework or scripting languages. &lt;br&gt;
Want to reach people? Create a web version that will be openable on all form factors. If it's not good enough - use cross platform technology to create apps for the app stores faster.&lt;br&gt;
Want fast software - use native technologies - the mobile platforms SDKs, Go/Rust/C++ for the back end. For the data layer - techs that are better indexed and scalable - even with duplication, that keep things in Ram. Look deeper in how code is executed and optimize every byte.&lt;br&gt;
Want a mix of speed of development and performance - intermediate technologies like Java and .net. &lt;br&gt;
If You know some programming language and framework, you will develop faster than with other tools, but that is a subjective thing that doesn't change the architectural weaknesses.&lt;/p&gt;

&lt;p&gt;My point is, looking logically, basing on what you have and what you need, there is a straight answer. Feed your developer brain with the input parameters - team experience, financial situation, goals, time and the output will be straight forward. Soo, if you dive into technology for money, because of the popularity, because of marketing, branding or some other fetish, this is on you. Please, stop this madness.&lt;/p&gt;

&lt;p&gt;Originally posted this article on my blog &lt;br&gt;
&lt;a href="https://tomavelev.com/blog/Making%20sense%20of%20software%20and%20technologies%20from%20little%20beyond%20developer%20%E2%80%93%20business%20point%20of%20view"&gt;https://tomavelev.com/blog/Making%20sense%20of%20software%20and%20technologies%20from%20little%20beyond%20developer%20%E2%80%93%20business%20point%20of%20view&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Application Development - Paging Approaches</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Fri, 22 May 2020 11:13:57 +0000</pubDate>
      <link>https://forem.com/tomavelev/application-development-paging-approaches-5629</link>
      <guid>https://forem.com/tomavelev/application-development-paging-approaches-5629</guid>
      <description>&lt;p&gt;This article was originally written here: &lt;a href="https://tomavelev.com/blog/Application%20Development%20-%20%20Paging%20Approaches"&gt;https://tomavelev.com/blog/Application%20Development%20-%20%20Paging%20Approaches&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Every application that is serious enough, that archives even a partial success, and especially if it archives big size, big scale, data or social reach, needs to show to the users – big, maybe even very big quantity of some data type. Doing this at once – at that point, dumping the huge amounts of information becomes impractical and even impossible. Many times, even the servers could get overwhelmed if the applications are not coded properly, let alone – some end users with desktop or even mobile device.&lt;/p&gt;

&lt;p&gt;To resolve this – Paging has been born. But, Paging itself is just a concept that has a lot of user experience and source code / design pattern / variations and approaches and also layers and levels – where it adds complexity, parametrization and logic. I don’t think I could list them all, but, I’ll describe some of them here with places where I’ve seen them used.&lt;/p&gt;

&lt;p&gt;DB Layer Paging – All self-respecting Database Systems – relational, non-relational, whatever – have some way, some instruction or procedure to page data so to not flood the application layer. Dive deep into the chosen data storage technology and you’ll probably find it. If it does not support such functionality – it should be red alert for you about it.&lt;/p&gt;

&lt;p&gt;Model &amp;amp; Dao (&amp;amp; Service) Layers – In most cases paging could be implemented with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PAGE_SIZE (input value)&lt;/li&gt;
&lt;li&gt;offset (number of records) or page number (input value)&lt;/li&gt;
&lt;li&gt;list of records – PAGE_SIZE big (output value)&lt;/li&gt;
&lt;li&gt;total (number of records) or total page count (output value).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The page size could be small number but offset should support very big – depending on the number of records, so the user of the software could go to the last page.&lt;/p&gt;

&lt;p&gt;Passing around these two numbers may make APIs more hard to modify and change. For this issue – a search object is often used (and passed as parameters). Besides the basic paging stuff it could hold also – sorting field(s), direction, query parameters and whatever you’d like. Adding this to an object will require – change in the data access layer, change in the setting of these fields, but not in the APIs themselves – if a search object is used. &lt;/p&gt;

&lt;p&gt;Controller &amp;amp; Front-end/Display Layers – no matter on what platform, on what display, on what type of service the data is out-placed – somewhere, somehow – one of the following functionalities are used: &lt;/p&gt;

&lt;p&gt;Manual page change – The basic approach is to have manual change of the currently viewed page. Even in this simple thing – there are variations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, Previous, Next, Last – Four buttons for jumping to the beginning, next page, previous page and at the end. If the currently viewed page is first or last, or there are too few records – these buttons could be missing or disabled. &lt;/li&gt;
&lt;li&gt;Numbers – the 4 previous buttons are not very data descriptive. The most normal way is to have numbers paging. You could have odd numbers displayed with one – readonly – the current. Example if you have 100 pages and you want to show links to 5 of them – you could display:&lt;ul&gt;
&lt;li&gt;1 (readonly), 2,3, […. – this displayed as text] 99,100 &lt;/li&gt;
&lt;li&gt;1 […], 4, 5(readonly), 6, […], 100&lt;/li&gt;
&lt;li&gt;1,2,[…], 98,99,100(readonly)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Letters – less common way of displaying pages is with letters. When the records with some letter become bigger than the page size, letter repetition must be used with similar to the numbers approach. One example is – Google uses an endless “o” for paging.  &lt;/li&gt;
&lt;li&gt;Load more button – for loading next page – after the end of the displayed record is reached. This approach could be little annoying to the end user if he/she wants to go to some deep page.&lt;/li&gt;
&lt;li&gt;Pull to Refresh – for restarting the data view port from the beginning. This approach is used a lot in the mobile world – to reload the records from the first page – with the most recent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automatic Page load. This is additional – automatic variation of the option “load more button”. It is also called – Lazy Loading. There are two technical or architectural options when implementing it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lazy loading append – it is appending to the visual or to the data layer the newly loaded records and showing the scroll accordingly. This approach could lag the client if the records become too many.  &lt;/li&gt;
&lt;li&gt;lazy loading with virtual scroll – to resolve the problem of over-loading data – many UI frameworks have implemented virtual scrolling partially – in the presentation layer or even entirely – in the data loaded to the client and the presentation layer. On whatever screen – the number of records that can be displayed is limited and having more instances of some visual component – HTML DIV, iOS/Android View, Desktop Widget, or whatever – is a waste of memory and a placeholder for bad performance. And Because the scroll itself is a visual element, it could also be tweaked and painted according to the total number of records and not the amount of records loaded into the client layer – archiving this way full page-ability.  &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>pagingrecords</category>
      <category>architecturalapproaches</category>
      <category>userexperience</category>
    </item>
    <item>
      <title>Levels of Independence in Software</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Mon, 27 Apr 2020 20:23:29 +0000</pubDate>
      <link>https://forem.com/tomavelev/levels-of-independence-in-software-37bi</link>
      <guid>https://forem.com/tomavelev/levels-of-independence-in-software-37bi</guid>
      <description>&lt;p&gt;This article is originally posted on &lt;a href="https://tomavelev.com/blog/Levels+of+Independence+in+Software"&gt;https://tomavelev.com/blog/Levels+of+Independence+in+Software&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Independence is the reason we have so many variations of all kinds of stuff. To fight the way the Western Game is played – there is a need to have – legal, physical, software, financial, intellectual even mental independence of the tools and activities – technology, software product, framework, book, song, dance and whatever.  The things that need independence are – programming languages (remember the fight between Oracle and Google over Java in Android), Internet Browser Independence (that creates support hell for developers), Separate implementations of Specifications and Standards, Application Software (so the Big Companies could lock the businesses to their Platforms),  Lockdown of the features to their hardware (Apple), Server Hardware and Software an so on.&lt;/p&gt;

&lt;p&gt;The least independent and with minimal number of features are the Platforms that you have USER account in – social medias, unified places for posts, podcasts and videos – Medium, LinkedIn, Vimeo, YouTube, WordPress – if set upped directly on WordPress.com, Shopify, Wix.com and many more. I’ve seen many MLM Businesses also to use custom platforms with similar approach. Having a provider so you don’t care about hardware and software gives you possibility to focus on the people side – psychology, marketing, advertising and more – where the actual money are. But also this gives you less possibilities for customizations, integrations, optimizations and also comes with more expensive prices for every single thing – even for things that are potentially free if you have the knowledge and experience – to set them up yourself.&lt;/p&gt;

&lt;p&gt;The next variation is – you to manage the Software side and let hosting and cloud providers to manage the hardware. This is very popular option. The software is probably the most customizable part and if you focus on it, you’ll save time and energy on the iron part. So now you’ll need to work on – bringing money and the software side. &lt;/p&gt;

&lt;p&gt;Because of legal issues and because of having the hands untied to do whatever the companies want – every big corporation has created their own programming languages, operating systems, Internet Browsers, Application Servers, Programming Frameworks and Libraries. Because of the compatibility issues over the years – big part of the software is Standardized, many frameworks are open sourced – so to bring-in more developers to give feedback and improve them.   &lt;/p&gt;

&lt;p&gt;Sometimes this layer goes beyond the Application Layer. Google for example has DNS servers and HTTP – SSL provider services. Having also the hardware in their hangar – minimizes the travel time of the bytes around the Internet.&lt;/p&gt;

&lt;p&gt;The ultimate independency is to have your own hardware and if the software requires – even specialized chips – created in-house to run the software that users consume. This comes with the price to manage the server computers – electricity, duplication of data and backups, high bandwidth Internet connection – that the Big Companies – even go that deep – creating their own fiber networks. To archive speed – they also create data centers around the world, because it takes time for the bytes to travel around the world – even that they use the speed of light. But the result is happy users – instantly fast software, endless copies of the data that they use for endless types of software and services.&lt;/p&gt;

&lt;p&gt;All the independence is important especially for Conspiracy Theory individuals and whistleblowers and unlawful actors. I consider - screaming for free speech around the Internet - on platforms that are not yours a little bit like Don Quijote - fighting the windmills. The Big Sites/Platforms/Services are proprietary and could censor whatever they want - like the television, radio, the governments and so on. If someone is so good - high in standards, moral and more - they must set up all the above themselves and also play the people game. Yes, this is many times impossible task. That's why the world is in the situation that it is today.&lt;/p&gt;       

</description>
      <category>softwareindependence</category>
      <category>serviceindependence</category>
      <category>technologicalfreedom</category>
      <category>untiedhands</category>
    </item>
    <item>
      <title>Types of User Applications or Modules of Platforms I see on the Internet</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Fri, 24 Apr 2020 17:13:06 +0000</pubDate>
      <link>https://forem.com/tomavelev/types-of-user-applications-or-modules-of-platforms-i-see-on-the-internet-d7</link>
      <guid>https://forem.com/tomavelev/types-of-user-applications-or-modules-of-platforms-i-see-on-the-internet-d7</guid>
      <description>&lt;p&gt;I’ve been coding data-oriented software most of my career. I was and I am still a little bit bad at doing visual stuff – what is the best way to show things – only if the UI is figured out and I need to implement it, I am good. In my personal projects I mostly use ready components with minimal customization. And that’s why I’m also bad at programming games. But, I see the connections in the data and the information so most of the products I’ve coded are around that. &lt;/p&gt;

&lt;p&gt;In my current focus I consider apps in two groups: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;According to where and how is data saved &lt;/li&gt;
&lt;li&gt;According to the relationship of the information to the users and the public&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article I’m gonna talk about – from an application perspective – according to where and how that is saved there are two main variations  – client side storage and server side storage and a mix of both.&lt;/p&gt;

&lt;p&gt;When the data is saved on the client device – the browser or the Android or iPhone device, the Desktop Computer – the application is potentially independent from the connectivity of the device and could do what the application is supposed to – with zero interruption.  This data could be notes, phone numbers, photos, recordings, file  or something that the user is not willing to share even with the cloud services of the big mobile platforms.&lt;/p&gt;

&lt;p&gt;There is an option the data to be only saved on the server. Then, if the client application is not connected to the Internet – if checks are put in place – a user friendly message appears. Applications where apps are saved on the Server are in a lot of cases business to business systems. Connectivity has become like electricity, like the food for the normal person. If it is not present, things are bad. So, the coders could ignore such cases and it should work in 99.99% of the time. In critical (for example financial) cases – the normal if/else checks should be applied. One other case where a Server Side visualization is applied is when Search Engine Optimizations are considered important. The Bots are getting smarter, executing JavaScript, Applying CSS and whatever, but, because of legacy experience of site developers, know-how and keeping up with the old Search Engine bots – a normal server rendering is possible, when data is saved there.    &lt;/p&gt;

&lt;p&gt;And There is a Mix of Server Side and a Client Side Approach. &lt;/p&gt;

&lt;p&gt;One variation is – the app to need Internet for a part of the functionality and some other modules to be Independent from connectivity. Such app is my What You Eat – Mobile Apps  &lt;a href="http://kakvoiadesh.com/"&gt;http://kakvoiadesh.com/&lt;/a&gt; . The product/food item related functionality requires Internet. The review of the other information – Categories, Diseases, E-Numbers, Allergies – after the initial loading – is entirely independent from the Internet. &lt;/p&gt;

&lt;p&gt;Similar to this is caching of records offline – after first load/display and all modifying operations to require Internet. Such approach I’ve implemented in several projects for clients and in several of my own projects.&lt;/p&gt;

&lt;p&gt;The last approach is to probably have some initialization – and after that to have transparent for the user functionality without bothering if there is Internet connection or not. This is also the most complex variation – synchronization requires additional effort. I’ve done that kind of applications for clients and I’ve coded that hard part – because of the proprietary/custom back-end. There are frameworks (that come with a price of course) that do this transparently not only for the user, but also to the developer – The Firebase/Fire-store APIs.&lt;/p&gt;

&lt;p&gt;The thing is – when a developer finds a problem – he codes a solution. Then – the real world shows if the implemented software logic was right. Besides the choice of the coder, there is also never-ending changes in requirements of the clients and the users. How to implement things the right way is never-ending battle. Also – going deep too much on the “right” technical way to do stuff is also over-killer. There are software optimizations, there are hardware – horizontal and vertical optimizations – that may compatible with the software optimizations and they may not. Practice may help to start things “correctly” from the beginning, but it will not ultimately resolve it all. &lt;/p&gt;

</description>
      <category>applicationdevelopment</category>
      <category>datastorage</category>
      <category>clientserver</category>
    </item>
    <item>
      <title>What is truly essential?</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Tue, 07 Apr 2020 11:39:52 +0000</pubDate>
      <link>https://forem.com/tomavelev/what-is-truly-essential-11c9</link>
      <guid>https://forem.com/tomavelev/what-is-truly-essential-11c9</guid>
      <description>&lt;p&gt;To be alive a human individual needs - water and food. To be healthy he needs protection from the natural phenomenons - clothes &amp;amp; shelter. Another factors to health are - hygiene &amp;amp; minimum physical activity. &lt;/p&gt;

&lt;p&gt;In purely philosophical aspect this is it. Everything else is non-essential. The thing is, the human individual evolved into society - specializing work, making people practice non-important things because of the automation, optimization of work and effort - makes bringing water &amp;amp; food - occupy relatively small number of people. &lt;/p&gt;

&lt;p&gt;But, the essential is somehow connected to the non-essential, because of how homo sapiens learned to organize. &lt;/p&gt;

&lt;p&gt;The food may be irrigated with systems that monitor the humidity of the soil. Here comes the software. The food cannot magically appear on the tables of people. It must be transported to the cities - here comes automotive industry. But it is not only auto-factories - the gas stations, the auto-repairmen, the high ways and road builders. What if the car breaks?  Currently, the food is not served in a raw, primitive form, so - here comes the packaging industry and the last mile delivery - again ordered in nowadays more with software. &lt;/p&gt;

&lt;p&gt;If we include some additional factors of the health into account - will find ourselves in social class battles. &lt;/p&gt;

&lt;p&gt;The medical industry is probably second to importance after the most basic needs. If we find ourselves ill, the doctors find the reasons for our sickness and cure as prolonging our lives. The human individual could live for 80-90 even a century and beyond if he could keep himself - healthy and active.&lt;/p&gt;

&lt;p&gt;The physical activities that people go into are endless - from heavy work to sex, dances, yoga, chores, home repairs, fitness and so on. In some sense, they are included in the core needs of men. Not exercising will make us ill and will overload the medical system.&lt;/p&gt;

&lt;p&gt;Many types of clothes are not so important or essential - like the prom dresses - overpriced because of fashion. But currently - this industry could save lives - by making protective clothes and masks. &lt;/p&gt;

&lt;p&gt;The manufacturers of gadgets have shifted to produce transparent face shields so - having the factory lines present and tuning them a little bit - makes them also important in the current situation.&lt;/p&gt;

&lt;p&gt;I am living in a country with a health system that does not yet use software in levels I wish - a national medical software system. I've seen in other countries how - with just a scan of a bar code - the doctor, the pharmaceutic, the police or some other authorized individual could see some important information about you. Of course - there are the privacy issues. But for example - in the current pandemic situation - if such a software was present and in work in my country - I wouldn't have to go around institutions for a piece of paper - and potentially exposing myself to viruses - so the next unit could receive critical for the health information - instead of read it instantaneously from an app.       &lt;/p&gt;

&lt;p&gt;Software in most cases is ephemeral - it does not produce something that can be touched. But many systems save time and energy and human lives - less time for repetitive tasks and more on more humane tasks with more meaning. Education is done online. Messaging and communication is also online. If we didn't have so much idealistic and political, economic battles, fake news - the information about the viruses could have been communicated and measures applied several months ago, instead of after the fish is out on the streets. So - telling other human beings about a danger is essential thing that saves lives so software becomes not so non-important.      &lt;/p&gt;

&lt;p&gt;If we could go on - we could extend the "essential" to all the society. What is truly important? So deep, so subjective, so much monkey fights that I don't wanna participate in. Everything is important in some sense or another. If we focus on what we could do for the common good - we could get motivated and empowered by our own abilities to help, instead of watch, receive and feel fear. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Galaxies far far away</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Tue, 24 Mar 2020 09:33:37 +0000</pubDate>
      <link>https://forem.com/tomavelev/galaxies-far-far-away-a90</link>
      <guid>https://forem.com/tomavelev/galaxies-far-far-away-a90</guid>
      <description>&lt;p&gt;Creating something of value, creating something for other (non-tech) people, that is actually used, timing it correctly and many more factors are counter intuitive with complexity in software development to a coder/programmer. &lt;/p&gt;

&lt;p&gt;In most of my tools I am digging in the code shit and the things colleagues find meaningful - abstractions, abstractions, abstractions - test-ability, change-ability, solid, OOP, compiled, interpreted, reused, readable, garbage collected code, scalability, etc. And all this things probably does matter at some point. &lt;/p&gt;

&lt;p&gt;But, in my last tool I've linked reading excel, writing word files and created simple web front end - no CSS, no JavaScript. Nobody gives a shit what is client and what is server, is it binary, is it multi-core, is it optimal, is the code well written as long as the software does what is desired.&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>complexity</category>
    </item>
    <item>
      <title>Automation Workflow that everybody could create plus Generator App Status Update</title>
      <dc:creator>Toma</dc:creator>
      <pubDate>Tue, 03 Mar 2020 23:18:41 +0000</pubDate>
      <link>https://forem.com/tomavelev/automation-workflow-that-everybody-could-create-plus-generator-app-status-update-2bcd</link>
      <guid>https://forem.com/tomavelev/automation-workflow-that-everybody-could-create-plus-generator-app-status-update-2bcd</guid>
      <description>&lt;p&gt;In this article I’m gonna describe my inner setup I’ve done. I’ve automated several tasks around – building, testing, deployment, executing repeated scheduled tasks. For this purpose I’ve used Java Programs, Tomcat and Jenkins local installation. Jenkins Jobs have a nice option to be triggered and executed by several options: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By a CRON expression – starting the Job on a timely manner – every day, every five minutes, once a week or whatever you put in the scheduling CRON expression.&lt;/li&gt;
&lt;li&gt;Whenever I commit something to the Git repositories that have some code used in the automation setup – a job is executed after hooking into git post update script – calling a simple cURL command.&lt;/li&gt;
&lt;li&gt;After a job is executed – other job could be triggered in a hierarchical, chained manner – with additional conditions to proceed only in certain build statuses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deployment tasks – The most basic Jenkins tasks that I have are – after I commit something – a build script is executed with some result – WAR file, Zip File, Jar, EXE or whatever and – a post procedure uploads the result to my server. Theoretically the result may be emailed, uploaded to some cloud storage or even an app store. Haven’t done that but it is possibility. &lt;/p&gt;

&lt;p&gt;Clear tasks, backup jobs – I have a job that backups the databases in my site. Having a recent archive is a saver. I also have several task that clear some special tables – the build finished tables – so after I have new versions of the building tools – all the “build app from a data model” tasks are executed again.&lt;/p&gt;

&lt;p&gt;CRON tasks – the backup task is a scheduled Job. Also the tasks that build apps from data models are executed every “some” minute – 5,15, or whatever I considered appropriate. &lt;/p&gt;

&lt;p&gt;Update the  CRON executables – The data model builders are just simple Jars. They depend on several Projects or modules so when I have changes on the dependencies, after the successful deployment several “update the Jar” tasks are triggered.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://tomavelev.com/GeneratorApp/"&gt;GeneratorApp &lt;/a&gt;– This is one of my core projects. It does the creation of CRUD operations, data model oriented layers and user interfaces based on – my own or publicly defined data models. It has a deployment job, after the deployment Update the CRON executables and Clean Build tasks are chained and executed in a work flow.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.programtom.generatorappandroid"&gt;Android GeneratorApp Builder&lt;/a&gt; – This is an app for creating android apps from data models. It Generates offline CRUD operations on the records with your definitions. I have an idea extending this builder to not only offline data models. Will see how it goes. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://developapp.online/"&gt;Flutter offline Web app GeneratorApp builder&lt;/a&gt; – Flutter is a cross platform framework that I’ve spend most of 2019 on. In year 2020 I am considering moving away from it. The advantage of   fast building interfaces for all platforms – Desktop, Mobile, Web – with close to only one source code repository – is for early stage products. Whenever a project succeeds getting fame and some money – the time saving feature is cleared out and killed by the disadvantages – bigger app size, integration issues, and the fact that – there is no true escape from the native part. Whenever an app does something more that simple CRUD operations or a “Hello World” – a native package is required.&lt;/p&gt;

&lt;p&gt;As a part of the evolution of my tool I have a next version of my &lt;a href="https://developapp.online/v2/"&gt;Flutter online Web app builder&lt;/a&gt;. It is still in BETA. It creates crud operations with association of the data models around the a core data model – “The User/Profile/Registration”. In my own use of it I see more and more features needed, so the end result to require less and less actual code change or update. And all the new features require custom code beyond simple CRUD operations. Will see how things will go in 2020, but I’m definitely considering all kinds of directions.  &lt;/p&gt;

</description>
      <category>automation</category>
      <category>java</category>
      <category>flutter</category>
      <category>jenkins</category>
    </item>
  </channel>
</rss>
