Domain: merjis.com
Stories and comments across the archive that link to merjis.com.
Comments · 35
-
Apress
-
Re:C/C++
(My original comment up there was modded down to -1, but it's interesting to read the answers anyway)
You want to make sure that the layout is efficient and well localized, so that you're not stalling the CPU while it's fetching the next piece of data, but once you've used it you won't need it again for a long time
Exactly right! In the past I used C code to manually lay out OCaml objects to optimize access, so I could still use a nice high-level language, but get the speed advantage. The data size was approx 34 GB, stored in an mmap segment backed by a file. Section 6 in this document describes it.
Rich.
-
Re:They aren't even close
They went from using $1-2 thousand per week, to suddenly $2000 would get spent in 10 minutes between the hours of 1 and 2am. Google stone walled, denied, and finally did nothing for these small companies. I'm sure they aren't the only ones.
You mean: they didn't set up a correct daily budget, which is one of the simplest and most prominent adjustables in the AdWords interface. (In fact IIRC Google forces you to set a campaign daily budget whenever you set up a campaign through the web interface).
2) They are "forcing" adwords customers to have their ads listed on "link sites". that is a bad product, and if you are on adwords you are FORCED to have your ads listed there as there is no way to opt out
This is also nonsense. There are simple campaign targetting options so you can choose either where you do want your adverts to appear, or which sites you don't want them to appear on, or you can turn off content network entirely.
What you're really saying is that they had an incompetent campaign manager and a stupid business model (depending on a single form of marketing).
Rich.
(and yes I used to work at an AdWords campaign management company) -
Re:thinking about something new? think again
You should be able to do both with OCaml.
http://sourceforge.net/projects/ocamldap/
http://merjis.com/developers/pgocaml/ -
Ocsigen
If you had really complete freedom and were willing to try out something radically different from existing frameworks, I would suggest you would take a look at Ocsigen. It is based on the OCaml language, which alone implies a different mindset from traditional frameworks based on imperative languages. Some of Ocsigen's cool features:
- Extends the OCaml type-safety into the generation of XHTML. This means that producing valid XHTML is not only "nice", but actually enforced by the framework: your programme won't even compile otherwise!
- The entire site is seen as a programme where each public URL is a function. The OCaml type-safety is extended to forms and internal links, meaning there can't be any inconsistencies whatsoever.
- With database bindings such as PG'OCaml, you can extend the type-safety also to database access. Think about it: the compiler checks at compile-time if your programme is consistent with the database itself!
- Functional programming is very high-level, which means rapid development and happy programmers.
- It is fast. And by fast I mean really, really, fast. How would you like your web framework to generate native code whose speed is close to that obtained with C?
Sorry if this sounds like a sales pitch, but I would just like to point out that there are wonderful technologies out there, if people were just willing to take a step outside the trodden path.
-
Re:Not a useful article, really
I can't see that they've fixed anything very much in IE7. Our IE6 fixes used the "* html" hack, and that was fixed in IE7, but then we found we needed to include all the same fixes anyway. So now we end up having to serve two extra stylesheets.
I ranted about that on our company blog.
Rich.
-
Re:The problem with XHTML...
Please, by all means write a forum BBCode parser that outputs valid XHTML that works under the application/xml+html mime-type.
The wiki I wrote does something analogous to that. (Not BBcode, but MediaWiki-ish markup which is similar). It's not really so hard for a competent programmer.
Rich.
-
Re:Distribution on Windows
if it depends on 6-8 MB for GTK
Our cross-platform "hello world" program including Gtk is about 300K compressed in total on Windows.
Rich.
-
No AI required. Needs smarter advertisers, though!
The stupidity of the adverts is the responsibility of the advertiser, not Google... though Google does start to winnow the supremely stupid adverts - because they don't get many clicks. Adverts with few clicks will eventually get dropped by Google as being irrelevant to search users.
The system works by advertisers saying which words they want and any exclusion words. Only... most end users and a depressingly large number of agencies have no idea about using the exclusions. And Google makes it hard to identify the searches for which the advert was shown, but are irrelevant. Additionally Google will extend a search term if the advertiser has selected "broad match". Broad match is the default.. and it means that Google tries out similar search terms to see if anyone clicks. If users do click, then that search term is implicitly added. So the main problem in the "extensions" example is that the advertisers tell Google that they wanted the advert to appear whenever anyone used the word "extensions", but neglected to add "-file" or "-filename" or "-name".
Contrary to the impression given, Google does not offer behaviourally targetted adverts. Just search terms. Differences in adverts between two users usually comes down to geotargetting, and the complex effect of budgets.
Yes; I use Google and Yahoo to advertise for clients, and for our own stuff. IMO, it isn't an AI. It's a smarter system allowing more precision by advertisers, than Yahoo. Yahoo can't tell the difference between "car covers" and "car cover" (one is insurance and the other is a tarpaulin derivative) - Google can tell the difference and also see the difference between "covers car" and "cover car" (if it is meaningful) and may extend "car cover" under broad match to "auto cover", "car insurance" and "auto insurance".
I'm pretty sure that, with a team of programmers, I could replicate what Google AdWords does. Basically, user keys in search term, Google looks for adverts in the geoterritory that should appear against the search term, orders them by bid value (and click through rate), and finally checks that the advertisers budget permits another advert to be shown (by rate throttling if needed). If a user clicks, transfer to the advertiser supplied URL and rack up a fee for the advertiser.
No AI involved. Lots of fast web fronted databases, though.
Cheers, JeremyC.
--
Merjis: internet marketing by geeks : http://merjis.com/ -
Re:Donating to freenet will not solve anythingI really appreciate the position you are in. You're making a living when suddenly the whole world shifts around you, and your business doesn't make sense any more.
But you're acting against a force of nature here. What's going to happen when people can transfer data wireless ad-hoc, encrypted over long distances? Or through their skin when they brush up against each other in a crowded train? How will the police protect you and your copyright monopoly then?
We are actually developing a training product. I can't say whether it will be like yours or not, because you don't give enough details, but it'll be distributed on CD and sold for £20 or so. This is because the market we are trying to capture (SMEs) still values stuff they can hold and they pay for. If people copy it and share it, you know what, I really don't care. It's a loss leader for us, designed to get us into the SME market which is absolutely the hardest place to be (so many of them, requires massive marketing budgets normally). It's designed to get us lots of small consulting contracts that we can mostly automate.
Sorry, but the world has changed.
Rich.
-
Re:Donating to freenet will not solve anything
I run a small software company. The keyword here a is "small." Genuine small business with genuine employees making honest wages. After being tipped off by a customer, I looked at eMule and found that some of our software, which we sell for about 50% the price of our billion-dollar competitor, was being "shared" by 35 users.
I think it's unfortunate that you're sticking with a business model which requires artificial scarcity when for the last 10-15 years we've actually had a world of unlimited abundance.
Shame, but there you go.
Try releasing your code to everyone and wonderful things will happen (and you'll make a good deal of money through consultancy too, but that's only part of the fun).
Rich.
-
Re:CSS tablesis only occasionally necessary, and should be avoided most of the time.
Admittedly not a great example of web design, but structurally it does the right thing. If you have firefox, view that web page and go to View -> Page Style -> No Style to see the structural markup (or just use View Source if you're comfortable with that). Of course we do use <div>, but only where it's essential. I would prefer to use it less, or even not at all.
Compare to this or this or this to see the overuse of <div>.
Rich.
-
Re:It's the runtime...It's true that OCaml's runtime has an efficient, lightweight garbage collector. C's runtime has a thing called malloc which is also bundled, and of nearly equivalent complexity - take a look at the source to it some time.
It is also possible to call OCaml code from C. Don't believe me? Have a look at mod_caml - that's Apache (C) calling into OCaml CGI scripts.
My original call was for people to start using sensible languages which have support for bounds checking. You can write daemons and applications in OCaml perfectly well, and they will run as fast as C programs, using similar amounts of memory. The technology to exceed C in many areas has been around since the 1970s - for goodness sake, let's start using it!
Rich.
-
Re:It's one way...
A blog which uses this attibute on link tags is far less interesting to comment spammers, so chances are the moderaters have to delete less spam.
Sadly this is not really true. I wish it were. In my experience - wiki spam - it appears to come from humans in China who simply cut and paste prepared text into the page.
On my wiki, the usual [http://...] syntax doesn't work - it doesn't generate a link (you need to use [[http://...]] to see a link), and my wiki even has an interactive preview which shows you that you're not making a link. Yet they submit the broken, non-working spam, and move on.
My sandbox pages have, for a very long time, been protected by a robots.txt file which would prevent them from getting pagerank anyway. There's even a huge warning at the top of the page telling them this.
We're not talking smart humans/bots here. We're talking people working in sweatshops.
Have a look at this history page to see multiple instances of Chinese spammers getting it wrong. I think there's only one case I can recall where the spammer actually bothered to get the syntax right, and it was still a waste of time for them.
Rich.
-
Re:It's one way...
A blog which uses this attibute on link tags is far less interesting to comment spammers, so chances are the moderaters have to delete less spam.
Sadly this is not really true. I wish it were. In my experience - wiki spam - it appears to come from humans in China who simply cut and paste prepared text into the page.
On my wiki, the usual [http://...] syntax doesn't work - it doesn't generate a link (you need to use [[http://...]] to see a link), and my wiki even has an interactive preview which shows you that you're not making a link. Yet they submit the broken, non-working spam, and move on.
My sandbox pages have, for a very long time, been protected by a robots.txt file which would prevent them from getting pagerank anyway. There's even a huge warning at the top of the page telling them this.
We're not talking smart humans/bots here. We're talking people working in sweatshops.
Have a look at this history page to see multiple instances of Chinese spammers getting it wrong. I think there's only one case I can recall where the spammer actually bothered to get the syntax right, and it was still a waste of time for them.
Rich.
-
The reason we can't migrate to Apache 2Please fix this issue, which has been outstanding for more than 2 years, then get back to me. (Oh yes, and there's even a working patch, but the Apache developers won't integrate it).
http://issues.apache.org/bugzilla/show_bug.cgi?id
= 27550http://merjis.com/developers/mod_caml/apache_2.0
Rich.
-
Re:XmlHttpRequest is coolI've used XmlHttpRequest before in various places, including on the edit page of this wiki which I wrote.
The MS and non-MS implementations are subtly different, but nothing major.
Have a look at the Javascript source. I do some clever stuff to measure the round trip time to the server and slow down updates if they are taking too long. Anyone know how to make updates run in another thread so they don't stop the browser if they're really slow?
Rich.
-
Re:XmlHttpRequest is coolI've used XmlHttpRequest before in various places, including on the edit page of this wiki which I wrote.
The MS and non-MS implementations are subtly different, but nothing major.
Have a look at the Javascript source. I do some clever stuff to measure the round trip time to the server and slow down updates if they are taking too long. Anyone know how to make updates run in another thread so they don't stop the browser if they're really slow?
Rich.
-
Re:Intrigued?
These languages face a Catch-22: until they're more popular, they won't attract enough developers to ameliorate the library situation, yet until they offer better libraries, [...]
This may have been true 5 years ago, but today you can call Perl 5 libraries and Python libraries directly from OCaml.Rich.
-
Re:Same Problem
You could take a leaf out of O'Caml's book and make an interface to Perl.
-
OCaml tutorialObjective CAML (OCaml) is a very cool and powerful language. We use it at our company extensively, and we've released a lot of tools under open source licenses (see my signature). You can, for example, call Perl and Python libraries, and COM objects directly from OCaml, and interfacing with C is trivial.
I've also written an OCaml tutorial for people coming from 'conventional' languages like C, Perl and Java.
Rich.
-
Re:No good tutorial about ocaml...
but there are!
I learned the language online, (just as i learned Java from their very good tutorial)
they gave 2 good ones at the top.
the Richard Jones'
Ocaml Tutorial for people who know how to program 'normally'
There is also an update to Jason Hickey's book
I like OCaml because it Combines the power of functional programming, like (tail-)recursion, functions as an argument, with 'normal' programming language statements.
It doesn't force the "functional programming way" on you, like Lisp does, So, you can still use the If then, and While statements if you find them more usefull then a recursion.
And, it is quite fast!
both in development and in execution.
however, i have yet to find a way to well commenting my code. -
Re:Push popularity using .net/mono
If parrot can host ocaml then you will be able to call perl libraries from ocaml.
You already can: try http://merjis.com/developers/perl4caml/. -
Re:Wikis with authentication?Yeah sure, Team Notepad / COCANWIKI, as linked in the article.
Rich.
-
COCANWIKI
... or even (my) free software cocanwiki.
-
Re:Incredible, indeedWhere does the Java VM come from? It certainly doesn't ship with any of the Linux systems I use, and on them it involves a large download and a tedious installation process which doesn't use the existing package management tools and therefore cannot be automatically managed and upgraded along with the other packages. Did I mention that it isn't even Free software anyway. No thanks. I'll stick with my fast, powerful and lightweight Objective CAML programs.
Rich.
-
Re:Being small is overrated
Another thing along those lines is what you get to use from other people. If you can use other peoples code, you don't have to worry about your own.
This is where perl is a big winner over everything else. Nothing else even comes close as far as number of available packages.
Except for languages like OCaml which can use Perl libraries as well as their own... and therefore have more available packages by definition. :p -
Re:From an ocaml convert:
I'd say ocaml is not suitable for general programming as evidented by its lack of general purpose libraries.
If that's your only issue, you can get round it rather easily by interfacing with another language famous for its extensive libraries but hideous syntax... -
Re:Windows and Linux examples, yes
-
Re:Time for /. to
I would prefer a fast language without the usual pointer and buffer problems, like OCaml.
What a good idea. If only someone would write an Apache module... ooh, they have! -
Re:It's RealIt's also real (and a lot further developed than mod_haskell):
Rich.
-
OCaml softwareAt my company we've been working on a range of software to make OCaml practical for web app writers. If you're used to Perl for development, you'll find mod_caml very familiar. And we have a DBI-like database layer. And for good measure you can reuse all your Perl code and libraries during the transition.
http://www.merjis.com/developers/
Rich.
-
OCaml softwareAt my company we've been working on a range of software to make OCaml practical for web app writers. If you're used to Perl for development, you'll find mod_caml very familiar. And we have a DBI-like database layer. And for good measure you can reuse all your Perl code and libraries during the transition.
http://www.merjis.com/developers/
Rich.
-
Re:Worth Learning?First, OCaml's a compiled language, not a scripting language. Scripting languages do not make a site more efficient. They might make the developer prototype more efficiently, but they aren't going to run more efficiently than something that's compiled, and in many cases, they'll provide you with surprising results later on.
Firstly I've written mod_caml which is, you'll be disappointed to know, an interface to the Apache API from Caml.
Secondly, OCaml isn't just a compiled language.
Thirdly, if you'd ever written a website you'd know that queries on the database dominate. Interpreted, compiled - it makes no difference.
A well-written CGI will be less efficient than a well-written servlet, especially under load.
This is plainly wrong.
Rich.
-
Re:O'Caml for Scripting?I've tried to make mod_caml "scripting"[1] as simple as possible. There's a few example scripts in the manual here:
http://www.merjis.com/developers/mod_caml/docs.sh
t mlWhere possible I've gone for reducing the amount of code that you have to write in the common cases, based on a large amount of experience writing CGI scripts in Perl.
At the moment we're missing a fully integrated database layer, but that's coming soon (the code is already out there, I just need to pull it in and do the persistent database connection stuff).
Unfortunately I only get to work on this at weekends, but hope to have a Savannah page up soon so others can more easily contribute.
Rich.
[1] It's not really "scripting" as such. OCaml programs are bytecode compiled and dynamically linked into the bytecode interpreter which runs inside Apache. We also hope to get natively compiled loading working at some point.