Author: Jason

  • typing mathematical symbols into emacs using the TeX input method

    typing mathematical symbols into emacs using the TeX input method

    You can type mathematical symbols into emacs using the TeX input method.

    C-\
    TeX <enter>
    \ohm
    \therefore
    \pi

    C-\ will toggle the input method on and off. Note the \ indicator in the bottom left of the status bar.

  • LED down light comparison website – www.ledbenchmark.com

    LED down light comparison website – www.ledbenchmark.com

    I’ve wanted a reliable source of information on LED light bulbs for a long time. Well apparently it does exist. ledbenchmark.com have brief reviews and comparisons of many blubs and it seems to be done in a nice scientific way.
     
    Image By Mcapdevila [CC-BY-SA-3.0], via Wikimedia Commons

  • Windows 7 Visual FoxPro ODBC Driver

    Microsoft have made it virtually impossible to find out how to get this driver for Windows 7.
    If you are getting the error “You must first install the current version of the Visual FoxPro ODBC Driver”, you need to download this driver and install it.
    Tthe file you are after is called VFPODBC.msi and can be downloaded directly from Microsoft at the time of writing. No doubt they will move that link to ensure no one can find it again.
    http://download.microsoft.com/download/vfoxodbcdriver/Install/6.1/W9XNT4/EN-US/VFPODBC.msi
    To use it on a 64 bit windows system, you need to run the 32  bit version of ODBC: C:\Windows\SysWOW64\odbcad32.exe
    [update 2016-07-20]
    or you could download it from here. I’ve tested and it seems to install fine in Windows 10, but I haven’t tested if it works as I don’t use FoxPro any more.
    VFPODBC.msi.xz

    filename md5sum</>
    VFPODBC.msi 4fbb57a7efabde9925af86a239e5c93c
    VFPODBC.msi.xz aa85ab82c179e4c6b2ee9200b81f8956
    filename sha512sum</>
    VFPODBC.msi 84aa3f1bf8dd45c7f25575a69b55672b
    4f91eadfbcd29ceefaea3dbc1aedcb952c4a
    8d14290fe8da0039d5d5dd681f1a86d7cf74
    13d0aa36467a8ed2eeb7c8ed
    VFPODBC.msi.xz 97bd6301442320df590f87cde5ffa23f
    b10f45532c0a791be9ab4c2a5628474d7039
    876b86593bb96561d496bcb597353bba0cbb
    af7b54a7f0a6fd7e052a92a2

    Free Palestine!

  • Top 3 tips for migrating a server to a virtual machine

    I recently migrated a server to a virtual machine, and while it was mostly a smooth process, I did encounter a couple of problems.

    • Ensure that any licensing services will run on the new virtual hardware. Our accounting system’s license server wouldn’t run until it was set up with new licenses.
    • Check date and time are correct on the new host and guest vm.
    • Make sure the server is set to use a static IP addresses before migrating.
  • Anacron run-parts: /etc/cron.daily/amavisd-new exited with return code 1

    I’ve been getting messages like the ones below from cron my debian box for some time now. I finally got sick of seeing them and I tracked down the error.
    /etc/cron.daily/amavisd-new:
    Please run this cronjob as user amavis
    run-parts: /etc/cron.daily/amavisd-new exited with return code 1

    At some point the debian package moved the cron config file from /etc/cron.daily/amavisd-new to /etc/cron.d/amavisd-new but for some reason when upgrading, it does not remove the old config file, leaving you with an erroneous file.
    All you need to do is delete /etc/cron.daily/amavisd-new and the messages should go away.

  • How to make a bootable usb stick in Windows 7 of a debian iso

    Every so often I need to make a bootable USB stick in Windows 7 (64 bit) of a debian installer iso. For some reason my googling usually does not reveal a simple solution for this.
    I asked on #debian on the OFTC network and got various suggestions. The first suggestions were to use win32 compiled variants of dd or rawwrite. The problem is that there seems to be multiple versions of these tools out there and the ones I tried all seemed to have issues of one sort or another, mostly to do with dd complaining that it would not run on 64 bit Windows. My other issue is that they are command line based. Not that I mind using the command line but it does feel fiddly when all you want to do is get on with writing the image to the USB stick so you can install Debian.
    Next I came up with unetbootin. This looks promising and seems to work but it does some very strange rewriting of the boot menus you get on the resulting USB stick. I was confused by the menus when I first saw it and I’m sure novice users would have no idea what to do.
    Finally dvs on #debian suggested win32diskimager. This is exactly what I wanted. A point and click solution.

    screenshot of win32diskimager
    screenshot of win32diskimager

    Select the DVD image you want. If the file’s extension is .iso you’ll need to change the filter from *.img;*.IMG to *.* in order to see the file. Then select the Device you want to write to. Hit Write and go and have a cup of tea while it writes the ISO to the USB stick.

  • Programmatic CAD, OpenSCAD alternatives

    There are quite a few programatic CAD, OpenSCAD alternatives out there. I am collecting a list of them and providing links to them here. The requirements to be included in this list are:

    • Free and libre.
    • They are a programming language as opposed to a GUI.

    OpenSCAD: The most well known programmatic CAD program. Probably the original open source one that I am aware of.openscad screenshot
    CoffeeSCad: Solid CAD modeling in your browser, with a CoffeeScript based syntax (and lots more!)coffeescad screenshot showing code edit window and a rendered cube
    ImplicitCAD: Powerful, Open-Source, Programmatic CAD. Haskell and extopenscad.edit area and rendered object in ImplicitCad
    RapCAD: Rapid prototyping CAD IDE for RepRap and RepStrap 3D printing machines.code edit window of RapCAD with rendered line next to it
    OpenJSCAD: OpenSCAD + JavaScript = OpenJSCAD, edit locally or remote online, preview in browser direct via WebGL.
    screenshot of OpenJSCAD
    FABFabbers bills itself as “a new site for the 3d printing community”. It provides in browser OpenSCAD compilation and linking to github projects.FABFabbers screenshot
    Update: Atomic let me know about BRL-CAD, the free military-grade antecessor to all of these.
    BRL-CAD mged graphics window
    BRL-CAD mged command window
    Update 2: gzmask pointed out SchemeCad, a programmable 3D CAD tool that supports wireframe models and features animation. Users can program Scheme Cad by writing extensions in Scheme (a dialect of LISP). It’s available for Windows and Linux.
    screenshot of scheme-cad
    Update 3: CScheme is the integration of geometric kernels in a functional language.
    screenshot of cscheme website

    ;export the model
    (define (print-brep shape filename)
      (BRepTools_Write shape filename))
    ;translate an object
    (define (translate obj x y z)
      (let ((vec (make-object gp_Vec% x y z))
            (trsf (make-object gp_Trsf%)))
        (begin
          (send trsf SetTranslation vec)
          (send (make-object BRepBuilderAPI_Transform% obj trsf #t) Shape))))
    ;make a structure from two given object
    (define (structure obj1 obj2)
      (let ((compound (make-object TopoDS_Compound%))
            (builder (make-object BRep_Builder%)))
        (begin
          (send builder MakeCompound compound)
          (send builder Add compound obj1)
          (send builder Add compound obj2)
          compound)))
    ;make a structure from a list of object
    (define (composite lis)
      (if (list? lis)
        (cond
          ((= (length lis) 0) (error "empty list"))
          ((= (length lis) 1) (car lis))
          (else (make-compound (car lis) (composite (cdr lis)))))
        (error "Not a list")))
    ;build a torus
    (define (torus radius circle)
      (make-object BRepPrimApi_MakeTorus% radius circle))
    ;build a sphere
    (define (sphere radius)
        (make-object BRepPrimApi_MakeSphere% radius))
    ;calculate the torus dimension
    (define (radius z)
      (sqrt (- 1 (* z z))))
    ;make all torus objects
    (define (torus-on-sphere the-list)
      (composite
        (map
          (lambda (z) (translate (torus (radius z) 0.05) 0.0 0.0 z))
          the-list)))
    Final export operation
    ;export the model
    (print-brep
      (structure
        (sphere 0.3)
        (torus-on-sphere (list -0.93 -0.75 -0.5 -0.25 0 0.25 0.5 0.75 +0.93)))
      "./torus.brep")

    and PLaSM: a functional language for computing with geometry.

    screenshot of plasm website

    DEF points1 = <<0,0,0>,<0,3,4>,<0,6,3>,<0,10,0>>;
    DEF points2 = <<3,0,2>,<2,2.5,5>,<3,6,5>,<4,8,2>>;
    DEF points3 = <<6,0,2>,<8,3,5>,<7,6,4.5>,<6,10,2.5>>;
    DEF points4 = <<10,0,0>,<11,3,4>,<11,6,3>,<10,9,0>>;
    DEF dom = intervals:1:12;
    MAP:(beziersurface:< points1 , points2 , points3 , points4 >):
    (dom * dom);

    Thanks to Kristoffer Josefsson for those two.
    Update 4: Parametric Parts allows consumers to create and print 3D parts through our web-based platform. Anyone can make an idea come to life, even without technical expertise or prior 3D experience. It apparently uses  CadQuery for its backend.
    CadQuery is an intuitive, easy-to-use python based language for building parametric 3D CAD models. CadQuery is for 3D CAD what jQuery is for javascript. Imagine selecting Faces of a 3d object the same way you select DOM objects with JQuery! Thanks to Monique for pointing them out.
    screenshot of parametricparts website
    Pierre left a comment to let me know about POV-Ray.  The Persistence of Vision Raytracer (POV-Ray) is a high-quality, Free Software tool for creating stunning three-dimensional graphics. The syntax looks very similar to OpenSCAD and C.

    #include "colors.inc"
    camera{
      location <4, 4, -10>
      look_at 0
      angle 36
    }
    light_source{ <500, 500, -1000> White }
    plane{ y, -1.5
      pigment{ checker Green White }
    }
    union{
      box{ -1, 1 }
      sphere{ 0, 1.375 }
      pigment{ Red }
    }

    screenshot of povray of sphere unioned with a cube
    Let me know if I’ve left any off the list?

  • Emacs: yank a line multiple times from the kill ring

    Emacs: yank a line multiple times from the kill ring

    Today I needed to copy a line multiple times in emacs. I needed 8 copies, but how to do that in emacs short of pressing C-y to yank 8 times? My initial guess was to try C-u 8 C-y but that yanks the 8th item from the kill ring.
    Fuco on #emacs supplied the awesome answer:
    F3 C-y C-8 F4
    So what does that do? F3starts recording a macro, C-yyanks the line, then within the macro itself you can add a numeric argument of 8 using C-8. End recording of the macro with F4. Emacs then runs the macro 8 times. Recall that pressing F4 after ending recording of the macro runs the macro.

  • Setting alternate hreflang in WordPress

    UPDATE 2013-05-03:
    After writing this I found out my approach was incorrect. I have since removed the code as it was not useful.
    Dan’s team was kind enough to point me to Virgin Australia‘s site. If you inspect the source and search for hreflang, you’ll see how it should be done.
    /UPDATE
    After seeing the excellent talk by Dan Petrovic at the Melbourne WordCamp, I went to find out more about the <link rel=”alternate” hreflang=”en-AU” href=”http://somesite.com.au/” />. He has an article describing it. Essentially if you have multiple sites that have similar content (but not exactly the same) then you can instruct google that the sites serve different regions by using the rel=alternate hreflang=”en=gb” options for the link tag.
    A common scenario that you might find this useful would be in online stores where there is a different store for each country.
    eg. for site somesite.com.au you want a <link> tag like this:
    <link rel=”alternate” hreflang=”en-AU” href=”http://somesite.com.au/” />
    and for somesite.com you might want a tag like this:
    <link rel=”alternate” hreflang=”en-US” href=”http://somesite.com/” />
    and you want to remove the rel=”canonical” option too.
    I couldn’t find a plugin that would implement this in WordPress so I wrote one and put it up on github. Yoast does not have an option for this as far as I can tell.
    At some point I might put it up on wordpress.org too if it seems like there is interest in it.

  • There will be Emacs Chocolate at the #Emacs Meetup Melbourne

    I decided to make something special for the inaugural Australian emacs meetup.
    emacs chocolate
    If you want some, come to the Melbourne emacs meetup.
    Sofia’s Camberwell.
    857 Burke Road
    Camberwell 3124
    Victoria, Australia
    Friday April 26, 2013 6:00 PM