Social media app for mothers

Now that I have a baby on the way me and my wife got talking about how the daily routine would look like after the baby has come.

We came to realize that it will be extremely important for my wife who will stay at home for probably the first year, to get out there and remain social.

It is really hard for an adult to stay at home with a newborn and remain sane!

Adult contact will be extremely important.

However my wife is not alone in her situation. There must be hundreds of other expecting mothers in the Helsinki area who will be at home for the next year to be.

What if an app would be developed, Tinder style, in which moms who stay at home could casually look for new friends to hang out with.

It could be based on similar likes in your facebook profile, or, based on what you hate! Hatr has been around for a long time and seems to do he trick, matching people based on the things they dislike.

A set of a few questions before you sign up could be enough to determine on a very rough level what you’re in to and what you aren’t.

After you “match” with another mom, just like tinder, a chat window would open where you could arrange for a next brunch date!

Palkkitaulukko: Beam diagrams

One of the main untapped goldmines in Finland is the world of SEO. Take the keyword “Palkkitaulukko” for example.

This is such a niche keyword that pertains to a side-branch of the engineering-field. However as no-one in Finland at the moment is even trying to do anything for that keyword, it should be really easy to rank for it.


Palkkitaulukko is a list of different load cases for beams. A cheatsheet if you will. You can find a decent “palkkitaulukko” here.


What is a “palkkitaulukko” anyways?

In engineering, and even more so in structural engineering, you get hit left and right with different kinds of formulas. It’s impossible to remember them all.

As most objects in the structural engineering field are either beams or columns, fins have made a table with the most common beam situations. Not unlike any other bended beam table you can find online.

In this table some of the most common ways in which you can load a force onto a beam have been listed, with their maximum moment and maximum deflection.

It’s just a handy cheatsheet for when you are calculating stuff!

A lot of times it’s handier to check a certain load case from a beam table than it is to start calculating it from scratch.

Good self-learning guide

There are a few good books on Amazon that will help you learn how to calculate these problems. Better yet, that’ll teach you how to use these “palkkitaulukko”!

Click here to view Schaum’s outline of statics and strength of materials.

Puustelli library at Prodlib

Pretty excited to see the Puustelli library for Revit and ArchiCad be published.
In most other projects I have participated to a bigger or smaller degree. But Puustelli is the first library that I can say is my doing. I worked together with our contact at Puustelli for a good couple of months before we pushed this one out.

In itself there isn’t that much difference in what we do in other libraries compared to this one. The only specialty with this library however is that we are sharing rendering files to come with the models.
In ArchiCad that isn’t such a big deal as they can be easily defines within the .lcf-file. In Revit however this is a bit more challenging as the paths from which Revit fetches the rendering images can vary from one computer to the other.

Now the method chosen isn’t perfect, since we assumed most computers used for work and structural calculation most likely will run on some version of Windows. Hence the path in which the ProdLib library is installed will most likely stay relatively similar from one Windows version to another.

For Mac however it can be a bit more tricky and it might not always fetch the right images from the right places as it assumes a Windows operating system. This will probably be solved in version 2.0 of this library.

However I’m very pleased with the whole look and feel of the library. There probably are still some mistakes here and there. It might not be 100% flawless but it is mine :)! We’ll work out whatever kinks there are in future editions anyway!

ProdLib and the Puustelli library can be downloaded here.

Amazon Affiliate Link checker – tool 2.0

I’ve been wrestling with the Amazon API and found this great php snippet written by the people over at patchesoft.

Basically they have written a complete class I can call in my scripts to handle all of the communication with the Amazon API for me.

Now I am a complete newbie when it comes to PHP programming, let alone communication with an API.

So I am pretty chuffed to have come up with what I have done so far. Right now the checker tool scans a webpage for any tags with “href” in it, then it assumes those are websites.

That is a pretty safe bet.

Then it checks whether or not “shortened” url’s have been used, as is the case in a lot of affiliate links. It then unwraps the url and digs the associate tag and the product’s ASIN code from the URL.

Afterwards it uses the AmazonAPI-class to make a call to the API with the ASIN in question. It then checks what response it gets for availability when making a call with the ASIN of the product.

If it is an empty response then we just assume that the product is either unavailable, or “available from these sellers”. Both cases will result in my checker showing a “Unavailable” status however..

Things learnt:

-In the Amazon API class there is a field way up reserved for the different types of response groups. These response groups are important to list and details can be found here on what belongs where. At first I didn’t list the response groups that have the availability parameter in it and I was scratching my eyes out why my code wouldn’t work. The path etc was correct. But as I wasn’t including any of the necessary response groups in MY response XML there was no such field as <Availability>.

-PHP security. I have to use my own accessID and scecret key to make calls to Amazon’s Product Advertising API. So a challenge was to think of how to store that data in a safe way. Utilizing varous tricks to limit access to the private side of my website was a new experience!

-In general PHP coding. It seems a lot online is handled through PHP so it’ll be interesting to delve deeper into what kind of information can be passed back and forwards through pages, inputfields and tables.
Especially as I’ll be building another tool I dicussed earlier. For that project I’ll be needing a lot more php to access and store database information!


Things to do:

Right now the crawler just browses the given page and only returns the amazon links.

It would make sense that if you give the main domain of your website, the crawler would start crawling also a few levels deeper so you won’t have to.

So if you for example give your site “” and on your homepage you have a menu, then the crawler would crawl through those menu-links, and return any amazon links that may be there.

This has been suggested by already a few people I have spoken too.

A few issues though is that my script isn’t the fastest around. In fact it’s dead-slow.

So 2 things need to be done:

  1. Speed up the PHP-script so that it cycles through the found links faster
  2. Go as deep as possible when crawling a website and return the URL for the page the crawler is on, to the main table we have all come to know and love <3.

Amazon Affiliate Link checker – tool

It’s a terrible name for a tool. I know..

However it does the job though. Quite often I’ve seen people ask me whenever I’ve sold them a site: “How will I know I changed all the links?”. Because if you leave a tag unchanged on your site, that affiliate sale won’t be going to you..

The mechanics..

For those of you who are not familiar with how affiliate marketing works the above will’ve sounded like hebrew.

Affiliate marketing works in such a way that you push traffic to a site. That site then pays you for the traffic you have sent, should that traffic make a purchase.

I’ll just use amazon as an example as it seems to be the most popular affiliate platform.

So if I send someone through my website to Amazon and should that someone buy something from Amazon, I make a little bit on that sale. That’s how the economics works.

Now your next question should be: How does Amazon know that that person came from your site?

Good question!

Affiliate links

Here we come to the root of our problem. Affiliate links is how amazon keeps track of who came from where. And, more importantly, who to pay what and how much.

Every product mentioned on any niche site pushing people to Amazon uses affiliate links.
These are normal amazon product links, with one difference. These links contain tags that Amazon registers to each individual niche marketer.

So if you buy an already operational niche website that is making money, it’s in your best interest to change all tags in the affiliate links to your own.

However up until now you had to manually sift out the links from the page and just hope you got them all.

With this new tool I made, you can check a URL; It’ll then show you all amazon affiliate links on that site with its anchor text AND it shows who’s tag is attached to it.

So if you see a tag you don’t recognize, simply search for the anchor text of that link and change that link to a link that has YOUR tag.


For the ones who want to know how I did it:

It’s a small php script I have running that parses a certain URL for links:


$html = file_get_contents($url);

//Create a new DOM document
$dom = new DOMDocument;

//Parse the HTML. The @ is used to suppress any parsing errors
//that will be thrown if the $html string isn’t valid XHTML.

//Get all links. You could also use any other tag name here,
//like ‘img’ or ‘table’, to extract other tags.
$links = $dom->getElementsByTagName(‘a’);

//Function to check for shortened URL’s
function unshorten_url($url) {
$ch = curl_init($url);
curl_setopt_array($ch, array(
CURLOPT_FOLLOWLOCATION => TRUE, // the magic sauce
CURLOPT_SSL_VERIFYHOST => FALSE, // suppress certain SSL errors
return curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

//make it look nice
echo ‘<table>’;
echo ‘<tr class=”header”>’;
echo ‘<td style=”vertical-align:center; font-weight:bold;”>Anchor text</td>’;
echo ‘<td style=”vertical-align:center; font-weight:bold;”>Amazon tracking code</td>’;
echo ‘</tr>’;

//Iterate over the extracted links and display their URLs
foreach ($links as $link){
echo ‘<tr>’;
if (strpos($link->getAttribute(‘href’), ‘’) !== false || strpos($link->getAttribute(‘href’), ‘’) !== false) {

//Check for non-existant anchor text, most likely an image link
echo ‘<td>’;
echo “IMAGE LINK”, “\n”;
echo ‘</td>’;

echo ‘<td>’;
echo $link->nodeValue, “\n”;
echo ‘</td>’;
$parts = parse_url(unshorten_url($link->getAttribute(‘href’)));
parse_str($parts[‘query’], $query);
echo ‘<td>’;
echo $query[‘tag’];
echo ‘</td>’;
echo ‘</tr>’;
echo ‘</table>’;
echo ‘</br>’;
echo ‘</br>’;
echo ‘<a href=””>Go try another link!</a>’;


Happy link hunting!



edit: Already I’ve seen a few additions I could do to this tool. It could also check if the link is still working. Meaning that is the product still existing in Amazon/check for 404’s…

So many ideas!

Search Engine And Directory Submission Sites

Recently for projects I’ve been running with an Indian friend of mine I’ve been thinking on automating some of the link building using directory submission sites.

Alternatively there are also search engine submission sites available.

What are search engine submission sites?

Basically as far as I’ve understood it these are sites that add your own site to their directory. In this sense they send a spider to your website, index it and add it to their directory.

As a result your website is now listed in some directory somewhere that is crawlable. In the age before Google there probably were some hundred of different search engines available.

The good thing is.. These are still up and running! Even though Google has taken the lion-share of search traffic over the years, these directory and search engine websites are still being maintained.

How do these differ from directory submission sites?

Directories are basically a collection of websites grouped around topics. In the early days of the internet there wasn’t really a clever way of making information searchable.

So people just did the best they could and started gathering websites around a certain topic and group them in a directory of that particular topic.

It is a very clunky way of storing information but for all intents and purposes it does the job. If you click on a nature directory, you’ll be bombarded with sites ranging from tree diseases to a site talking about a particular type of goat living in the high-Andes… Just kidding but you get my point.

And there probably is a goat somewhere that lives in the high-Andes and most likely someone will have made a blog about it. If not I’ll be the first and figure out a way to monetize that too!

In short..

Search Engine and directory submission sites can greatly speed up the work of someone looking to up their SERP scores. In some cases, with the click of a single button your website will be added to multiple directories, creating multiple, decent quality back links in return.

What does that mean for someone looking to do a bit of SEO?

A lot actually. Assuming you are looking at doing white-hat SEO and not trying some dodgy stuff. The thing with white-hat SEO is that it is extremely time-taking.  Sending out eamils, reaching out to people, researching who to contact next just to get a few links.

It’s time taking. So there is a way to speed things up a little.

Serach engine submission sites add your website, coupled with your email address for verification purposes to a vast network of pre-Google search engines. These will gladly index your site and add them in their directory in an effort to make their directory bigger.

Don’t expect any influx of traffic to be coming this way though. As the search engines in itself are virtually useless. The reason we are doing this to get your link listed somewhere online, that is also readable by Google.

In doing so you will have, essentially, earned a link. And as in the early days of Google there is one metric that still counts: Links are votes.

The more links point to your website, the better you will do in Google’s eyes.

Are all links created equal?

They are not. As most of you reading this are probably aware; link quality plays an important part into the way the Google algorithms rank your website in relation to others in your neighborhood.

But that is the beauty of these directory sites and pre-Google search engines though. Especially the search engines have a relatively good rep with the folks in Palo Alto as these are relatively tricky to game.

For directories you have to be careful nowadays as a lot of them have become breeding grounds for Cialis and Viagra related businesses looking to advertise (and gain links).

 List of the best directory submission sites

Here are 30 online directory submission sites you should visit and put up your website. What they require from you is just some basic info about your website and your email address for verification purposes. It can be a bit of a drag to fill all these out manually (maybe I should script this somehow).. However it’s worth it in the end as you get extra links for relatively no effort.

1.      All Free Things  (Page Rank 4)

2. Free PR Web Directory (Page Rank 6)

3. Travel Tourism Directory Info (Page Rank 6)

4.  So Much (Page Rank 6)

5. High Rank Directory (Page Rank 6)

6. Britain Business Directory (Page Rank 6)

7. Marketing Internet Directory (Page Rank 6)

8. Hot Vs Not (Page Rank 6)

9.  Submission Web Directory (Page Rank 6)

10. Diolead (Page Rank 6)

11. Uk Internet Directory (Page Rank 6)

12. Jet Jaws (Page Rank 6)

13. Esjoub (Page Rank 6)

14. Lilink (Page Rank 7)

15. Feed Up Info (Page Rank 8)

16. Finance Buster (Page Rank 6)

17. Synergy-Directory (Page Rank 4)

18. Nexus Directory (Page Rank 4)

19. Directory Fire (Page Rank 4)

20. Master Moz (Page Rank 4)

21. Direct My Link (Page Rank 4)

22. Pro Link Directory (Page Rank 4)

23. Info-Listings (Page Rank 4)

24. Submissions 4U (Page Rank 4)

25.  Piseries (Page Rank 4)

26. Gain Web Org (Page Rank 4)

27 Best Free Websites Net (Page Rank 3)

28. PR 3 Plus (Page Rank 3)

29. Web Directory Co (Page Rank 3)

30. 10 Directory (Page Rank 3)


List of the best search engine submission websites

I’ve personally used for my previous projects as well as

Both have proven to be pretty useful and have not given me any bad rep (at least not according to the google search console) nor have I experienced any negative influence on my SERP. In fact quite the opposite.

Contrary to the directory submission sites the 2 mentioned above allow you to add your website to hundreds of prehistoric search engines. And as a result get multiple, white-hat backlinks at the click of a button.

After adding my sites to the above links I noticed a small, but noticeable jump across the board.

Happy adding and let me know if some of these links don’t work anymore!


New niche site:!

Since selling my safetyshoesreviews website I have cleared another slot in my inventory.

Right now I have started together with an Indian buddy of mine. He provides the content that I then review, adapt to make it SEO friendly and do the off-page SEO.

So far we have had one click already coming from Facebook to our site since posting our first article yesterday.

I estimate that the value of this niche site will reach close to $3k especially when you take the Christmas season into account!

GDL reference guide: Perfect self-study material!

I find that relatively often I have to check the “bible” of ArchiCad: The GDL reference guide.

In this guide in over 600 pages Graphisoft goes through the basics of how the GDL programming language works.

If you are interested in making objects for ArchiCad, this reference guide gives a detailed description of GDL, including syntax definitions, commands, variables, etc.

You can download it for yourself using this link.

Table of contents and logical flow

The reference guide starts of handling 3D objects before moving on to how to represent them in a 2D plane.

It however lacks severely in for example curtain wall and other feature objects that have become more mainstream in later versions of ArchiCad.

For those of you who have been reading this blog you’ll find that the ArchiCad curtain wall is severely under-documented in the reference guide.

Lastly before going over the various listing parameters the GDL reference guide goes through making user interfaces.

Later I’ll post some code-snippets and ideas that have helped me in the past. Making user interfaces can be tedious but with the right templates, they are a piece of cake!

GDL reference guide additions

In a later post I’ll add more information on several additions that were made to the reference guide.

For example the GDL cookbook by David A. Nicholson is a really good addition if you are tackling GDL at home.

In a very clear and straight forward fashion David demystifies several commands and codes included within GDL.

Although the cookbook was made for a very early version of ArchiCad, it is still relevant. The version in which the cookbook was written was iirc ArchiCad 8. Now we’re up to 21 already at the time of writing.

However the good thing about GDL, the GDL reference guide and the cookbook is that the language itself remains fairly static.

As a result objects written in ArchiCad version 8 will work just as fine in later versions (mind a few UI quips that I’ll go through later as well..).



Business idea #1

Something I have been thinking about building is an online tool that will help improve security on building sites. And by security I mean Health and Safety.

It would take the form of a template that you can drag and add content to to make it suit your need. For example if today you’re planning to do lifitng work on site you could select the “lift work”-template from the library and click and add other information there.

This other information would most likely be the names of the ones doing the lifting work, the name of the person in charge of the site and general safety and then the name/number of the jobsite.

This would all be done through an app or through a dedicated website to which you have credentials.

Per usage of the website (or per document created) you’d pay a fee.

Thanks to the fact that everyone has a smartphone nowadays you can make your phone into an automatic document signer. Once the safety-contract has been made using the template, you can then click on a “sign here” button upon which you phone would use its touchscreen capabilities to read an autograph.

The users then use their fingers or a stylus to sign on your phone. The document is then stored in a central location and emails are sent to both the workers and the supervisor with the document attached.

That way supervisors have written proof that the workers understand the basic safety rules of the work they are about to undertake, and the workers have had to go through the document so they are aware of the risks and dangers involved. And more importantly how to prevent them.

A next step would then be for the general manager of the construction company to have full overview of the health and safety on his/her jobsites.

They know that on this day at jobsite x there is this kind of work going on. On a calendar they can then see that safety documents were supposed to be created on the previous day and signed today.

If they see that this has not happened (a signed and stored document would be an inserted row in a database somewhere) they can then phone the job site manager on site and ask him/her to collect those documents immediately.

So that everyone is covered should something go wrong, but more importantly prevent something going wrong in the first place!

ArchiCad Curtain Wall – Custom Panel

So far I have been working on an ArchiCad project for a client of ours. Apparently it is extremely tricky to do anything with the archicad curtain wall tool.

Similar in Revit the curtain wall tools are very much in the starting blocks when it comes to usability and user-friendliness. For Revit there is a bustling community of developers actively working and modifying the tool using various plugins to make it better suit their needs.

In ArchiCad the main programming language is (next to C# for plugins) GDL. Or Geometric Description Language. It turns out however that in the User Reference Guide there is no mention (or very little) on the usability of curtain walls.

ArchiCad Curtain wall code

Quite some trial and error  was necessary to make things work. If you decide to go the hard route and design a custom panel in GDL, here is some code that you might find useful:

cprism_ mat1, mat2, mat3, 4, panel_thickness,

The above piece of code makes sure your panel follows the scheme. You can then set several scheme settings and save them as favorite settings so you don’t have to redo the work over and over.

Also more interestingly for us and our client, these favorites can be exported to a .prf file that you can load in to another project entirely.

AC_PanelCoords[4][4] stores the coordinates of each and every panel. So as you call them in this way in (for example) a cprism_, you can then use this framework to make your own custom panel.

For my own I have declared in my master script the following:

!This makes it follow the grid

And in my 3D-script:

cprism_ mat1, mat2, mat3,29,zzyzx,

..It can get a little complicated..

And if only it was this simple..

There is a 50 mm offset using the panel coordinates that I have no idea (so far) where it is coming from. Probably the archicad curtain wall doesn’t give the exact coordinates or there is some setting that is switched on somewhere that I haven’t been able to turn off.

However it seems to only affect on the 2D representation of the object. The line I commented out actually fixes this and shifts everything 50 mm to the left, alligning everything perfectly.


In the 2D view it seems like the first panel and the second overlap. However as we see from the 3D this is not the case. So very interesting indeed that a simple “project2” command would show these to be intersecting.

My hunch is that this is caused by some bug or error in the AC_PanelCoords somewhere. Or then a fault in my code, which is also highly likely!

2D representation

Secondly another thing that has me ripping out my hair is, as mentioned above, the fact that a projected view of the acrhicad curtain wall is not the same in the 3D view.

Case and point:

archicad curtain wall

How is it possible that the projected view of this panel in the curtain wall is a projection of it on its side?

This has to do with how the archicad curtain wall tool interprets the orientation of the panel as an object itself. The 2D projection then takes the information of the object in its 3D view representation rather than its view in the curtain wall itself.

Meaning that to get the panel to show up as upright when used in a curtain wall, you need to turn the object when modelling in GDL in such a way that it lays flat on the ground.

Only in this way (I have found so far) will the panels show as upright in the archicad curtain wall tool. Then the 2D representation (if you project) takes its information from the GDL version of the standalone object.

Extremely frustrating and most likely a bug in at least Archicad 18. Don’t know if this has been fixed in later versions of archicad.


One workaround that I have found so far is to change the projection_code from 3 (for topview), to 4 (being side-view).

Your code will then be:

project2 4, 270, 32

Which basically is the projection from the side, used as projection from plan-view.

Logical, right?

Handling Corners

Our customer wanted a solution that would be as true to the Archicad curtain wall tool as possible. As such the way we handle corners needed to be similar.

Right now my code does this:

It lines up well, but let’s face it, not a pretty corner now is it.

When taking a look at what ArchiCad had to offer I found that they have a separate panel in their curtain wall tool to handle corners.

As a result I added the next few lines of code to my custom panel in an effort to make the behavior more like the standard ArchiCad ones.

In the master-script I have added the following:

if behaviourvalue = “Normal” then
!This makes it follow the grid
if behaviourvalue = “Corner” or behaviourvalue = “Kulma” then
!Add thickness B of panel to the end to make the corners square

In practice..

In my interface script I have a dropdown with 3 values; Normal, Corner and Stretchable.

If “Normal” is chosen, the panel behaves as it should. It follows the grid as is defined by the user and doesn’t do anything extra.

However if you select the curtain wall and select the “Edit in 3D”-mode, individual panels become clickable.

In order to make a square corner, all the user then has to do is click one of the panels. Then he/she needs to select “Corner” from the dropdown. Ultimately the code works in such a way that it will add the thickness of the panel (in my case read in as “B”) to the end of the panel.

The panel “overshoots” the grid by a measure of “B”. As such the corners are squared.

As the code is placed in the master script there is no need for me to update the 2D script. It takes the rules automatically from the master script.

Frame objects

Lastly the archicad curtain wall tool allows you to add in a lot more than just custom panels. In GDL you can easily define mullions, transoms and border frames.

Mullions are the listings that go in a vertical direction, while transoms divide your panel in a horizontal direction. Border frames border off your wall.

Check this article later for more information on those.

Also if you notice something off or something strange, no-one is perfect :). Please let me know in the comments below so I have a chance to fix it!

Here is the original thread