Op dit moment werk ik aan Pond[CTRL].
Pond[CTRL]
Pond[CTRL] is een vijvercomputer die onder andere temperatuur, pH en waterniveau meet en afhankelijk van de meetwaarden actie kan ondernemen, bijvoorbeeld het in- en uitschakelen van apparaten. De computer kan ingesteld worden via een online gebruikersinterface.
Dit project is nog in volle gang! Check de Pond[CTRL] website of check updates via deze link
Bla! (Borretjes Logistieke App)
Als leidinggevende in de logistiek kwam ik terecht bij een bedrijf waar in een middelgroot magazijn gewerkt werd zonder een locatiesysteem. Voorraad was er wel, maar niemand kon precies vertellen waar. Deze applicatie ontstond vanuit de behoefte om het magazijn te organiseren en artikelen terug te kunnen vinden, zoals je zou moeten kunnen verwachten. De eerste versie dateert uit 2014 en was niets meer dan een standalone Windows-applicatie. In combinatie met een kleine Access-database waarin de artikellijst uit het voorraadsysteem opgeslagen was, was het in het magazijn nu mogelijk om locaties te beheren.
Door de groeiende goederenstroom was één computer niet meer genoeg en dus moest het systeem uitgebreid worden. De applicatie werd opgesplitst in twee delen: een applicatieserver (Bla! Server) en een client (Bla! Client voor Windows). Ook viel de performance tegen door gebruik van de langzame Access-database en kwam er ondersteuning voor Microsoft SQL Server.
De grootste uitdaging was om het bestaande systeem (het oude Uni-Living 2) te koppelen aan Bla! Volgens iedereen onmogelijk, maar voor mij een noodzaak wilde Bla! kunnen groeien in functionaliteit. Mijn mening is dat vrijwel niets onmogelijk is en dus nam ik deze uitdaging graag aan! Er was geen mogelijkheid om direct te verbinden met de database en de enige toegang tot het systeem bleek via telnet. Hiervoor schreef ik een scripttaal: door middel van scripts kon gebruikersinvoer dynamisch uitgevoerd worden op een telnetverbinding van de applicatieserver, eerst in een enkele thread maar later ook multithreaded om wachttijden voor gebruikers te minimaliseren. De link was er en dus de mogelijkheden oneindig!
Er kwam een taakmanager: via een op CRON gebaseerd schema konden taken automatisch uitgevoerd worden die anders dagelijks handmatig uitgevoerd werden. Klantreserveringsrapporten werden nu bijvoorbeeld dagelijks automatisch gegenereerd, voorzien van magazijnlocaties en lagen, voorzien van een logistiek verantwoorde routing, ‘s morgens al klaar op de printer. Het werk kon direct beginnen.
Doordat de applicatie zijn nut aantoonde, volgde er module na module. Lijsten die voorheen handmatig ingetypt en verwerkt werden kregen nu een gebruikersvriendelijke interface, waarbij de kans op fouten geminimaliseerd werd. Taken werden verschoven tussen afdelingen doordat er nu minder risico’s waren waardoor werkwijzen efficiënter weden.
Bij logistiek hoort ook bezorging. Om meubels uit te leveren beschikte het bedrijf over een aantal eigen bestelbussen. De planner maakte gebruik van Falkplan EastTravel om te plannen en typte vervolgens de planlijst, voorzien van orderinformatie, handmatig over in Excel. Bla! kreeg een importfunctie voor EasyTravel-bestanden en in een later stadium SMS ondersteuning, waardoor de klant een dag voor levering per SMS een tijdvak ontving en op de dag van levering op de hoogte gehouden werd over eventuele vertraging. Om fouten bij aflevering te voorkomen konden collostickers afgedrukt worden waarop per klant ordernummer, adres, een uniek pictogram en het collonummer, gevolgd door het totaal aantal colli stond.
Doordat het programma door steeds meer personen gelijktijdig gebruikt werd en bijwerken naar nieuwere versies te veel werk vereiste, ontstond Bla! Publisher: een hulpmiddel dat een nieuwe versie automatisch distribueerde bij het opstarten van de applicatie. Iedereen was nu op elk moment gegarandeerd van de laatste, verbeterde versie.
Om veelgebruikte formulieren voor iedereen toegankelijk te maken werd de applicatieserver voorzien van een eigen webserver om een intranet op te zetten. De webserver bood beperkte ondersteuning voor PHP, waardoor simpele scripts ook mogelijk waren.
Een groot project was het optimaliseren van de service-afdeling. Ik heb een systeem opgezet waarbij dossiers aangelegd werden door mails van klanten, leveranciers en interne berichten te combineren. Door inkomende mails te analyseren door middel van een algoritme dat controleerde op onder andere mail-adressen en referenties werden nieuwe mails automatisch aan het juiste dossier gekoppeld.
Bla! is uitgegroeid van simpel hulpmiddel naar een uitgebreid systeem waar vele afdelingen bij mijn huidige werkgever gebruik van maken.
Op het moment van schrijven bestaat Bla! uit de volgende programma’s en modules:
Bla! Server!
Bla! Server is de applicatieserver en biedt ondersteuning voor:
- Ondersteuning tot maximaal 1000 client-verbindingen (elke client kan meer dan één verbinding gelijktijdig tot stand brengen om multi-threading te ondersteuning)
- Ondersteuning voor Microsoft Access en Microsoft SQL Server databases. Door een algoritme dat SQL on-the-fly vertaalt hoeven queries niet herschreven te worden.
- Ondersteuning voor automatisch inlezen van mails van POP en IMAP servers (niet-SSL).
- Ondersteuning voor downloaden en uploaden van en naar (s)FTP servers.
- Ondersteuning voor telnet-verbindingen (maximaal 99 gelijktijdig), waarbij door middel van scripts handelingen uitgevoerd kunnen worden.
- Ondersteuning voor geplande taken. Door middel van scripts, die weer voorzien kunnen worden van onder andere telnet en (s)ftp commando’s kunnen vrijwel oneindig veel taken uitgevoerd worden.
- Ondersteuning voor update-distributie via de server (instelbaar via externe server of via de applicatieserver zelf).
- Voor vrijwel elke handeling dient een gebruiker geautoriseerd te worden. De client zal voor elke gebruiker alleen zijn/haar vereiste handelingen tonen.
- Mogelijkheid tot maken en terugzetten van een reservekopie.
- Ondersteuning voor het verzenden van SMS-berichten, via de Twilio-API.
- Ingebouwde webserver voor intranet met PHP-CGI ondersteuning.
- Ingebouwde document-parser (documenten kunnen gedefinieerd worden via *.xml bestanden).
Bla! Client voor Windows
Bla! Client voor Windows is de applicatie die gebruikt wordt door de eindgebruiker en is opgedeeld in verschillende modules. Elke gebruiker dient geautoriseerd te worden voor specifieke functies en dus kan de gebruikerservaring gepersonaliseerd worden.
Module “Handscanner”
- Maakt het mogelijk om door middel van een barcodescanner te inventariseren.
- Biedt de mogelijkheid om een inventarisatielijst te exporteren als tab-gescheiden tekst.
- Kan een offline-database aanleggen door de artikellijst te downloaden vanaf de server, zodat er bijvoorbeeld geïnventariseerd kan worden vanaf een laptop zonder WiFi-bereik.
Module “Instellingen”
- Via de optie ‘Gebruikerbeheer’ kunnen nieuwe gebruikers aangemaakt worden, wachtwoorden gereset worden en gebruikersrechten ingesteld worden.
- Biedt de mogelijkheid om per papierformaat een standaardprinter in te stellen.
- Biedt de mogelijkheid om te scannen of foto’s te maken met een WIA-compatible apparaat. Foto’s kunnen vervolgens door middel van de ingebouwde editor geroteerd, geschaald, geknipt en opgeslagen worden.
- Biedt de mogelijkheid om een gebruikers email-adres in te stellen, waarmee sommige functies van de applicatie aan de gebruiker zullen rapporteren.
Module “Server”
- Biedt de mogelijkheid om vrijwel alle belangrijke server-instellingen te wijzigen, zoals UDP-broadcasts (voor vindbaarheid van de server zonder het IP-adres te weten), SQL-instellingen, (s)FTP-instellingen, et cetera.
- Biedt de mogelijkheid om de server te herstarten. Wanneer de Uni-Living server tijdelijk onbereikbaar was, diende de server erna herstart te worden om telnet-verbindingen te herstellen.
- Biedt de mogelijkheid om opdrachten direct op de server uit te voeren (opdrachten die normaal via een socket door de client-applicatie verzonden worden, kunnen hierdoor handmatig uitgevoerd worden).
Module “Taken”
- Biedt de mogelijkheid om taken, gedefinieerd in de taakplanner van de applicatieserver, indien geautoriseerd, uit te voeren. Zo kunnen gebruikers bijvoorbeeld gemakkelijk lijsten genereren.
Module “Magazijn”
- Biedt voorzieningen van locatiebeheer van artikelen. Toevoegen en verwijderen van locaties van artikelen, waarbij tevens een historie van de laatste 15 locaties wordt bijgehouden.
- Biedt voorzieningen voor het afdrukken van prijsstickers, barcodestickers en palletsheets met artikelinformatie.
- Biedt voorzieningen om bijlagen aan een artikel te koppelen, zodat bijvoorbeeld gebruikershandleidingen gemakkelijk toegankelijk zijn.
- Biedt onderdelenbeheer, waarbij reserve-onderdelen in kaart gebracht en afgeboekt kunnen worden.
- Biedt ondersteuning voor het toevoegen van metadata aan artikelen, zoals bijvoorbeeld aantal colli per artikel of montagetijd.
- Biedt ondersteuning voor het toevoegen van nieuwe artikelen indien deze wel gedefinieerd zijn in het achterliggende systeem.
- Biedt ondersteuning voor het genereren van EAN-13 barcodestickers.
- Biedt ondersteuning voor het definiëren en wijzigen van magazijnlocaties en routing. Toe te voegen en te wijzigen locaties worden gevalideerd aan de hand van deze definities. Van locaties kunnen barcodestickers afgedrukt worden die gebruikt worden in onder andere onderhoudsfuncties.
- Biedt rapportagefuncties zoals ‘artikelen per locatie’ en ‘artikelen met meerdere locaties’.
- Biedt de mogelijkheid om door middel van een barcodescanner magazijnlocaties te onderhouden.
- Biedt de mogelijkheid pakbonnen, geëxporteerd uit Uni-Living af te drukken, inclusief magazijnlocaties.
- Biedt de mogelijkheid om een verzamellijst te genereren, aan de hand van een backorderlijst uit webshop-systeem Sherpa.
- Biedt de mogelijkheid prijs- en voorraadinformatie per filiaal te tonen.
- Biedt de mogelijkheid om artikelen over te boeken tussen filialen en magazijn.
Module “Goederenontvangst”
- Biedt de mogelijkheid rapportages, barcode-, klantreservering- en artikelidentificatiestickers af te drukken aan de hand van verrichte binnenmeldingen.
Module “Expeditie”
- Biedt de mogelijkheid zendingen voor specifieke afnemers aan te maken.
- Zorgt ervoor dat logistieke medewerkers alleen de juiste en juiste aantallen van artikelen kunnen leveren door het gebruik van barcodescanners.
- Biedt de mogelijkheid tot het afdrukken van afnemer specifieke stickers en palletidentificatie.
- Toont realtime backorders.
Module “Orders”
- Biedt de mogelijkheid om door middel van een rapportage van verkochte artikelen per filiaal een order te genereren.
- Biedt de mogelijkheid om orders via een webinterface aan te maken en te wijzigen.
- Biedt de mogelijkheid om meerdere orders van dezelfde afnemer te combineren tot één verzamellijst.
- Biedt de mogelijkheid tot het afdrukken van pakbon en prijsstickers van geleverde artikelen.
- Biedt de mogelijkheid om artikelen automatisch over te boeken van het magazijn naar betreffende filiaal.
- Biedt de mogelijkheid om artikelen te beheren vanuit een contextmenu (bijvoorbeeld het toevoegen of verwijderen van locaties).
Module “Reserveringen”
- Biedt de mogelijkheid locaties te beheren van klantorders.
- Biedt de mogelijkheid tot het afdrukken van palletidentificatie.
- Biedt de mogelijkheid tot het verwerken van reserveringslijsten (artikelen die uit voorraad gereserveerd dienen te worden voor klanten). Er kunnen reserveringsstickers en palletidentificatie afgedrukt worden.
- Biedt de mogelijkheid tot het controleren van gereserveerde artikelen op actualiteit door gebruik van een barcodescanner.
- Biedt de mogelijkheid tot het versturen van afhaalberichten voor klanten per mail via de ingebouwde mail-editor.
Module “Rit”
- Biedt de mogelijkheid om routes uit Falkplan EasyTravel te importeren.
- Biedt de mogelijkheid order- en klantinformatie toe te voegen (klantinformatie wordt, indien bekend, automatisch geladen aan de hand van het ordernummer).
- Biedt de mogelijkheid ritten te uploaden naar internet, zodat een tijdvenster geraadpleegd kan worden via bijvoorbeeld een webinterface.
- Biedt de mogelijkheid ritlijsten af te drukken.
- Biedt de mogelijkheid collostickers af te drukken.
- Biedt de mogelijkheid SMS-berichten te versturen (tijdvak, vertraging, etc.)
Module “Service”
- Biedt de mogelijkheid om een dossier aan te maken.
- Biedt de mogelijkheid om onderdelen automatisch te bestellen, rappelleren, binnen te melden, afhaalberichten te verzenden, etc.
- Biedt de mogelijkheid om onderdelen per artikel te beheren, in- en uit te boeken.
- Biedt de mogelijkheid om te communiceren met klanten en leveranciers door middel van vooraf gedefinieerde mailsjablonen maar ook via handmatig opgestelde mails.
- Biedt de mogelijkheid om medewerkersgroepen, statussen, tags, checklists en levermethoden te definiëren.
- Biedt de mogelijkheid om leveranciers te definiëren, waarbij per leverancier een e-mail adres, vereiste gegevens voor het in behandeling nemen van claims en bijlagen, zoals vereiste formulieren, gekoppeld kunnen worden.
- Biedt de mogelijkheid om dossiers te ontgrendelen. Elk dossier dat geopend wordt, wordt vergrendeld door de betreffende gebruiker. Indien de applicatie niet juist afgesloten wordt blijft het dossier vergrendeld, waardoor deze optie in het leven geroepen is.
- Biedt de mogelijkheid om dossiers te koppelen. Indien het algoritme een mail niet automatisch heeft kunnen koppelen, dan kan dit handmatig gedaan worden.
- Biedt de mogelijkheid tot het genereren van een rapport, waarop alle uitzonderingen getoond worden (artikelen niet besteld, niet bevestigd of te laat geleverd).
Bovenstaande informatie toont een beknopte samenvatting van wat de applicatie kan. Het programma is ontstaan doordat het bestaande systeem niet (meer) toereikend was. Op het moment van schrijven wordt al bijna vijf jaar gebruik gemaakt van Bla!, tegenwoordig door tientallen medewerkers gelijktijdig! Bijna maandelijks breng ik nog kleine updates uit om functionaliteit toe te voegen of te verbeteren.
Bla! Publisher
Bla! Publisher is een distributie-applicatie. De applicatie download informatie van de laatst bekende versie vanaf de update-server en stelt aan de hand daarvan een bestandslijst samen. Na het toevoegen en/of verwijderen van bestanden en het aanpassen van de release-notes, welke getoond worden in het update-venster van de client-applicatie, kan een nieuwe versie via één druk op de knop geüpload en gedistribueerd worden.
Bla! Client voor Android
Als test bestaat er een zeer beperkte versie van de Bla! Client voor Android (4.0 en hoger). Deze versie kan enkel locaties van artikelen en klantreserveringen tonen en is vanwege het gebrek aan toegevoegde waarde nooit verder doorontwikkeld.