March 27th, 2012 by kajala
Legit is “a complementary command-line interface for Git”. This is very welcome addition to toolset since despite Git being unbeatable tool the learning curve is pretty steep compared to SVN. Hopefully legit makes it a bit less steep.
However, installing on Windows requires a few steps so thought to outline it here from scratch:
- Install Python 2.7.2 for Windows @ python.org/download/
- Install Python setuptools @ pypi.python.org/pypi/setuptools
- Assuming you installed to C:\Python27, add following dirs to your PATH:
C:\Python27; C:\Python27\DLLs; C:\Python27\Scripts
- Open command prompt and run: easy_install pip
- Now install Legit as described:
pip install legit, and then, legit install
- Try running legit. If you get weird symbols then color coding doesn’t work and you can disable it like this: Set ‘disable_colors = True’ in %LOCALAPPDATA%\kennethreitz\legit\config.ini
Posted in Tools | No Comments »
March 13th, 2012 by kajala
Frameworks are a bit like peeing in your pants during wintertime; they make you warm at first but freeze you later.
One past example: First we planned to use a 3rd party system for the business management part which we would have gotten for free in exchange for allowing them to use our payment system. It was made with Symfony. Everything looked nice and peachy at first. BUT. The app was made with some ancient version, it was insanely lot of work to update. Moreover, the nice “meta-sql” that all those frameworks have had drifted due to straight-to-production style DB tweaking and optimization (which will inevitably happen at some point) so lot of the automatic deploy tools were unusable. Not only that but someone had also “tweaked a bit” the generated code at some point, rendering all built-in code generation related tools more or less useless.
Source code generation “just for starting point” is really true evil — it generates bloated code-base to start with and is doomed to fail sooner or later when someone makes a single edit on the generated code.
At the end the requirements changed so much on top of that it was just better to start from scratch.
An example of stuff frameworks love to do: Automatic loading of components to save couple of lines of code. That is a bad idea. Why? Minimizing unnecessary dependencies are root of all evil in keeping software maintainable, and having any dependencies injected automagically will just hide them in the source code. The result is that you don’t even know what code is dependent on what component. Instead, if every single module lists it’s dependencies explicitly in the beginning of a component, it’s trivial to see where the component is used and what components. Sure you have to write a few lines more code but the result will be much more maintainable.
Tags: architecture, frameworks, PHP, programming, software, symfony
Posted in Networking, PHP, Tools, Web services | 2 Comments »
February 17th, 2012 by kajala
There has been a lot of discussion lately about JavaScript frameworks with heated arguments, especially Backbone vs Ember. Backbone seems to have more traction, though, Github effect…
Both frameworks look pretty nice. I think it still boils down to “choose right tool for the job”, I could imagine using both (not in same project though).
A quick checklist:
1) Do you have tons of views all of them more or less similar or “component based”, or are you customizing every single view type like we do in our avoimet työpaikat helsinki job search service? Big “we do all kinds of things for you” frameworks like Ember are very nice generating data bindings, I’d use it without second thought in some enterprise systems I’ve done but would not use it Avointyopaikka.
2) How much you need to customize things? The more you need to customize the more frameworks get on the way. For example, that URL format we’re using in Avointyopaikka requires fully customized routing. It’s easy to do from scratch, but if I’d using some framework I typically would have to spend much more time learning how that kind of core functionality can be customized if it even can.
3) Do you care more about rapidly adding new views, reports and data bindings than usability? Again in some enterprise systems, having the data “somehow” usable is more important than usability, so again I’d go for Ember or any other tool that can do those bindings easily. On Backbone you’re more on your own.
4) How much 3rd party integration you need to do? If you have lots of 3rd party components to integrate I’d be hesitant with frameworks. They tend to be more “my way or highway” solutions so integrating some external component might be really painful.
Tags: avoimet työpaikat, backbone, ember, frameworks, javascript, työpaikat
Posted in javascript | No Comments »
July 8th, 2011 by admin
I’m sad to see the resistance to support WebGL among Microsoft and Apple. “Security risk” is just a scapegoat. Sure screen scraping is a valid concern but there are ways to prevent it for sure, for example forcing memory reset, disabling app-level texture reading, frame buffer read-back, etc. And Microsoft’s ActiveX is not a bit better in that regard, probably much much worse.
The real reasons are most likely business reasons: Microsoft doesn’t want gaming to move to browsers, and neither does Apple. Microsoft has dominant position in desktop gaming, and Apple dominates mobile app sales. So why would they embrace multi-platform 3D in a browser? It doesn’t make (at least at the moment) business sense for them. Sad.
Tags: apple, iphone, microsoft, webgl
Posted in Uncategorized | No Comments »
November 28th, 2010 by admin
Sometimes you really need to make sure VPN connection is alive when you are running some applications. I didn’t find any easy way to do this in Win7 (I don’t want to installing new firewalls just because of this) so I made this small application called “vpncheck 1.1″:
http://code.vn720.com/files/2011/07/vpncheck-2011-06-07.zip
Old “vpncheck 1.0″ is still available at http://code.vn720.com/files/2010/11/vpncheck-2010-27-11.zip
It does following:
Checks every 0.3s that VPN connection is active and kills listed processes if not.
If later VPN becomes active, the processes are re-started.
Reads config file (vpncheck.cfg) which has following format:
<name of VPN connection, e.g. Anonine>
<full absolute path filename of exe 1>
<full absolute path filename of exe 2>
…
Example of valid config file:
Anonine
C:\Program Files (x86)\uTorrent\uTorrent.exe
C:\Program Files (x86)\Skype\Phone\Skype.exe
Tested on Windows 7.
Provided as is, no guarantees of any kind.
This is a bit hacky application so don’t take it as example of good software engineering, but it should work.
Feedback, bugs, comments, welcome: jani@kajala.com
The application comes with full source code and build files (Visual Studio 2008) if you are interested to take a look. However, it does have executable as well.
Cheers,
Jani
Tags: connection, kill processes, monitoring, utorrent, vpn
Posted in Networking, Tools | 28 Comments »
August 14th, 2010 by admin
I’ve used a lot of smartphone GPS solutions, and two dedicated units. The biggest issue with all smartphone solutions is that you cannot *rely* on them. I’ve used Navicore/Wayfinder, Nokia Maps and Google Maps on Droid. They make nice demos but seriously, you really want to buy a dedicated GPS unit. I paid recently $130 for a new unit on a sale, and it’s far superior to any mobile stuff that is out there.
Just a quick comparison:
+ Dedicated GPS units are more robust. You can rely on them. Smartphone based solutions do crash. You cannot rely on them. That’s the most important factor for dumping them for any serious usage. They lose signal without being able to restore it without reboot. Theylose data connection (only prob for Google Maps based navisystems, Nokia Maps is offline). They just stop working. Every smartphone based solution had problems (at least after using them some time, not in “demo sessions”…) and the dedicated units don’t (crashes are very rare).
+ Dedicated GPS units have far superior signal strength compared to any smartphone based GPS. Just try it in a parking hall: Dedicated unit will pick a signal no prob, smartphone will not. Smartphone will also lose signal easily when you’re driving where dedicated unit is not. Trust me, I’ve done lots of comparisons running dedicated units and phones side by side.
+ Dedicated units are much faster. Offline maps is the first key requirement where Google Maps based systems fail. I used Google Maps on Droid for couple of months (on T-Mobile) until time wasted restoring data connection, downloading map, getting signal, downloading map again, downloading instructions, … drove me crazy. Dedicated unit gets the route planning done 10x faster.
+ Dedicated units have better functionality and usability compared to any smartphone solution. For example, Google Maps does not have “search along route” functionality which is really nice during any road trips.
Still, I find uses for mobile GPS as well, but not as a dedicated GPS replacement but for “fun usage” e.g. during walking tour in a new city. Just don’t buy mobile GPS solution and imagine that it’s competing in the same league with dedicated units.
Tags: comparison, dedicated, gps, Mobile, smartphone, unit
Posted in Mobile | No Comments »
August 3rd, 2010 by kajala
Alienware M17x is the worst laptop I’ve ever used. And I’ve used many since the first Dell laptop I bought in 1999.
The ergonomics are really bad. Sharp corners in design make your wrists shout in pain after any extented usage. And the weight of 15lbs/7kg or something like that doesn’t exactly temp to carry it around.
The drivers/bios/whatever are buggy. My Alienware M17x used to get “stuck” all the time for minutes. Downgrading bios helped, but there are still occasional problems with crashes etc. Now, for example, as I’m writing this, I have the windows task manager crashed on my background. Or actually it’s not crashed but it does not receive any input. I’ve never seen that happen on any other laptop or desktop. And this is just an example.
AC power adapter died already once after a month of use, the laptop started reporting that not enough power is available. Now I have a replacement which works.
Crappy wireless adapter. In the same room where cheapo HP laptop gets II wlan bars, Alienware struggles to get I and often drops the connection. This has been repeatedly verified in different connections so I have no doubts about this observation. Also, sometimes the wlan adapter/driver just dies and you have to reboot the laptop to enable it.
VGA output to projector? This is by far the worst design I’ve ever seen: If you use the laptop even ONCE without the power adapter, the laptop will automatically disable hybrid graphics, which in turn makes it impossible to enable video projector output! To re-enable it, you need reboot, go to BIOS settings, reboot, and then enable the video output. I couldn’t believe this before I heard this is “known issue”. Unbelievable.
Want to hear the worst news? I didn’t even consider the price tag when writing this review, since I didn’t pay anything for mine (got it through work). If I would have had to pay $2000 or whatever obscene the price is then this review would have been far more negative.
Of course the laptop is fast etc., but this is not the only fast laptop in the market, so I’d definitely skip this one without a second thought.
Tags: alienware, buggy, laptop, m17x, pc, review
Posted in Uncategorized | No Comments »
April 12th, 2010 by kajala
Argh. I’ve had this problem at least twice already, but since it’s always so long interval between installing Skype on a new PC and Xampp I always forget this:
Skype uses ports 80 and 443 by default.
That’s why Xampp doesn’t work, Apache won’t start but there is no error message either. Hopefully I will remember this time…
Tags: apache, apache friends, desktop, development, web dev, Web services, xampp
Posted in Tools, Web services | No Comments »
April 10th, 2010 by kajala
When developing more complicated web services or add new features, there is always a risk that you break something when you make modifications. Solution: Design a set of tests to perform always when you make any changes, and design those so that you will catch all problems automatically.
Excellent automatic testing tool for testing functionality of a web site or services: Selenium IDE:
The functionality is simple: Selenium records actions done in Firefox (Selenium IDE is Firefox plugin), and you can play back the scripts later. You can also combine individual scripts to test suites.
There are plenty of other tools for automatic web testing as well, but I’m quite happy with this. Some small nags: Order of tests cannot be changed inside the suite in IDE, you have to do it by editing the script. Also, an annoyance is ‘click’ recording. It should almost always record as ‘clickAndWait’ and causes easily confusion since the test fails due to lack of waiting…
Tags: automatic, html, regression testing, scripting, services, testing, web
Posted in PHP, Tools, Web services | No Comments »
April 10th, 2010 by kajala
Just bought one today, thinking experimenting something with Android development. If I have time, that is.
The phone at least seems great. Droid is much more responsive than other Android phones I I have tested. Nice high-res (480×854) screen. Ok sliding keyboard, and still the device thickness similar to iPhone which is nice.
My only complaint is very short battery charger wire, looks like standard USB-length, which is not enough unless you want to keep your phone on floor while charging. But in general, really great device and I’m surprised it came from Motorola, I have never liked their phones but this one really rocks.
Btw. Motorola Droid is called “Motorola Milestone” here outside US, since Droid is ™ of Lucas Arts, and exclusively licensed to Verizon usage…
Tags: android, Mobile, motorola, phones, review
Posted in Mobile, android | No Comments »