Frank Zappa proposed EMusic in 1983 : incredlble — way ahead of his time on this one
(tags: music internet filesharing business p2p emusic mp3)
Justin's Linklog Posts
It’s pretty common for apps to require "configuration" — external files which can contain settings to customise their behaviour. Ideally, apps shouldn’t require configuration, and this is always a good aim. But in some situations, it’s unavoidable.
In the abstract, it may seem attractive to use a fully-fledged programming language as the language to express configuration in. However, I think this is not a good idea. Here are some reasons why configuration files should not be expressed in a programming language (and yes, I include "Ruby without parentheses" in that bucket):
Provability
If a configuration language is Turing-incomplete, configuration files written in it can be validated "offline", ie. without executing the program it configures. All programming languages are, by definition, Turing-complete, meaning that the program must be executed in full before its configuration can be considered valid.
Offline validation is a useful feature for operational usability, as we’ve found with "spamassassin –lint".
Security
Some configuration settings may be insecure in certain circumstances; for example, in SpamAssassin, we allow certain classes of settings like whitelist/blacklists to be set in a users ~/.spamassassin/user_prefs file, while disallowing rule definitions (which can cause poor performance if poorly written).
If your configuration file is simply an evaluated chunk of code, it becomes more difficult to protect against an attacker introspecting the interpreter and overriding the security limitations. It’s not impossible, since you can, for instance, use a sandboxed interpreter, but this is typically not particularly easy to implement.
Usability
Here’s a rather hairy configuration file I’ve concocted.
#! /usr/bin/somelanguage !$ app.status load html !c = [] ;c['sources'] = < > ;c['sources'].append( NewConfigurationThingy("foo_bar", baz="flargle")) ;c['builders'] = < > ;c['bots'] = < > !$ app.steps load source, shell ;bf_mc_generic = factory.SomethingFactory( < woo(source.SVN, svnurl="http://example.com/foo/bar"), woo(shell.Configure, command="/bar/baz start"), woo(shell.Test, command="/bar/baz test"), woo(shell.Configure, command="/bar/baz stop") > ); ;b1 = < "name": "mc-fast", "slavename": "mc-fast", "builddir": "mc-fast", "factory": ;bf_mc_generic > ;c['builders'].append(;b1) ;SomethingOrOther = ;c
This isn’t actually entirely concocted from thin air — it’s actually bits of our BuildBot configuration file, from before we switched to using Hudson. I’ve replaced the familiar Python syntax with deliberately-unfamiliar made-up syntax, to emulate the user experience I had attempting to configure BuildBot with no pre-existing Python knowledge. ;)
Compare with this re-stating of the same configuration data in a simplified, "configuration-oriented" imaginary DSL:
add_source NewConfigurationThingy foo_bar baz=flargle
buildfactory bf_mc_generic source.SVN http://example.com/foo/bar
buildfactory bf_mc_generic shell.Configure /bar/baz start
buildfactory bf_mc_generic shell.Test /bar/baz test
buildfactory bf_mc_generic shell.Configure /bar/baz stop
add_builder name=mc-fast slavename=mc-fast
builddir=mc-fast factory=bf_mc_generic
Essentially, I’ve extracted the useful configuration data from the hairy example, discarded the symbology used to indicate types, function calls, data structure construction, and let the configuration domain knowledge imply what’s necessary. Not only is this easier to comprehend for the casual reader, it also reduces the risk of syntax errors, by simply minimising the number of syntactical components.
See Also
The Wikipedia page on DSLs is quite good on the topic, with a succinct list of pros and cons.
This StackOverflow thread has some good comments — I particularly like this point:
When you need your application to be very "configurable" in ways that you cannot imagine today, then what you really need is a plugins system. You need to develop your application in a way that someone else can code a new plugin and hook it into your application in the future.
+1.
This seems to be a controversial topic — as you can see, that page has people on both sides of the issue. Maybe it fundamentally comes down to a matter of taste. Anyway — my $.02.
Update: discussions elsewhere: HackerNews
Another Update, 2012-04-06: Robey Pointer wrote a post called Why Config?, in which he describes a Scala-based configuration language in use at Twitter, which uses Scala’s runtime code evaluation, and a Scala trait, to express configuration succinctly in a Scala source file and load it at runtime. The downside? It’s a Scala source file, executed at runtime, containing configuration. :(
However, this comment in the comments section is worth a read:
At Netli (now part of Akamai) we had a configuration framework very similar in spirit and appearance to Configgy. It was in early 2000-s, we open sourced it since. (http://ncnf.sourceforge.net/). It would provide on-the-fly reload for the C-based programs (the ncnf if a C library). It also had some perks like attribute inheritance and a concept of block references. Most importantly though, it contained a separate schema language and a validator to allow configuration be checked before pushing in production. At Netli we used it to configure 1200 services on over 400 hardware boxes, the configuration becoming about 20+mb in length (assembled from several pieces by the CPP, then M4 templating library).
Naturally, it wasn’t Netli’s first attempt at doing configuration. One of the first attempts failed since it was Turing-complete. That approach was to specify the configuration as a Perl data specification. In a very short time the lure of unused expressiveness of such Turing-complete environment prevailed and people started to write for-loops around data pieces and doing other tricks to remove redundancy from the configuration. It turned out to be a disaster in the end, with configuration becoming unmaintainable and flaky.
One principle I got out out of that exercise is that configuration shall not be Turing-complete. We’ve got burned specifically by that property far too many times. Yet I do agree with you that a validation facility is a must-have, which is something not usually part of the simple text-based frameworks. C-based NCNF had it almost from the very beginning though, and it proved to be a very useful harness.
+1. There’s lots more info on that system at this post at lionet.livejournal.com.
Another Update, 2017-05-09: casio_juarez on Twitter:
Dev: I’ll use a declarative language for config this time.
— 0x0DEADA55 (@casio_juarez) May 8, 2017
6 months later: Let’s add variables.
12 mos: And conditionals.
18 mos: Fuck.
Also related: The Configuration Complexity Clock.
(Image credit: Turn The Dial by VERY URGENT Photography)
Tom Morris – Request for comment: a ‘Good API’ checklist and committee : Sane suggestions for good HTTP APIs
(tags: apis http rest open-data)Votomatic : Brilliant! “find out which political parties are compatible with you.” The app asks a few questions, you furnish survey-style responses, and it figures out which party is closest in published policy. It works quite well, determining that my optimum is Labour (correct)
(tags: policies politics ireland voting elections surveys)How a Remote Town in Romania Has Become Cybercrime Central | Magazine : the story of Ramnicu Valcea — Romania’s Silicon Valley of phishing
(tags: ramnica-valcea crime romania wired security spam phishing)U.S. Government Shuts Down 84,000 Websites, ‘By Mistake’ | TorrentFreak : DHS/ICE domain seizures suffer a serious false positive problem, resulting in the seizure and shutting down of 84,000 subdomains of a free DNS provider, replacing them with a banner accusing the site of trafficking in child porn. whoops!
(tags: dhs ice censorship internet domains dns seizure false-positives child-porn)Israeli general claims Stuxnet attacks as one of his successes : ‘Haaretz reports [on a] video that was played at a party organized for General Gabi Ashkenazi’s last day on the job. The video contained references to the successes he achieved during his stint as chief of staff, [including] the Stuxnet worm attack on Iran’s uranium enrichment facility at Natanz and and the nuclear reactor at Bushehr.’
(tags: israel iran stuxnet cyberwar via:slashdot malware)
Gerrit, Git and Jenkins : This is the future of code review. Commit directly from your git checkout to the Gerrit code-review system; change is immediately web-visible and enters the review workflow; at the same time, Jenkins checks out the proposed change and runs the test suite; once it’s approved, it automatically gets checked in. Brilliant!
(tags: git coding code-review workflows jenkins gerrit c-i testing automation)
FareBot: Read data from public transit cards with your NFC-equipped Android phone – codebutler : ‘When demonstrating FareBot, many people are surprised to learn that much of the data on their ORCA card is not encrypted or protected. This fact is published by ORCA, but is not commonly known and may be of concern to some people who would rather not broadcast where they’ve been to anyone who can brush against the outside of their wallet. Transit agencies across the board should do a better job explaining to riders how the cards work and what the privacy implications are.’ (via Boing Boing)
(tags: via:boingboing privacy android rfid security transit mobile encryption mifare desfire farebot)Storymap : great UI for a little Dublin oral-history site — just a GMaps mashup with links to YouTube, but it works very well
(tags: dublin ireland storymap stories oral-history people google-maps mashups youtube video)Spotify Second Largest Source Of Revenue In Europe For Labels : wow. the WinAmp guys were right — ‘on a European level, Spotify is the second single largest source of revenue for record labels. This means that 2010 saw dramatic increase in its usage as well as payouts to record labels and artists themselves.’ this via an IFPI report
(tags: ifpi music spotify streaming revenue record-labels europe sweden isps mp3)Zero stroke – Wikipedia, the free encyclopedia : ‘With the price of bread running into billions a loaf the German people […] had to get used to counting in thousands of billions. This, according to some German physicians, brought on a new nervous disease known as “zero stroke,” or “cipher stroke” […] The persons afflicted with the malady are perfectly normal, except “for a desire to write endless rows of ciphers and engage in computations more involved than the most difficult problems in logarithms.”‘ (via Joe Drumgoole)
(tags: germany zero hyperinflation inflation via:jdrumgoole money brain mental-illness)
Fine Gael’s Facebook spam campaign : jesus. Not only do they coin the cramp-inducing neologism “twolicy”, they then have the temerity to suggest that people should “donate” their Facebook status so that FG can spam their social group. awful
(tags: facebook fine-gael twitter social-media twolicy spam)
No Sleep ‘Til Brooklands: A True Story Of Daily Mail Lies (guest post) : how the Daily Mail (UK) works, via b3ta. mind-boggling misuse of one woman’s comments to concoct a story, according to this
(tags: daily-mail journalism libel media newspapers law uk via:b3ta)Using Git to manage a web site : simple, basic demo of a git post-receive hook to auto-check-out every rev committed to a git repository
(tags: git deployment howto via:hackernews)
If you visit the Irish Times at all frequently, you’ll probably have noticed a nifty "wisdom of crowds" feature in the right sidebar: the list of "most read" articles. It’s quite good, since they’re often very interesting articles. Unfortunately, there’s no RSS feed for this feature.
Well, now there is:
Gamasutra – News – Opinion: Minecraft And The Question Of Luck : ‘Notch’s luck was that he came across the idea of doing a first-person fortress building game. His alignment was that the game that he wanted to make was culturally connected to [he PC gamer] tribe. While the game may appear ugly, and its purchase process etc seem naive to many a gaming professional, all of those decisions that Notch made along the road to releasing his game were from the point of view of a particular perspective of what games are, what matters and what were the things that he could trust the tribe to figure out for themselves.’
(tags: tribes viral minecraft gaming analysis games culture gamasutra via:nelson future software marketing)
Spamwiki : good wiki tracking spam operations, their current campaigns, who’s doing it etc.
(tags: wiki spam anti-spam)Spammers Are Now Using Verified By Visa : Visa’s atrociously-designed “security” program is now being used by criminals to process their credit-card payments, allegedly
(tags: verified-by-visa spam visa security)
Michael “Liar’s Poker” Lewis on Ireland’s economic collapse : PDF of the 15-page Vanity Fair article — from interviews I’ve read in advance, this seems pretty good
(tags: michael-lewis vanity-fair articles pdf toread economy ireland disaster collapse)Dublin bikes revisited : Fantastic comparative number crunching on the JC Decaux Dublin Bikes scheme, compared to their other European cities (Brussels, Lyons, Paris, Seville), times of day, busiest stations, rainfall, etc.
(tags: bikes dublin-bikes cycling dublin ireland jc-decaux number-crunching analysis statistics)Wired: how a Toronto statistician cracked the state lottery : ‘The tic-tac-toe lottery was seriously flawed. It took a few hours of studying his tickets and some statistical sleuthing, but he discovered a defect in the game: The visible numbers turned out to reveal essential information about the digits hidden under the latex coating. Nothing needed to be scratched off—the ticket could be cracked if you knew the secret code.’
(tags: toronto hacks money statistics probability wired tic-tac-toe singleton)
Google: Bing Is Cheating, Copying Our Search Results : laaaame, Microsoft
(tags: lame microsoft google search honeypots stings)Java Hangs When Converting 2.2250738585072012e-308 : ie. the same value as the PHP bug. ‘Konstantin [Pressier] reported this problem to Oracle three weeks ago, but is still waiting for a reply.’ good job, Oracle!
(tags: oracle fail security java bugs floating-point)
Keeping Track of Electioneering | Election Leaflets 2011 : ‘See or post leaflets shoved through your door by parties and candidates across the land. RSS feeds and email alerts available by constituency. Add new leaflets through a web form or by email.’
(tags: election leaflets pamphlets ge11 ireland politics fianna-fail)
Data Protection Commissioner warns the parties not to spam in advance of the coming election : Any teeth though?
(tags: dpc data-protection ireland spam law)The worst week for the worst Taoiseach in the State’s history : incredible insider account of Cowen’s final ineptitudes as FF leader. Beyond GUBU
(tags: gubu funny inept ireland brian-cowen fianna-fail dail crazy politics)
where Fine Gael got their new poster source images : “Google Image ‘People’ = Ethnic Diversity”. bwahahahaha
(tags: funny fg fine-gael inept design lame google stock-photos people enda-kenny boards)gist: 782263 – How to redirect a running process’ output to a file and logout : a nifty gdb hack; essentially dup()s a couple of files in /tmp in place of fd 1 and 2, then uses the bashism “detach” to nohup the running process
(tags: gdb hacks linux process shell unix via:hn nifty dup detach bash)apenwarr/sshuttle – GitHub : ‘Any TCP session you initiate to one of the proxied IP addresses [specified on the command line] will be captured by sshuttle and sent over an ssh session to the remote copy of sshuttle, which will then regenerate the connection on that end, and funnel the data back and forth through ssh. Fun, right? A poor man’s instant VPN, and you don’t even have to have admin access on the server.’
(tags: vpn ssh security linux opensource tcp networking tunnelling port-forwarding)Why djb redo won’t be the Git of build systems : A counter-argument: “so, redo, from a conceptual point of view, has a really good and simple approach (very djb-y), and I’m sure it’s an excellent tool for new projects, but for existing projects that already use make in a non-recursive fashion, it would a maintenance PITA. And that’s why I conclude that redo in its current conceptual state will never be the Git of build systems. make is still more flexible, and even though it has its flaws, it’s still good enough for most people, and also a de-facto standard.”
(tags: redo build djb building make compilation)The things make got right (and how to make it better) : jgc provides a good demonstration of how a general-purpose programming language tends to make a crappy DSL — specifically Rakefiles
(tags: dsl build make coding jgc languages configuration makefiles rake ruby)good Hacker News thread on djb’s “redo” : YA make-replacement build system. the thread is better than the linked article, btw
(tags: hacker-news via:fanf make build djb redo compilation building coding open-source)
Hudson’s future : renaming to “Jenkins” due to Oracle asshattery
(tags: oracle hudson exodus stupid ci via:jamesc)
Bicycle Safety: How to Not Get Hit by Cars : really quite good advice — all except for “take the whole lane”, which in my experience aggravates drivers and causes road rage and risky behaviour. avoid
(tags: safety bike cycling bikes)tvrenamer.pl : Another TV file-renaming script. looks a little fragile/hacky at a glance though
(tags: tv downloading torrents boxee xbmc)Boxee TV Show Download Automation : organise downloaded TV shows into the directory format Boxee (and by extension, XBMC) wants; some votes for Sickbeard here
(tags: tv torrents downloading boxee xbmc automation)Reset Ireland : ‘Greater access to information on the workings of government empower the public in making informed decisions on the direction they want the country to take. Open Government and media reforms can make this a reality. The key inspiration for Reset Ireland comes from projects such as the Icelandic Modern Media Initiative along with various other projects promoting openness, transparency and accountability in Government around the world.’
(tags: ireland politics open-data open-access open-government data)
Rules of SCRAM : ‘GOATS just stand around during this phase and stare at each other, rolling their eyes frequently at howlers (such as using serialization to SOAP for storage, or databases as RPC mechanisms). It is often useful for GOATS — or anybody, really — to take notes for the monthly BACKSTABBING drill.’
(tags: funny scrum software project-management coding work)Tunisian government harvesting usernames and passwords : injects JS onto Google, Facebook, Yahoo! non-encrypted login pages to submit the typed username and password against nonexistent http URLs, e.g. ‘http://www.google.com/wo0dh3ad’, presumably so that DPI logging can collect them. apparently the HTTPS login pages are blocked to force use of HTTP
(tags: tunisia via:pjakma security snooping surveillance https javascript)
Hacker Culture: A Response to Bruce Sterling on WikiLeaks : good article from Gabriella Coleman in The Atlantic
(tags: hackers bruce-sterling wikileaks julian-assange politics blackhat hacking)
The 2011 Cricket World Cup: A Documentary : my mate Sush is looking to fund ‘a documentary set in India during the World Cup of Cricket in 2011 about Indian cricket fans and their personal stories.’ Looks great — might blog about this a bit more…
(tags: sush movies kickstarter funding documentaries cricket india)on URL Design : from one of GitHub’s designers, good tips on how the URL UI needs to work these days
(tags: github urls design ui usability webdev webdesign http)27C3: Console Hacking 2010 : great preso on the PS3 hack from the fail0verflow team. love the LaTeX “science bit”. Sony’s epic fail: non-random “random” key data
(tags: ps3 hacks console crypto hypervisor security ccc fail0verflow)
One of the ICE domain seizures was a legit mp3 blog, posting legal promo mp3s : At least one of the sites seized by DHS was an mp3 blog which posted authorised, promotional mp3s, sent from record label VPs and artists — ie. none of the supposedly “infringing” files, actually were infringing. (via Tony Finch)
(tags: mp3 music piracy law ice dhs filesharing copyright copyfight techdirt via:fanf seizure mp3blogs for:nialler9)
Your Country Your Call: How bloggers pushed a story into the media limelight : good round-up on this FF quango fiasco
(tags: fianna-fail bloggers ireland politics ycyc lobbying quangos)
Independent Media Sites in Belarus Reportedly Hijacked During Election, SSL Blocked : duplicate (fake) news sites created, possibly to put out fake stories; also interesting that international HTTPS was blocked.
(tags: election belarus netfreedom via:malaclyps eff filtering censorship)
opendata.ie : ‘to help citizens access to high value, machine readable datasets generated by the Irish Government and public sector authorities; to improve access to the Irish Government data and to establish an innovative platform that can demonstrate to government how and why they should share data’
(tags: open data ireland open-data open-source free datasets)RunwayFinder shut down by patent trolls : “While we appreciate your offer to shut down the website to stop future infringement, we notice that your website is still operation. And without further information from you, our only means to assess the potential damages is the observation that your website had 22,256 unique visitors in July 2010. Each visit represents a potential lost sale of our client’s patented invention at $149 per sale. This damage calculation exceeds $3.2 million per month in lost revenue.”
(tags: patents swpats patent-trolls flightprep runwayfinder aviation web law)The Background Dope on DHS Recent Seizure of Domains : according to this, the US Dept of Homeland Security is “seizing” domains through a back-channel to Verisign, since they directly control the .com TLD’s nameservers. Expect to see dodgy sites start using non-US TLDs, names in multiple TLDs a la Pirate Bay, and eventually IPs instead of DNS records
(tags: tlds dns security dhs seizure domains cctlds filesharing icann immixgroup)
Chernobyl: now open to tourists : wow, sign me up ;)
(tags: chernobyl pripyat tourism nuclear-power gawking)Facebook | Visualizing Friendships : nifty data-mined map of cross-border friendships on Facebook
Accentuate.us : ‘We are proud to announce the free and open-source Accentuate.us, a new method of input for over 100 languages that uses statistical reasoning so that users can type effortlessly in plain ASCII while ultimately producing accurate text. This allows Vietnamese users, for example, to simply type “Moi nguoi deu co quyen tu do ngon luan va bay to quan diem,” which will be automatically corrected to “M?i ng??i ??u có quy?n t? do ngôn lu?n và b?y t? quan ?i?m” after Accentuation. To date, we support four clients: Mozilla Firefox, Perl, Python, and Vim, with more to be added shortly.’ cool
(tags: accents language web-services typing text-entry ascii unicode characters)The Day MAME Saved My Ass : ‘Publishers would have people believe that MAME and the emulation scene is the root of all evil, that it promotes piracy and ultimately hurts the poor, starving developers slaving away on the game. Not only is this claim patently false, it ignores the fact that many developers use things like MAME, mod chips, and homebrew development utilities to help us overcome the day-to-day frustrations caused by the people behind the real problems in our industry.’
(tags: mame games coding legal spy-hunter emulation rips takedowns)Digital Socket Awards : ‘We’d like you to nominate the longlist of best music of 2010 on www.digitalsocketawards.com. From this, 26 blogger judges from towns and cities all over Ireland will each score their top choices to reach a shortlist of three finalists in each category. The winners will be announced on 3 February 2011 at a live event in Dublin’s Grand Social.’
(tags: blogs blogging irishblogs music mp3 mp3blogs ireland awards)
Flattr – Social micropayments : click a “Flattr” button on content-creator websites, pay a monthly $5 fee, and the content creators get a share of your $5. Very interesting, and seems well thought out — think I may sign up when I see some content I like
(tags: flattr payment content business social pay music)
Some figures about Eircom’s “3 strikes” system : 1000 notifications a month, and ‘Eircom is guaranteeing that it will never hand subscribers’ personal details to the music industry and will never monitor their online activities. They will, however, take the word of the music industry and their monitors on face value and presume it is accurate as a matter of course.’
(tags: eircom filesharing three-strikes piracy music mp3)
Eric Cantona’s call for a bank run : a French campaign to “bring down the banks” by engineering a massive consumer bank run, tomorrow, Dec 7th. I can see this happening in Ireland if we don’t get an election soon
(tags: ireland france banking bank-runs economy bailout eric-cantona)
Bailout will sink Ireland before we can even swim | David McWilliams : ‘This is not capitalism, it is not European diplomacy; it is a stitch-up.’ Adding another voice in favour of default — starting to look like the only sane option given the crappy ECB deal :(
(tags: david-mcwilliams economy ireland bailout eu)Daft: Gallery Quay, Grand Canal Dock, Dublin 2, South Dublin City – Studio apartment to let : ‘€57 Weekly. Deceptively spacious open plan unfurnished studio in one of Dublin’s top locations. Carbon neutral, hand crafted inuit design. beautiful ambient light leading to rooftop garden. The studio comfortably sleeps five. Pets allowed, no parking. Short term lease for the month of December. Owner is interested in selling if market warms up.’ It’s an igloo. With a snowman head on top.
(tags: funny igloos daft property dublin apartments snow sneachta)
The Effectiveness of Test Driven Development (TDD) : huh. Test-driven development is slower than traditional write-first-test-at-the-end development, but it results in less bugs. Grokcode theorise that its big win is amortising the cost of testing throughout the product iteration, hence reducing the temptation to skip testing when the crunch phase happens
(tags: tdd programming testing qa coding)What now for Irish Politics? : Leo on the current political situation in Ireland. I’m mostly in agreement
(tags: ireland politics labour ff bailout)
Barry Eichengreen on the Irish bailout : ‘The Irish “program” solves exactly nothing – it simply kicks the can down the road. A public debt that will now top out at around 130 per cent of GDP has not been reduced by a single cent. The interest payments that the Irish sovereign will have to make have not been reduced by a single cent, given the rate of 5.8% on the international loan. After a couple of years, not just interest but also principal is supposed to begin to be repaid. Ireland will be transferring nearly 10 per cent of its national income as reparations to the bondholders, year after painful year. This is not politically sustainable, as anyone who remembers Germany’s own experience with World War I reparations should know. A populist backlash is inevitable.’
(tags: ireland economy bailout eu euro)Video: Robots Explain The Irish Economic Crisis : Pretty good explanation, actually
(tags: news ireland robots youtube debt eu politics economy)
WikiLeaks Archive: A CAUCASUS WEDDING : Dagestan knows how to party. ‘The main activity of the day was eating and drinking — starting from 4 p.m., about eight hours worth, all told — punctuated, when all were laden with food and sodden with drink, with a bout of jet skiing in the Caspian’
(tags: russia government politics leaks wikileaks weddings funny dagestan caucasus)
Eric Cantona’s call for bank protest sparks online campaign : bank runs appear to be a hot topic at the moment
(tags: banking crisis economics finance protest france eric-cantona)Copyright and defamation law is repelling investors – The Irish Times : ‘UNLESS CHANGES are made to Ireland’s legal and regulatory framework in areas like copyright and defamation, digital businesses will be discouraged from locating operations here, say legal experts and businesses.’
(tags: law legal copyright defamation ireland irish-times)
The Dublin Science Gallery Greeting Cards are excellent!
Get ’em here, or pick up one of the great gadgets and gifts they have in stock.
(disclaimer: I am mates with the designer and the guy who runs the shop — but I still think they’re great work, regardless ;)
Copyright and defamation law is repelling investors – The Irish Times : ‘UNLESS CHANGES are made to Ireland’s legal and regulatory framework in areas like copyright and defamation, digital businesses will be discouraged from locating operations here, say legal experts and businesses.’
(tags: law legal copyright defamation ireland irish-times)