All the geeky stuff that gets me hot.

Monday, June 27, 2016

How to compile pgModeler 8.2 for Win7 and PostgeSQL 9.5

pgModeler is a great tool for creating PostgreSQL queries but the documentation on compiling for Windows is old and incomplete. Here are the steps I took to compile it on Windows 7. All software is 32bit as QT does not support x64 on Windows.
  1.  Install PostgreSQL server. (I installed to C:\Program Files (x86)\PostgreSQL\9.5)
  2.  Install QT framework (C:\Qt)
  3.  Download the XML2 Library and  (C:\Program Files (x86)\libxml2\) and copy libxml2.lib to (C:\Program Files (x86)\PostgreSQL\9.5\lib)
  4. Install MiniGW. Download mingw-get-setup.exe and run, then select:
    • minigw-developer-toolkit
    • minigw-gcc-v3-g++
    • the 4 minigw32-gcc-g++ packages (bin, dev, doc, man)
  5. Add to PATH environment variable (adjust paths as required)
       C:\Program Files (x86)\PostgreSQL\9.5\bin\;C:\MinGW\bin\;C:\Qt\5.6\mingw49_32\bin\
  6. Download pgModeler source code. Unzip to C:\pgmodeler-8.2.0\
  7.  Edit pgmodeler.pri and add above the Windows section (adjust paths as required):
    • PGSQL_LIB = "C:/Program Files (x86)/PostgreSQL/9.5/lib/libpq.dll"
    • PGSQL_INC = "C:/Program Files (x86)/PostgreSQL/9.5/include/"
    • XML_INC = "C:/Program Files (x86)/libxml2-2.7.8.win32/include"
    • XML_LIB = "C:/Program Files (x86)/libxml2-2.7.8.win32/bin/libxml2.dll" 
  8. Make directory C:\pgModeler\
  9. Open a command prompt then change to the source code directory [CD C:\pgmodeler-8.2.0\]
  10. Run: [qmake PREFIX+=C:/pgModeler -r  -spec win32-g++ CONFIG+=release]
    This configures the project files
  11. Run: [mingw32-make -j5] to compile the project
  12. Run: [mingw32-make install] to move the compiled files into C:\pgModeler\
  13. Run: [CD C:\pgModeler]
  14. Run: [windeployqt pgmodeler.exe] to copy the QT files to the program directory
  15. Now copy these DLLs to C:\pgModeler
    1. PostgreSQL DLLs  (PostgreSQL\9.5\bin)
    2. QT DLLs (C:\Qt\5.6\mingw49_32\bin\)
    3. XML2
C:\pgModeler will now contain all the files needed to run pgModeler. You can ZIP this folder and copy to C:\pgModeler on any computer where the program is needed. Ideally we could run this from %LOCALAPPDATA% but I could not figure out how to compile with that as the PREFIX. So it's hardcoded to C:\pgModeler instead.

Labels: ,

Friday, February 07, 2014

Run Adobe Application Manager (PDApp.exe) in standalone mode

For some reason Adobe has decided that users don't need a separate icon for launching Adobe Update Manager. They want you to launch Photoshop or Illustrator, wait for that to load and then run the Updates. Updates that require the applications to be closed so that they can be updated. Classic Adobe.

Screw you Adobe. Once again you've dropped the ball and left the hard work to your customers. I fired up a copy of procmon and launched the updater using the official method. A little bit of filtering and this drops out:

"C:\Program Files (x86)\Common Files\Adobe\OOBE\PDApp\core\PDApp.exe" --appletID=UWA_UI --appletVersion=1.0 --workflow=Updater --mode=Manual --appLocale=en_US --appLEID=Photoshop-CS6-Win-GM

Ta-da! Throw that into a shortcut and PDApp.exe launches as if it's been launched from within Photoshop. There are probably other parameters that could be helpful but Adobe doesn't offer any documentation on PDApp.exe because when has helping the customer ever accomplished anything?

Tuesday, February 28, 2012

Teloxys Aristata: natural scale trees from Scandinavia (aka Scenic Express Supertrees)

Just wanted to put up a message for those looking for what plant is used for Scenic Express Supertrees. In the kit they are described as such:
SUPERTREES are a natural scale tree form indigenous to the Artic tundra of Scandinavia. A distant cousin to our western sagebrush, their intricate detail and perfect branch structure produce an incredible scale tree unsurpassed in realism.
The actual scientific name is Teloxys aristata, also known as Chenopodium Aristatum, seafoam, zeeschuim or wormseed. You can buy seeds for very small cost and grow your own miniature forest. The plant is originally from the Gobi Desert.

Here are some links to more information about the plant.

Friday, January 29, 2010

PicAxe 08M Lego Tank

Here's my first PicAxe 08M project, an IR controlled Lego tank. It features PWM Lego Power Function (LPF) motor control and a laser pointer "cannon". I built this because I wanted something fun to do with the PicAxe and Lego doesn't make any tank kits. This can be easily replicated using the LPF IR remote and receiver but where's the fun in that? The turret rotates but only by hand, the 08M doesn't have enough pins to drive more than two motors. In the next version of the tank I plan on adding motorized turret rotation and elevation.

IR control is done using a standard Sony TV remote control and IR receiver breakout from You can see the receiver taped to the top of the turret. You could use most any IR receiver though, IR on the PicAxe is super easy to get working.

Power is supplied through the LPF 9v battery box. This is the voltage the motors are designed to work with and I didn't want to add a second battery box just for the PicAxe so I used a LM317 variable power regulator to drop that down to 5v on the development board. By using only the LPF battery box I can keep the battery weight down low for better stability.

The treads are direct driven using two LPF motors. In the next version I would like to build an adder/subtractor drive but I don't have the second differential gear needed yet. To drive the motors I used an SN754410 in a circuit I found at the Society Of Robots. The PicAxe 08M only has one PWM output so I tied both PWM inputs to the same signal. This means I can't run the treads at different speeds; steering would be smoother if I could but it works well enough for now. I found the wiring schematic and motor specifications for the LPF motors here. The LPF battery box and motors were connected using a LPF extension wire cut in half so I didn't have to cut the connectors off the motors. I feel a lot better hacking up a $2.99 wire rather than mangling the more expensive motors. The extension wire is the only Lego bit I had to modify, everything else is used stock.

The laser pointer cannon is hooked up to a spare output, I may eventually add a sound effects module for a more entertaining firing sequence. The laser pointer was added after these pictures were taken but you can see it in the video. I put a clear red cone that the laser lights up when it fires for effect.

Here's a (terrible) cell phone video demonstrating the tank.

This is the source code for the PicAxe, feel free to use this however you wish. It was somewhat challenging getting everything to fit in the limited memory of the 08M but by using a function for code that was re-used a bunch I managed to fit it all in there.

' IR Controlled PWM motor driver for the PICAXE-08M
' By TomTheGeek
' 1/20/2010

' Set Pin Variables
symbol DIRRIGHT = 1 'foward/stop/reverse
symbol SPEEDCTRL = 2 'PWM output
symbol IR_IN = 3 'Infrared in
symbol DIRLEFT = 4 'foward/stop/reverse

' Other constants
symbol SPEEDMIN = 400
symbol SPEEDMAX = 1000

' Set Variable Registers
symbol SPEED = W0 'W0 = B1:B0
symbol PERIOD = B2
symbol motion_state = B3

' Initialize variables
PERIOD = 249 ' 4KHz PWM operation
let motion_state = 0

'Motion states:
' stopped = 0
' forward = 1
' backward = 2
' turn left = 3
' turn right = 4
' rotate left = 5
' rotate right = 6


infrain2 'wait for new signal
select case infra
case 116 'forward
gosub pwm_on
let motion_state = 1
case 117 'reverse
if motion_state = 1 Then 'going forward, pause before reversing to prevent tip-overs.
gosub pwm_on
let motion_state = 2
case 52 'left
gosub pwm_on
if motion_state = 3 or motion_state = 0 Then 'drive tracks in opposite directions to spin
let motion_state = 5
Else 'stop one tread and keep the other going to skid steer.
let dirs = 010000 'change pin to input to stop tread
let motion_state = 3
end if
case 51 'right
gosub pwm_on
if motion_state = 4 or motion_state = 0 Then 'drive tracks in opposite directions to spin
let motion_state = 6
else 'stop one tread and keep the other going to skid steer.
let dirs = 000010 'change pin to input to stop tread
let motion_state = 4
end if
case 16 'faster
if SPEED < speed =" SPEED"> SPEEDMIN then
pause 250
else 'stop
let motion_state = 0
goto main


Labels: ,

Tuesday, December 02, 2008

Nokia is relavent again with the N97

I've always liked Nokia phones, my first phone was a Nokia and everything about it felt polished. Everything worked, made sense and was very easy to use. For some reason though they never really branched out of the candy bar form factor and except for low end phones no one wants a candy bar phone anymore. It took Nokia years to even come out with a flip phone. However with the release of the N97 Nokia finally has a phone that shakes the candy bar form factor and it does it with style. If this can compete with Windows Mobile I may finally be able to make the switch back to Nokia.

Saturday, November 22, 2008

Pop up notification of software RAID problems in Ubuntu

I finally was able to setup a software RAID in my last install of Ubuntu 8.10 and I wanted to setup monitoring so I would know about any problems immediately. Ubuntu sets up monitoring automatically when you create a MDADM arrary but by default it only sends an email to the local root account. That would be fine for a server but on a desktop system a visual notification would be better. Here are the steps I took to enable a pop up notification whenever something bad happens to my RAID array.

To make the notification bubble I used notify-send. Notify-send is part of the notification-daemon package so install it with this command:
sudo apt-get install notification-daemon
In order to make sure our notification are working we need to be able to send a test notification. MDADM has a testing mode built right in, to activate it edit /etc/default/mdadm and add " --test" to the end of the DAEMON_OPTIONS string. This will tell MDADM to send a test message every time it starts.

Now we need to configure MDADM to run a program when there's a problem as well as setting the email address of where we want the notifications sent. Edit /etc/mdadm/mdadm.conf and set the MAILADDR and MAILFROM email addresses. MAILADDR is where you want the email sent, MAILFROM is what shows up in the From field in the email. You may have to add the MAILFROM line. To run our program add a PROGRAM line underneath the MAIL line with the following:
# display local notification
PROGRAM /usr/sbin/
This tells MDADM to run our script when there's a problem. Now we just need to create /usr/sbin/ and add the following:

#get dbus session
eval `dbus-launch --sh-syntax --exit-with-session`

#show alert
/usr/bin/notify-send -u critical -c device.error -i /usr/share/icons/Human/32x32/status/dialog-warning.png -t 0 "RAID Status" "<b>$2</b>: $1" -h int:x:1250 -h int:y:20
There are a couple settings you'll want to change on the last line of the script. Most of all you'll have to alter the int:x and int:y values so they work on your system. I have a triple screen setup so my settings will likely put the notification off screen if you don't change them. Also the warning icon I used should be standard for Ubuntu 8.10 but if it's not showing up you'll have to set the path to an icon on your system. Finally be sure to run "sudo set chmod +x /usr/sbin/" to make the script executable.

Now we are ready to test. Run "sudo /etc/init.d/mdadm restart" to restart MDADM and send the test message. Adjust the int:x and int:y values if the pop up isn't where you want it or the icon isn't showing up and test again. Once you are satisfied with the appearance of the notification go back into /etc/default/mdadm and remove the " --test" from the DAEMON_OPTIONS string so you don't keep getting the test message.

That's it! Now if something happens to the RAID array you'll get a nice visual notification of the problem.

Labels: , , ,

Tuesday, September 02, 2008

Google Chrome doesn't need Admin rights to install

I just downloaded Google Chrome and love it. I won't be able to use it full time until there are some plugins developed for it but I'm betting I won't have to wait very long. 

One curious thing I noticed though is that the installer doesn't require Administrator rights to install. Everything is installed in the users profile folder under [profile folder]\Local Settings\Application Data\Google\Chrome. Nothing is installed in Program Files. 

This is not a bad thing per se, it's just unexpected. The only problems will be on networks where only specific applications are allowed. Once more plugins are developed it might become a bigger problem since with the right plugin you could get into a lot of trouble. I almost consider this a feature since I'll be able to use Chrome on computers I otherwise wouldn't be able to install an alternate browser. 

Wednesday, June 18, 2008

at&t 8925 trumps iPhone, again

I ruined my five hundred dollar 8925 by getting it wet, days before the new 3G iPhone was announced. I was waiting for it to dry out as they announced the iPhone's $200 price and GPS capabilities. I must admit, I seriously considered buying the new iPhone but in the end I shelled out another $400 for a used 8925. The iPhones software has come a long way and with the addition of 3G and GPS as well as full Exchange support it's that much closer to being a realistic alternative for me. The deciding factor though is that I really like A2DP, a real keyboard and the possibility of running Android at some point in the future. Also now that the price has dropped EVERYONE is going to have an iPhone. You thought RAZR's were common, wait till this time next year. So keep it up Apple, you're getting close but you're not there yet.

Wednesday, June 04, 2008

Lightweight Burning with XP

Llosgi CD
Originally uploaded by Dafad∙Ddall
Competition is usually a good thing, but sometimes it gets out of hand. The competitors can get so concentrated on one-upping each other they forget what they were supposed to be doing in the first place and ignore everything except winning the competition. Case in point, burning software for Windows. Nero's Burning Rom used to be my software of choice and many geeks used it as well. It was fast, relatively small and gave you the advanced options needed to burn your CD the "right way". Roxio's Easy CD Creator was the only other real contender and came pre-installed with many computers. It didn't really work very well but had nice easy to use interface so it was good for people who just wanted to burn a CD and didn't want to deal with the technical details of it.

Even though they both were making burning software for Windows, they really weren't in competition with each other because their software was targeted at two distinct groups. Despite this they decided that they had to beat the other guy at all costs and engaged in a feature war that has left both bloated with all sorts of stuff that no one wants in their burning program.

Ahead is now selling "Nero 8 Ultra Edition" which includes photo, video and audio editing, YouTube integration, media streaming to Xbox 360 or PlayStation 3, and for some reason, DVR functionality. Roxio ups the ante with "Easy Media Creator 10 Suite". Features include the same photo, video and audio editing capabilities but adds DVD menu creation and video capture. It also sports YouTube integration, mobile content conversion, and internet radio capture.

When did my burning software become an operating system by itself? All of these functions are better served with dedicated software, I just want my software to burn CD's, everything else I will deal with as I need it. Not everyone that burns a music CD is going to edit video. Thankfully some kind hearted souls have decided they don't want to install 2 GB worth of crap to burn a CD and have release FREE software that make both Ahead's and Roxio's software irrelevant.

InfraRecorder is a very basic software that is as about as simple as it can get. It doesn't have all the options I'd like but for 90% of the CD's I make it does a great job. I discovered it when I was looking for a free program that would let my friend burn an Ubuntu ISO image. It's released under the GPL software license so I can add features if I want or even remove them if they started padding the software with useless gimmicks.

CDBurnerXP is a much more polished product and does everything Nero used to do so well. It's still very easy to use but has enough advanced options that I don't need Nero at all anymore. It's not an open source software but it has a freeware license and doesn't include any ads or maleware.

Wednesday, May 14, 2008

Thank you iPhone, for bringing me 3G

I just wanted to say thanks to Steve, Apple and the iPhone for finally getting at&t to do something with their 3G network. They had been dragging their feet with it for so long and I know I'd still be waiting for it if you hadn't come along and convinced them that they really needed 3G to push more iPhone sales.

Sources all over are reporting that the second generation iPhone (the black one on the right) is going to be released in early June which seems to make sense, when the first iPhone came out at&t's 3G network was very small and while everyone complained that it should have had 3G at the time it just wouldn't have made any sense. It was a great idea to launch an EDGE version early, let everyone figure out how great they are then only a year later release a 3G version once at&t has had the time to build out their network. They get to gouge the early adopters twice and since everyone signed a two year agreement they'll have to pay full price for the new 3G iPhone.

I'm just happy I get 3G on my at&t tilt, which by the way, is black.