FIND_IN_SET. A handy little MySQL function

MariaDB MySQL

At AtYourService.com.cy we send a lot of emails. Especially when you compare it to the Cyprus market we send even more. Advocates of the Lean method we measure and report EVERYTHING. We even monitor some data real time. Reporting of a live table is a no go when you are running a real time application. So a lot of reports contain a lot of GROUP_CONCAT fields. When it comes to combinig these reprots with a semi hot table its kind of a mess to join over a field containing comma separated keys from another table.

SELECT * FROM 
table1,report_table2 
WHERE 
date BETWEEN 2015-01-01 AND NOW() 
AND table1.id in (x1,x2,x3)

But x1,x2,x3 is actually a text field in report_table2.

WHERE id in (table.field)

throws an error (well maybe not if the values are integers and MySql CASTs them to the first scalar value and if you are lucky the expression will evaluate to true if you hit the first one)

The solution?

SELECT * FROM 
table1,report_table2 
WHERE 
date BETWEEN 2015-01-01 AND NOW() 
AND FIND_IN_SET(table1.id,report_table2.field)

Maybe I should have known this but I didnt. It blew my mind and I thought I had to share.

Share your favourite MySQL function in the comments below

My plan to teach my 3 year old daughter programming looks promising.

Lego parts used to teach my daughter programming

I have a 3 year old daughter. She is a challenge to raise but she always makes me proud. My time with her is very limited but since day zero I do my best in making our time together as positive as possible. I dont want to be the pressurising parent that obsesses about making a clone of theirs but I truly believe that problem solving skills can be developed from a very young age. So I did my research and came with a way to teach my daughter programming using lego bricks.

The target

Model core mathematical functions and basic algebra using lego bricks

Time period

2 years

Facts

3 year old daughter

Unlimited supply of simple lego bricks (child friendly)

Lego parts used to teach my daughter programming
Lego parts used to teach my daughter programming

The girl knows numeric representation up to 10 and she can count objects and identify basic colours and shapes.

How I started.

I sat down with her and build walls with the lego bricks. I use a variety of techniques and told her to throw them to see how the break. Eventually she could identify the strongest and would do it from scratch.

Last summer she started drawing (vaguely) shapes using pen and paper.

Today I told her to make a triangle using her legos. I left her alone and I observed from a distance. She was just making random shapes and I thought “ok maybe I m aiming too high here”

I eventually hear her shouting “triangle, triangle”. I maybe parent blind (Failing to observe the truth because I am a parent) but I am very proud of the result.

triangle using lago bricks made by a 3 year old girl
triangle using lego bricks made by a 3 year old girl

Notice the bottom layer. She made the triangle but it wouldn’t hold itself together. She could just call me at that stage but all those construction lessons paid off.

Next steps

Tomorrow I will give her two pixel bricks only and see how she handles that.

I will then follow with colour limitations and then introduce the notion of lengths of sides.

After going through all the shapes I believe we will have a substantial way of explaining a problem so that she can go ahead and try to solve it.

 

 

How I learned how to work

How to work efficiently

2014! My first full calendar year in a startup!

The best thing about being in a startup is… Well you can read on or just google it.  

One thing stands out besides working with a great team. A team constantly delivering at full pace and producing what traditional 50+ employee companies with just a fraction of the resources.

Learning

One of our core values as a team but also a personal value of mine.

Its hard to keep up with everything but I am not talking about tech or startup news. I am talking about constantly improving the way you work, by looking at the medium/long term benefits.

One might say this is very vague but I boiled it down to 3 main things to pursuit in your everyday working schedule.

These are not strict to software development and I will do my best to be generic.

Efficiency

Use task management tools like Asana, and avoid communicating through email. Use a closed facebook group or an enterprise social network like Yammer.

There are thousands of tools and services out there to help you organise and automate your workflow.

My target for 2015 is

Automate everything you do for the third time

This can be applied to new feature development or just simple daily mundane repetitive tasks. Use macros in the software you use. If you don’t know how ask someone to do it for you.

Write shell scripts / batch files for everything that you do regularly.

 

Predictability

Have a timesheet of your countable (and repetitive) tasks. For example it takes me a  full hour to make a report table from database to ui.

Time your tasks and the bookkeeping will help you reduce planning fallacy. You will also have a better sense of when you are dragging a task too far along.

Whenever you can work for the future do it. Aiming for the long run, even if you are in the MVP stage, is good practise. You may not use it for your current project but there will always be a next one:)

Recovery

Have your rituals and your procedures on the top of your head. Having a crisis plan is not the worst choice. Don’t obsess about something happening,  Only obsess about how great your recovery plan is:) Note down how you solve problems and keep it handy for the next time.

Recover your brain to prevent burnouts. I work for 50 minutes and have a break for 10 minutes. Get some days off. You’ll make a hell of a comeback.

 

Research

Yeah I know I said 3 but keeping up with all of the above needs research and good old fashion studying. Reading the latest blog posts and tweets is not enough.

Get your gloves on and try all the new methods and tools you read about. Most of the time we develop habits which actually stop us from improving our workflow. The well known way is the fastest way when the clock is ticking. Try something new and bold. What’s the worst that can happen? You learn if a way is better or worse.

Anw enough mumbling. Pull your sleeves up and start playing:)