Dashboard UI in Answers

Managing our products from the configuration file is possible but inconvenient, and we understand this. We decided not to include it in our first release and concentrated on the creation of the install script’s UI instead. But we, at Deep Shift Labs, already started discussing the appearance of the dashboard, and what functionalities it will include.

No doubts it will be a single interface for all Startyco products our clients will buy and plug to the same core product. This is our goal; to create pluggable web apps with a single dashboard to manage them all.

For now we do not have many features (and we do not rush to implement them all), and this is how dashboard can look like to administer users:

Startyco Admin's Dashboard - Users

We think this would be a better way to share permissions rather than manipulate user IDs from the database and edit a configuration file.

Here is a wireframe of the spam protection part of our dashboard which shows messages which were suspected as spam by, for example, SpamAssassin. You will decide how Startyco products will react, post them, and notify you or delay posting and notify. You will be able to ban and train your own instance of SpamAssassin to make it smarter.

Startyco Admin's Dashboard - Spam

Comments in Answers


One of the features from our TODO list is ‘Comments’. This mode can be turned on to allow your users to clarify a question or an answer. We think, this mode will add some interactivity to your Answers portal and make it more convenient for your users.

Comments UI in Answers

Voting in Answers

We are adding a voting feature in the next Answers release. Users will be able to vote for questions (for example, ‘I also have this question’ or ‘this question does not make any sense’) and answers. You will be able to turn on voting by setting it in the configuration file. You can allow voting for questions only, for answers only, both, or none.

We thought it will be quite important to be able to show up and down votes split. To keep the UI simple you will be able to see it when you hover your mouse over voting arrows or score. It makes sense to show a votes split when there are a few votes in different directions which also means it has to be at least two votes. Maybe we will show votes spit without hover when an answer’s score is 0 with equal amount of votes up and down (‘controversial answer’, I would say).

Voting UI in Answers and Ideas Read the rest of this entry »

XSS and HTML formatted text

No pasaran!


We have been working on Starty.co Answers for quite a while, and we cannot stop adding new features and hone existing ones.
Finally we decided to release the first version of Answers without such a convenient thing as text markup, like BBCode. However, we did some preparatory work in this area and decided that in the near future it will include the TinyMCE  WYSYWIG and Highlight.js module to highlight code snippets.

Even though we decided not to include a full markup in version one, it was necessary to implement the basic things – to replace the line breaks with <br> and parse http(s):// links in the text and replace them with <a href=”"></a>.
Read the rest of this entry »

Install PHP 5.4.6 on IIS 7 to work with MS SQL 2008

Instal PHP 5.4.6 on IIS 7 to work with MS SQL 2008

I decided to write this post because I have not found a simple and clear description for installing PHP on Windows, and setting this not very common combination to work with MS SQL 2008.

We are currently working on porting the largest system ever created in Deep Shift Labs from Windows 2000 and MS SQL 2000 to Windows 2008 and MS SQL 2008. I want to speak briefly about the history of this system and why we actually needed to install PHP on Windows. The system is about 800K lines of PHP code and it has been helping people to solve their business needs for the last 10 years. This system is designed for one of our customers. The first few years, the system worked on FreeBSD, Apache and PostgreSQL. Then the client’s company went public, and they needed to switch to commercial software. Sometime in 2004, we have been able, thanks to the fact that we originally used ADODB, to move, with a little effort, from FreeBSD/Apache to Windows 2000/IIS 5 (PHP runs as an ISAPI module). Finally, in 2006 we moved the then small database, both in structure and in size, to MS SQL 2000 from PostgreSQL.

The most difficult part in the distant 2006 was to find a driver which is bug free with MS SQL. We had tried everything supported by ADODB back then, and, in the end, we decided in favor of php_dblib.dll suggested and maintained by Frank Kromann. Frank was maintaining MS SQL extensions in PHP project and helped us immensely. The php_mssql.dll driver was using ntwdblib.dll from Microsoft, that does not work with dates and long texts properly. php_dblib.dll used dblib.dll from FreeTDS and we have not found any problems in it and started using it.
Read the rest of this entry »

Sparklines galore

Sparklines galore

Remember, when we were young children, we liked to ask the other kids, “What is heavier – a kilogram of cotton or a kilogram of nails?” when we already knew the correct answer and wanted to see their reaction. This post is dedicated to this problem, but in the field of web development :) Okay, I will not outwear your patience. We’ll talk about the optimal way to display a large number of small graphs on the same page.

I will begin with a little background. Deep Shift Labs; the company I have the great honor to work at, from 2002 is engaged in the development and support of a very large system for one of their clients. When developing a new application for this system, we decided to use small charts called sparklines. What they are, how we found them, and how we decided to implement them are described in this post. For those who have not read it I would like to explain why we decided to generate graphs with PHP. All reports this system generates are also available in PDF and Excel. If you implement sparklines in JS, then for their insertion into PDF or Excel we will still need to generate an image. So why do the same job twice? Read the rest of this entry »

Marketing by sharing

Jason Fried at ChicagoConvergence 2009

This post is a side effect of our work to translate Jasons’ speech at ChicagoConvergence in 2009 to Russian.

As we maintain our blog in two languages we decided to produce English version with captions and transcript for those who does not have time to listen it or simply can’t hear. We thank 37signals for a permission to do so.

We wanted to add our captions to original video published by ChicagoConvergence but they did not get back to our emails. So we had to load their video, split it into two parts and add English and Russian captions and republish it. There were no intension to steal but to add value. Transcript was completed by SpeechPad. We highly recommend them – high quality, very fast and just 1USD per minute of audio.

So here it is …
Read the rest of this entry »

Optimise? Optimise!

Over the past years, a web page load optimisation cult emerged. Honestly I was sceptical about it – internet speeds increase and I thought there is nothing to worry until you are hosting something really heavy like a multimedia entertainment portal. However we recently launched Nerrvana – Selenium testing cloud service and we found out that marketing site pages are loading slower than we expected. So I rolled up my sleeves and started the optimisation process.
After 10 minutes of searching I found out that all recommendations are basically the same and I took the most famous – “Best Practices for Speeding Up Your Web Site” from Yahoo. If you haven’t read it yet I recommend visiting this resource and reading it. It will help you understand why we are writing this post here. Your reaction may be different to mine, but mine was:

- Excellent, finally I found a full list of optimisation techniques with explanations
- Hmm, Ok we’ll try this one too
- Do I really need this one?
- Will this article finish soon?
Read the rest of this entry »

How do we use Kayako – Part II

How do we use Kayako - Part II

In my second post about Kayako, I would like to show what we managed to achieve. We posted our list of requirements for a help desk system in the previous post. I must admit that the setup took a lot of time we discovered a few bugs in Kayako along the way. Some of them were quite serious. The rest can be classified as defects as it looked like some functionality which was added on top of the existing system and implementation was not well thought through by Kayako.

Almost all errors were fixed by Kayako developers soon enough. However, we had one error which took us two weeks to fix. We exchanged emails with Kayako until they agreed to provide us with their open source code. From that point we tracked the bug within an hour. After setting up Kayako, as we have been making web applications for quite a long time now, our hands itched to make our own simple help desk system. If you are like us, you will understand, or at least will agree with us upon closer acquaintance with Kayako.
Read the rest of this entry »

CentOS 6 minimal install on VMware with kickstart

In this post I would like to show how you can install bare minimum CentOS 6 system on VMware using a kickstart file. You will need to have a VMWare Workstation 8 installed and load either i386 netinstall image or the x86_64 bit version. My links point to the closest CentOS mirrors for me, and you will load it from one close to you.
We will not need Virtual CloneDrive as VMware is capable of running install directly from .iso file.

Let’s begin by creating a new virtual machine.
Read the rest of this entry »

Looking for something? Visit the archives.