teleren/devto huggingface dataset:
[Entry] Appointment Scheduler
Tags: pushercontest, laravel, pusher, vue
Published: 2018-05-08 14:51:19

---
title: [Entry] Appointment Scheduler
published: true
description: An appointment scheduler using sockets to prevent overlap, submitted to the first-ever DEV Community contest. 
tags: pushercontest, laravel, pusher, vue
---

# What I built

{% youtube LT6YtcJ6dZI %}

This scheduler allows you to create appointments to be scheduled in different rooms. You can create rooms, create appointments to be added directly to the scheduler, move appointments between rooms and time slots on the scheduler, schedule appointments without a time to be added later (drag and drop them on).

The scheduler uses sockets to communicate with others on the schedule, so that appointments time slots lock out when you are scheduling there, or when you are editing an appointment.

## Demo Link

Project currently lives here: [dev.to Scheduler: scheduler.dougblackjr.com](http://scheduler.dougblackjr.com/)

Note: This app is made for desktop viewing.

## Link to Code

Repo: https://github.com/dougblackjr/devto-scheduler

## How I built it (what's the stack? did I run into issues or discover something new along the way?)

### STACK:
php7.2
[Laravel](https://laravel.com/)
[Vue.js](https://vuejs.org/)
[Redis](https://redis.io/)
[Pusher](https://pusher.com/)
[fullcalendar](https://fullcalendar.io/)
[fullcalendar Scheduler](https://fullcalendar.io/scheduler)
[toastr](https://github.com/CodeSeven/toastr)
[Digital Ocean for hosting](https://www.digitalocean.com/)

### ISSUES:
There were two challenges.

The first was locking the time slots on the calendar, which have no backend model created for it. In order to show someone across the ocean that the time slot is being edited, and to avoid overlap, I used Redis to create a key that specifically targets that slot on that day for those times for that particular resource.

The second, and possibly more challenging, was dealing with time zones. When I had tried this in the past, I relied heavily on the browser to deal with time. But if someone was halfway around the world, the time slots would get all borky. Therefore, I throw pretty much everything at the server in order to deal with timing.

## Additional Resources/Info 

Here's my random dump of thoughts:
1. Pusher made this a thousand times easier.
2. Though I love my friends around the world, if y'all could move to Eastern Standard time, I would appreciate it.
3. I created this because scheduling is hard. I'm grateful for the already created things that made this possible. Please steal my code and make it better.
4. Thank you to dev.to for being a positive community and for making this all possible!
NodeJS Frustration
Tags: node, javascript, frustration
Published: 2018-05-08 14:01:07

---
title: NodeJS Frustration
published: true
description: and how nodejs is making me want to switch
tags: nodejs, javascript, frustration
---

Node.JS is cool and being with it for quite a bit of time, I am attached to it. Even so, I am really frustrated about the lack of cms that can overthrow wordpress, joomla, or maybe e-commerce solutions like Magento or even woocommerce.

Surely I tried ReactionCommerce, TotalJS and at least 20 other solutions and none of them are even close enough. 

- Just wasted hours on the `gatsby` and `strapi` tutorial, only to find it's not working anymore due to some changes in some small library somewhere.
- Just wasted hours on some `reactioncommerce` swag tutorial only to get `cannot find module` and `I don't actually care and I won't run` errors.
- Just wasted hours on `react-virtualized` where I cannot run it properly with `sementic-ui` because of some `className` prop on the `react-virtualized` package.
- Just a simple `npm install` on `meteor` alike projects takes millions of years and hundreds of error logs. In the end you get a non working app, hours wasted, frustration and a gigabyte big node_modules folder.
- User role management sucks. No proper guideline anywhere about how to properly manage the user roles and such. 
- Theme management sucks. Once you create a theme, you are done with it, no changing it.
- In the end, everyone ends up frustrated, some pushes some PR to certain repo hoping to change, but ends up getting no response for 5 years because the previous frustrated guy doesn't care about it anymore. The others creates their own version from scratch and ends up same. 

I like nodeJS, I like javascript. There is no denying it. I liked it for past 6-7 years and I want to like it more and do not want to change just because it's making me frustrated. 

The only solution for all above always tells me to build a cms from scratch, but that will end up another abandoned project soon because it will make me even more frustrated.

PHP is bad, JS is bad, only (put language name here) is good, and that's okay. So, do you think it will take another 10 years for nodejs to be where php (...consider wordpress/magento etc) is right now?
Fixing Corrupt ZSH History
Tags: linux, zsh
Published: 2018-04-15 03:46:29

---
title: Fixing Corrupt ZSH History
published: true
tags: linux, zsh
canonical_url: https://rishi.baldawa.com/fix-corrupt-zsh-history/
---

Today, when I logged into my console, I saw following error message

```bash
zsh: corrupt history file /home/rishi/.zsh_history
```

doing a quick search, I was able to reach a [stackoverflow link](https://superuser.com/a/957924)[^1] that recommended I run following set of commands
```bash
mv .zsh_history .zsh_history_bad
strings .zsh_history_bad > .zsh_history
fc -R .zsh_history
```

I ran them and everything was handy-dandy again. This did made me wonder what these commands do.

## Rename

```bash
mv .zsh_history .zsh_history_bad
```

Well `mv` should be familiar to anyone who's toyed with linux. It moves files from one path to another. Also often used as a cheap was to rename files as we did here. More details on move in the [man page](https://linux.die.net/man/1/mv). 

## Sanitize

```bash
strings .zsh_history_bad > .zsh_history
```

Strings is interesting. I had not come upon it before. Based on the [man page](https://linux.die.net/man/1/strings):
> ... strings prints the printable character sequences that are at least 4 characters long (or the number given with the options below) and are followed by an unprintable character...

It seems `strings` is a nice way to actually get the printable characters in a file. In our case, this means if the `.zsh_history` was corrupted due to non-printable characters[^2], this will help parse them out. It also means if you ran any commands with non-printable characters, you've now lost them from your history as well. I'm very unlikely to run printable characters, so this wasn't as big of an issue but this may make past commands for QAs and pen-testers a tad-annoying.

## Parse

```bash
fc -R .zsh_history
```

`fc` was interesting. It doesn't show up in the manpage. I ended up in a searching a fair amount to realize that this is a zsh-built in feature. There's some  information about it within [zsh documentation](http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html). 
> ...'fc -R’ reads the history from the given file

It seems `fc` will interact with your zsh_history. In this case, we are reading from the file and, since no second file was mentioned, putting it back into the same history file. i.e. re-writing history by parsing the same file. 

## Cleanup

```bash
rm .zsh_history_bad 
```

This wasn't part of the original script but you should always clean-up after yourself. This command deletes the tmp "bad" file that you created in the first step. 

## Conclusion

If I power shutdown my VM / linux box while zsh is still writing content, I can still corrupt the zsh_history. As long as I don't care about any other non-printable characters in the past and open to keep using zsh, I can run the above commands to get back to a happier stage


[^1]: Technically not stackoverflow but I hope you know what I mean.

[^2]: Probably because I did a power shutdown while carrying out a load test on a tiny VM.
Hidden Coding Challenges?
Tags: discuss, webdev, javascript
Published: 2018-05-08 12:33:37

---
title: Hidden Coding Challenges?
published: true
tags: discuss, webdev, javascript
---

So I was on a website today trying to send some money between continents, and I ended up rooting around in the console looking for an error that I thought might have occurred when I saw this in the log:
```
Welcome to TransferWise's CLI challenge.

Use the object 'DevChallenge' to communicate with me.
Just set the DevChallenge.answer property to send in your answers.

Also don't forget to mention the last keyword when
you apply for a job at TransferWise :)

First question: are you ready?
```
[link – open the console](https://transferwise.com/)

I've seen these types of challenges before, and I was bored, and long story short I completed their whole 10-question code challenge.

Simply put, I thought it was really fun!

So, I have a few questions for the dev.to masses:
1. Does anyone know of more of these? I have some time to kill and I want to do more!
2. It seems like most of these are trying to drum up baseline-qualified applicants for dev jobs with their service. Do you think that a code challenge like this is actually useful for either applicants or hiring directors?
3. What's a question you'd definitely put on your hidden test if you were to design your own?
Local Overrides😈 with  Styles in Chrome Dev tools
Tags: chrome, css, webdev, showdev
Published: 2018-05-08 12:31:11

---
title: Local Overrides😈 with  Styles in Chrome Dev tools
published: true
description: Overrides with  Styles
tags: chrome,css,webdev,showdev
cover_image: https://cdn.pixabay.com/photo/2018/04/11/08/59/seemed-3309912_960_720.jpg
---

Have you seen In chrome, we have the option to override Local styles And still, it shows if we reload the page.

Let's see how to use the local overrides in chrome 66.

I'm using sample grid file  By default my grid have black and blue colors.

 
![](https://thepracticaldev.s3.amazonaws.com/i/culcrcexz6wgul1lbija.png)

**I have enabled the local overrides by selecting the project directory.**

![](https://thepracticaldev.s3.amazonaws.com/i/12cobcbdgwc2cmvdg6do.gif)

Have you seen in above image I have changed blue and black colors when I refresh the browser our changes doesn't lose?

If you have seen in the project directory there is the new style.css file created by google chrome with changed styles.


![](https://thepracticaldev.s3.amazonaws.com/i/ygdw6if01hggg2w5s53p.png)


Hope you guys love these
Any good CRM for long-term client management?
Tags: crm, discuss, webdev
Published: 2018-05-07 22:24:44

---
title: Any good CRM for long-term client management?
published: true
description: 
tags: crm, discuss, webdev
---

![](https://thepracticaldev.s3.amazonaws.com/i/su25a5ouimildlzorf4c.jpg)


Hi,

Let me try explain a problem, I know there must be solution, but don't know what it is. I hope you could help me finding it.



In my workplace, we provide a lot of different IT services and configuration to each client (B2B) around the core product (_not relevant here to explain_). Those extra features all are optional, but we can provide if needed.

For example, some of them answers to:

* Do they have FTP server, or we should provide one?
* Can they do their own monitoring, or should we do it?
* Do they have AWS (any other) cloud account or do we setup it?
* All servers for app on cloud or barebone, or both?
* Any 3rd party licences, do they buy them or we?
* etc.
* etc.

I imagine a system where could I go to client profile and add a recurring service like _FTP (500GB) (AWS)_ or _Monitoring (basic to email)_, and the core product as well. These are simple examples, but IRL it gets more detailed.

Workflow I ideally imagine:

* Sales enter new clients / PoC details, contact info (multiple persons per each client)
* Then we (production team) realize a solution, change things over time
* Accountancy could see _standardized_ list of services and send out a bills each client


The CRM's I've checked are directly towards sales / leads, closing a deal. Work again, sell a product, but this is completely not that. Also, this is not accountancy system I am looking for, many options are not generating costs, but still need to remember, like which cloud(s) are used for each client or simply timezone they operate.



Suggestions can be OSS or paid subscriptions, maybe with some API available

Do you track services you provide to clients? Any system for that? Can you suggest anything? Please halp!
How to Create a Profitable Carpooling App like Waze
Tags: blog, carpoolingapp, carpoolingapplike, taxiappdevelopment
Published: 2018-05-10 10:20:36

---
title: How to Create a Profitable Carpooling App like Waze
published: true
tags: Blog,Carpooling App,Carpooling App Like ,Taxi App Development
canonical_url: 
---
![](https://www.itfirms.co/wp-content/uploads/2018/05/3-Tips-to-Create-a-Profitable-Carpooling-App-like-Waze.jpg)
If you are looking for creating a profitable carpooling app like waze then here we have mentioned some important tips for the same: [https://www.itfirms.co/3-tips-to-create-a-profitable-carpooling-app-like-waze/](https://www.itfirms.co/3-tips-to-create-a-profitable-carpooling-app-like-waze/)
Why Should You Choose AGILE for Mobile App Development
Tags: agiledevelopment, appdevelopment
Published: 2018-05-08 10:33:07

---
title: Why Should You Choose AGILE for Mobile App Development
published: true
description: Agile development methodology saves time and cost for clients. Its one of the best model wherein requirements are not 100% clear and If it still evolves. Mobile App development companies shall use Agile Methodologies in building web and mobile products.
tags: agile development, app development

---
Typescript tip: Don't use "naked any", create an "any interface" instead.
Tags: typescript, programming, webdev, tip
Published: 2018-05-08 10:24:38

---
title: Typescript tip: Don't use "naked any", create an "any interface" instead.
published: true
description: By creating a new type instead of using any you make your code intent clearer
tags: typescript,programming,webdev,tip
---

One of the get out clauses that Typescript provides is the use of the any type in your code base. At the time of creating our first implementation we might not know the complete shape of our object and we might be tempted to overload our functions with lots of logic

![](https://thepracticaldev.s3.amazonaws.com/i/6sayzse4kvy4zisfq91y.png)


The code isn’t very descriptive in some ways, at least where Typescript is concerned. Instead of using this any, we can create an interface that allows the code to be more descriptive while still giving flexibility during development.

![](https://thepracticaldev.s3.amazonaws.com/i/ydu1mhbpn9eoxhtu2gvz.png)


Already this is much better! We know we are getting an OldModeland we are going to get a newModel so later in our code we’ll be able to call up methods and properties we might attach to it. The compiler won’t complain either and give you the ability to focus on enhancing your type.

Another added benefit is in Code you can Alt or Ctrl + Click on the interface from anywhere to see it’s shape, and see if you are missing properties.

But as our model begins to be used, we begin to see the types we want to create.

![](https://thepracticaldev.s3.amazonaws.com/i/ypdfgplu5w2kbhcmoip4.png)

We haven’t finished extracting all the features of the OldModel just yet so we leave in the [key:string]: any on the main object. The properties also receives this because we want to retain that flexibility. If you need to you could be more strict actually set the values as a list of specific types like:

![](https://thepracticaldev.s3.amazonaws.com/i/i6w3o2sl2q4hcwf4nazr.png)


This would at least ensure your property was reasonably strictly enforced to one of these types.

You could even go further and create a class for your type:

![](https://thepracticaldev.s3.amazonaws.com/i/o8589a34x144bspg8twp.png)


Our NewModel we want to lock down so we remove this from it. From here you can make your code more readable, testable and can refactor out complex logic down to type comparison and object creation.

Hopefully using this technique will help your codebase too!
automobile engineering
Published: 2018-05-08 09:45:05


title: Automobile Engineering

published: TRUE

description:  Automobile Engineering – The duration of the course is four years and course deals with the study of designing, manufacturing and operating automobiles like buses, trucks, cars etc. and also their respective engineering subsystems. B.E. (Automobile Engineering) also offers specialization in aerodynamics, alternative fuels, chassis, electronics, emissions, ergonomics, manufacturing, materials, Motorsport, power-train, rapid prototyping, vehicle and pedestrian safety or supply chain management. visit >  <a href="www.sharda.ac.in/course/b-tech-me-with-specialization-in-automobile-11">Sharda University Greater Noida Website</a>

tags: BTECH
automobile engineering
Tags: btech
Published: 2018-05-08 09:44:19

---
title: automobile engineering
published: TRUE
description:  Automobile Engineering – The duration of the course is four years and course deals with the study of designing, manufacturing and operating automobiles like buses, trucks, cars etc. and also their respective engineering subsystems. B.E. (Automobile Engineering) also offers specialization in aerodynamics, alternative fuels, chassis, electronics, emissions, ergonomics, manufacturing, materials, Motorsport, power-train, rapid prototyping, vehicle and pedestrian safety or supply chain management.<a href="www.sharda.ac.in/course/b-tech-me-with-specialization-in-automobile-11">Sharda University Greater Noida WEBSITE</a>
tags: BTECH
---
Replacing embedded GoogleMaps with OpenStreetMap
Tags: maps, google, googlemaps, openstreetmap
Published: 2018-05-08 09:32:19

---
title: Replacing embedded GoogleMaps with OpenStreetMap
published: true
description: Time to replace GoogleMaps
tags: maps, google, googlemaps, openstreetmap
---
Recently, Google [announced](https://cloud.google.com/maps-platform/user-guide/) that as of June 11th 2018 a billing account (credit/debit card) and API key would be mandatory requirements for using GoogleMaps, even if your usage currently fell below the free tier of $200 'value' per month.

If however, you feel this is an unnecessary complication, and wish to avoid nasty surprises, especially if someone else were to use your API key, then it may be time to investigate an alternative, such as [OpenStreetMap](https://www.openstreetmap.org/). 

My usage was simply to provide a dynamic location map on my website, so the steps for me were particularly simple:

* Go to [OpenStreetMap.org](https://openstreetmap.org)
* Search for the location you want as the centre of the map, or use the arrow to Show My Location
* Select the desired layers, such as Standard, Cycle Map, Transport etc
* Zoom and pan as necessary, using the + and - icons and your mouse
* Select the Share icon
* Decide if you want to show a marker, and tick the checkbox if so
* Highlight the HTML tab
* Copy and paste the resultant HTML fragment into your website

For example:

```html
<iframe width="425" height="350" frameborder="0" scrolling="no" 
marginheight="0" marginwidth="0" 
src="https://www.openstreetmap.org/export/embed.html?bbox=-2.493209838867188%2C53.50540525319918%2C-2.246360778808594%2C53.61980121473449&amp;layer=mapnik&amp;marker=53.56274386269267%2C-2.3699569702148438" 
style="border: 1px solid black"></iframe>
<br/><small>
<a href="https://www.openstreetmap.org/?mlat=53.5627&amp;mlon=-2.3700#map=12/53.5626/-2.3698">
View Larger Map</a></small>
```

As you can see, the key ingredients are the latitude and longitude co-ordinates of the bounding-box of the map area required. The`%2C`s are URL-encoded commas. You can also tweak the `iframe` width and height etc to suit your needs.

![Map example](https://thepracticaldev.s3.amazonaws.com/i/umeqigyohfvazmko5p8q.png)

Happy mapping.
Downtime
Tags: productivity, career, tips, management
Published: 2018-05-08 08:19:52

---
title: Downtime
published: true
description: If we keep track of our daily schedule really thoroughly, we might be shocked how much time we waste in five to fifteen-minute breaks. I am saying “waste” not by accident here since we are often wasting our time during breaks instead of recharging batteries. The good news is that brief mental breaks taken in a reasonable way still help us re-focus, regain motivation and reevaluate goals.
tags: productivity, career, tips, management 
---

If we keep track of our daily schedule really thoroughly, we might be shocked how much time we waste in five to fifteen-minute breaks. I am saying “waste” not by accident here since we are often wasting our time during breaks instead of recharging batteries. The good news is that brief mental breaks taken in a reasonable way still help us re-focus, regain motivation and reevaluate  goals. 

Rest at work is a necessity without which efficient job is not possible. And we should never feel guilty because of it. If our mind is overloaded with information and stimuli, we do tasks less effective than usual, and things on our to-do-list are just accumulating. **It is clear that without downtime we are less efficient and less engaged, but let us face it - taking intentional and productive breaks is something completely different than accidental scrolling through Facebook for ten or twenty minutes.** Another problem is that taking too many breaks at work will not bring about anything good, too. Especially if we are made to stop doing our tasks due to some noise at the office, a poor level of sound privacy or other disruptions. After such a pause we often end up back where we started. 

**That is why, it is good to plan breaktime in advance.**  Planning is not only significant if it comes about completing tasks. It is good to think what time of the day is fast-paced and what is prone to intervals. For some people breaks taken in the mid-morning are more likely to boost energy and enforce concentration, and for others these might be intermissions in the mid-afternoon. I deeply believe that breaks at work should be well-thought and first of all, they should be good for us and people around. We should always keep in mind that by taking a break we should not interrupt someone’s else train of thoughts. 

![downtime](https://thepracticaldev.s3.amazonaws.com/i/s741ylcg7p4qaa187rqh.jpg)

**Are breaks waste timers? No, as long as they are not accidental and interrupting. After all, downtime is to increase our productivity, improve reasoning skills and make us happier not more stressed.**

Originally published at [brightinventions.pl](https://brightinventions.pl/blog/) 

By Urszula Stankiewicz, Social Media & Employer Branding Girl @ Bright Inventions
[Email](ula.stankiewicz@beightinventions.pl), [LinkedIn](https://www.linkedin.com/in/urszula-stankiewicz-7bb10577/)